diff --git a/src/main/java/roomescape/reservation/business/ReservationTimeService.kt b/src/main/java/roomescape/reservation/business/ReservationTimeService.kt index 2cfd3acb..5f940834 100644 --- a/src/main/java/roomescape/reservation/business/ReservationTimeService.kt +++ b/src/main/java/roomescape/reservation/business/ReservationTimeService.kt @@ -64,16 +64,11 @@ class ReservationTimeService( @Transactional(readOnly = true) fun findAllAvailableTimesByDateAndTheme(date: LocalDate, themeId: Long): ReservationTimeInfosResponse { val allTimes = reservationTimeRepository.findAll() - val reservations: List = reservationRepository.findByThemeId(themeId) + val reservations: List = reservationRepository.findByDateAndThemeId(date, themeId) - return ReservationTimeInfosResponse(allTimes - .map { time -> - ReservationTimeInfoResponse( - time.id!!, - time.startAt, - reservations.any { reservation -> reservation.hasSameDateTime(date, time) } - ) - } - ) + return ReservationTimeInfosResponse(allTimes.map { time -> + val alreadyBooked: Boolean = reservations.any { reservation -> reservation.reservationTime.id == time.id } + time.toInfoResponse(alreadyBooked) + }) } } diff --git a/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt b/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt index 211c8a77..f513d5c2 100644 --- a/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt +++ b/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationEntity.kt @@ -31,12 +31,6 @@ class ReservationEntity( @Enumerated(value = EnumType.STRING) var reservationStatus: ReservationStatus ) { - - @JsonIgnore - fun hasSameDateTime(date: LocalDate?, time: ReservationTimeEntity): Boolean { - return this.date == date && time.startAt == this.reservationTime.startAt - } - @JsonIgnore fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING diff --git a/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt b/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt index 9b676727..85267cd1 100644 --- a/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt +++ b/src/main/java/roomescape/reservation/infrastructure/persistence/ReservationRepository.kt @@ -6,13 +6,13 @@ import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.query.Param import roomescape.reservation.web.MyReservationResponse +import java.time.LocalDate interface ReservationRepository - : JpaRepository, JpaSpecificationExecutor -{ + : JpaRepository, JpaSpecificationExecutor { fun findByReservationTime(reservationTime: ReservationTimeEntity): List - fun findByThemeId(themeId: Long): List + fun findByDateAndThemeId(date: LocalDate, themeId: Long): List @Modifying @Query("""