<?php
declare(strict_types=1);
namespace Slivki\BusinessFeature\Yclients\Response;
use DateTimeImmutable;
use JsonSerializable;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Annotations as OA;
use Slivki\BusinessFeature\Yclients\Dto\AppointmentDto;
use Slivki\Response\User\Favorite\GetUserFavoriteOffersResponse;
final class OfferWithInfoAppointmentsResponse implements JsonSerializable
{
/**
* @OA\Property(
* property="offer",
* type="object",
* ref=@Model(type=GetUserFavoriteOffersResponse::class),
* ),
*
* @var GetUserFavoriteOffersResponse
*/
private GetUserFavoriteOffersResponse $offer;
/**
* @OA\Property(
* property="date",
* type="string",
* description="Дата",
* ),
*
* @var DateTimeImmutable
*/
private DateTimeImmutable $date;
/**
* @OA\Property(
* property="appointments",
* type="array",
* @OA\Items(
* type="object",
* ref=@Model(type=AppointmentDto::class)
* ),
* description="Список записей",
* ),
*
* @var array
*/
private array $appointments;
public function __construct(GetUserFavoriteOffersResponse $offer, DateTimeImmutable $date, array $appointments)
{
$this->offer = $offer;
$this->date = $date;
$this->appointments = $appointments;
}
public function getOffer(): GetUserFavoriteOffersResponse
{
return $this->offer;
}
public function jsonSerialize(): array
{
return [
'offer' => $this->offer,
'date' => $this->date->format('d.m.Y'),
'appointments' => $this->appointments,
];
}
}