src/Entity/Comunidad.php line 34

  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\ComunidadRepository;
  15. use Symfony\Component\Serializer\Annotation\Groups;
  16. use Symfony\Component\Validator\Constraints as Assert;
  17. #[ORM\Entity(repositoryClassComunidadRepository::class)]
  18. #[
  19.     ApiResource(
  20.         operations: [
  21.             new Get(uriTemplate'comunidades/{uuid}'),
  22.             new Post(validationContext: ['groups' => ['Default''comunidad:create']], denormalizationContext: ['groups' => ['comunidad:create']], uriTemplate'comunidades'),
  23.             new GetCollection(uriTemplate'comunidades'),
  24.             new Put(denormalizationContext: ['groups' => ['comunidad:update']], uriTemplate'comunidades/{uuid}'),
  25.             new Patch(denormalizationContext: ['groups' => ['comunidad:update']], uriTemplate'comunidades/{uuid}'),
  26.             new Delete(uriTemplate'comunidades/{uuid}'),
  27.         ],
  28.         normalizationContext: ['groups' => ['comunidad:read''uuid']],
  29.     )
  30. ]
  31. class Comunidad
  32. {
  33.     use UuidTrait;
  34.     #[Assert\NotNull(groups: ['comunidad:create'])]
  35.     #[Groups(['comunidad:read''comunidad:create''comunidad:update''user:read''localidad:read''empresa:read'])]
  36.     #[ORM\Column(length255)]
  37.     private ?string $nombre null;
  38.     #[Groups(['comunidad:read''comunidad:create''comunidad:update''user:read''localidad:read''empresa:read'])]
  39.     #[ORM\Column(length255)]
  40.     #[Gedmo\Slug(fields: ['nombre'])]
  41.     private ?string $codigo null;
  42.     #[Assert\NotNull(groups: ['comunidad:create'])]
  43.     #[Groups(['comunidad:read''comunidad:create''comunidad:update''user:read''localidad:read''empresa:read'])]
  44.     #[ORM\ManyToOne]
  45.     #[ORM\JoinColumn(nullablefalse)]
  46.     private ?Pais $pais null;
  47.     public function __construct()
  48.     {
  49.         $this->uuid Uuid::uuid4()->toString();
  50.     }
  51.     
  52.     public function getNombre(): ?string
  53.     {
  54.         return $this->nombre;
  55.     }
  56.     public function setNombre(string $nombre): self
  57.     {
  58.         $this->nombre $nombre;
  59.         return $this;
  60.     }
  61.     public function getCodigo(): ?string
  62.     {
  63.         return $this->codigo;
  64.     }
  65.     public function setCodigo(string $codigo): self
  66.     {
  67.         $this->codigo $codigo;
  68.         return $this;
  69.     }
  70.     public function getPais(): ?Pais
  71.     {
  72.         return $this->pais;
  73.     }
  74.     public function setPais(?Pais $pais): self
  75.     {
  76.         $this->pais $pais;
  77.         return $this;
  78.     }
  79. }