src/Entity/Localidad.php line 36

  1. <?php
  2. namespace App\Entity;
  3. use Ramsey\Uuid\Uuid;
  4. use App\Trait\UuidTrait;
  5. use ApiPlatform\Metadata\Get;
  6. use ApiPlatform\Metadata\Put;
  7. use ApiPlatform\Metadata\Post;
  8. use ApiPlatform\Metadata\Patch;
  9. use ApiPlatform\Metadata\Delete;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use ApiPlatform\Metadata\ApiResource;
  12. use Gedmo\Mapping\Annotation as Gedmo;
  13. use ApiPlatform\Metadata\GetCollection;
  14. use App\Repository\LocalidadRepository;
  15. use Doctrine\Common\Collections\Collection;
  16. use Doctrine\Common\Collections\ArrayCollection;
  17. use Symfony\Component\Serializer\Annotation\Groups;
  18. use Symfony\Component\Validator\Constraints as Assert;
  19. #[ORM\Entity(repositoryClassLocalidadRepository::class)]
  20. #[
  21.     ApiResource(
  22.         operations: [
  23.             new Get(uriTemplate'localidades/{uuid}'),
  24.             new Post(validationContext: ['groups' => ['Default''localidad:create']], denormalizationContext: ['groups' => ['localidad:create']], uriTemplate'localidades'),
  25.             new GetCollection(uriTemplate'localidades'paginationEnabledfalsenormalizationContext: ['groups' => ['localidad:collection''uuid']]),
  26.             new Put(denormalizationContext: ['groups' => ['localidad:update']], uriTemplate'localidades/{uuid}'),
  27.             new Patch(denormalizationContext: ['groups' => ['localidad:update']], uriTemplate'localidades/{uuid}'),
  28.             new Delete(uriTemplate'localidades/{uuid}'),
  29.         ],
  30.         normalizationContext: ['groups' => ['localidad:read''uuid']],
  31.     )
  32. ]
  33. class Localidad
  34. {
  35.     use UuidTrait;
  36.     #[Assert\NotNull(groups: ['localidad:create'])]
  37.     #[Groups(['localidad:read''localidad:create''localidad:update''localidad:collection',
  38.         'user:read''user:create''user:update',
  39.         'empresa:read''empresa:create''empresa:update'
  40.     ])]
  41.     #[ORM\Column(length255)]
  42.     private ?string $nombre null;
  43.     #[Groups(['localidad:read''localidad:create''localidad:update',
  44.         'user:read''user:create''user:update',
  45.         'empresa:read''empresa:create''empresa:update'
  46.     ])]
  47.     #[ORM\Column(length255)]
  48.     #[Gedmo\Slug(fields: ['nombre'])]
  49.     private ?string $codigo null;
  50.     #[Assert\NotNull(groups: ['localidad:create'])]
  51.     #[Groups(['localidad:read''localidad:create''localidad:update',
  52.         'user:read''user:create''user:update',
  53.         'empresa:read''empresa:create''empresa:update'
  54.     ])]
  55.     #[ORM\ManyToOne]
  56.     #[ORM\JoinColumn(nullablefalse)]
  57.     private ?Municipio $municipio null;
  58.     #[ORM\OneToMany(mappedBy'localidad'targetEntityDireccion::class, orphanRemovaltruecascade: ['persist''remove'])]
  59.     private Collection $direcciones;
  60.     public function __construct()
  61.     {
  62.         $this->direcciones = new ArrayCollection();
  63.         $this->uuid Uuid::uuid4()->toString();
  64.     }
  65.     public function getNombre(): ?string
  66.     {
  67.         return $this->nombre;
  68.     }
  69.     public function setNombre(string $nombre): self
  70.     {
  71.         $this->nombre $nombre;
  72.         return $this;
  73.     }
  74.     public function getCodigo(): ?string
  75.     {
  76.         return $this->codigo;
  77.     }
  78.     public function setCodigo(string $codigo): self
  79.     {
  80.         $this->codigo $codigo;
  81.         return $this;
  82.     }
  83.     public function getMunicipio(): ?Municipio
  84.     {
  85.         return $this->municipio;
  86.     }
  87.     public function setMunicipio(?Municipio $municipio): self
  88.     {
  89.         $this->municipio $municipio;
  90.         return $this;
  91.     }
  92.     /**
  93.      * @return Collection<int, Direccion>
  94.      */
  95.     public function getDirecciones(): Collection
  96.     {
  97.         return $this->direcciones;
  98.     }
  99.     public function addDireccione(Direccion $direccione): self
  100.     {
  101.         if (!$this->direcciones->contains($direccione)) {
  102.             $this->direcciones->add($direccione);
  103.             $direccione->setLocalidad($this);
  104.         }
  105.         return $this;
  106.     }
  107.     public function removeDireccione(Direccion $direccione): self
  108.     {
  109.         if ($this->direcciones->removeElement($direccione)) {
  110.             // set the owning side to null (unless already changed)
  111.             if ($direccione->getLocalidad() === $this) {
  112.                 $direccione->setLocalidad(null);
  113.             }
  114.         }
  115.         return $this;
  116.     }
  117. }