src/Domain/Entity/Destination.php line 32

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\Domain\Entity\Behavior\Identifiable;
  11. use App\Domain\Entity\Translation\DestinationTranslation;
  12. use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
  13. use Gedmo\Timestampable\Traits\Timestampable;
  14. use Locastic\ApiPlatformTranslationBundle\Model\AbstractTranslatable;
  15. use Locastic\ApiPlatformTranslationBundle\Model\TranslationInterface;
  16. #[ApiResource(
  17.     operations            : [
  18.         new Delete(security"is_granted('ROLE_ADMIN')"),
  19.         new GetCollection(filters: ['destination.search_filter''destination.query_filter''soft_delete_filter']),
  20.         new Get(),
  21.         new Post(normalizationContext: ['groups' => ['translations']], security"is_granted('ROLE_ADMIN')"),
  22.         new Put(normalizationContext: ['groups' => ['translations']], security"is_granted('ROLE_ADMIN')"),
  23.     ],
  24.     normalizationContext  : ['groups' => ['destination_read']],
  25.     denormalizationContext: ['groups' => ['destination_write']],
  26.     filters               : ['translation.groups'],
  27. )]
  28. class Destination extends AbstractTranslatable
  29. {
  30.     use Identifiable;
  31.     use SoftDeleteable;
  32.     use Timestampable;
  33.     public function __construct(
  34.         public ?bool $status null,
  35.         public ?string $mapUrl null,
  36.         public ?string $cityName null,
  37.         public ?Media $photo null,
  38.         public ?Country $country null,
  39.     ) {
  40.         parent::__construct();
  41.     }
  42.     public function createTranslation(): TranslationInterface
  43.     {
  44.         return new DestinationTranslation();
  45.     }
  46.     public function getCityName(): ?string
  47.     {
  48.         return $this->getTranslationType()->getCityName();
  49.     }
  50.     public function getTranslationType(): DestinationTranslation
  51.     {
  52.         return $this->getTranslation();
  53.     }
  54.     public function setCityName(?string $cityName): void
  55.     {
  56.         $this->getTranslationType()->setCityName($cityName);
  57.     }
  58. }