generated from pricelees/issue-pr-template
52 lines
1.9 KiB
Kotlin
52 lines
1.9 KiB
Kotlin
package roomescape.reservation.web
|
|
|
|
import jakarta.validation.Valid
|
|
import org.springframework.http.ResponseEntity
|
|
import org.springframework.web.bind.annotation.*
|
|
import roomescape.common.dto.response.CommonApiResponse
|
|
import roomescape.reservation.business.ReservationTimeService
|
|
import roomescape.reservation.docs.ReservationTimeAPI
|
|
import java.net.URI
|
|
import java.time.LocalDate
|
|
|
|
@RestController
|
|
class ReservationTimeController(
|
|
private val reservationTimeService: ReservationTimeService
|
|
) : ReservationTimeAPI {
|
|
|
|
@GetMapping("/times")
|
|
override fun getAllTimes(): ResponseEntity<CommonApiResponse<ReservationTimesResponse>> {
|
|
val response: ReservationTimesResponse = reservationTimeService.findAllTimes()
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@PostMapping("/times")
|
|
override fun saveTime(
|
|
@Valid @RequestBody reservationTimeRequest: ReservationTimeRequest,
|
|
): ResponseEntity<CommonApiResponse<ReservationTimeResponse>> {
|
|
val response: ReservationTimeResponse = reservationTimeService.addTime(reservationTimeRequest)
|
|
|
|
return ResponseEntity
|
|
.created(URI.create("/times/${response.id}"))
|
|
.body(CommonApiResponse(response))
|
|
}
|
|
|
|
@DeleteMapping("/times/{id}")
|
|
override fun removeTime(@PathVariable id: Long): ResponseEntity<CommonApiResponse<Unit>> {
|
|
reservationTimeService.removeTimeById(id)
|
|
|
|
return ResponseEntity.noContent().build()
|
|
}
|
|
|
|
@GetMapping("/times/filter")
|
|
override fun findAllAvailableReservationTimes(
|
|
@RequestParam date: LocalDate,
|
|
@RequestParam themeId: Long
|
|
): ResponseEntity<CommonApiResponse<ReservationTimeInfosResponse>> {
|
|
val response: ReservationTimeInfosResponse = reservationTimeService.findAllAvailableTimesByDateAndTheme(date, themeId)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
}
|