src/Entity/Muestra.php line 59

  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 Doctrine\DBAL\Types\Types;
  7. use App\Trait\UuidTrait;
  8. use App\Trait\TimestampableTrait;
  9. use App\Trait\BlameableTrait;
  10. use App\State\MuestraStateProcessor;
  11. use App\Repository\MuestraRepository;
  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. use ApiPlatform\Doctrine\Orm\Filter\ExistsFilter;
  23. use ApiPlatform\Doctrine\Orm\Filter\BooleanFilter;
  24. use App\Filter\UnusedMuestraFilter;
  25. #[ORM\Entity(repositoryClassMuestraRepository::class)]
  26. #[ApiResource(
  27.     operations: [
  28.         new GetCollection(paginationEnabledfalse),
  29.         new Post(validationContext: ['groups' => ['Default''muestra:create']], denormalizationContext: ['groups' => ['muestra:create']], processorMuestraStateProcessor::class),
  30.         new Get(),
  31.         new Put(denormalizationContext: ['groups' => ['muestra:update']]),
  32.         new Patch(denormalizationContext: ['groups' => ['muestra:update']]),
  33.         new Delete(),
  34.     ],
  35.     normalizationContext: ['groups' => ['muestra:read''uuid']],
  36. )]
  37. #[ApiFilter(
  38.     SearchFilter::class,
  39.     properties: [
  40.         'codigo' => 'exact',
  41.         'nombre' => 'exact'
  42.     ]
  43. )]
  44. #[ApiFilter(BooleanFilter::class, properties: ['original''repetida''reproducida'])]
  45. #[ApiFilter(ExistsFilter::class, properties: ['parent''sesion'])]
  46. #[ApiFilter(UnusedMuestraFilter::class, properties: ['unused'])]
  47. #[ApiFilter(
  48.     OrderFilter::class,
  49.     properties: [
  50.         'nombre',
  51.         'codigo',
  52.         'producto.nombre',
  53.         'marca',
  54.     ]
  55. )]
  56. class Muestra
  57. {
  58.     public const MODULO 'muestras';
  59.     public const MODULO_SENSORIAL 'muestras_sensorial';
  60.     public const MODULO_ORGANOLEPTICO 'muestras_organoleptico';
  61.     public const MODULO_VINO 'Informe IAS-03 (vino)';
  62.     public const MODULO_VINO_VINAGRE 'Informe IAS-03 (vino + vinagre)';
  63.     public const MODULO_QUESO 'Informe IAS-03 (queso)';
  64.     use TimestampableTrait;
  65.     use BlameableTrait;
  66.     use UuidTrait;
  67.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  68.     #[ORM\Column(length255nullabletrue)]
  69.     private ?string $codigo null;
  70.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  71.     #[ORM\Column(length255nullabletrue)]
  72.     private ?string $codId null;
  73.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  74.     #[ORM\Column(length255nullabletrue)]
  75.     private ?string $nombre null;
  76.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  77.     #[ORM\ManyToOne]
  78.     #[ORM\JoinColumn(nullablefalse)]
  79.     private ?Producto $producto null;
  80.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  81.     #[ORM\Column(length255nullabletrue)]
  82.     private ?string $productor null;
  83.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  84.     #[ORM\Column(length255nullabletrue)]
  85.     private ?string $tipoProducto null;
  86.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  87.     #[ORM\Column(length255nullabletrue)]
  88.     private ?string $nInforme null;
  89.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  90.     #[ORM\Column(typeTypes::DATETIME_MUTABLEnullabletrue)]
  91.     private ?\DateTimeInterface $fecha null;
  92.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  93.     #[ORM\Column(nullabletrue)]
  94.     private ?bool $isResuelto null;
  95.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  96.     #[ORM\Column(nullabletrue)]
  97.     private array $fases = [];
  98.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  99.     #[ORM\Column(nullabletrue)]
  100.     private array $definicion = [];
  101.     #[Groups(['muestra:read'])]
  102.     #[ORM\ManyToOne]
  103.     #[ORM\JoinColumn(nullablefalse)]
  104.     private ?Empresa $empresa null;
  105.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  106.     #[ORM\Column(length255nullabletrue)]
  107.     private ?string $marca null;
  108.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  109.     #[ORM\ManyToOne(targetEntityself::class)]
  110.     #[ORM\JoinColumn(onDelete'SET NULL')]
  111.     private ?self $parent null;
  112.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  113.     #[ORM\Column(nullabletrue)]
  114.     private ?bool $repetida null;
  115.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  116.     #[ORM\Column(nullabletrue)]
  117.     private ?bool $reproducida null;
  118.     #[Groups(['muestra:read''sesion:read''sesion:create''sesion:update'])]
  119.     #[ORM\Column(nullabletrueoptions: ['default' => true])]
  120.     private ?bool $original null;
  121.     #[Groups(['muestra:read'])]
  122.     #[ORM\ManyToOne(inversedBy'muestras'cascade: ['persist'])]
  123.     #[ORM\JoinColumn(onDelete'SET NULL')]
  124.     private ?Sesion $sesion null;
  125.     #[ORM\Column(length255nullabletrue)]
  126.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  127.     private ?string $codigoAuditor null;
  128.     #[ORM\Column(length255nullabletrue)]
  129.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  130.     private ?string $fechaToma null;
  131.     #[ORM\Column(length255nullabletrue)]
  132.     #[Groups(['muestra:read''muestra:create''muestra:update''sesion:read''sesion:create''sesion:update'])]
  133.     private ?string $contraetiquetaPrecinta null;
  134.     public function __construct()
  135.     {
  136.         $this->uuid Uuid::uuid4()->toString();
  137.     }
  138.     public function getCodigo(): ?string
  139.     {
  140.         return $this->codigo;
  141.     }
  142.     public function setCodigo(?string $codigo): self
  143.     {
  144.         $this->codigo $codigo;
  145.         return $this;
  146.     }
  147.     public function getCodId(): ?string
  148.     {
  149.         return $this->codId;
  150.     }
  151.     public function setCodId(?string $codId): self
  152.     {
  153.         $this->codId $codId;
  154.         return $this;
  155.     }
  156.     public function getNombre(): ?string
  157.     {
  158.         return $this->nombre;
  159.     }
  160.     public function setNombre(?string $nombre): self
  161.     {
  162.         $this->nombre $nombre;
  163.         return $this;
  164.     }
  165.     public function getProducto(): ?Producto
  166.     {
  167.         return $this->producto;
  168.     }
  169.     public function setProducto(?Producto $producto): self
  170.     {
  171.         $this->producto $producto;
  172.         return $this;
  173.     }
  174.     public function getProductor(): ?string
  175.     {
  176.         return $this->productor;
  177.     }
  178.     public function setProductor(?string $productor): self
  179.     {
  180.         $this->productor $productor;
  181.         return $this;
  182.     }
  183.     public function getTipoProducto(): ?string
  184.     {
  185.         return $this->tipoProducto;
  186.     }
  187.     public function setTipoProducto(?string $tipoProducto): self
  188.     {
  189.         $this->tipoProducto $tipoProducto;
  190.         return $this;
  191.     }
  192.     public function getNInforme(): ?string
  193.     {
  194.         return $this->nInforme;
  195.     }
  196.     public function setNInforme(?string $nInforme): self
  197.     {
  198.         $this->nInforme $nInforme;
  199.         return $this;
  200.     }
  201.     public function getFecha(): ?\DateTimeInterface
  202.     {
  203.         return $this->fecha;
  204.     }
  205.     public function setFecha(?\DateTimeInterface $fecha): self
  206.     {
  207.         $this->fecha $fecha;
  208.         return $this;
  209.     }
  210.     public function isIsResuelto(): ?bool
  211.     {
  212.         return $this->isResuelto;
  213.     }
  214.     public function setIsResuelto(?bool $isResuelto): self
  215.     {
  216.         $this->isResuelto $isResuelto;
  217.         return $this;
  218.     }
  219.     public function getFases(): array
  220.     {
  221.         return $this->fases;
  222.     }
  223.     public function setFases(?array $fases): self
  224.     {
  225.         $this->fases $fases;
  226.         return $this;
  227.     }
  228.     public function getDefinicion(): array
  229.     {
  230.         return $this->definicion;
  231.     }
  232.     public function setDefinicion(?array $definicion): self
  233.     {
  234.         $this->definicion $definicion;
  235.         return $this;
  236.     }
  237.     public function getEmpresa(): ?Empresa
  238.     {
  239.         return $this->empresa;
  240.     }
  241.     public function setEmpresa(?Empresa $empresa): self
  242.     {
  243.         $this->empresa $empresa;
  244.         return $this;
  245.     }
  246.     public function getMarca(): ?string
  247.     {
  248.         return $this->marca;
  249.     }
  250.     public function setMarca(?string $marca): self
  251.     {
  252.         $this->marca $marca;
  253.         return $this;
  254.     }
  255.     public function getParent(): ?self
  256.     {
  257.         return $this->parent;
  258.     }
  259.     public function setParent(?self $parent): static
  260.     {
  261.         $this->parent $parent;
  262.         return $this;
  263.     }
  264.     public function isRepetida(): ?bool
  265.     {
  266.         return $this->repetida;
  267.     }
  268.     public function setRepetida(?bool $repetida): static
  269.     {
  270.         $this->repetida $repetida;
  271.         return $this;
  272.     }
  273.     public function isReproducida(): ?bool
  274.     {
  275.         return $this->reproducida;
  276.     }
  277.     public function setReproducida(?bool $reproducida): static
  278.     {
  279.         $this->reproducida $reproducida;
  280.         return $this;
  281.     }
  282.     public function isOriginal(): ?bool
  283.     {
  284.         return $this->original;
  285.     }
  286.     public function setOriginal(?bool $original): static
  287.     {
  288.         $this->original $original;
  289.         return $this;
  290.     }
  291.     public function getSesion(): ?Sesion
  292.     {
  293.         return $this->sesion;
  294.     }
  295.     public function setSesion(?Sesion $sesion): static
  296.     {
  297.         $this->sesion $sesion;
  298.         return $this;
  299.     }
  300.     public function getCodigoAuditor(): ?string
  301.     {
  302.         return $this->codigoAuditor;
  303.     }
  304.     public function setCodigoAuditor(?string $codigoAuditor): static
  305.     {
  306.         $this->codigoAuditor $codigoAuditor;
  307.         return $this;
  308.     }
  309.     public function getFechaToma(): ?string
  310.     {
  311.         return $this->fechaToma;
  312.     }
  313.     public function setFechaToma(?string $fechaToma): static
  314.     {
  315.         $this->fechaToma $fechaToma;
  316.         return $this;
  317.     }
  318.     public function getContraetiquetaPrecinta(): ?string
  319.     {
  320.         return $this->contraetiquetaPrecinta;
  321.     }
  322.     public function setContraetiquetaPrecinta(?string $contraetiquetaPrecinta): static
  323.     {
  324.         $this->contraetiquetaPrecinta $contraetiquetaPrecinta;
  325.         return $this;
  326.     }
  327. }