feat: Доделаны запросы на сервер + фикс некоторых ошибок
This commit is contained in:
		
							parent
							
								
									b839938529
								
							
						
					
					
						commit
						2e52454f1c
					
				| @ -1,5 +1,5 @@ | |||||||
| package ru.myitschool.work.core | package ru.myitschool.work.core | ||||||
| // БЕРИТЕ И ИЗМЕНЯЙТЕ ХОСТ ТОЛЬКО ЗДЕСЬ И НЕ БЕРИТЕ ИЗ ДРУГИХ МЕСТ. ФАЙЛ ПЕРЕМЕЩАТЬ НЕЛЬЗЯ | // БЕРИТЕ И ИЗМЕНЯЙТЕ ХОСТ ТОЛЬКО ЗДЕСЬ И НЕ БЕРИТЕ ИЗ ДРУГИХ МЕСТ. ФАЙЛ ПЕРЕМЕЩАТЬ НЕЛЬЗЯ | ||||||
| object Constants { | object Constants { | ||||||
|     const val SERVER_ADDRESS = "http://192.168.1.145:8080" |     const val SERVER_ADDRESS = "http://10.6.66.78:8080" | ||||||
| } | } | ||||||
| @ -2,8 +2,10 @@ package ru.myitschool.work.data.deleteEmployee | |||||||
| 
 | 
 | ||||||
| import ru.myitschool.work.domain.deleteEmployee.DeleteEmployeeRepo | import ru.myitschool.work.domain.deleteEmployee.DeleteEmployeeRepo | ||||||
| 
 | 
 | ||||||
