Fix schedule models, format code
This commit is contained in:
@@ -6,8 +6,8 @@ import androidx.activity.ComponentActivity
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleType
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.usecase.GetScheduleUseCase
|
import ru.fincode.tsudesk.feature.schedule.domain.usecase.GetScheduleUseCase
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.usecase.GetScheduleUseCase.ScheduleType
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package ru.fincode.tsudesk.feature.schedule.data.mapper
|
|||||||
|
|
||||||
import ru.fincode.tsudesk.feature.schedule.data.remote.model.LessonDto
|
import ru.fincode.tsudesk.feature.schedule.data.remote.model.LessonDto
|
||||||
import ru.fincode.tsudesk.feature.schedule.data.remote.model.ScheduleDto
|
import ru.fincode.tsudesk.feature.schedule.data.remote.model.ScheduleDto
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.model.Lesson
|
import ru.fincode.tsudesk.feature.schedule.domain.model.LessonEntity
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -11,11 +11,11 @@ class ScheduleDtoToDomainMapper @Inject constructor() {
|
|||||||
operator fun invoke(dto: ScheduleDto): ScheduleEntity =
|
operator fun invoke(dto: ScheduleDto): ScheduleEntity =
|
||||||
ScheduleEntity(lessons = dto.map(::mapLesson))
|
ScheduleEntity(lessons = dto.map(::mapLesson))
|
||||||
|
|
||||||
private fun mapLesson(item: LessonDto): Lesson =
|
private fun mapLesson(item: LessonDto): LessonEntity =
|
||||||
Lesson(
|
LessonEntity(
|
||||||
date = item.date.trim(),
|
date = item.date.trim(),
|
||||||
time = item.time.trim(),
|
time = item.time.trim(),
|
||||||
subject = item.discipline.trim(),
|
name = item.discipline.trim(),
|
||||||
typeName = item.typeName.trim(),
|
typeName = item.typeName.trim(),
|
||||||
room = item.room.trim(),
|
room = item.room.trim(),
|
||||||
teacher = item.teacher.trim(),
|
teacher = item.teacher.trim(),
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ interface ScheduleApi {
|
|||||||
*/
|
*/
|
||||||
@GET("GetSchedule.php")
|
@GET("GetSchedule.php")
|
||||||
suspend fun getSchedule(
|
suspend fun getSchedule(
|
||||||
@Query("search_field") searchField: String,
|
@Query("search_field") searchField: String, @Query("search_value") searchValue: String
|
||||||
@Query("search_value") searchValue: String
|
|
||||||
): ScheduleDto
|
): ScheduleDto
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package ru.fincode.tsudesk.feature.schedule.domain.model
|
||||||
|
|
||||||
|
data class LessonEntity(
|
||||||
|
val date: String, // "12.01.2026"
|
||||||
|
val time: String, // "11:00 - 13:55"
|
||||||
|
val name: String, // discipline
|
||||||
|
val typeName: String, // "Лекции", "Лабораторные занятия" и т.д.
|
||||||
|
val room: String,
|
||||||
|
val teacher: String,
|
||||||
|
val groupId: String,
|
||||||
|
val type: String // "lecture" / "lab" / "practice" / "default"
|
||||||
|
)
|
||||||
@@ -1,18 +1,7 @@
|
|||||||
package ru.fincode.tsudesk.feature.schedule.domain.model
|
package ru.fincode.tsudesk.feature.schedule.domain.model
|
||||||
|
|
||||||
data class ScheduleEntity(
|
data class ScheduleEntity(
|
||||||
val lessons: List<Lesson>
|
val lessons: List<LessonEntity>
|
||||||
)
|
|
||||||
|
|
||||||
data class Lesson(
|
|
||||||
val date: String, // "12.01.2026"
|
|
||||||
val time: String, // "11:00 - 13:55"
|
|
||||||
val subject: String, // discipline
|
|
||||||
val typeName: String, // "Лекции", "Лабораторные занятия" и т.д.
|
|
||||||
val room: String,
|
|
||||||
val teacher: String,
|
|
||||||
val groupId: String,
|
|
||||||
val type: String // "lecture" / "lab" / "practice" / "default"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package ru.fincode.tsudesk.feature.schedule.domain.model
|
||||||
|
|
||||||
|
sealed interface ScheduleType {
|
||||||
|
data class Group(val number: String) : ScheduleType
|
||||||
|
data class Teacher(val name: String) : ScheduleType
|
||||||
|
}
|
||||||
@@ -2,19 +2,14 @@ package ru.fincode.tsudesk.feature.schedule.domain.usecase
|
|||||||
|
|
||||||
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
import ru.fincode.tsudesk.core.network.model.NetworkResult
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleEntity
|
||||||
|
import ru.fincode.tsudesk.feature.schedule.domain.model.ScheduleType
|
||||||
import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
|
import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class GetScheduleUseCase @Inject constructor(
|
class GetScheduleUseCase @Inject constructor(
|
||||||
private val repository: ScheduleRepository
|
private val repository: ScheduleRepository
|
||||||
) {
|
) {
|
||||||
sealed interface ScheduleType {
|
suspend operator fun invoke(type: ScheduleType): NetworkResult<ScheduleEntity> = when (type) {
|
||||||
data class Group(val number: String) : ScheduleType
|
|
||||||
data class Teacher(val name: String) : ScheduleType
|
|
||||||
}
|
|
||||||
|
|
||||||
suspend operator fun invoke(type: ScheduleType): NetworkResult<ScheduleEntity> =
|
|
||||||
when (type) {
|
|
||||||
is ScheduleType.Group -> repository.loadScheduleByGroup(type.number)
|
is ScheduleType.Group -> repository.loadScheduleByGroup(type.number)
|
||||||
is ScheduleType.Teacher -> repository.loadScheduleByTeacher(type.name)
|
is ScheduleType.Teacher -> repository.loadScheduleByTeacher(type.name)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user