generated from pricelees/issue-pr-template
refactor: 날짜, 테마에 대한 예약 시간을 조회할 때 쿼리에서 날짜, 테마를 모두 입력받도록 수정
This commit is contained in:
parent
3127b19bc4
commit
0ac7539734
@ -64,16 +64,11 @@ class ReservationTimeService(
|
|||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
fun findAllAvailableTimesByDateAndTheme(date: LocalDate, themeId: Long): ReservationTimeInfosResponse {
|
fun findAllAvailableTimesByDateAndTheme(date: LocalDate, themeId: Long): ReservationTimeInfosResponse {
|
||||||
val allTimes = reservationTimeRepository.findAll()
|
val allTimes = reservationTimeRepository.findAll()
|
||||||
val reservations: List<ReservationEntity> = reservationRepository.findByThemeId(themeId)
|
val reservations: List<ReservationEntity> = reservationRepository.findByDateAndThemeId(date, themeId)
|
||||||
|
|
||||||
return ReservationTimeInfosResponse(allTimes
|
return ReservationTimeInfosResponse(allTimes.map { time ->
|
||||||
.map { time ->
|
val alreadyBooked: Boolean = reservations.any { reservation -> reservation.reservationTime.id == time.id }
|
||||||
ReservationTimeInfoResponse(
|
time.toInfoResponse(alreadyBooked)
|
||||||
time.id!!,
|
})
|
||||||
time.startAt,
|
|
||||||
reservations.any { reservation -> reservation.hasSameDateTime(date, time) }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,12 +31,6 @@ class ReservationEntity(
|
|||||||
@Enumerated(value = EnumType.STRING)
|
@Enumerated(value = EnumType.STRING)
|
||||||
var reservationStatus: ReservationStatus
|
var reservationStatus: ReservationStatus
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
fun hasSameDateTime(date: LocalDate?, time: ReservationTimeEntity): Boolean {
|
|
||||||
return this.date == date && time.startAt == this.reservationTime.startAt
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING
|
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING
|
||||||
|
|
||||||
|
|||||||
@ -6,13 +6,13 @@ import org.springframework.data.jpa.repository.Modifying
|
|||||||
import org.springframework.data.jpa.repository.Query
|
import org.springframework.data.jpa.repository.Query
|
||||||
import org.springframework.data.repository.query.Param
|
import org.springframework.data.repository.query.Param
|
||||||
import roomescape.reservation.web.MyReservationResponse
|
import roomescape.reservation.web.MyReservationResponse
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
interface ReservationRepository
|
interface ReservationRepository
|
||||||
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity>
|
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> {
|
||||||
{
|
|
||||||
fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity>
|
fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity>
|
||||||
|
|
||||||
fun findByThemeId(themeId: Long): List<ReservationEntity>
|
fun findByDateAndThemeId(date: LocalDate, themeId: Long): List<ReservationEntity>
|
||||||
|
|
||||||
@Modifying
|
@Modifying
|
||||||
@Query("""
|
@Query("""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user