generated from pricelees/issue-pr-template
81 lines
2.7 KiB
Kotlin
81 lines
2.7 KiB
Kotlin
package roomescape.schedule.web
|
|
|
|
import jakarta.validation.Valid
|
|
import org.springframework.format.annotation.DateTimeFormat
|
|
import org.springframework.http.ResponseEntity
|
|
import org.springframework.web.bind.annotation.*
|
|
import roomescape.common.dto.response.CommonApiResponse
|
|
import roomescape.schedule.business.ScheduleService
|
|
import roomescape.schedule.docs.ScheduleAPI
|
|
import java.time.LocalDate
|
|
|
|
@RestController
|
|
class ScheduleController(
|
|
private val scheduleService: ScheduleService
|
|
) : ScheduleAPI {
|
|
@GetMapping("/schedules/themes")
|
|
override fun findAvailableThemes(
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
|
): ResponseEntity<CommonApiResponse<AvailableThemeIdListResponse>> {
|
|
val response = scheduleService.findThemesByDate(date)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@GetMapping("/schedules")
|
|
override fun findAllTime(
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate,
|
|
@RequestParam("themeId") themeId: Long
|
|
): ResponseEntity<CommonApiResponse<ScheduleRetrieveListResponse>> {
|
|
val response = scheduleService.findSchedules(date, themeId)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@GetMapping("/schedules/{id}")
|
|
override fun findScheduleDetail(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<ScheduleDetailRetrieveResponse>> {
|
|
val response = scheduleService.findDetail(id)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@PostMapping("/schedules")
|
|
override fun createSchedule(
|
|
@Valid @RequestBody request: ScheduleCreateRequest
|
|
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>> {
|
|
val response = scheduleService.createSchedule(request)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@PatchMapping("/schedules/{id}/hold")
|
|
override fun holdSchedule(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
scheduleService.holdSchedule(id)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse())
|
|
}
|
|
|
|
@PatchMapping("/schedules/{id}")
|
|
override fun updateSchedule(
|
|
@PathVariable("id") id: Long,
|
|
@Valid @RequestBody request: ScheduleUpdateRequest
|
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
scheduleService.updateSchedule(id, request)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(Unit))
|
|
}
|
|
|
|
@DeleteMapping("/schedules/{id}")
|
|
override fun deleteSchedule(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
scheduleService.deleteSchedule(id)
|
|
|
|
return ResponseEntity.noContent().build()
|
|
}
|
|
}
|