package com.caspos.domain; import jakarta.persistence.*; import java.time.Instant; import java.time.OffsetDateTime; import java.util.ArrayList; import java.util.List; import java.util.UUID; @Entity @Table(name = "reservations") public class Reservation { public enum Status { PENDING, CONFIRMED, ARRIVED, FINISHED, NO_SHOW, CANCELLED } @Id @GeneratedValue(strategy = GenerationType.UUID) private UUID id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "guest_id") private Guest guest; @ManyToMany @JoinTable( name = "reservation_table_assignments", joinColumns = @JoinColumn(name = "reservation_id"), inverseJoinColumns = @JoinColumn(name = "table_id") ) private List tables = new ArrayList<>(); @Column(name = "start_time", nullable = false) private OffsetDateTime startTime; @Column(name = "end_time", nullable = false) private OffsetDateTime endTime; @Column(name = "guest_count", nullable = false) private int guestCount; @Enumerated(EnumType.STRING) @Column(name = "status", nullable = false, length = 30) private Status status = Status.CONFIRMED; @Column(name = "special_requests", columnDefinition = "TEXT") private String specialRequests; @Column(name = "created_at") private Instant createdAt = Instant.now(); public UUID getId() { return id; } public Guest getGuest() { return guest; } public List getTables() { return tables; } public OffsetDateTime getStartTime() { return startTime; } public OffsetDateTime getEndTime() { return endTime; } public int getGuestCount() { return guestCount; } public Status getStatus() { return status; } public String getSpecialRequests() { return specialRequests; } public Instant getCreatedAt() { return createdAt; } public void setId(UUID id) { this.id = id; } public void setGuest(Guest guest) { this.guest = guest; } public void setTables(List tables) { this.tables = tables; } public void setStartTime(OffsetDateTime startTime) { this.startTime = startTime; } public void setEndTime(OffsetDateTime endTime) { this.endTime = endTime; } public void setGuestCount(int guestCount) { this.guestCount = guestCount; } public void setStatus(Status status) { this.status = status; } public void setSpecialRequests(String specialRequests) { this.specialRequests = specialRequests; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } }