src/Entity/Producto.php line 65
<?phpnamespace App\Entity;use Symfony\Component\Serializer\Annotation\Groups;use Ramsey\Uuid\Uuid;use Doctrine\ORM\Mapping as ORM;use Doctrine\Common\Collections\Collection;use Doctrine\Common\Collections\ArrayCollection;use App\Trait\UuidTrait;use App\Trait\TimestampableTrait;use App\Trait\BlameableTrait;use App\State\ProductoStateProcessor;use App\Repository\ProductoRepository;use App\Controller\ProductoCloneController;use ApiPlatform\Metadata\Put;use ApiPlatform\Metadata\Post;use ApiPlatform\Metadata\Patch;use ApiPlatform\Metadata\GetCollection;use ApiPlatform\Metadata\Get;use ApiPlatform\Metadata\Delete;use ApiPlatform\Metadata\ApiResource;use ApiPlatform\Metadata\ApiFilter;use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;#[ORM\Entity(repositoryClass: ProductoRepository::class)]#[ApiResource(operations: [new GetCollection(),new Post(validationContext: ['groups' => ['Default', 'producto:create']], denormalizationContext: ['groups' => ['producto:create']], processor: ProductoStateProcessor::class),new Post(uriTemplate: 'productos/clone',validationContext: ['groups' => ['Default', 'producto:clone']],denormalizationContext: ['groups' => ['producto:clone']],controller: ProductoCloneController::class,read: false,),new Get(),new Put(denormalizationContext: ['groups' => ['producto:update', 'uuid']], processor: ProductoStateProcessor::class),new Patch(denormalizationContext: ['groups' => ['producto:update', 'uuid']], processor: ProductoStateProcessor::class),new Delete(),],normalizationContext: ['groups' => ['producto:read', 'uuid']],)]#[ApiFilter(SearchFilter::class,properties: ['nombre' => 'exact','codigo' => 'exact','activo' => 'exact','modelo' => 'exact',])]#[ApiFilter(OrderFilter::class,properties: ['nombre','codigo','activo','modelo',])]class Producto{use TimestampableTrait;use BlameableTrait;use UuidTrait;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read'])]#[ORM\Column(nullable: true)]private ?bool $isActivo = null;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read'])]#[ORM\Column(length: 255, nullable: true)]private ?string $codigo = null;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read', 'productoParametros:read'])]#[ORM\Column(length: 255, nullable: true)]private ?string $nombre = null;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read'])]#[ORM\Column(nullable: true)]private array $definicionMuestra = [];#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read'])]#[ORM\Column(nullable: true)]private array $fases = [];#[Groups(['producto:read'])]#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: false)]private ?Empresa $empresa = null;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read'])]#[ORM\Column(length: 255, nullable: true)]private ?string $modelo = null;#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read', 'sesion:read'])]#[ORM\OneToMany(mappedBy: 'producto', targetEntity: ProductoParametros::class, orphanRemoval: true, cascade: ['all'])]private Collection $parametros;#[Groups(['producto:clone'])]private ?int $number = null;#[Groups(['producto:clone'])]private ?string $entityUuid = null;#[ORM\ManyToOne]#[Groups(['producto:read', 'producto:create', 'producto:update', 'muestra:read', 'sesion:read'])]private ?Categoria $categoria = null;public function __construct(){$this->parametros = new ArrayCollection();$this->uuid = Uuid::uuid4()->toString();}public function cloneProducto(int $i, Producto $producto){$clone = new Producto();$clone->setEmpresa($producto->getEmpresa());$clone->setCodigo($producto->getCodigo());$clone->setNombre($producto->getNombre() . ' (copia #' . $i + 1 . ')');$clone->setDefinicionMuestra($producto->getDefinicionMuestra());$clone->setFases($producto->getFases());$clone->setModelo($producto->getModelo());$clone->setIsActivo($producto->isIsActivo());$clone->setCategoria($producto->getCategoria());foreach ($producto->getParametros() as $parametro) {$clone->addParametro($parametro->cloneParametro($clone, $parametro));}return $clone;}public function isIsActivo(): ?bool{return $this->isActivo;}public function setIsActivo(?bool $isActivo): self{$this->isActivo = $isActivo;return $this;}public function getCodigo(): ?string{return $this->codigo;}public function setCodigo(?string $codigo): self{$this->codigo = $codigo;return $this;}public function getNombre(): ?string{return $this->nombre;}public function setNombre(?string $nombre): self{$this->nombre = $nombre;return $this;}public function getDefinicionMuestra(): array{return $this->definicionMuestra;}public function setDefinicionMuestra(?array $definicionMuestra): self{$this->definicionMuestra = $definicionMuestra;return $this;}public function getFases(): array{return $this->fases;}public function setFases(?array $fases): self{$this->fases = $fases;return $this;}public function getEmpresa(): ?Empresa{return $this->empresa;}public function setEmpresa(?Empresa $empresa): self{$this->empresa = $empresa;return $this;}public function getModelo(): ?string{return $this->modelo;}public function setModelo(?string $modelo): self{$this->modelo = $modelo;return $this;}/*** @return Collection<int, ProductoParametros>*/public function getParametros(): Collection{return $this->parametros;}public function addParametro(ProductoParametros $parametro): self{if (!$this->parametros->contains($parametro)) {$this->parametros->add($parametro);$parametro->setProducto($this);}return $this;}public function removeParametro(ProductoParametros $parametro): self{if ($this->parametros->removeElement($parametro)) {// set the owning side to null (unless already changed)if ($parametro->getProducto() === $this) {$parametro->setProducto(null);}}return $this;}public function getNumber(): ?int{return $this->number;}public function setNumber(?int $number): self{$this->number = $number;return $this;}public function getEntityUuid(): ?string{return $this->entityUuid;}public function setEntityUuid(?string $entityUuid): self{$this->entityUuid = $entityUuid;return $this;}public function getCategoria(): ?Categoria{return $this->categoria;}public function setCategoria(?Categoria $categoria): static{$this->categoria = $categoria;return $this;}}