add logic for registration

This commit is contained in:
KP9lKk 2025-01-23 11:23:22 +03:00
parent 29ee9377ac
commit 3ffa81cb9b
6 changed files with 38 additions and 8 deletions

View File

@ -1,9 +1,10 @@
package org.example.data package org.example.data
import org.example.data.model.UserDTO import org.example.data.model.UserDTO
import org.example.domain.request.RegistrationRequest
interface UserRepository { interface UserRepository {
fun addUser() fun addUser(registrationRequest: RegistrationRequest): UserDTO
fun removeUserById(userId: Int): Boolean fun removeUserById(userId: Int): Boolean
fun updateUserById(userId: Int, updatedUser: UserDTO): UserDTO fun updateUserById(userId: Int, updatedUser: UserDTO): UserDTO
fun getAllUsers(): List<UserDTO> fun getAllUsers(): List<UserDTO>

View File

@ -1,12 +1,21 @@
package org.example.data package org.example.data
import org.example.data.model.UserDTO import org.example.data.model.UserDTO
import org.example.domain.request.RegistrationRequest
class UserRepositoryImpl: UserRepository { class UserRepositoryImpl: UserRepository {
private val userSource: MutableList<UserDTO> = userList.toMutableList() private val userSource: MutableList<UserDTO> = 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 { override fun removeUserById(userId: Int): Boolean {

View File

@ -1,11 +1,12 @@
package org.example.domain package org.example.domain
import org.example.domain.request.AuthorizeRequest import org.example.domain.request.AuthorizeRequest
import org.example.domain.request.RegistrationRequest
import org.example.domain.response.UserResponse import org.example.domain.response.UserResponse
interface UserUseCase { interface UserUseCase {
fun authorize(authorizeRequest: AuthorizeRequest): UserResponse fun authorize(authorizeRequest: AuthorizeRequest): UserResponse
fun registration() fun registration(registrationRequest: RegistrationRequest): UserResponse
fun changePassword() fun changePassword()
fun changeProfile() fun changeProfile()
} }

View File

@ -2,6 +2,7 @@ package org.example.domain
import org.example.data.UserRepository import org.example.data.UserRepository
import org.example.domain.request.AuthorizeRequest import org.example.domain.request.AuthorizeRequest
import org.example.domain.request.RegistrationRequest
import org.example.domain.response.UserResponse import org.example.domain.response.UserResponse
class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase { class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase {
@ -19,9 +20,18 @@ class UserUseCaseImpl(private val userRepository: UserRepository): UserUseCase {
return UserDtoToUserResponse(findUser) return UserDtoToUserResponse(findUser)
} }
override fun registration() { override fun registration(registrationRequest: RegistrationRequest): UserResponse {
TODO("Not yet implemented") //уникальность почты
val isUnique = userRepository.getAllUsers().firstOrNull{
it.email == registrationRequest.email
} == null
require(isUnique){
"Такая почта уже существует"
} }
userRepository.addUser()
}
override fun changePassword() { override fun changePassword() {
TODO("Not yet implemented") TODO("Not yet implemented")

View File

@ -0,0 +1,7 @@
package org.example.domain.request
data class RegistrationRequest (
val email: String,
val password: String,
val firstName: String
)

View File

@ -6,10 +6,12 @@ import org.example.domain.response.UserResponse
class UserUI(private val userUseCase: UserUseCase) { class UserUI(private val userUseCase: UserUseCase) {
fun authorize(){ fun authorize(){
println("Введите почту")
val email = readlnOrNull() val email = readlnOrNull()
checkNotNull(email){ checkNotNull(email){
"Почта не должна отсутствовать" "Почта не должна отсутствовать"
} }
println("Введите пароль")
val password = readlnOrNull() val password = readlnOrNull()
checkNotNull(password){ checkNotNull(password){
"Пароль не должен отсутствовать" "Пароль не должен отсутствовать"
@ -18,10 +20,10 @@ class UserUI(private val userUseCase: UserUseCase) {
email = email, email = email,
password = password,) password = password,)
val user = userUseCase.authorize(authorizeRequest) 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() val printOutput = StringBuilder()
printOutput.append("Ваша почта ${userResponse.email}") printOutput.append("Ваша почта ${userResponse.email}")
printOutput.appendLine() printOutput.appendLine()