src/Domain/Entity/DirectoryDepartment.php line 48

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\GetDirectoryRevisionProvider;
  11. use App\Domain\Entity\Behavior\Identifiable;
  12. use App\Domain\Entity\Translation\DirectoryDepartmentTranslation;
  13. use DateTime;
  14. use Doctrine\Common\Collections\ArrayCollection;
  15. use Doctrine\Common\Collections\Collection;
  16. use Gedmo\SoftDeleteable\Traits\SoftDeleteable;
  17. use Gedmo\Timestampable\Traits\Timestampable;
  18. use Locastic\ApiPlatformTranslationBundle\Model\AbstractTranslatable;
  19. use Locastic\ApiPlatformTranslationBundle\Model\TranslationInterface;
  20. #[ApiResource(
  21.     operations: [
  22.         new Delete(security"is_granted('ROLE_ADMIN')"),
  23.         new GetCollection(filters: [
  24.             'directory_department.search_filter',
  25.             'directory_department.query_filter',
  26.             'directory_department.order_filter',
  27.         ]),
  28.         new Get(),
  29.         new Get(
  30.             uriTemplate'/directory_revisions/{uuid}',
  31.             requirements: [
  32.                 '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}$',
  33.             ],
  34.             name'get_directory_revision',
  35.             providerGetDirectoryRevisionProvider::class,
  36.         ),
  37.         new Post(normalizationContext: ['groups' => ['translations']], security"is_granted('ROLE_ADMIN')"),
  38.         new Put(normalizationContext: ['groups' => ['translations']], security"is_granted('ROLE_ADMIN')"),
  39.     ],
  40.     normalizationContext: ['groups' => ['directory_department_read']],
  41.     denormalizationContext: ['groups' => ['directory_department_write']],
  42.     filters: ['translation.groups']
  43. )]
  44. class DirectoryDepartment extends AbstractTranslatable
  45. {
  46.     use Identifiable;
  47.     use SoftDeleteable;
  48.     use Timestampable;
  49.     private Collection $offmaps;
  50.     public function __construct(
  51.         public DirectoryCountry $country,
  52.         public Media            $photo,
  53.         public ?string          $reference null,
  54.         public ?string          $sqlStr null,
  55.         public ?string          $remoteId null,
  56.         public ?DateTime        $zhistUpdate null,
  57.     )
  58.     {
  59.         parent::__construct();
  60.         $this->offmaps = new ArrayCollection();
  61.     }
  62.     public function getDescription(): ?string
  63.     {
  64.         return $this->getTranslationType()->getDescription();
  65.     }
  66.     public function getTranslationType(?string $locale null): DirectoryDepartmentTranslation
  67.     {
  68.         return $this->getTranslation($locale);
  69.     }
  70.     public function setDescription(?string $description): void
  71.     {
  72.         $this->getTranslationType()->setDescription($description);
  73.     }
  74.     public function getName(?string $locale null): ?string
  75.     {
  76.         return $this->getTranslationType($locale)->getName();
  77.     }
  78.     public function setName(?string $name): void
  79.     {
  80.         $this->getTranslationType()->setName($name);
  81.     }
  82.     public function createTranslation(): TranslationInterface
  83.     {
  84.         return new DirectoryDepartmentTranslation();
  85.     }
  86.     /**
  87.      * @return Collection
  88.      */
  89.     public function getOffmaps(): Collection
  90.     {
  91.         return $this->offmaps;
  92.     }
  93.     /**
  94.      * @param Collection $offmaps
  95.      */
  96.     public function setOffmaps(Collection $offmaps): void
  97.     {
  98.         $this->offmaps $offmaps;
  99.     }
  100.     public function addOffmap(Offmap $offmap): void
  101.     {
  102.         if ($this->offmaps->contains($offmap)) {
  103.             return;
  104.         }
  105.         $this->offmaps->add($offmap);
  106.     }
  107.     public function removeOffmap(Offmap $offmap): void
  108.     {
  109.         if (!$this->offmaps->contains($offmap)) {
  110.             return;
  111.         }
  112.         $this->offmaps->removeElement($offmap);
  113.     }
  114. }