src/Entity/Categoria.php line 51

  1. <?php
  2. namespace App\Entity;
  3. use Symfony\Component\Serializer\Annotation\Groups;
  4. use Ramsey\Uuid\Uuid;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use App\Trait\UuidTrait;
  7. use App\Trait\TimestampableTrait;
  8. use App\Trait\BlameableTrait;
  9. use App\State\CategoriaStateProcessor;
  10. use App\Repository\CategoriaRepository;
  11. use ApiPlatform\Metadata\Put;
  12. use ApiPlatform\Metadata\Post;
  13. use ApiPlatform\Metadata\Patch;
  14. use ApiPlatform\Metadata\GetCollection;
  15. use ApiPlatform\Metadata\Get;
  16. use ApiPlatform\Metadata\Delete;
  17. use ApiPlatform\Metadata\ApiResource;
  18. use ApiPlatform\Metadata\ApiFilter;
  19. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  20. use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  21. #[ORM\Entity(repositoryClassCategoriaRepository::class)]
  22. #[ApiResource(
  23.     operations: [
  24.         new GetCollection(order: ['orden' => 'ASC']),
  25.         new Post(validationContext: ['groups' => ['Default''categoria:create']], denormalizationContext: ['groups' => ['categoria:create']], processorCategoriaStateProcessor::class),
  26.         new Get(),
  27.         new Patch(denormalizationContext: ['groups' => ['categoria:update''uuid']], processorCategoriaStateProcessor::class),
  28.         new Delete(processorCategoriaStateProcessor::class),
  29.     ],
  30.     normalizationContext: ['groups' => ['categoria:read''uuid']],
  31. )]
  32. #[ApiFilter(
  33.     SearchFilter::class,
  34.     properties: [
  35.         'nombre' => 'exact',
  36.         'codigo' => 'exact'
  37.     ]
  38. )]
  39. #[ApiFilter(
  40.     OrderFilter::class,
  41.     properties: [
  42.         'nombre',
  43.         'codigo',
  44.         'orden'
  45.     ]
  46. )]
  47. class Categoria
  48. {
  49.     use TimestampableTrait;
  50.     use BlameableTrait;
  51.     use UuidTrait;
  52.     #[ORM\Column(length255nullabletrue)]
  53.     #[Groups(['categoria:read''categoria:create','categoria:update''producto:read''muestra:read'])]
  54.     private ?string $codigo null;
  55.     #[ORM\Column(length255nullabletrue)]
  56.     #[Groups(['categoria:read''categoria:create','categoria:update''producto:read','muestra:read''sesion:read'])]
  57.     private ?string $nombre null;
  58.     #[ORM\Column(nullabletrue)]
  59.     #[Groups(['categoria:read''categoria:create','categoria:update''producto:read','muestra:read''sesion:read'])]
  60.     private ?int $orden null;
  61.     #[ORM\ManyToOne]
  62.     #[ORM\JoinColumn(nullablefalse)]
  63.     private ?Empresa $empresa null;
  64.     #[ORM\Column(length255nullabletrue)]
  65.     #[Groups(['categoria:read''categoria:create''categoria:update''producto:read','muestra:read''sesion:read'])]
  66.     private ?string $color null;
  67.     #[ORM\Column(nullabletrue)]
  68.     #[Groups(['categoria:read''categoria:create''categoria:update'])]
  69.     private ?bool $core null;
  70.     public function __construct()
  71.     {
  72.         $this->uuid Uuid::uuid4()->toString();
  73.     }
  74.     public function getCodigo(): ?string
  75.     {
  76.         return $this->codigo;
  77.     }
  78.     public function setCodigo(?string $codigo): static
  79.     {
  80.         $this->codigo $codigo;
  81.         return $this;
  82.     }
  83.     public function getNombre(): ?string
  84.     {
  85.         return $this->nombre;
  86.     }
  87.     public function setNombre(?string $nombre): static
  88.     {
  89.         $this->nombre $nombre;
  90.         return $this;
  91.     }
  92.     public function getOrden(): ?int
  93.     {
  94.         return $this->orden;
  95.     }
  96.     public function setOrden(?int $orden): static
  97.     {
  98.         $this->orden $orden;
  99.         return $this;
  100.     }
  101.     public function getEmpresa(): ?Empresa
  102.     {
  103.         return $this->empresa;
  104.     }
  105.     public function setEmpresa(?Empresa $empresa): static
  106.     {
  107.         $this->empresa $empresa;
  108.         return $this;
  109.     }
  110.     public function getColor(): ?string
  111.     {
  112.         return $this->color;
  113.     }
  114.     public function setColor(?string $color): static
  115.     {
  116.         $this->color $color;
  117.         return $this;
  118.     }
  119.     public function isCore(): ?bool
  120.     {
  121.         return $this->core;
  122.     }
  123.     public function setCore(?bool $core): static
  124.     {
  125.         $this->core $core;
  126.         return $this;
  127.     }
  128. }