'Y-m-d'])] public ?\DateTimeImmutable $dateFrom; #[Groups(['api:single'])] #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])] public ?\DateTimeImmutable $dateTo; #[Groups(['api:single'])] public int $nights; #[Groups(['api:single'])] public int $paxCount; #[Groups(['api:single'])] public int $minorsCount; #[Groups(['api:single'])] public int $childrenCount; #[Groups(['api:single'])] public ?string $groupName; #[Groups(['api:single'])] public ?\DateTimeImmutable $acceptedAt; #[Groups(['api:single'])] public ?\DateTimeImmutable $confirmedAt; #[Groups(['api:single'])] public AccommodationBookingPersonalData $personalData; #[Groups(['api:single'])] public AccommodationBookingHotelInfo $accommodation; #[Groups(['api:single'])] public AccommodationBookingBoardServiceInfo $boardService; /** * @var list */ #[Groups(['api:single'])] public array $additionalServices; #[Groups(['api:single'])] public ?int $accommodationDiscount; #[Groups(['api:single'])] public ?int $boardServiceDiscount; #[Groups(['api:single'])] public ?int $additionalServicesDiscount; /** An absolute amount in minor units, subtracted after the three section discounts above. */ #[Groups(['api:single'])] public ?int $totalDiscountAmount; #[Groups(['api:single'])] public ?string $totalDiscountLabel; #[Groups(['api:single'])] public ?int $totalPrice; #[Groups(['api:single'])] public ?string $pricingCurrency; #[Groups(['api:single'])] public ?int $pricingVersion; /** * @var array|null */ #[Groups(['api:single'])] public ?array $priceBreakdown; /** * @param array|null $priceBreakdown */ public function __construct(AccommodationBooking $booking, ?array $priceBreakdown) { $this->uuid = $booking->getUuid(); $this->status = $booking->getStatus()->value; $this->type = $booking->getOrigin()->value; $this->dateFrom = $booking->getDateFrom(); $this->dateTo = $booking->getDateTo(); $this->nights = $booking->getNights(); $this->paxCount = $booking->getPaxCount(); $this->minorsCount = $booking->getMinorsCount(); $this->childrenCount = $booking->getChildrenCount(); $this->groupName = $booking->getGroupName(); $this->acceptedAt = $booking->getAcceptedAt(); $this->confirmedAt = $booking->getConfirmedAt(); $this->personalData = new AccommodationBookingPersonalData($booking); $this->accommodation = new AccommodationBookingHotelInfo($booking->getAccommodation()); $this->boardService = new AccommodationBookingBoardServiceInfo($booking); $this->additionalServices = array_map( static fn (array $service) => new AccommodationBookingAdditionalServiceItem($service), $booking->getAdditionalServices(), ); $this->accommodationDiscount = $booking->getAccommodationDiscount(); $this->boardServiceDiscount = $booking->getBoardServiceDiscount(); $this->additionalServicesDiscount = $booking->getAdditionalServicesDiscount(); $this->totalDiscountAmount = $booking->getTotalDiscountAmount(); $this->totalDiscountLabel = $booking->getTotalDiscountLabel(); $this->totalPrice = $booking->getTotalPrice(); $this->pricingCurrency = $booking->getPricingCurrency(); $this->pricingVersion = $booking->getPricingVersion(); $this->priceBreakdown = $priceBreakdown; } }