*/ #[ORM\Column(name: 'price_lines', type: Types::JSON)] private array $lines = []; public function __construct(AccommodationBookingPeriodPosition $position, \DateTimeImmutable $dateFrom, \DateTimeImmutable $dateTo) { $this->position = $position; $this->dateFrom = $dateFrom; $this->dateTo = $dateTo; } public function __clone() { $this->id = null; $this->booking = null; } public function getId(): ?int { return $this->id; } public function getBooking(): ?AccommodationBooking { return $this->booking; } public function setBooking(?AccommodationBooking $booking): self { $this->booking = $booking; return $this; } public function getTimestampableParent(): ?TimestampableEntityInterface { return $this->booking; } public function getPosition(): AccommodationBookingPeriodPosition { return $this->position; } public function isLeading(): bool { return AccommodationBookingPeriodPosition::Leading === $this->position; } public function getDateFrom(): \DateTimeImmutable { return $this->dateFrom; } public function getDateTo(): \DateTimeImmutable { return $this->dateTo; } public function setDates(\DateTimeImmutable $dateFrom, \DateTimeImmutable $dateTo): self { $this->dateFrom = $dateFrom; $this->dateTo = $dateTo; return $this; } public function getLabel(): ?string { return $this->label; } public function setLabel(?string $label): self { $this->label = $label; return $this; } public function getNights(): int { return $this->dateFrom < $this->dateTo ? $this->dateFrom->diff($this->dateTo)->days : 0; } /** @return list */ public function getLines(): array { return $this->lines; } /** @param list $lines */ public function setLines(array $lines): self { $this->lines = $lines; return $this; } public function getTotal(): int { return array_sum(array_column($this->lines, 'amount')); } }