src/Domain/Entity/Partner.php line 46

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Domain\Entity;
  4. use ApiPlatform\Metadata\ApiResource;
  5. use ApiPlatform\Metadata\Delete;
  6. use ApiPlatform\Metadata\Get;
  7. use ApiPlatform\Metadata\GetCollection;
  8. use ApiPlatform\Metadata\Post;
  9. use ApiPlatform\Metadata\Put;
  10. use App\Application\ApiResources\State\Provider\GetPartnerProvider;
  11. use App\Domain\Entity\Behavior\Identifiable;
  12. use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
  13. use Gedmo\Timestampable\Traits\Timestampable;
  14. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  15. #[UniqueEntity(fields: ['slug'], message'There is already a partner with that slug')]
  16. #[ApiResource(
  17.     operations: [
  18.         new Delete(security"is_granted('ROLE_ADMIN')"),
  19.         new Get(
  20.             requirements: [
  21.                 'uuid' => '^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$',
  22.             ],
  23.         ),
  24.         new Get(
  25.             uriTemplate'/partners/slug',
  26.             name'get_partner_by_slug',
  27.             providerGetPartnerProvider::class,
  28.         ),
  29.         new GetCollection(filters: ['partner.search_filter']),
  30.         new GetCollection(
  31.             uriTemplate'/partners/list',
  32.             filters: ['partner.search_filter'],
  33.             normalizationContext: ['groups' => ['partners_list_read']],
  34.         ),
  35.         new Post(security"is_granted('ROLE_ADMIN')"),
  36.         new Put(security"is_granted('ROLE_ADMIN')"),
  37.     ],
  38.     normalizationContext: ['groups' => ['partner_read']],
  39.     denormalizationContext: ['groups' => ['partner_write']],
  40.     order: ['displayOrder' => 'asc']
  41. )]
  42. class Partner
  43. {
  44.     use Identifiable;
  45.     use SoftDeleteable;
  46.     use Timestampable;
  47.     /**
  48.      * @param string|null $description
  49.      * @param string|null $more
  50.      * @param string|null $introduction
  51.      * @param Locale|null $locale
  52.      * @param Media|null  $logo
  53.      * @param string|null $slug
  54.      * @param string|null $title
  55.      * @param string|null $subTitle
  56.      * @param int         $isSpecific
  57.      * @param string|null $url
  58.      * @param string|null $popupTitle
  59.      * @param string|null $popupDescription
  60.      * @param string|null $popupLabel
  61.      * @param string|null $popupError
  62.      * @param string|null $legals
  63.      * @param int|null    $displayOrder
  64.      * @param bool        $visible
  65.      * @param bool        $isPremium
  66.      * @param string|null $premiumTitle
  67.      * @param string|null $premiumDescription
  68.      */
  69.     public function __construct(
  70.         public ?string $description null,
  71.         public ?string $more null,
  72.         public ?string $introduction null,
  73.         public ?Locale $locale null,
  74.         public ?Media $logo null,
  75.         public ?string $slug null,
  76.         public ?string $title null,
  77.         public ?string $subTitle null,
  78.         public int $isSpecific 0,
  79.         public ?string $url null,
  80.         public ?string $popupTitle null,
  81.         public ?string $popupDescription null,
  82.         public ?string $popupLabel null,
  83.         public ?string $popupError null,
  84.         public ?string $legals null,
  85.         public ?int $displayOrder null,
  86.         public bool $visible true,
  87.         public bool $isPremium true,
  88.         public ?string $premiumTitle null,
  89.         public ?string $premiumDescription null,
  90.     ) {}
  91. }