| class DeleteEmployeeRepoImpl : DeleteEmployeeRepo { | class DeleteEmployeeRepoImpl( | ||||||
|  |     private val networkDataSource: DeleteEmployeeNetworkDataSource | ||||||
|  | ) : DeleteEmployeeRepo { | ||||||
|     override suspend fun deleteEmployee(login: String): Result<Unit> { |     override suspend fun deleteEmployee(login: String): Result<Unit> { | ||||||
|         TODO("Not yet implemented") |         return networkDataSource.deleteEmployee(login) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -21,11 +21,11 @@ class EmployeeListNetworkDataSource( | |||||||
|     private val client = NetworkModule.httpClient |     private val client = NetworkModule.httpClient | ||||||
| 
 | 
 | ||||||
|     private val userDataStoreManager = UserDataStoreManager.getInstance(context) |     private val userDataStoreManager = UserDataStoreManager.getInstance(context) | ||||||
|     suspend fun getInfo():Result<EmployeePagingDTO> = withContext(Dispatchers.IO){ |     suspend fun getList(pageNum: Int, pageSize: Int):Result<EmployeePagingDTO> = withContext(Dispatchers.IO){ | ||||||
|         runCatching { |         runCatching { | ||||||
|             val username = userDataStoreManager.usernameFlow.first() |             val username = userDataStoreManager.usernameFlow.first() | ||||||
|             val password = userDataStoreManager.passwordFlow.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{ |                 headers{ | ||||||
|                     basicAuth(username, password) |                     basicAuth(username, password) | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -3,8 +3,25 @@ package ru.myitschool.work.data.employeeList | |||||||
| import ru.myitschool.work.domain.employeeList.EmployeeListRepo | import ru.myitschool.work.domain.employeeList.EmployeeListRepo | ||||||
| import ru.myitschool.work.entities.EmployeeEntity | import ru.myitschool.work.entities.EmployeeEntity | ||||||
| 
 | 
 | ||||||
| class EmployeeListRepoImpl : EmployeeListRepo { | class EmployeeListRepoImpl( | ||||||
|     override suspend fun getList(): Result<List<EmployeeEntity>> { |     private val networkDataSource: EmployeeListNetworkDataSource | ||||||
|         TODO("Not yet implemented") | ) : EmployeeListRepo { | ||||||
|  |     override suspend fun getList( | ||||||
|  |         pageNum: Int, | ||||||
|  |         pageSize: Int | ||||||
|  |     ): Result<List<EmployeeEntity>> { | ||||||
|  |         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")) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } |  | ||||||
| @ -16,7 +16,8 @@ class AllEntranceListRepoImpl( | |||||||
|                     id = dto.id ?: return@mapNotNull null, |                     id = dto.id ?: return@mapNotNull null, | ||||||
|                     scanTime = dto.scanTime ?: return@mapNotNull null, |                     scanTime = dto.scanTime ?: return@mapNotNull null, | ||||||
|                     readerName = dto.readerName ?: 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")) |             }?: return Result.failure(IllegalStateException("List parse error")) | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ class EmployeeEntranceListRepoImpl( | |||||||
|                     scanTime = dto.scanTime ?: return@mapNotNull null, |                     scanTime = dto.scanTime ?: return@mapNotNull null, | ||||||
|                     readerName = dto.readerName ?: 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")) |             }?: return Result.failure(IllegalStateException("List parse error")) | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -3,8 +3,7 @@ package ru.myitschool.work.data.entrance.lastEntrance | |||||||
| import android.content.Context | import android.content.Context | ||||||
| import io.ktor.client.call.body | import io.ktor.client.call.body | ||||||
| import io.ktor.client.request.basicAuth | import io.ktor.client.request.basicAuth | ||||||
| import io.ktor.client.request.post | import io.ktor.client.request.get | ||||||
| import io.ktor.client.statement.bodyAsText |  | ||||||
| import io.ktor.http.HttpStatusCode | import io.ktor.http.HttpStatusCode | ||||||
| import io.ktor.http.headers | import io.ktor.http.headers | ||||||
| import kotlinx.coroutines.Dispatchers | import kotlinx.coroutines.Dispatchers | ||||||
| @ -24,7 +23,7 @@ class LastEntranceNetworkDataSource( | |||||||
|         runCatching { |         runCatching { | ||||||
|             val username = userDataStoreManager.usernameFlow.first() |             val username = userDataStoreManager.usernameFlow.first() | ||||||
|             val password = userDataStoreManager.passwordFlow.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{ |                 headers{ | ||||||
|                     basicAuth(username, password) |                     basicAuth(username, password) | ||||||
|                 } |                 } | ||||||
| @ -32,7 +31,6 @@ class LastEntranceNetworkDataSource( | |||||||
|             if (result.status != HttpStatusCode.OK) { |             if (result.status != HttpStatusCode.OK) { | ||||||
|                 error("Status ${result.status}") |                 error("Status ${result.status}") | ||||||
|             } |             } | ||||||
|             println(result.bodyAsText()) |  | ||||||
|             result.body() |             result.body() | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -12,7 +12,8 @@ class LastEntranceRepoImpl( | |||||||
|                 id = dto.id ?: 0, |                 id = dto.id ?: 0, | ||||||
|                 scanTime = dto.scanTime, |                 scanTime = dto.scanTime, | ||||||
|                 readerName = dto.readerName ?: "", |                 readerName = dto.readerName ?: "", | ||||||
|                 type = dto.type ?: "" |                 type = dto.type ?: "", | ||||||
|  |                 entryType = dto.entryType | ||||||
|             ) |             ) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -3,5 +3,7 @@ package ru.myitschool.work.domain.employeeList | |||||||
| import ru.myitschool.work.entities.EmployeeEntity | import ru.myitschool.work.entities.EmployeeEntity | ||||||
| 
 | 
 | ||||||
| interface EmployeeListRepo { | interface EmployeeListRepo { | ||||||
|     suspend fun getList() : Result<List<EmployeeEntity>> |     suspend fun getList( | ||||||
|  |         pageNum: Int, | ||||||
|  |         pageSize: Int ) : Result<List<EmployeeEntity>> | ||||||
| } | } | ||||||
| @ -3,5 +3,5 @@ package ru.myitschool.work.domain.employeeList | |||||||
| class GetEmployeeListUseCase( | class GetEmployeeListUseCase( | ||||||
|     private val repo: EmployeeListRepo |     private val repo: EmployeeListRepo | ||||||
| ) { | ) { | ||||||
|     suspend operator fun invoke() = repo.getList() |     suspend operator fun invoke(pageNum: Int, pageSize: Int) = repo.getList(pageNum, pageSize) | ||||||
| } | } | ||||||
| @ -10,5 +10,6 @@ data class EmployeeEntranceDTO( | |||||||
|     @SerialName("id") val id : Int?, |     @SerialName("id") val id : Int?, | ||||||
|     @SerialName("entryTime") @Serializable(with = DateSerializer::class) val scanTime : Date?, |     @SerialName("entryTime") @Serializable(with = DateSerializer::class) val scanTime : Date?, | ||||||
|     @SerialName("readerName") val readerName: String?, |     @SerialName("readerName") val readerName: String?, | ||||||
|     @SerialName("type") val type: String? |     @SerialName("type") val type: String?, | ||||||
|  |     @SerialName("entryType") val entryType: String? | ||||||
| ) | ) | ||||||
|  | |||||||
| @ -2,8 +2,9 @@ package ru.myitschool.work.entities | |||||||
| import java.util.Date | import java.util.Date | ||||||
| 
 | 
 | ||||||
| data class EmployeeEntranceEntity( | data class EmployeeEntranceEntity( | ||||||
|     val id : Int, |     val id : Int?, | ||||||
|     val scanTime : Date?, |     val scanTime : Date?, | ||||||
|     val readerName: String, |     val readerName: String?, | ||||||
|     val type: String |     val type: String?, | ||||||
|  |     val entryType: String? | ||||||
| ) | ) | ||||||
|  | |||||||
| @ -4,9 +4,11 @@ import android.view.LayoutInflater | |||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import androidx.paging.PagingDataAdapter | import androidx.paging.PagingDataAdapter | ||||||
| import androidx.recyclerview.widget.RecyclerView | import androidx.recyclerview.widget.RecyclerView | ||||||
|  | import ru.myitschool.work.R | ||||||
| import ru.myitschool.work.databinding.ItemVisitBinding | import ru.myitschool.work.databinding.ItemVisitBinding | ||||||
| import ru.myitschool.work.entities.EmployeeEntranceEntity | 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<EmployeeEntranceEntity, EmployeeEntranceListAdapter.ViewHolder>(DiffUtil) { | class EmployeeEntranceListAdapter : PagingDataAdapter<EmployeeEntranceEntity, EmployeeEntranceListAdapter.ViewHolder>(DiffUtil) { | ||||||
|     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : ViewHolder{ |     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : ViewHolder{ | ||||||
| @ -27,14 +29,23 @@ class EmployeeEntranceListAdapter : PagingDataAdapter<EmployeeEntranceEntity, Em | |||||||
|         private val binding: ItemVisitBinding, |         private val binding: ItemVisitBinding, | ||||||
|     ) : RecyclerView.ViewHolder(binding.root) { |     ) : RecyclerView.ViewHolder(binding.root) { | ||||||
|         fun bind(item: EmployeeEntranceEntity) { |         fun bind(item: EmployeeEntranceEntity) { | ||||||
|             binding.readerName.text = item.readerName |             binding.visitReaderId.text = item.readerName | ||||||
|             binding.timeVisit.text = dateConverter(item.scanTime) |             binding.visitDate.text = monthConverter(item.scanTime) | ||||||
|  |             binding.visitTime.text = timeConverter(item.scanTime) | ||||||
|  |             binding.visitDirection.text = item.entryType | ||||||
|  |             if(item.type == "smartphone"){ | ||||||
|  |                 binding.visitType.setImageResource(R.drawable.logo_visit_scan) | ||||||
|  |             } | ||||||
|  |             else{ | ||||||
|  |                 binding.visitType.setImageResource(R.drawable.logo_visit_card) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|     object DiffUtil : androidx.recyclerview.widget.DiffUtil.ItemCallback<EmployeeEntranceEntity>() { |     object DiffUtil : androidx.recyclerview.widget.DiffUtil.ItemCallback<EmployeeEntranceEntity>() { | ||||||
|         override fun areItemsTheSame(oldItem: EmployeeEntranceEntity, newItem: EmployeeEntranceEntity): Boolean { |         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 { |         override fun areContentsTheSame(oldItem: EmployeeEntranceEntity, newItem: EmployeeEntranceEntity): Boolean { | ||||||
|             return oldItem == newItem |             return oldItem == newItem | ||||||
|  | |||||||
| @ -16,4 +16,5 @@ | |||||||
|     <string name="result_null_text">Operation was cancelled</string> |     <string name="result_null_text">Operation was cancelled</string> | ||||||
|     <string name="password_hint">Enter the password</string> |     <string name="password_hint">Enter the password</string> | ||||||
|     <string name="history_title">Visit history</string> |     <string name="history_title">Visit history</string> | ||||||
|  |     <string name="login_unauthorized">Incorrect login or password</string> | ||||||
| </resources> | </resources> | ||||||
| @ -18,7 +18,7 @@ | |||||||
|     <string name="close_btn">Закрыть</string> |     <string name="close_btn">Закрыть</string> | ||||||
|     <string name="password_hint">Введите пароль</string> |     <string name="password_hint">Введите пароль</string> | ||||||
|     <string name="history_title">История посещений</string> |     <string name="history_title">История посещений</string> | ||||||
|     <!-- TODO: Remove or change this placeholder text --> |     <string name="login_unauthorized">Неправильное имя пользователя или пароль</string> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| </resources> | </resources> | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user