generated from pricelees/issue-pr-template
47 lines
1.3 KiB
Kotlin
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
|
|
}
|