*/ #[ORM\Column(type: 'json')] private array $formData; #[ORM\Column(type: 'datetime_immutable')] private \DateTimeImmutable $createdAt; #[ORM\Column(type: 'datetime_immutable')] private \DateTimeImmutable $updatedAt; /** * @param array $formData */ public function __construct(User $user, int $bookingId, \DateTimeImmutable $travelDate, array $formData) { $this->user = $user; $this->bookingId = $bookingId; $this->travelDate = $travelDate; $this->formData = $formData; $this->createdAt = new \DateTimeImmutable(); $this->updatedAt = new \DateTimeImmutable(); } public function getId(): ?int { return $this->id; } public function getUser(): User { return $this->user; } public function getBookingId(): int { return $this->bookingId; } public function getBookingNumber(): ?int { return $this->bookingNumber; } public function setBookingNumber(?int $bookingNumber): static { $this->bookingNumber = $bookingNumber; return $this; } public function getTravelDate(): \DateTimeImmutable { return $this->travelDate; } public function setTravelDate(\DateTimeImmutable $travelDate): static { $this->travelDate = $travelDate; return $this; } public function getDateId(): ?int { return $this->dateId; } public function setDateId(?int $dateId): static { $this->dateId = $dateId; return $this; } public function getHotelId(): ?int { return $this->hotelId; } public function setHotelId(?int $hotelId): static { $this->hotelId = $hotelId; return $this; } /** * Checks if the draft has the required travel IDs for export functionality. */ public function hasExportData(): bool { return null !== $this->dateId && null !== $this->hotelId; } /** * @return array */ public function getFormData(): array { return $this->formData; } /** * @param array $formData */ public function setFormData(array $formData): static { $this->formData = $formData; $this->updatedAt = new \DateTimeImmutable(); return $this; } /** * Replaces the form data without touching timestamps. * * Used by anonymization tooling that must not alter audit dates. * * @param array $formData */ public function replaceFormData(array $formData): static { $this->formData = $formData; return $this; } public function getCreatedAt(): \DateTimeImmutable { return $this->createdAt; } public function getUpdatedAt(): \DateTimeImmutable { return $this->updatedAt; } }