src/Entity/Catalogo/Producto.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Catalogo;
  3. use App\Entity\Ajustes\AtrValores;
  4. use App\Entity\Ajustes\Historico;
  5. use App\Entity\Ajustes\HistProdLinea;
  6. use App\Entity\Ajustes\PedidosAccesorios;
  7. use App\Repository\Catalogo\ProductoRepository;
  8. use App\Traits\ChangesAtTrait;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\Common\Collections\Collection;
  11. use Doctrine\Common\Collections\Criteria;
  12. use Doctrine\ORM\Mapping as ORM;
  13. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  14. use Symfony\Component\HttpFoundation\File\File;
  15. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  16. use Symfony\Component\Serializer\Annotation\Groups;
  17. /**
  18.  * @ORM\Entity(repositoryClass=ProductoRepository::class)
  19.  * @ORM\HasLifecycleCallbacks()
  20.  * @UniqueEntity(fields="prodReferencia", message="La referencia definida ya está en uso por otro producto.")
  21.  * @Vich\Uploadable
  22.  */
  23. class Producto
  24. {
  25.     use ChangesAtTrait;
  26.     public const BASEDIR '/pages/privado/catalogo/productos';
  27.     public const BASEDIRPUBLIC '/pages/publico/tienda';
  28.     public const ICON_CLASS 'fas fa-archive';
  29.     public const ICON '<i class="'.self::ICON_CLASS.'"></i>';
  30.     public const ESTADOS = [
  31.         'producto.estados.activo'   => 1,
  32.         'producto.estados.inactivo' => 0,
  33.     ];
  34.     
  35.     /**
  36.      * @ORM\Id
  37.      * @ORM\GeneratedValue
  38.      * @ORM\Column(type="integer")
  39.      * @Groups({"Simple"})
  40.      */
  41.     private $id;
  42.     /**
  43.      * @Groups({"Simple"})
  44.      */
  45.     private $text;
  46.     /**
  47.      * @ORM\Column(type="string", length=255)
  48.      */
  49.     private $prodNombre;
  50.     /**
  51.      * @ORM\Column(type="string", length=100, nullable=true, unique=true)
  52.      */
  53.     private $prodReferencia;
  54.     /**
  55.      * @ORM\Column(type="boolean")
  56.      */
  57.     private $prodEstado;
  58.     /**
  59.      * @ORM\Column(type="string", nullable=true)
  60.      * @Groups({"Simple"})
  61.      */
  62.     private $prodDescripcion;
  63.     /**
  64.      * @ORM\Column(type="string", length=255, nullable=true)
  65.      */
  66.     private $prodImage;
  67.     /**
  68.      * NOTE: This is not a mapped field of entity metadata, just a simple property.
  69.      *
  70.      * @Vich\UploadableField(mapping="productos_imagen", fileNameProperty="prodImage")
  71.      *
  72.      * @var null|File
  73.      */
  74.     private $prodImageFile;
  75.     /**
  76.      * @ORM\Column(type="string", length=255, nullable=true)
  77.      */
  78.     private $prodOriginalName;
  79.     /**
  80.      * @ORM\OneToMany(targetEntity=HistProdLinea::class, mappedBy="HistProd", cascade={"persist","remove"})
  81.      */
  82.     private $HistProdLineas;
  83.     /**
  84.      * @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
  85.      * @Groups({"Simple"})
  86.      */
  87.     private $prodPrecio;
  88.     /**
  89.      * @ORM\Column(type="text", nullable=true)
  90.      */
  91.     private $prodDescripcionLarga;
  92.     /**
  93.      * @ORM\OneToMany(targetEntity=PedidosAccesorios::class, mappedBy="PedAccProducto")
  94.      */
  95.     private $prodPedidoLineas;
  96.     /**
  97.      * @ORM\Column(type="string", length=255, nullable=true)
  98.      */
  99.     private $prodIdioma;
  100.     /**
  101.      * @ORM\Column(type="integer", nullable=true)
  102.      */
  103.     private $ProdOldID;
  104.     public function __construct()
  105.     {
  106.         $this->createdAt = new \DateTime();
  107.         $this->HistProdLineas = new ArrayCollection();
  108.         $this->prodPedidoLineas = new ArrayCollection();
  109.     }
  110.     public function __toString(): string
  111.     {
  112.         return (string) $this->prodNombre;
  113.     }
  114.     public function getText(): string
  115.     {
  116.         return (string) $this->__toString();
  117.     }
  118.     /**
  119.      * @ORM\PreUpdate
  120.      */
  121.     public function preUpdateEntity()
  122.     {
  123.         $this->updatedAt = new \DateTime();
  124.     }
  125.     public function getId(): ?int
  126.     {
  127.         return $this->id;
  128.     }
  129.     public function getProdNombre(): ?string
  130.     {
  131.         return $this->prodNombre;
  132.     }
  133.     public function setProdNombre(string $prodNombre): self
  134.     {
  135.         $this->prodNombre $prodNombre;
  136.         return $this;
  137.     }
  138.     public function getProdReferencia(): ?string
  139.     {
  140.         return $this->prodReferencia;
  141.     }
  142.     public function setProdReferencia(?string $prodReferencia): self
  143.     {
  144.         $this->prodReferencia $prodReferencia;
  145.         return $this;
  146.     }
  147.     public function getProdEstado(): ?int
  148.     {
  149.         return $this->prodEstado;
  150.     }
  151.     public function setProdEstado(int $prodEstado): self
  152.     {
  153.         $this->prodEstado $prodEstado;
  154.         return $this;
  155.     }
  156.     public function getProdEstadoTag(string $text ''): string
  157.     {
  158.         return $this->prodEstado ?
  159.             '<span class="badge badge-light-success">'.$text.'</span>' :
  160.             '<span class="badge badge-light-danger">'.$text.'</span>'
  161.         ;
  162.     }
  163.   
  164.     public function getProdEnabledText(): string
  165.     {
  166.         return false === array_search($this->prodEstadoself::ESTADOS) ? 'producto.estados.none' array_search($this->prodEstadoself::ESTADOS);
  167.     }
  168.     public function getProdDescripcion(): ?string
  169.     {
  170.         return $this->prodDescripcion;
  171.     }
  172.     public function setProdDescripcion(?string $prodDescripcion): self
  173.     {
  174.         $this->prodDescripcion $prodDescripcion;
  175.         return $this;
  176.     }
  177.     public function getProdImage(): ?string
  178.     {
  179.         return $this->prodImage;
  180.     }
  181.     public function setProdImage(?string $prodImage): self
  182.     {
  183.         $this->prodImage $prodImage;
  184.         return $this;
  185.     }
  186.     /**
  187.      * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
  188.      * of 'UploadedFile' is injected into this setter to trigger the update. If this
  189.      * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
  190.      * must be able to accept an instance of 'File' as the bundle will inject one here
  191.      * during Doctrine hydration.
  192.      *
  193.      * @param null|File|\Symfony\Component\HttpFoundation\File\UploadedFile $imageFile
  194.      */
  195.     public function setProdImageFile(?File $imageFile null): void
  196.     {
  197.         $this->prodImageFile $imageFile;
  198.         if (null !== $imageFile) {
  199.             // It is required that at least one field changes if you are using doctrine
  200.             // otherwise the event listeners won't be called and the file is lost
  201.             $this->updatedAt = new \DateTime();
  202.         }
  203.     }
  204.     public function getProdImageFile(): ?File
  205.     {
  206.         return $this->prodImageFile;
  207.     }
  208.     public function getProdOriginalName(): ?string
  209.     {
  210.         return $this->prodOriginalName;
  211.     }
  212.     public function setProdOriginalName(?string $prodOriginalName): self
  213.     {
  214.         $this->prodOriginalName $prodOriginalName;
  215.         return $this;
  216.     }
  217.     /**
  218.      * @return Collection<int, HistProdLinea>
  219.      */
  220.     public function getHistProdLineas(): Collection
  221.     {
  222.         return $this->HistProdLineas;
  223.     }
  224.     public function addHistProdLinea(HistProdLinea $histProdLinea): self
  225.     {
  226.         if (!$this->HistProdLineas->contains($histProdLinea)) {
  227.             $this->HistProdLineas[] = $histProdLinea;
  228.             $histProdLinea->setHistProd($this);
  229.         }
  230.         return $this;
  231.     }
  232.     public function removeHistProdLinea(HistProdLinea $histProdLinea): self
  233.     {
  234.         if ($this->HistProdLineas->removeElement($histProdLinea)) {
  235.             // set the owning side to null (unless already changed)
  236.             if ($histProdLinea->getHistProd() === $this) {
  237.                 $histProdLinea->setHistProd(null);
  238.             }
  239.         }
  240.         return $this;
  241.     }
  242.     public function getProdPrecio(): ?string
  243.     {
  244.         return $this->prodPrecio;
  245.     }
  246.     public function setProdPrecio(?string $prodPrecio): self
  247.     {
  248.         $this->prodPrecio $prodPrecio;
  249.         return $this;
  250.     }
  251.     public function getProdDescripcionLarga(): ?string
  252.     {
  253.         return $this->prodDescripcionLarga;
  254.     }
  255.     public function setProdDescripcionLarga(?string $prodDescripcionLarga): self
  256.     {
  257.         $this->prodDescripcionLarga $prodDescripcionLarga;
  258.         return $this;
  259.     }
  260.     /**
  261.      * @return Collection<int, PedidosAccesorios>
  262.      */
  263.     public function getProdPedidoLineas(): Collection
  264.     {
  265.         return $this->prodPedidoLineas;
  266.     }
  267.     public function addProdPedidoLinea(PedidosAccesorios $prodPedidoLinea): self
  268.     {
  269.         if (!$this->prodPedidoLineas->contains($prodPedidoLinea)) {
  270.             $this->prodPedidoLineas[] = $prodPedidoLinea;
  271.             $prodPedidoLinea->setPedAccProducto($this);
  272.         }
  273.         return $this;
  274.     }
  275.     public function removeProdPedidoLinea(PedidosAccesorios $prodPedidoLinea): self
  276.     {
  277.         if ($this->prodPedidoLineas->removeElement($prodPedidoLinea)) {
  278.             // set the owning side to null (unless already changed)
  279.             if ($prodPedidoLinea->getPedAccProducto() === $this) {
  280.                 $prodPedidoLinea->setPedAccProducto(null);
  281.             }
  282.         }
  283.         return $this;
  284.     }
  285.     public function getProdIdioma(): ?string
  286.     {
  287.         return $this->prodIdioma;
  288.     }
  289.     public function setProdIdioma(?string $prodIdioma): self
  290.     {
  291.         $this->prodIdioma $prodIdioma;
  292.         return $this;
  293.     }
  294.     public function getProdOldID(): ?int
  295.     {
  296.         return $this->ProdOldID;
  297.     }
  298.     public function setProdOldID(?int $ProdOldID): self
  299.     {
  300.         $this->ProdOldID $ProdOldID;
  301.         return $this;
  302.     }
  303. }