generated from pricelees/issue-pr-template
74 lines
2.6 KiB
Kotlin
74 lines
2.6 KiB
Kotlin
package roomescape.reservation.web
|
|
|
|
import jakarta.validation.Valid
|
|
import org.springframework.http.ResponseEntity
|
|
import org.springframework.web.bind.annotation.*
|
|
import roomescape.auth.web.support.CurrentUser
|
|
import roomescape.common.dto.CurrentUserContext
|
|
import roomescape.common.dto.response.CommonApiResponse
|
|
import roomescape.reservation.business.ReservationService
|
|
import roomescape.reservation.docs.ReservationAPI
|
|
|
|
@RestController
|
|
class ReservationController(
|
|
private val reservationService: ReservationService
|
|
) : ReservationAPI {
|
|
|
|
@GetMapping("/reservations/popular-themes")
|
|
override fun findMostReservedThemeIds(
|
|
@RequestParam count: Int
|
|
): ResponseEntity<CommonApiResponse<MostReservedThemeIdListResponse>> {
|
|
val response = reservationService.findMostReservedThemeIds(count)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@PostMapping("/reservations/pending")
|
|
override fun createPendingReservation(
|
|
@CurrentUser user: CurrentUserContext,
|
|
@Valid @RequestBody request: PendingReservationCreateRequest
|
|
): ResponseEntity<CommonApiResponse<PendingReservationCreateResponse>> {
|
|
val response = reservationService.createPendingReservation(user, request)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@PostMapping("/reservations/{id}/confirm")
|
|
override fun confirmReservation(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
reservationService.confirmReservation(id)
|
|
|
|
return ResponseEntity.ok().body(CommonApiResponse())
|
|
}
|
|
|
|
@PostMapping("/reservations/{reservationId}/cancel")
|
|
override fun cancelReservation(
|
|
@CurrentUser user: CurrentUserContext,
|
|
@PathVariable reservationId: Long,
|
|
@Valid @RequestBody request: ReservationCancelRequest
|
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
reservationService.cancelReservation(user, reservationId, request)
|
|
|
|
return ResponseEntity.ok().body(CommonApiResponse())
|
|
}
|
|
|
|
@GetMapping("/reservations/summary")
|
|
override fun findSummaryByMemberId(
|
|
@CurrentUser user: CurrentUserContext,
|
|
): ResponseEntity<CommonApiResponse<ReservationSummaryListResponse>> {
|
|
val response = reservationService.findUserSummaryReservation(user)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
|
|
@GetMapping("/reservations/{id}/detail")
|
|
override fun findDetailById(
|
|
@PathVariable("id") id: Long
|
|
): ResponseEntity<CommonApiResponse<ReservationDetailResponse>> {
|
|
val response = reservationService.findDetailById(id)
|
|
|
|
return ResponseEntity.ok(CommonApiResponse(response))
|
|
}
|
|
}
|