Fix schedule models, format code

This commit is contained in:
2026-02-12 16:42:27 +03:00
parent d157fd921e
commit 7c865b4e0f
7 changed files with 29 additions and 28 deletions

View File

@@ -6,8 +6,8 @@ import androidx.activity.ComponentActivity
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint
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.ScheduleType
import javax.inject.Inject
@AndroidEntryPoint

View File

@@ -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.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 javax.inject.Inject
@@ -11,11 +11,11 @@ class ScheduleDtoToDomainMapper @Inject constructor() {
operator fun invoke(dto: ScheduleDto): ScheduleEntity =
ScheduleEntity(lessons = dto.map(::mapLesson))
private fun mapLesson(item: LessonDto): Lesson =
Lesson(
private fun mapLesson(item: LessonDto): LessonEntity =
LessonEntity(
date = item.date.trim(),
time = item.time.trim(),
subject = item.discipline.trim(),
name = item.discipline.trim(),
typeName = item.typeName.trim(),
room = item.room.trim(),
teacher = item.teacher.trim(),

View File

@@ -22,7 +22,6 @@ interface ScheduleApi {
*/
@GET("GetSchedule.php")
suspend fun getSchedule(
@Query("search_field") searchField: String,
@Query("search_value") searchValue: String
@Query("search_field") searchField: String, @Query("search_value") searchValue: String
): ScheduleDto
}

View File

@@ -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"
)

View File

@@ -1,18 +1,7 @@
package ru.fincode.tsudesk.feature.schedule.domain.model
data class ScheduleEntity(
val lessons: List<Lesson>
)
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"
val lessons: List<LessonEntity>
)

View File

@@ -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
}

View File

@@ -2,20 +2,15 @@ package ru.fincode.tsudesk.feature.schedule.domain.usecase
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.ScheduleType
import ru.fincode.tsudesk.feature.schedule.domain.repository.ScheduleRepository
import javax.inject.Inject
class GetScheduleUseCase @Inject constructor(
private val repository: ScheduleRepository
) {
sealed interface ScheduleType {
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.Teacher -> repository.loadScheduleByTeacher(type.name)
}
suspend operator fun invoke(type: ScheduleType): NetworkResult<ScheduleEntity> =
when (type) {
is ScheduleType.Group -> repository.loadScheduleByGroup(type.number)
is ScheduleType.Teacher -> repository.loadScheduleByTeacher(type.name)
}
}