src/Entity/Fase.php line 52

  1. <?php
  2. namespace App\Entity;
  3. use Symfony\Component\Serializer\Annotation\Groups;
  4. use Ramsey\Uuid\Uuid;
  5. use Ramsey\Uuid\Doctrine\UuidGenerator;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use App\Trait\UuidTrait;
  8. use App\Trait\TimestampableTrait;
  9. use App\Trait\BlameableTrait;
  10. use App\State\FaseStateProcessor;
  11. use App\Repository\FaseRepository;
  12. use ApiPlatform\Metadata\Put;
  13. use ApiPlatform\Metadata\Post;
  14. use ApiPlatform\Metadata\Patch;
  15. use ApiPlatform\Metadata\GetCollection;
  16. use ApiPlatform\Metadata\Get;
  17. use ApiPlatform\Metadata\Delete;
  18. use ApiPlatform\Metadata\ApiResource;
  19. use ApiPlatform\Metadata\ApiFilter;
  20. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  21. use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  22. #[ORM\Entity(repositoryClassFaseRepository::class)]
  23. #[ApiResource(
  24.     operations: [
  25.         new GetCollection(),
  26.         new Post(validationContext: ['groups' => ['Default''fase:create']], denormalizationContext: ['groups' => ['fase:create']], processorFaseStateProcessor::class),
  27.         new Get(),
  28.         new Put(denormalizationContext: ['groups' => ['fase:update']]),
  29.         new Patch(denormalizationContext: ['groups' => ['fase:update']]),
  30.         new Delete(),
  31.     ],
  32.     normalizationContext: ['groups' => ['fase:read''uuid']],
  33. )]
  34. #[ApiFilter(
  35.     SearchFilter::class,
  36.     properties: [
  37.         'nombre' => 'exact',
  38.         'codigo' => 'exact'
  39.     ]
  40. )]
  41. #[ApiFilter(
  42.     OrderFilter::class,
  43.     properties: [
  44.         'nombre',
  45.         'codigo'
  46.     ]
  47. )]
  48. class Fase
  49. {
  50.     use TimestampableTrait;
  51.     use BlameableTrait;
  52.     use UuidTrait;
  53.     #[Groups(['fase:read''fase:create''fase:update'])]
  54.     #[ORM\Column(length255nullabletrue)]
  55.     private ?string $codigo null;
  56.     #[Groups(['fase:read''fase:create''fase:update'])]
  57.     #[ORM\Column(length255nullabletrue)]
  58.     private ?string $nombre null;
  59.     #[Groups(['fase:read'])]
  60.     #[ORM\ManyToOne]
  61.     #[ORM\JoinColumn(nullablefalse)]
  62.     private ?Empresa $empresa null;
  63.     public function __construct()
  64.     {
  65.         $this->uuid Uuid::uuid4()->toString();
  66.     }
  67.     
  68.     public function getCodigo(): ?string
  69.     {
  70.         return $this->codigo;
  71.     }
  72.     public function setCodigo(?string $codigo): self
  73.     {
  74.         $this->codigo $codigo;
  75.         return $this;
  76.     }
  77.     public function getNombre(): ?string
  78.     {
  79.         return $this->nombre;
  80.     }
  81.     public function setNombre(?string $nombre): self
  82.     {
  83.         $this->nombre $nombre;
  84.         return $this;
  85.     }
  86.     public function getEmpresa(): ?Empresa
  87.     {
  88.         return $this->empresa;
  89.     }
  90.     public function setEmpresa(?Empresa $empresa): self
  91.     {
  92.         $this->empresa $empresa;
  93.         return $this;
  94.     }
  95. }