init commit
This commit is contained in:
parent
eb8cbbba10
commit
3c01d46a65
@ -1,14 +1,37 @@
|
|||||||
package org.example
|
package org.example
|
||||||
|
|
||||||
|
import org.example.data.ShoesRepositoryImpl
|
||||||
import org.example.data.UserRepository
|
import org.example.data.UserRepository
|
||||||
import org.example.data.UserRepositoryImpl
|
import org.example.data.UserRepositoryImpl
|
||||||
|
import org.example.domain.ShoesUseCase
|
||||||
|
import org.example.domain.ShoesUseCaseImpl
|
||||||
import org.example.domain.UserUseCaseImpl
|
import org.example.domain.UserUseCaseImpl
|
||||||
|
import org.example.ui.ShoesUI
|
||||||
import org.example.ui.UserUI
|
import org.example.ui.UserUI
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val userRepository = UserRepositoryImpl()
|
val userRepository = UserRepositoryImpl()
|
||||||
val userUseCase = UserUseCaseImpl(userRepository)
|
val userUseCase = UserUseCaseImpl(userRepository)
|
||||||
val userUI = UserUI(userUseCase)
|
val userUI = UserUI(userUseCase)
|
||||||
|
val shoesRepository = ShoesRepositoryImpl()
|
||||||
|
val shoesUseCase = ShoesUseCaseImpl(shoesRepository)
|
||||||
|
val shoesUI = ShoesUI(shoesUseCase)
|
||||||
|
while (true) {
|
||||||
|
println("Выберите действие:")
|
||||||
|
println("1 - Регистрация")
|
||||||
|
println("2 - Авторизация")
|
||||||
|
println("3 - Изменить профиль")
|
||||||
|
println("4 - Изменить пароль")
|
||||||
|
println("5 - Работа с продкутами")
|
||||||
|
val c = readln()
|
||||||
|
when (c) {
|
||||||
|
"1" -> userUI.registration()
|
||||||
|
"2" -> userUI.authorize()
|
||||||
|
"3" -> userUI.changeProfile()
|
||||||
|
"4" -> userUI.changePassword()
|
||||||
|
"5" -> shoesUI.main()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
12
src/main/kotlin/data/ShoesRepository.kt
Normal file
12
src/main/kotlin/data/ShoesRepository.kt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package org.example.data
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
|
import org.example.domain.request.AddShoesRequest
|
||||||
|
|
||||||
|
interface ShoesRepository {
|
||||||
|
fun addShoes(addShoesRequest: AddShoesRequest): ShoesDTO
|
||||||
|
fun removeShoes(productId: Int): Boolean
|
||||||
|
fun updateShoes(productId: Int, updatedShoes: ShoesDTO): ShoesDTO
|
||||||
|
fun getAllShoes():List<ShoesDTO>
|
||||||
|
fun findShoesById(productId: Int): ShoesDTO
|
||||||
|
}
|
50
src/main/kotlin/data/ShoesRepositoryImpl.kt
Normal file
50
src/main/kotlin/data/ShoesRepositoryImpl.kt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
package org.example.data
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
|
import org.example.data.model.UserDTO
|
||||||
|
import org.example.domain.request.AddShoesRequest
|
||||||
|
|
||||||
|
class ShoesRepositoryImpl: ShoesRepository {
|
||||||
|
private val shoes: MutableList<ShoesDTO> = shoesList.toMutableList()
|
||||||
|
override fun addShoes(addShoesRequest: AddShoesRequest): ShoesDTO {
|
||||||
|
val newShoes = ShoesDTO(
|
||||||
|
productId = shoes.size + 1,
|
||||||
|
productName = addShoesRequest.productName,
|
||||||
|
cost = addShoesRequest.cost,
|
||||||
|
count = addShoesRequest.count,
|
||||||
|
photo = addShoesRequest.photo,
|
||||||
|
description = addShoesRequest.description.toString()
|
||||||
|
)
|
||||||
|
|
||||||
|
shoes.add(newShoes)
|
||||||
|
return newShoes
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun removeShoes(productId:Int): Boolean {
|
||||||
|
return shoes.removeIf{it.productId == productId }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateShoes(productId: Int,updatedShoes: ShoesDTO): ShoesDTO {
|
||||||
|
val oldShoes = shoes.firstOrNull{it.productId == productId}
|
||||||
|
checkNotNull(oldShoes)
|
||||||
|
oldShoes.productName = updatedShoes.productName
|
||||||
|
oldShoes.cost = updatedShoes.cost
|
||||||
|
oldShoes.count = updatedShoes.count
|
||||||
|
oldShoes.photo = updatedShoes.photo
|
||||||
|
oldShoes.description = updatedShoes.description
|
||||||
|
return oldShoes
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getAllShoes(): List<ShoesDTO> = shoes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
override fun findShoesById(productId: Int): ShoesDTO {
|
||||||
|
val findShoes = shoes.firstOrNull{it.productId == productId}
|
||||||
|
checkNotNull(findShoes)
|
||||||
|
return findShoes
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package org.example.data
|
package org.example.data
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
import org.example.data.model.UserDTO
|
import org.example.data.model.UserDTO
|
||||||
|
|
||||||
val userList = listOf(
|
val userList = listOf(
|
||||||
@ -20,5 +21,24 @@ val userList = listOf(
|
|||||||
firstName = "Oleg",
|
firstName = "Oleg",
|
||||||
password = "423",
|
password = "423",
|
||||||
email = "test3@mail.ru",
|
email = "test3@mail.ru",
|
||||||
),
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val shoesList = listOf(
|
||||||
|
ShoesDTO(
|
||||||
|
productId = 1,
|
||||||
|
productName = "nikepro",
|
||||||
|
cost = "100",
|
||||||
|
count = 15,
|
||||||
|
photo = "dsds",
|
||||||
|
description = "Самые топовые кроссы"
|
||||||
|
),
|
||||||
|
ShoesDTO(
|
||||||
|
productId = 2,
|
||||||
|
productName = "adik",
|
||||||
|
cost = "2000",
|
||||||
|
count = 10,
|
||||||
|
photo = "dsddwsda",
|
||||||
|
description = "Для четких пацанов"
|
||||||
|
),
|
||||||
)
|
)
|
@ -1,14 +1,12 @@
|
|||||||
package org.example.data.model
|
package org.example.data.model
|
||||||
|
|
||||||
import org.w3c.dom.Text
|
data class ShoesDTO(
|
||||||
|
|
||||||
data class SneakersDTO(
|
|
||||||
val productId: Int,
|
val productId: Int,
|
||||||
var productName: String,
|
var productName: String,
|
||||||
var cost: String,
|
var cost: String,
|
||||||
var count: Int,
|
var count: Int,
|
||||||
var photo: String,
|
var photo: String,
|
||||||
var description: Text
|
var description: String
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
19
src/main/kotlin/domain/ShoesUseCase.kt
Normal file
19
src/main/kotlin/domain/ShoesUseCase.kt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package org.example.domain
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
|
import org.example.domain.request.AddShoesRequest
|
||||||
|
|
||||||
|
interface ShoesUseCase {
|
||||||
|
|
||||||
|
fun addProductToBasket()
|
||||||
|
|
||||||
|
fun addProductToFavorite()
|
||||||
|
|
||||||
|
fun addShoes(addShoesRequest: AddShoesRequest): ShoesDTO
|
||||||
|
|
||||||
|
fun removeShoes(productId: Int): Boolean
|
||||||
|
fun updateShoes(productId: Int, updatedShoes: ShoesDTO): ShoesDTO
|
||||||
|
fun getAllShoes():List<ShoesDTO>
|
||||||
|
fun findShoesById(productId: Int): ShoesDTO
|
||||||
|
|
||||||
|
}
|
60
src/main/kotlin/domain/ShoesUseCaseImpl.kt
Normal file
60
src/main/kotlin/domain/ShoesUseCaseImpl.kt
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package org.example.domain
|
||||||
|
|
||||||
|
import org.example.data.ShoesRepository
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
|
import org.example.data.shoesList
|
||||||
|
import org.example.domain.request.AddShoesRequest
|
||||||
|
|
||||||
|
class ShoesUseCaseImpl(private val shoesRepository: ShoesRepository): ShoesUseCase {
|
||||||
|
private val shoes: MutableList<ShoesDTO> = shoesList.toMutableList()
|
||||||
|
|
||||||
|
override fun addProductToBasket() {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addProductToFavorite() {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun addShoes(addShoesRequest: AddShoesRequest): ShoesDTO {
|
||||||
|
val newShoes = ShoesDTO(
|
||||||
|
productId = shoes.size + 1,
|
||||||
|
productName = addShoesRequest.productName,
|
||||||
|
cost = addShoesRequest.cost,
|
||||||
|
count = addShoesRequest.count,
|
||||||
|
photo = addShoesRequest.photo,
|
||||||
|
description = addShoesRequest.description.toString()
|
||||||
|
)
|
||||||
|
|
||||||
|
shoes.add(newShoes)
|
||||||
|
return newShoes
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun removeShoes(productId:Int): Boolean {
|
||||||
|
return shoes.removeIf{it.productId == productId }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun updateShoes(productId: Int,updatedShoes: ShoesDTO): ShoesDTO {
|
||||||
|
val oldShoes = shoes.firstOrNull{it.productId == productId}
|
||||||
|
checkNotNull(oldShoes)
|
||||||
|
oldShoes.productName = updatedShoes.productName
|
||||||
|
oldShoes.cost = updatedShoes.cost
|
||||||
|
oldShoes.count = updatedShoes.count
|
||||||
|
oldShoes.photo = updatedShoes.photo
|
||||||
|
oldShoes.description = updatedShoes.description
|
||||||
|
return oldShoes
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getAllShoes(): List<ShoesDTO> = shoes
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
override fun findShoesById(productId: Int): ShoesDTO {
|
||||||
|
val findShoes = shoes.firstOrNull{it.productId == productId}
|
||||||
|
checkNotNull(findShoes)
|
||||||
|
return findShoes
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -57,7 +57,6 @@ class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return UserDtoToUserResponse(userProfile)
|
return UserDtoToUserResponse(userProfile)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package org.example.domain
|
package org.example.domain
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
import org.example.data.model.UserDTO
|
import org.example.data.model.UserDTO
|
||||||
|
import org.example.domain.response.ShoesResponse
|
||||||
import org.example.domain.response.UserResponse
|
import org.example.domain.response.UserResponse
|
||||||
|
|
||||||
fun UserDtoToUserResponse(userDTO: UserDTO) = UserResponse(
|
fun UserDtoToUserResponse(userDTO: UserDTO) = UserResponse(
|
||||||
@ -10,4 +12,13 @@ fun UserDtoToUserResponse(userDTO: UserDTO) = UserResponse(
|
|||||||
phone = userDTO.phone,
|
phone = userDTO.phone,
|
||||||
userId = userDTO.userId,
|
userId = userDTO.userId,
|
||||||
address = userDTO.address,
|
address = userDTO.address,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun ShoesDTOToShoesResponse(shoesDTO: ShoesDTO) = ShoesResponse(
|
||||||
|
productName = shoesDTO.productName,
|
||||||
|
cost = shoesDTO.cost,
|
||||||
|
count = shoesDTO.count,
|
||||||
|
photo = shoesDTO.photo,
|
||||||
|
description = shoesDTO.description,
|
||||||
|
productId = shoesDTO.productId
|
||||||
)
|
)
|
9
src/main/kotlin/domain/request/AddShoesRequest.kt
Normal file
9
src/main/kotlin/domain/request/AddShoesRequest.kt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package org.example.domain.request
|
||||||
|
|
||||||
|
data class AddShoesRequest(
|
||||||
|
var productName: String,
|
||||||
|
var cost: String,
|
||||||
|
var count: Int,
|
||||||
|
var photo: String,
|
||||||
|
var description: String
|
||||||
|
)
|
10
src/main/kotlin/domain/response/ShoesResponse.kt
Normal file
10
src/main/kotlin/domain/response/ShoesResponse.kt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package org.example.domain.response
|
||||||
|
|
||||||
|
data class ShoesResponse (
|
||||||
|
val productId: Int,
|
||||||
|
var productName: String,
|
||||||
|
var cost: String,
|
||||||
|
var count: Int,
|
||||||
|
var photo: String,
|
||||||
|
var description: String
|
||||||
|
)
|
109
src/main/kotlin/ui/ShoesUI.kt
Normal file
109
src/main/kotlin/ui/ShoesUI.kt
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
package org.example.ui
|
||||||
|
|
||||||
|
import org.example.data.model.ShoesDTO
|
||||||
|
import org.example.domain.ShoesUseCase
|
||||||
|
import org.example.domain.request.AddShoesRequest
|
||||||
|
|
||||||
|
|
||||||
|
class ShoesUI(private val shoesUseCase: ShoesUseCase) {
|
||||||
|
|
||||||
|
|
||||||
|
fun main(){
|
||||||
|
while (true){
|
||||||
|
println("Выберите действие:")
|
||||||
|
println("1 - Показать все товары")
|
||||||
|
println("2 - Удалить товар")
|
||||||
|
println("3 - Найти товар")
|
||||||
|
println("4 - Обновить товар")
|
||||||
|
println("5 - Добавить")
|
||||||
|
println("6 - Вернуться назад (пока не рабоатает)")
|
||||||
|
val c = readln()
|
||||||
|
when(c){
|
||||||
|
"1"-> getAllShoes()
|
||||||
|
"2"-> removeShoesById()
|
||||||
|
"3"-> findShoesById()
|
||||||
|
"4"-> updateShoes()
|
||||||
|
"5"-> addShoes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun addShoes(){
|
||||||
|
println("Введите название товара")
|
||||||
|
var productName = readln()
|
||||||
|
checkNotNull(productName){"Имя не должно быть пустым"}
|
||||||
|
println("Введите стоимость")
|
||||||
|
var cost = readln()
|
||||||
|
checkNotNull(cost){"Стоимость должна быть указана"}
|
||||||
|
println("Введите количество товара")
|
||||||
|
var count = readln()
|
||||||
|
checkNotNull(count){"Количество должно быть указано"}
|
||||||
|
println("Введите ссылку на фото")
|
||||||
|
var photo = readln()
|
||||||
|
checkNotNull(photo){"Ссылка на фото должна быть"}
|
||||||
|
println("Введите описание товара")
|
||||||
|
var description = readln()
|
||||||
|
checkNotNull(description){"Описание товара не должно быть пустым"}
|
||||||
|
val addShoesRequest = AddShoesRequest(
|
||||||
|
productName = productName,
|
||||||
|
cost = cost,
|
||||||
|
count = count.toInt(),
|
||||||
|
photo = photo,
|
||||||
|
description = description
|
||||||
|
)
|
||||||
|
val newShoes = shoesUseCase.addShoes(addShoesRequest)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeShoesById(){
|
||||||
|
println("Введите id продукта, который хотите удалить")
|
||||||
|
var productId = readln().toInt()
|
||||||
|
checkNotNull(productId){"ID не должно быть пустым"}
|
||||||
|
var removeShoes = shoesUseCase.removeShoes(productId)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateShoes(){
|
||||||
|
println("Введите id товара, который хотите обноновить ")
|
||||||
|
val productId = readln().toInt()
|
||||||
|
checkNotNull(productId){"ID не должно быть пустым"}
|
||||||
|
println("Введите название товара")
|
||||||
|
var productName = readln()
|
||||||
|
checkNotNull(productName){"Имя не должно быть пустым"}
|
||||||
|
println("Введите стоимость")
|
||||||
|
var cost = readln()
|
||||||
|
checkNotNull(cost){"Стоимость должна быть указана"}
|
||||||
|
println("Введите количество товара")
|
||||||
|
var count = readln()
|
||||||
|
checkNotNull(count){"Количество должно быть указано"}
|
||||||
|
println("Введите ссылку на фото")
|
||||||
|
var photo = readln()
|
||||||
|
checkNotNull(photo){"Ссылка на фото должна быть"}
|
||||||
|
println("Введите описание товара")
|
||||||
|
var description = readln()
|
||||||
|
checkNotNull(description){"Описание товара не должно быть пустым"}
|
||||||
|
val newProduct = ShoesDTO(
|
||||||
|
productName = productName,
|
||||||
|
cost = cost,
|
||||||
|
count = count.toInt(),
|
||||||
|
photo = photo,
|
||||||
|
description = description,
|
||||||
|
productId = productId
|
||||||
|
)
|
||||||
|
shoesUseCase.updateShoes(productId,newProduct)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun findShoesById(){
|
||||||
|
println("Введите id продукта, который хотите найти")
|
||||||
|
var productId = readln().toInt()
|
||||||
|
checkNotNull(productId){"ID не должно быть пустым"}
|
||||||
|
println(shoesUseCase.findShoesById(productId))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getAllShoes(){
|
||||||
|
val allShoes = shoesUseCase.getAllShoes()
|
||||||
|
allShoes.forEach{
|
||||||
|
println(it)
|
||||||
|
}
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user