From 3ffa81cb9b8af55ea13cee1e14045d8e63a16ed9 Mon Sep 17 00:00:00 2001 From: KP9lKk Date: Thu, 23 Jan 2025 11:23:22 +0300 Subject: [PATCH] add logic for registration --- src/main/kotlin/data/UserRepository.kt | 3 ++- src/main/kotlin/data/UserRepositoryImpl.kt | 13 +++++++++++-- src/main/kotlin/domain/UserUseCase.kt | 3 ++- src/main/kotlin/domain/UserUseCaseImpl.kt | 14 ++++++++++++-- .../kotlin/domain/request/RegistrationRequest.kt | 7 +++++++ src/main/kotlin/ui/UserUI.kt | 6 ++++-- 6 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 src/main/kotlin/domain/request/RegistrationRequest.kt diff --git a/src/main/kotlin/data/UserRepository.kt b/src/main/kotlin/data/UserRepository.kt index 9878def..dc250ff 100644 --- a/src/main/kotlin/data/UserRepository.kt +++ b/src/main/kotlin/data/UserRepository.kt @@ -1,9 +1,10 @@ package org.example.data import org.example.data.model.UserDTO +import org.example.domain.request.RegistrationRequest interface UserRepository { - fun addUser() + fun addUser(registrationRequest: RegistrationRequest): UserDTO fun removeUserById(userId: Int): Boolean fun updateUserById(userId: Int, updatedUser: UserDTO): UserDTO fun getAllUsers(): List diff --git a/src/main/kotlin/data/UserRepositoryImpl.kt b/src/main/kotlin/data/UserRepositoryImpl.kt index e7a3c42..ae9fc56 100644 --- a/src/main/kotlin/data/UserRepositoryImpl.kt +++ b/src/main/kotlin/data/UserRepositoryImpl.kt @@ -1,12 +1,21 @@ package org.example.data import org.example.data.model.UserDTO +import org.example.domain.request.RegistrationRequest class UserRepositoryImpl: UserRepository { private val userSource: MutableList = userList.toMutableList() - override fun addUser() { - TODO("Not yet implemented") + + override fun addUser(registrationRequest: RegistrationRequest): UserDTO { + val newUser = UserDTO( + userId = userSource.size + 1, + email = registrationRequest.email, + firstName = registrationRequest.firstName, + password = registrationRequest.password + ) + userSource.add(newUser) + return newUser } override fun removeUserById(userId: Int): Boolean { diff --git a/src/main/kotlin/domain/UserUseCase.kt b/src/main/kotlin/domain/UserUseCase.kt index c4a9c75..504fb54 100644 --- a/src/main/kotlin/domain/UserUseCase.kt +++ b/src/main/kotlin/domain/UserUseCase.kt @@ -1,11 +1,12 @@ package org.example.domain import org.example.domain.request.AuthorizeRequest +import org.example.domain.request.RegistrationRequest import org.example.domain.response.UserResponse interface UserUseCase { fun authorize(authorizeRequest: AuthorizeRequest): UserResponse - fun registration() + fun registration(registrationRequest: RegistrationRequest): UserResponse fun changePassword() fun changeProfile() } \ No newline at end of file diff --git a/src/main/kotlin/domain/UserUseCaseImpl.kt b/src/main/kotlin/domain/UserUseCaseImpl.kt index b5996f0..98ab4ac 100644 --- a/src/main/kotlin/domain/UserUseCaseImpl.kt +++ b/src/main/kotlin/domain/UserUseCaseImpl.kt @@ -2,6 +2,7 @@ package org.example.domain import org.example.data.UserRepository import org.example.domain.request.AuthorizeRequest +import org.example.domain.request.RegistrationRequest import org.example.domain.response.UserResponse class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase { @@ -19,10 +20,19 @@ class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase { return UserDtoToUserResponse(findUser) } - override fun registration() { - TODO("Not yet implemented") + override fun registration(registrationRequest: RegistrationRequest): UserResponse { + //уникальность почты + val isUnique = userRepository.getAllUsers().firstOrNull{ + it.email == registrationRequest.email + } == null + require(isUnique){ + "Такая почта уже существует" + } + userRepository.addUser() } + + override fun changePassword() { TODO("Not yet implemented") } diff --git a/src/main/kotlin/domain/request/RegistrationRequest.kt b/src/main/kotlin/domain/request/RegistrationRequest.kt new file mode 100644 index 0000000..0d5d133 --- /dev/null +++ b/src/main/kotlin/domain/request/RegistrationRequest.kt @@ -0,0 +1,7 @@ +package org.example.domain.request + +data class RegistrationRequest ( + val email: String, + val password: String, + val firstName: String +) \ No newline at end of file diff --git a/src/main/kotlin/ui/UserUI.kt b/src/main/kotlin/ui/UserUI.kt index eedc072..514f876 100644 --- a/src/main/kotlin/ui/UserUI.kt +++ b/src/main/kotlin/ui/UserUI.kt @@ -6,10 +6,12 @@ import org.example.domain.response.UserResponse class UserUI(private val userUseCase: UserUseCase) { fun authorize(){ + println("Введите почту") val email = readlnOrNull() checkNotNull(email){ "Почта не должна отсутствовать" } + println("Введите пароль") val password = readlnOrNull() checkNotNull(password){ "Пароль не должен отсутствовать" @@ -18,10 +20,10 @@ class UserUI(private val userUseCase: UserUseCase) { email = email, password = password,) val user = userUseCase.authorize(authorizeRequest) - println(UserResponseToString(user)) + println(userResponseToString(user)) } - fun UserResponseToString(userResponse: UserResponse): String{ + private fun userResponseToString(userResponse: UserResponse): String{ val printOutput = StringBuilder() printOutput.append("Ваша почта ${userResponse.email}") printOutput.appendLine()