generated from pricelees/issue-pr-template
[#30] 코드 구조 개선 #31
@ -22,25 +22,26 @@ private val log: KLogger = KotlinLogging.logger {}
|
|||||||
class ReservationValidator(
|
class ReservationValidator(
|
||||||
private val reservationRepository: ReservationRepository,
|
private val reservationRepository: ReservationRepository,
|
||||||
) {
|
) {
|
||||||
fun validateIsNotPast(
|
fun validateIsPast(
|
||||||
requestDate: LocalDate,
|
requestDate: LocalDate,
|
||||||
requestTime: LocalTime,
|
requestTime: LocalTime,
|
||||||
) {
|
) {
|
||||||
val now = LocalDateTime.now()
|
val now = LocalDateTime.now()
|
||||||
val requestDateTime = LocalDateTime.of(requestDate, requestTime)
|
val requestDateTime = LocalDateTime.of(requestDate, requestTime)
|
||||||
log.debug { "[ReservationValidator.validateDateAndTime] 시작. request=$requestDateTime, now=$now" }
|
log.debug { "[ReservationValidator.validateIsPast] 시작. request=$requestDateTime, now=$now" }
|
||||||
|
|
||||||
if (requestDateTime.isBefore(now)) {
|
if (requestDateTime.isBefore(now)) {
|
||||||
log.info { "[ReservationValidator.validateDateAndTime] 날짜 범위 오류. request=$requestDateTime, now=$now" }
|
log.info { "[ReservationValidator.validateIsPast] 날짜 범위 오류. request=$requestDateTime, now=$now" }
|
||||||
throw ReservationException(ReservationErrorCode.PAST_REQUEST_DATETIME)
|
throw ReservationException(ReservationErrorCode.PAST_REQUEST_DATETIME)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.debug { "[ReservationValidator.validateDateAndTime] 완료. request=$requestDateTime, now=$now" }
|
log.debug { "[ReservationValidator.validateIsPast] 완료. request=$requestDateTime, now=$now" }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun validateSearchDateRange(startFrom: LocalDate?, endAt: LocalDate?) {
|
fun validateSearchDateRange(startFrom: LocalDate?, endAt: LocalDate?) {
|
||||||
log.debug { "[ReservationValidator.validateSearchDateRange] 시작: startFrom=$startFrom, endAt=$endAt" }
|
log.debug { "[ReservationValidator.validateSearchDateRange] 시작: startFrom=$startFrom, endAt=$endAt" }
|
||||||
if (startFrom == null || endAt == null) {
|
if (startFrom == null || endAt == null) {
|
||||||
|
log.debug { "[ReservationValidator.validateSearchDateRange] 완료: startFrom=$startFrom, endAt=$endAt" }
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (startFrom.isAfter(endAt)) {
|
if (startFrom.isAfter(endAt)) {
|
||||||
@ -129,4 +130,15 @@ class ReservationValidator(
|
|||||||
|
|
||||||
log.debug { "[ReservationValidator.validateDeleteAuthority] 완료: reservationId=${reservation.id}, requesterId=$requesterId" }
|
log.debug { "[ReservationValidator.validateDeleteAuthority] 완료: reservationId=${reservation.id}, requesterId=$requesterId" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun validateAlreadyConfirmed(reservationId: Long) {
|
||||||
|
log.debug { "[ReservationValidator.validateAlreadyConfirmed] 시작: reservationId=$reservationId" }
|
||||||
|
|
||||||
|
if (reservationRepository.isExistConfirmedReservation(reservationId)) {
|
||||||
|
log.warn { "[ReservationWriter.confirm] 이미 확정된 예약: reservationId=$reservationId" }
|
||||||
|
throw ReservationException(ReservationErrorCode.CONFIRMED_RESERVATION_ALREADY_EXISTS)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug { "[ReservationValidator.validateAlreadyConfirmed] 완료: reservationId=$reservationId" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ class ReservationWriter(
|
|||||||
"date=${date}, timeId=${timeId}, themeId=${themeId}, memberId=${memberId}, status=${status}"
|
"date=${date}, timeId=${timeId}, themeId=${themeId}, memberId=${memberId}, status=${status}"
|
||||||
}
|
}
|
||||||
val time = timeFinder.findById(timeId).also {
|
val time = timeFinder.findById(timeId).also {
|
||||||
reservationValidator.validateIsNotPast(date, it.startAt)
|
reservationValidator.validateIsPast(date, it.startAt)
|
||||||
}
|
}
|
||||||
val theme = themeFinder.findById(themeId)
|
val theme = themeFinder.findById(themeId)
|
||||||
|
|
||||||
@ -95,14 +95,9 @@ class ReservationWriter(
|
|||||||
fun confirm(reservationId: Long) {
|
fun confirm(reservationId: Long) {
|
||||||
log.debug { "[ReservationWriter.confirm] 대기 여부 확인 시작: reservationId=$reservationId" }
|
log.debug { "[ReservationWriter.confirm] 대기 여부 확인 시작: reservationId=$reservationId" }
|
||||||
|
|
||||||
if (reservationRepository.isExistConfirmedReservation(reservationId)) {
|
reservationValidator.validateAlreadyConfirmed(reservationId)
|
||||||
log.warn { "[ReservationWriter.confirm] 이미 확정된 예약 존재: reservationId=$reservationId" }
|
|
||||||
throw ReservationException(ReservationErrorCode.CONFIRMED_RESERVATION_ALREADY_EXISTS)
|
|
||||||
}
|
|
||||||
|
|
||||||
reservationRepository.updateStatusByReservationId(
|
reservationRepository.updateStatusByReservationId(reservationId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED)
|
||||||
reservationId, ReservationStatus.CONFIRMED_PAYMENT_REQUIRED
|
|
||||||
)
|
|
||||||
|
|
||||||
log.debug { "[ReservationWriter.confirm] 완료: reservationId=$reservationId, status=${ReservationStatus.CONFIRMED_PAYMENT_REQUIRED}" }
|
log.debug { "[ReservationWriter.confirm] 완료: reservationId=$reservationId, status=${ReservationStatus.CONFIRMED_PAYMENT_REQUIRED}" }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class TimeFinderTest : FunSpec({
|
|||||||
timeRepository.findAll()
|
timeRepository.findAll()
|
||||||
} returns listOf(mockk(), mockk(), mockk())
|
} returns listOf(mockk(), mockk(), mockk())
|
||||||
|
|
||||||
timeRepository.findAll() shouldHaveSize 3
|
timeFinder.findAll() shouldHaveSize 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user