generated from pricelees/issue-pr-template
171 lines
5.0 KiB
Kotlin
171 lines
5.0 KiB
Kotlin
package roomescape.theme.web
|
|
|
|
import roomescape.common.dto.OperatorInfo
|
|
import roomescape.theme.infrastructure.persistence.Difficulty
|
|
import roomescape.theme.infrastructure.persistence.ThemeEntity
|
|
import java.time.LocalDateTime
|
|
|
|
data class ThemeCreateRequest(
|
|
val name: String,
|
|
val description: String,
|
|
val thumbnailUrl: String,
|
|
val difficulty: Difficulty,
|
|
val price: Int,
|
|
val minParticipants: Short,
|
|
val maxParticipants: Short,
|
|
val availableMinutes: Short,
|
|
val expectedMinutesFrom: Short,
|
|
val expectedMinutesTo: Short,
|
|
val isOpen: Boolean
|
|
)
|
|
|
|
data class ThemeCreateResponseV2(
|
|
val id: Long
|
|
)
|
|
|
|
fun ThemeCreateRequest.toEntity(id: Long) = ThemeEntity(
|
|
id = id,
|
|
name = this.name,
|
|
description = this.description,
|
|
thumbnailUrl = this.thumbnailUrl,
|
|
difficulty = this.difficulty,
|
|
price = this.price,
|
|
minParticipants = this.minParticipants,
|
|
maxParticipants = this.maxParticipants,
|
|
availableMinutes = this.availableMinutes,
|
|
expectedMinutesFrom = this.expectedMinutesFrom,
|
|
expectedMinutesTo = this.expectedMinutesTo,
|
|
isOpen = this.isOpen
|
|
)
|
|
|
|
data class ThemeUpdateRequest(
|
|
val name: String? = null,
|
|
val description: String? = null,
|
|
val thumbnailUrl: String? = null,
|
|
val difficulty: Difficulty? = null,
|
|
val price: Int? = null,
|
|
val minParticipants: Short? = null,
|
|
val maxParticipants: Short? = null,
|
|
val availableMinutes: Short? = null,
|
|
val expectedMinutesFrom: Short? = null,
|
|
val expectedMinutesTo: Short? = null,
|
|
val isOpen: Boolean? = null,
|
|
) {
|
|
fun isAllParamsNull(): Boolean {
|
|
return name == null &&
|
|
description == null &&
|
|
thumbnailUrl == null &&
|
|
difficulty == null &&
|
|
price == null &&
|
|
minParticipants == null &&
|
|
maxParticipants == null &&
|
|
availableMinutes == null &&
|
|
expectedMinutesFrom == null &&
|
|
expectedMinutesTo == null &&
|
|
isOpen == null
|
|
}
|
|
}
|
|
|
|
data class AdminThemeSummaryRetrieveResponse(
|
|
val id: Long,
|
|
val name: String,
|
|
val difficulty: Difficulty,
|
|
val price: Int,
|
|
val isOpen: Boolean
|
|
)
|
|
|
|
fun ThemeEntity.toAdminThemeSummaryResponse() = AdminThemeSummaryRetrieveResponse(
|
|
id = this.id,
|
|
name = this.name,
|
|
difficulty = this.difficulty,
|
|
price = this.price,
|
|
isOpen = this.isOpen
|
|
)
|
|
|
|
data class AdminThemeSummaryListRetrieveResponse(
|
|
val themes: List<AdminThemeSummaryRetrieveResponse>
|
|
)
|
|
|
|
fun List<ThemeEntity>.toAdminThemeSummaryListResponse() = AdminThemeSummaryListRetrieveResponse(
|
|
themes = this.map { it.toAdminThemeSummaryResponse() }
|
|
)
|
|
|
|
data class AdminThemeDetailRetrieveResponse(
|
|
val id: Long,
|
|
val name: String,
|
|
val description: String,
|
|
val thumbnailUrl: String,
|
|
val difficulty: Difficulty,
|
|
val price: Int,
|
|
val minParticipants: Short,
|
|
val maxParticipants: Short,
|
|
val availableMinutes: Short,
|
|
val expectedMinutesFrom: Short,
|
|
val expectedMinutesTo: Short,
|
|
val isOpen: Boolean,
|
|
val createdAt: LocalDateTime,
|
|
val createdBy: OperatorInfo,
|
|
val updatedAt: LocalDateTime,
|
|
val updatedBy: OperatorInfo,
|
|
)
|
|
|
|
fun ThemeEntity.toAdminThemeDetailResponse(createdBy: OperatorInfo, updatedBy: OperatorInfo) =
|
|
AdminThemeDetailRetrieveResponse(
|
|
id = this.id,
|
|
name = this.name,
|
|
description = this.description,
|
|
thumbnailUrl = this.thumbnailUrl,
|
|
difficulty = this.difficulty,
|
|
price = this.price,
|
|
minParticipants = this.minParticipants,
|
|
maxParticipants = this.maxParticipants,
|
|
availableMinutes = this.availableMinutes,
|
|
expectedMinutesFrom = this.expectedMinutesFrom,
|
|
expectedMinutesTo = this.expectedMinutesTo,
|
|
isOpen = this.isOpen,
|
|
createdAt = this.createdAt,
|
|
createdBy = createdBy,
|
|
updatedAt = this.updatedAt,
|
|
updatedBy = updatedBy
|
|
)
|
|
|
|
data class ThemeIdListRetrieveResponse(
|
|
val themeIds: List<Long>
|
|
)
|
|
|
|
data class ThemeInfoRetrieveResponse(
|
|
val id: Long,
|
|
val name: String,
|
|
val thumbnailUrl: String,
|
|
val description: String,
|
|
val difficulty: Difficulty,
|
|
val price: Int,
|
|
val minParticipants: Short,
|
|
val maxParticipants: Short,
|
|
val availableMinutes: Short,
|
|
val expectedMinutesFrom: Short,
|
|
val expectedMinutesTo: Short
|
|
)
|
|
|
|
fun ThemeEntity.toSummaryResponse() = ThemeInfoRetrieveResponse(
|
|
id = this.id,
|
|
name = this.name,
|
|
thumbnailUrl = this.thumbnailUrl,
|
|
description = this.description,
|
|
difficulty = this.difficulty,
|
|
price = this.price,
|
|
minParticipants = this.minParticipants,
|
|
maxParticipants = this.maxParticipants,
|
|
availableMinutes = this.availableMinutes,
|
|
expectedMinutesFrom = this.expectedMinutesFrom,
|
|
expectedMinutesTo = this.expectedMinutesTo
|
|
)
|
|
|
|
data class ThemeInfoListRetrieveResponse(
|
|
val themes: List<ThemeInfoRetrieveResponse>
|
|
)
|
|
|
|
fun List<ThemeEntity>.toRetrieveListResponse() = ThemeInfoListRetrieveResponse(
|
|
themes = this.map { it.toSummaryResponse() }
|
|
)
|