generated from pricelees/issue-pr-template
57 lines
2.5 KiB
Kotlin
57 lines
2.5 KiB
Kotlin
package roomescape.reservation.business
|
|
|
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
|
import org.springframework.stereotype.Service
|
|
import org.springframework.transaction.annotation.Transactional
|
|
import roomescape.reservation.implement.ReservationFinder
|
|
import roomescape.reservation.infrastructure.persistence.ReservationStatus
|
|
import roomescape.reservation.web.MyReservationRetrieveListResponse
|
|
import roomescape.reservation.web.ReservationRetrieveListResponse
|
|
import roomescape.reservation.web.toRetrieveListResponse
|
|
import java.time.LocalDate
|
|
|
|
private val log = KotlinLogging.logger {}
|
|
|
|
@Service
|
|
@Transactional(readOnly = true)
|
|
class ReservationQueryService(
|
|
private val reservationFinder: ReservationFinder
|
|
) {
|
|
fun findReservations(): ReservationRetrieveListResponse {
|
|
log.info { "[ReservationService.findReservations] 시작" }
|
|
|
|
return reservationFinder.findAllByStatuses(*ReservationStatus.confirmedStatus())
|
|
.toRetrieveListResponse()
|
|
.also { log.info { "[ReservationService.findReservations] ${it.reservations.size}개의 예약 조회 완료" } }
|
|
}
|
|
|
|
fun findAllWaiting(): ReservationRetrieveListResponse {
|
|
log.info { "[ReservationService.findAllWaiting] 시작" }
|
|
|
|
return reservationFinder.findAllByStatuses(ReservationStatus.WAITING)
|
|
.toRetrieveListResponse()
|
|
.also { log.info { "[ReservationService.findAllWaiting] ${it.reservations.size}개의 대기 조회 완료" } }
|
|
}
|
|
|
|
fun findReservationsByMemberId(memberId: Long): MyReservationRetrieveListResponse {
|
|
log.info { "[ReservationService.findReservationsByMemberId] 시작: memberId=$memberId" }
|
|
|
|
return reservationFinder.findAllByMemberId(memberId)
|
|
.toRetrieveListResponse()
|
|
.also { log.info { "[ReservationService.findReservationsByMemberId] ${it.reservations.size}개의 예약 조회 완료: memberId=$memberId" } }
|
|
}
|
|
|
|
fun searchReservations(
|
|
themeId: Long?,
|
|
memberId: Long?,
|
|
startFrom: LocalDate?,
|
|
endAt: LocalDate?,
|
|
): ReservationRetrieveListResponse {
|
|
log.info { "[ReservationService.searchReservations] 시작: themeId=$themeId, memberId=$memberId, dateFrom=$startFrom, dateTo=$endAt" }
|
|
|
|
return reservationFinder.searchReservations(themeId, memberId, startFrom, endAt)
|
|
.toRetrieveListResponse()
|
|
.also { log.info { "[ReservationService.searchReservations] ${it.reservations.size}개의 예약 조회 완료: themeId=$themeId, memberId=$memberId, dateFrom=$startFrom, dateTo=$endAt" } }
|
|
}
|
|
}
|