package roomescape.schedule.web import roomescape.schedule.infrastructure.persistence.ScheduleEntity import roomescape.schedule.infrastructure.persistence.ScheduleStatus import java.time.LocalDate import java.time.LocalDateTime import java.time.LocalTime data class AvailableThemeIdListResponse( val themeIds: List ) fun List.toThemeIdListResponse() = AvailableThemeIdListResponse(this.map { it.themeId }) data class ScheduleRetrieveResponse( val id: Long, val time: LocalTime, val status: ScheduleStatus ) data class ScheduleRetrieveListResponse( val schedules: List ) fun List.toRetrieveListResponse() = ScheduleRetrieveListResponse( this.map { ScheduleRetrieveResponse(it.id, it.time, it.status) } ) data class ScheduleCreateRequest( val date: LocalDate, val time: LocalTime, val themeId: Long ) data class ScheduleCreateResponse( val id: Long ) data class ScheduleUpdateRequest( val time: LocalTime? = null, val status: ScheduleStatus? = null ) { fun isAllParamsNull(): Boolean { return time == null && status == null } } data class ScheduleDetailRetrieveResponse( val id: Long, val date: LocalDate, val time: LocalTime, val status: ScheduleStatus, val createdAt: LocalDateTime, val createdBy: String, val updatedAt: LocalDateTime, val updatedBy: String, ) fun ScheduleEntity.toDetailRetrieveResponse(createdBy: String, updatedBy: String) = ScheduleDetailRetrieveResponse( id = this.id, date = this.date, time = this.time, status = this.status, createdAt = this.createdAt, createdBy = createdBy, updatedAt = this.updatedAt, updatedBy = updatedBy )