From 90727a314bdc8e65b662fc6f2eaabba3fd60fb56 Mon Sep 17 00:00:00 2001 From: Niktia Date: Wed, 19 Feb 2025 18:56:07 +0300 Subject: [PATCH] add EnterUseCase --- .../work/data/user/UserNetworkDataSource.kt | 14 ++++++++++++++ .../ru/myitschool/work/data/user/UserRepoImpl.kt | 9 +++++++++ .../ru/myitschool/work/domain/user/EnterUseCase.kt | 14 ++++++++++++++ .../myitschool/work/domain/user/EntranceEntity.kt | 1 - .../ru/myitschool/work/domain/user/UserRepo.kt | 1 + 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/ru/myitschool/work/domain/user/EnterUseCase.kt diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt index 2c68b00..ecf8c9f 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt @@ -4,6 +4,7 @@ import android.util.Log import io.ktor.client.call.body import io.ktor.client.request.get import io.ktor.client.request.header +import io.ktor.client.request.patch import io.ktor.client.statement.bodyAsText import io.ktor.http.HttpHeaders import io.ktor.http.HttpStatusCode @@ -46,4 +47,17 @@ class UserNetworkDataSource { } } + suspend fun enter(value : Long, login : String): Result = withContext(Dispatchers.IO) { + runCatching { + val result = client.patch("$SERVER_ADDRESS/api/open") { + header(HttpHeaders.Authorization, token) + + } + Log.d("result", "${result.status}") + if (result.status != HttpStatusCode.OK) { + error("Status ${result.status}") + } + result.body() + } + } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt index 71cc30b..2fcb8f1 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt @@ -2,6 +2,7 @@ package ru.myitschool.work.data.user import ru.myitschool.work.domain.user.EntranceEntity import ru.myitschool.work.domain.user.UserEntity import ru.myitschool.work.domain.user.UserRepo +import kotlin.math.log class UserRepoImpl ( @@ -28,12 +29,20 @@ class UserRepoImpl ( userList.map { it.toEntity() } } } + + override suspend fun enter(value: Long, login : String): Result { + return userNetworkDataSource.enter(value, login); + } + fun EntranceDto.toEntity(): EntranceEntity { return EntranceEntity( login = login, name = this.name, enteredAt = this.enteredAt, + enterType = this.enterType ) } + + } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/user/EnterUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/user/EnterUseCase.kt new file mode 100644 index 0000000..3a75ebc --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/domain/user/EnterUseCase.kt @@ -0,0 +1,14 @@ +package ru.myitschool.work.domain.user + +import ru.myitschool.work.data.auth.AuthStorageDataSource +import ru.myitschool.work.data.user.UserDto + +class EnterUseCase ( + private val repo: UserRepo, + private val authStorageDataSource : AuthStorageDataSource +) { + private fun getUserFromStorage() : UserDto? { + return authStorageDataSource.userInfo + } + suspend operator fun invoke(value : Long) = repo.enter(value, getUserFromStorage()?.login!!) +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/user/EntranceEntity.kt b/app/src/main/java/ru/myitschool/work/domain/user/EntranceEntity.kt index aeb9db0..f19832a 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/EntranceEntity.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/EntranceEntity.kt @@ -1,6 +1,5 @@ package ru.myitschool.work.domain.user -import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable diff --git a/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt b/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt index 58d8aea..db54029 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt @@ -4,4 +4,5 @@ package ru.myitschool.work.domain.user interface UserRepo { suspend fun getUser(login: String) : Result suspend fun getEntrancesList(login : String) : Result> + suspend fun enter(value : Long, login : String) : Result } \ No newline at end of file