src/Domain/Entity/Country.php line 35

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Domain\Entity;
  4. use ApiPlatform\Metadata\ApiProperty;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\Delete;
  7. use ApiPlatform\Metadata\Get;
  8. use ApiPlatform\Metadata\GetCollection;
  9. use ApiPlatform\Metadata\Post;
  10. use ApiPlatform\Metadata\Put;
  11. use App\Domain\Entity\Translation\CountryTranslation;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\Common\Collections\Collection;
  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(
  20.             paginationEnabledfalse,
  21.             filters: ['country.search_filter''country.query_filter'],
  22.         ),
  23.         new Get(),
  24.         new Post(security"is_granted('ROLE_ADMIN')"),
  25.         new Put(security"is_granted('ROLE_ADMIN')"),
  26.     ],
  27.     normalizationContext: ['groups' => ['country_read''translations']],
  28.     denormalizationContext: ['groups' => ['country_write']],
  29.     filters: ['translation.groups']
  30. )]
  31. class Country extends AbstractTranslatable
  32. {
  33.     #[ApiProperty(identifiertrue)]
  34.     public ?int $id null;
  35.     private Collection $offmaps;
  36.     public function __construct(
  37.         public string $alpha2,
  38.         public string $alpha3,
  39.         public int $countryCode,
  40.         public string $iso31665,
  41.         public string $region,
  42.         public string $subRegion,
  43.         public string $intermediateRegion,
  44.         public int $regionCode,
  45.         public int $subRegionCode,
  46.         public int $intermediateRegionCode,
  47.     ) {
  48.         parent::__construct();
  49.         $this->offmaps = new ArrayCollection();
  50.     }
  51.     public function getName(?string $locale null): ?string
  52.     {
  53.         return $this->getTranslationType($locale)->getName();
  54.     }
  55.     public function getTranslationType(?string $locale null): CountryTranslation
  56.     {
  57.         return $this->getTranslation($locale);
  58.     }
  59.     public function setName(?string $name): void
  60.     {
  61.         $this->getTranslationType()->setName($name);
  62.     }
  63.     public function createTranslation(): TranslationInterface
  64.     {
  65.         return new CountryTranslation();
  66.     }
  67.     /**
  68.      * @return Collection
  69.      */
  70.     public function getOffmaps(): Collection
  71.     {
  72.         return $this->offmaps;
  73.     }
  74.     /**
  75.      * @param Collection $offmaps
  76.      */
  77.     public function setOffmaps(Collection $offmaps): void
  78.     {
  79.         $this->offmaps $offmaps;
  80.     }
  81.     public function addOffmap(Offmap $offmap): void
  82.     {
  83.         if ($this->offmaps->contains($offmap)) {
  84.             return;
  85.         }
  86.         $this->offmaps->add($offmap);
  87.     }
  88.     public function removeOffmap(Offmap $offmap): void
  89.     {
  90.         if (!$this->offmaps->contains($offmap)) {
  91.             return;
  92.         }
  93.         $this->offmaps->removeElement($offmap);
  94.     }
  95. }