47 lines
1.3 KiB
Kotlin

package roomescape.reservation.infrastructure.persistence
import com.fasterxml.jackson.annotation.JsonIgnore
import jakarta.persistence.*
import roomescape.member.infrastructure.persistence.MemberEntity
import roomescape.theme.infrastructure.persistence.ThemeEntity
import java.time.LocalDate
@Entity
@Table(name = "reservations")
class ReservationEntity(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long? = null,
var date: LocalDate,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "time_id", nullable = false)
var time: TimeEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "theme_id", nullable = false)
var theme: ThemeEntity,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
var member: MemberEntity,
@Enumerated(value = EnumType.STRING)
var reservationStatus: ReservationStatus
) {
@JsonIgnore
fun isWaiting(): Boolean = reservationStatus == ReservationStatus.WAITING
@JsonIgnore
fun isSameMember(memberId: Long): Boolean {
return this.member.id == memberId
}
}
enum class ReservationStatus {
CONFIRMED,
CONFIRMED_PAYMENT_REQUIRED,
WAITING
}