diff --git a/app/src/main/java/ru/myitschool/work/core/Constants.kt b/app/src/main/java/ru/myitschool/work/core/Constants.kt index e3bd895..47758e4 100644 --- a/app/src/main/java/ru/myitschool/work/core/Constants.kt +++ b/app/src/main/java/ru/myitschool/work/core/Constants.kt @@ -1,5 +1,5 @@ package ru.myitschool.work.core // БЕРИТЕ И ИЗМЕНЯЙТЕ ХОСТ ТОЛЬКО ЗДЕСЬ И НЕ БЕРИТЕ ИЗ ДРУГИХ МЕСТ. ФАЙЛ ПЕРЕМЕЩАТЬ НЕЛЬЗЯ object Constants { - const val SERVER_ADDRESS = "http://192.168.1.145:8080" + const val SERVER_ADDRESS = "http://10.6.66.78:8080" } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/data/deleteEmployee/DeleteEmployeeRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/deleteEmployee/DeleteEmployeeRepoImpl.kt index 3d633c8..b521d74 100644 --- a/app/src/main/java/ru/myitschool/work/data/deleteEmployee/DeleteEmployeeRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/deleteEmployee/DeleteEmployeeRepoImpl.kt @@ -2,8 +2,10 @@ package ru.myitschool.work.data.deleteEmployee import ru.myitschool.work.domain.deleteEmployee.DeleteEmployeeRepo -class DeleteEmployeeRepoImpl : DeleteEmployeeRepo { +class DeleteEmployeeRepoImpl( + private val networkDataSource: DeleteEmployeeNetworkDataSource +) : DeleteEmployeeRepo { override suspend fun deleteEmployee(login: String): Result { - TODO("Not yet implemented") + return networkDataSource.deleteEmployee(login) } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListNetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListNetworkDataSource.kt index 8d00f6e..5ae03a6 100644 --- a/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListNetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListNetworkDataSource.kt @@ -21,11 +21,11 @@ class EmployeeListNetworkDataSource( private val client = NetworkModule.httpClient private val userDataStoreManager = UserDataStoreManager.getInstance(context) - suspend fun getInfo():Result = withContext(Dispatchers.IO){ + suspend fun getList(pageNum: Int, pageSize: Int):Result = withContext(Dispatchers.IO){ runCatching { val username = userDataStoreManager.usernameFlow.first() val password = userDataStoreManager.passwordFlow.first() - val result = client.get("${Constants.SERVER_ADDRESS}/api/employee/all"){ + val result = client.get("${Constants.SERVER_ADDRESS}/api/employee/all?page=$pageNum&size=$pageSize"){ headers{ basicAuth(username, password) } diff --git a/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListRepoImpl.kt index e2c5460..385421c 100644 --- a/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/employeeList/EmployeeListRepoImpl.kt @@ -3,8 +3,25 @@ package ru.myitschool.work.data.employeeList import ru.myitschool.work.domain.employeeList.EmployeeListRepo import ru.myitschool.work.entities.EmployeeEntity -class EmployeeListRepoImpl : EmployeeListRepo { - override suspend fun getList(): Result> { - TODO("Not yet implemented") +class EmployeeListRepoImpl( + private val networkDataSource: EmployeeListNetworkDataSource +) : EmployeeListRepo { + override suspend fun getList( + pageNum: Int, + pageSize: Int + ): Result> { + return networkDataSource.getList(pageNum, pageSize ).map { pagingDTO-> + pagingDTO.content?.mapNotNull { dto -> + EmployeeEntity( + id = dto.id ?: return@mapNotNull null, + login = dto.login ?: return@mapNotNull null , + name = dto.name ?: return@mapNotNull null, + authority = dto.authority ?: return@mapNotNull null, + photoUrl = dto.photoUrl, + position = dto.position ?: return@mapNotNull null, + qrEnabled = dto.qrEnabled ?: false + ) + } ?: return Result.failure(IllegalStateException("List parse error")) + } + } } -} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/data/entrance/allEntrances/AllEntranceListRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/entrance/allEntrances/AllEntranceListRepoImpl.kt index 0e6b65d..b18f115 100644 --- a/app/src/main/java/ru/myitschool/work/data/entrance/allEntrances/AllEntranceListRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/entrance/allEntrances/AllEntranceListRepoImpl.kt @@ -16,7 +16,8 @@ class AllEntranceListRepoImpl( id = dto.id ?: return@mapNotNull null, scanTime = dto.scanTime ?: return@mapNotNull null, readerName = dto.readerName ?: return@mapNotNull null, - type = dto.type ?: return@mapNotNull null + type = dto.type ?: return@mapNotNull null, + entryType = dto.entryType ?: return@mapNotNull null, ) }?: return Result.failure(IllegalStateException("List parse error")) } diff --git a/app/src/main/java/ru/myitschool/work/data/entrance/employeeEntrances/EmployeeEntranceListRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/entrance/employeeEntrances/EmployeeEntranceListRepoImpl.kt index f6aa7fc..bfce476 100644 --- a/app/src/main/java/ru/myitschool/work/data/entrance/employeeEntrances/EmployeeEntranceListRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/entrance/employeeEntrances/EmployeeEntranceListRepoImpl.kt @@ -14,6 +14,7 @@ class EmployeeEntranceListRepoImpl( scanTime = dto.scanTime ?: return@mapNotNull null, readerName = dto.readerName ?: return@mapNotNull null, type = dto.type ?: return@mapNotNull null, + entryType = dto.entryType ?: return@mapNotNull null ) }?: return Result.failure(IllegalStateException("List parse error")) } diff --git a/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceNetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceNetworkDataSource.kt index ebedb68..6500ba5 100644 --- a/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceNetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceNetworkDataSource.kt @@ -3,8 +3,7 @@ package ru.myitschool.work.data.entrance.lastEntrance import android.content.Context import io.ktor.client.call.body import io.ktor.client.request.basicAuth -import io.ktor.client.request.post -import io.ktor.client.statement.bodyAsText +import io.ktor.client.request.get import io.ktor.http.HttpStatusCode import io.ktor.http.headers import kotlinx.coroutines.Dispatchers @@ -24,7 +23,7 @@ class LastEntranceNetworkDataSource( runCatching { val username = userDataStoreManager.usernameFlow.first() val password = userDataStoreManager.passwordFlow.first() - val result = client.post("${Constants.SERVER_ADDRESS}/api/entrance/last"){ + val result = client.get("${Constants.SERVER_ADDRESS}/api/entrance/last"){ headers{ basicAuth(username, password) } @@ -32,7 +31,6 @@ class LastEntranceNetworkDataSource( if (result.status != HttpStatusCode.OK) { error("Status ${result.status}") } - println(result.bodyAsText()) result.body() } } diff --git a/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceRepoImpl.kt index 451bd79..73537f0 100644 --- a/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/entrance/lastEntrance/LastEntranceRepoImpl.kt @@ -12,7 +12,8 @@ class LastEntranceRepoImpl( id = dto.id ?: 0, scanTime = dto.scanTime, readerName = dto.readerName ?: "", - type = dto.type ?: "" + type = dto.type ?: "", + entryType = dto.entryType ) } } diff --git a/app/src/main/java/ru/myitschool/work/domain/employeeList/EmployeeListRepo.kt b/app/src/main/java/ru/myitschool/work/domain/employeeList/EmployeeListRepo.kt index b9f114e..803927a 100644 --- a/app/src/main/java/ru/myitschool/work/domain/employeeList/EmployeeListRepo.kt +++ b/app/src/main/java/ru/myitschool/work/domain/employeeList/EmployeeListRepo.kt @@ -3,5 +3,7 @@ package ru.myitschool.work.domain.employeeList import ru.myitschool.work.entities.EmployeeEntity interface EmployeeListRepo { - suspend fun getList() : Result> + suspend fun getList( + pageNum: Int, + pageSize: Int ) : Result> } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/employeeList/GetEmployeeListUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/employeeList/GetEmployeeListUseCase.kt index 35bd974..6ab4805 100644 --- a/app/src/main/java/ru/myitschool/work/domain/employeeList/GetEmployeeListUseCase.kt +++ b/app/src/main/java/ru/myitschool/work/domain/employeeList/GetEmployeeListUseCase.kt @@ -3,5 +3,5 @@ package ru.myitschool.work.domain.employeeList class GetEmployeeListUseCase( private val repo: EmployeeListRepo ) { - suspend operator fun invoke() = repo.getList() + suspend operator fun invoke(pageNum: Int, pageSize: Int) = repo.getList(pageNum, pageSize) } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/dto/EmployeeEntranceDTO.kt b/app/src/main/java/ru/myitschool/work/dto/EmployeeEntranceDTO.kt index 53376ac..10c8aa1 100644 --- a/app/src/main/java/ru/myitschool/work/dto/EmployeeEntranceDTO.kt +++ b/app/src/main/java/ru/myitschool/work/dto/EmployeeEntranceDTO.kt @@ -10,5 +10,6 @@ data class EmployeeEntranceDTO( @SerialName("id") val id : Int?, @SerialName("entryTime") @Serializable(with = DateSerializer::class) val scanTime : Date?, @SerialName("readerName") val readerName: String?, - @SerialName("type") val type: String? + @SerialName("type") val type: String?, + @SerialName("entryType") val entryType: String? ) diff --git a/app/src/main/java/ru/myitschool/work/entities/EmployeeEntranceEntity.kt b/app/src/main/java/ru/myitschool/work/entities/EmployeeEntranceEntity.kt index 6231944..7b2fb22 100644 --- a/app/src/main/java/ru/myitschool/work/entities/EmployeeEntranceEntity.kt +++ b/app/src/main/java/ru/myitschool/work/entities/EmployeeEntranceEntity.kt @@ -2,8 +2,9 @@ package ru.myitschool.work.entities import java.util.Date data class EmployeeEntranceEntity( - val id : Int, + val id : Int?, val scanTime : Date?, - val readerName: String, - val type: String + val readerName: String?, + val type: String?, + val entryType: String? ) diff --git a/app/src/main/java/ru/myitschool/work/ui/main/EmployeeEntranceListAdapter.kt b/app/src/main/java/ru/myitschool/work/ui/main/EmployeeEntranceListAdapter.kt index 0f1e3c5..3ad066b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/main/EmployeeEntranceListAdapter.kt +++ b/app/src/main/java/ru/myitschool/work/ui/main/EmployeeEntranceListAdapter.kt @@ -4,9 +4,11 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.RecyclerView +import ru.myitschool.work.R import ru.myitschool.work.databinding.ItemVisitBinding import ru.myitschool.work.entities.EmployeeEntranceEntity -import ru.myitschool.work.utils.dateConverter +import ru.myitschool.work.utils.monthConverter +import ru.myitschool.work.utils.timeConverter class EmployeeEntranceListAdapter : PagingDataAdapter(DiffUtil) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : ViewHolder{ @@ -27,14 +29,23 @@ class EmployeeEntranceListAdapter : PagingDataAdapter() { override fun areItemsTheSame(oldItem: EmployeeEntranceEntity, newItem: EmployeeEntranceEntity): Boolean { - return oldItem.scanTime == newItem.scanTime + return oldItem.id == newItem.id } override fun areContentsTheSame(oldItem: EmployeeEntranceEntity, newItem: EmployeeEntranceEntity): Boolean { return oldItem == newItem diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 5844dcf..116e019 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -16,4 +16,5 @@ Operation was cancelled Enter the password Visit history + Incorrect login or password \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 73f33d9..98cfda0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,7 +18,7 @@ Закрыть Введите пароль История посещений - + Неправильное имя пользователя или пароль \ No newline at end of file