generated from pricelees/issue-pr-template
[#16] Reservation 도메인 코드 코틀린 마이그레이션 #17
@ -64,16 +64,11 @@ class ReservationTimeService(
|
||||
@Transactional(readOnly = true)
|
||||
fun findAllAvailableTimesByDateAndTheme(date: LocalDate, themeId: Long): ReservationTimeInfosResponse {
|
||||
val allTimes = reservationTimeRepository.findAll()
|
||||
val reservations: List<ReservationEntity> = reservationRepository.findByThemeId(themeId)
|
||||
val reservations: List<ReservationEntity> = 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)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity>
|
||||
{
|
||||
: JpaRepository<ReservationEntity, Long>, JpaSpecificationExecutor<ReservationEntity> {
|
||||
fun findByReservationTime(reservationTime: ReservationTimeEntity): List<ReservationEntity>
|
||||
|
||||
fun findByThemeId(themeId: Long): List<ReservationEntity>
|
||||
fun findByDateAndThemeId(date: LocalDate, themeId: Long): List<ReservationEntity>
|
||||
|
||||
@Modifying
|
||||
@Query("""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user