src/BusinessFeature/Yclients/Response/OfferWithInfoAppointmentsResponse.php line 14

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\BusinessFeature\Yclients\Response;
  4. use DateTimeImmutable;
  5. use JsonSerializable;
  6. use Nelmio\ApiDocBundle\Annotation\Model;
  7. use OpenApi\Annotations as OA;
  8. use Slivki\BusinessFeature\Yclients\Dto\AppointmentDto;
  9. use Slivki\Response\User\Favorite\GetUserFavoriteOffersResponse;
  10. final class OfferWithInfoAppointmentsResponse implements JsonSerializable
  11. {
  12.     /**
  13.      * @OA\Property(
  14.      *     property="offer",
  15.      *     type="object",
  16.      *     ref=@Model(type=GetUserFavoriteOffersResponse::class),
  17.      * ),
  18.      *
  19.      * @var GetUserFavoriteOffersResponse
  20.      */
  21.     private GetUserFavoriteOffersResponse $offer;
  22.     /**
  23.      * @OA\Property(
  24.      *     property="date",
  25.      *     type="string",
  26.      *     description="Дата",
  27.      * ),
  28.      *
  29.      * @var DateTimeImmutable
  30.      */
  31.     private DateTimeImmutable $date;
  32.     /**
  33.      * @OA\Property(
  34.      *     property="appointments",
  35.      *     type="array",
  36.      *     @OA\Items(
  37.      *         type="object",
  38.      *         ref=@Model(type=AppointmentDto::class)
  39.      *     ),
  40.      *     description="Список записей",
  41.      * ),
  42.      *
  43.      * @var array
  44.      */
  45.     private array $appointments;
  46.     public function __construct(GetUserFavoriteOffersResponse $offerDateTimeImmutable $date, array $appointments)
  47.     {
  48.         $this->offer $offer;
  49.         $this->date $date;
  50.         $this->appointments $appointments;
  51.     }
  52.     public function getOffer(): GetUserFavoriteOffersResponse
  53.     {
  54.         return $this->offer;
  55.     }
  56.     public function jsonSerialize(): array
  57.     {
  58.         return [
  59.             'offer' => $this->offer,
  60.             'date' => $this->date->format('d.m.Y'),
  61.             'appointments' => $this->appointments,
  62.         ];
  63.     }
  64. }