src/Entity/Produit/Produit.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Produit;
  3. use App\Entity\ProduitCarrier;
  4. use App\Repository\ProduitRepository;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use App\Entity\Produit\{CouleurFinitionGarantieImageProduitOption};
  10. use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
  11. use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
  12. use App\Entity\{CategorieProduitRelatedVersionAvisClient};
  13. use App\Entity\Order\OrderLine;
  14. #[ORM\Entity(repositoryClassProduitRepository::class)]
  15. class Produit implements TranslatableInterface
  16. {
  17.     use TranslatableTrait;
  18.     #[ORM\Id]
  19.     #[ORM\GeneratedValue]
  20.     #[ORM\Column(type'integer')]
  21.     private $id;
  22.     #[ORM\OneToMany(mappedBy'produitImage'targetEntityImageProduit::class, orphanRemovaltrue)]
  23.     private $imageProduits;
  24.     #[ORM\ManyToMany(targetEntityCategorie::class, inversedBy'produits')]
  25.     private $Categories;
  26.     #[ORM\Column(type'datetime')]
  27.     private $createdAt;
  28.     #[ORM\Column(type'string'length400nullable:true)]
  29.     private $imageProduitsPrincipale;
  30.     #[ORM\Column(type'integer'nullable:true)]
  31.     private $stock;
  32.     #[ORM\OneToMany(mappedBy'produit'targetEntityProduitRelatedVersion::class, orphanRemovaltrue)]
  33.     private $produitRelatedVersions;
  34.     #[ORM\ManyToMany(targetEntityGarantie::class, inversedBy'produits')]
  35.     private $garantie;
  36.     #[ORM\ManyToMany(targetEntityOption::class, inversedBy'produits')]
  37.     private $produitOption;
  38.     #[ORM\OneToMany(mappedBy'produit'targetEntityAvisClient::class)]
  39.     private $avisClients;
  40.     #[ORM\ManyToOne(targetEntityFinition::class, inversedBy'produits')]
  41.     #[ORM\JoinColumn(name:"finition_id"referencedColumnName:"id"nullable:trueonDelete:"SET NULL")]
  42.     private $finition;
  43.     #[ORM\ManyToOne(targetEntityself::class, inversedBy'produits')]
  44.     private $produitParent;
  45.     #[ORM\OneToMany(mappedBy'produitParent'targetEntityself::class)]
  46.     private $produits;
  47.     #[ORM\ManyToMany(targetEntityCouleur::class, inversedBy'produitsColors')]
  48.     private $colors;
  49.     #[Assert\Valid]
  50.     protected $translations;
  51.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  52.     private ?string $priceTtc null;
  53.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  54.     private ?string $priceHt null;
  55.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  56.     private ?string $taxRate null;
  57.     #[ORM\Column(length255nullabletrue)]
  58.     private ?string $ref null;
  59.     #[ORM\OneToMany(mappedBy'produit'targetEntityProduitCarrier::class, indexBy'carrier_id'orphanRemovaltrue)]
  60.     private Collection $produitCarriers;
  61.     #[ORM\Column(nullable:true)]
  62.     private ?bool $isSelection null;
  63.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  64.     private ?string $priceProductTtc null;
  65.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  66.     private ?string $priceProductHt null;
  67.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  68.     private ?string $taxRateProductHt null;
  69.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  70.     private ?string $priceServiceTtc null;
  71.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  72.     private ?string $priceServiceHt null;
  73.     #[ORM\Column(typeTypes::DECIMALprecision10scale2nullabletrue)]
  74.     private ?string $taxRateServiceTtc null;
  75.     #[ORM\OneToMany(mappedBy'produit'targetEntityOrderLine::class)]
  76.     private Collection $orderLinesProduit;
  77.     #[ORM\Column]
  78.     private ?bool $isCoupCoeur null;
  79.     #[ORM\Column(length255nullabletrue)]
  80.     private ?string $templatePdf null;
  81.     public function __construct()
  82.     {
  83.         $this->imageProduits = new ArrayCollection();
  84.         $this->Categories = new ArrayCollection();
  85.         $this->produitRelatedVersions = new ArrayCollection();
  86.         $this->garantie = new ArrayCollection();
  87.         $this->produitOption = new ArrayCollection();
  88.         $this->avisClients = new ArrayCollection();
  89.         $this->produits = new ArrayCollection();
  90.         $this->colors = new ArrayCollection();
  91.         $this->produitCarriers = new ArrayCollection();
  92.     }
  93.     public function getId(): ?int
  94.     {
  95.         return $this->id;
  96.     }
  97.  
  98.     /**
  99.      * @return Collection<int, ImageProduit>
  100.      */
  101.     public function getImageProduits(): Collection
  102.     {
  103.         return $this->imageProduits;
  104.     }
  105.     public function addImageProduit(ImageProduit $imageProduit): self
  106.     {
  107.         if (!$this->imageProduits->contains($imageProduit)) {
  108.             $this->imageProduits[] = $imageProduit;
  109.             $imageProduit->setProduitImage($this);
  110.         }
  111.         return $this;
  112.     }
  113.     public function removeImageProduit(ImageProduit $imageProduit): self
  114.     {
  115.         if ($this->imageProduits->removeElement($imageProduit)) {
  116.             // set the owning side to null (unless already changed)
  117.             if ($imageProduit->getProduitImage() === $this) {
  118.                 $imageProduit->setProduitImage(null);
  119.             }
  120.         }
  121.         return $this;
  122.     }
  123.     /**
  124.      * @return Collection<int, Categorie>
  125.      */
  126.     public function getCategories(): Collection
  127.     {
  128.         return $this->Categories;
  129.     }
  130.     public function addCategory(Categorie $category): self
  131.     {
  132.         if (!$this->Categories->contains($category)) {
  133.             $this->Categories[] = $category;
  134.         }
  135.         return $this;
  136.     }
  137.     public function removeCategory(Categorie $category): self
  138.     {
  139.         $this->Categories->removeElement($category);
  140.         return $this;
  141.     }
  142.     public function getCreatedAt(): ?\DateTimeInterface
  143.     {
  144.         return $this->createdAt;
  145.     }
  146.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  147.     {
  148.         $this->createdAt $createdAt;
  149.         return $this;
  150.     }
  151.     public function getImageProduitsPrincipale(): ?string
  152.     {
  153.         return $this->imageProduitsPrincipale;
  154.     }
  155.     public function setImageProduitsPrincipale(string $imageProduitsPrincipale): self
  156.     {
  157.         $this->imageProduitsPrincipale $imageProduitsPrincipale;
  158.         return $this;
  159.     }
  160.     public function getStock(): ?int
  161.     {
  162.         return $this->stock;
  163.     }
  164.     public function setStock(int $stock): self
  165.     {
  166.         $this->stock $stock;
  167.         return $this;
  168.     }
  169.     
  170.     /**
  171.      * @return Collection<int, ProduitRelatedVersion>
  172.      */
  173.     public function getProduitRelatedVersions(): Collection
  174.     {
  175.         return $this->produitRelatedVersions;
  176.     }
  177.     public function addProduitRelatedVersion(ProduitRelatedVersion $produitRelatedVersion): self
  178.     {
  179.         if (!$this->produitRelatedVersions->contains($produitRelatedVersion)) {
  180.             $this->produitRelatedVersions[] = $produitRelatedVersion;
  181.             $produitRelatedVersion->setProduit($this);
  182.         }
  183.         return $this;
  184.     }
  185.     public function removeProduitRelatedVersion(ProduitRelatedVersion $produitRelatedVersion): self
  186.     {
  187.         if ($this->produitRelatedVersions->removeElement($produitRelatedVersion)) {
  188.             // set the owning side to null (unless already changed)
  189.             if ($produitRelatedVersion->getProduit() === $this) {
  190.                 $produitRelatedVersion->setProduit(null);
  191.             }
  192.         }
  193.         return $this;
  194.     }
  195.     /**
  196.      * @return Collection<int, Garantie>
  197.      */
  198.     public function getGarantie(): Collection
  199.     {
  200.         return $this->garantie;
  201.     }
  202.     public function addGarantie(Garantie $garantie): self
  203.     {
  204.         if (!$this->garantie->contains($garantie)) {
  205.             $this->garantie[] = $garantie;
  206.         }
  207.         return $this;
  208.     }
  209.     public function removeGarantie(Garantie $garantie): self
  210.     {
  211.         $this->garantie->removeElement($garantie);
  212.         return $this;
  213.     }
  214.     /**
  215.      * @return Collection<int, Option>
  216.      */
  217.     public function getProduitOption(): Collection
  218.     {
  219.         return $this->produitOption;
  220.     }
  221.     public function addProduitOption(Option $produitOption): self
  222.     {
  223.         if (!$this->produitOption->contains($produitOption)) {
  224.             $this->produitOption[] = $produitOption;
  225.         }
  226.         return $this;
  227.     }
  228.     public function removeProduitOption(Option $produitOption): self
  229.     {
  230.         $this->produitOption->removeElement($produitOption);
  231.         return $this;
  232.     }
  233.     /**
  234.      * @return Collection<int, AvisClient>
  235.      */
  236.     public function getAvisClients(): Collection
  237.     {
  238.         return $this->avisClients;
  239.     }
  240.     public function addAvisClient(AvisClient $avisClient): self
  241.     {
  242.         if (!$this->avisClients->contains($avisClient)) {
  243.             $this->avisClients[] = $avisClient;
  244.             $avisClient->setProduit($this);
  245.         }
  246.         return $this;
  247.     }
  248.     public function removeAvisClient(AvisClient $avisClient): self
  249.     {
  250.         if ($this->avisClients->removeElement($avisClient)) {
  251.             // set the owning side to null (unless already changed)
  252.             if ($avisClient->getProduit() === $this) {
  253.                 $avisClient->setProduit(null);
  254.             }
  255.         }
  256.         return $this;
  257.     }
  258.     public function getNoteClientOfOneProduct($listAvisClients){
  259.         $note 0;
  260.         if ($listAvisClients){
  261.             $list $listAvisClients->toArray();
  262.             if (count($list) > 0){
  263.                 $noteAll 0;
  264.                 for ($i=0$i<count($list); $i++){
  265.                     $notePerClient = (floatval($list[$i]->getNote()) * 100) / 5;
  266.                     $noteAll += $notePerClient;
  267.                 }
  268.                 $note $noteAll/count($list);
  269.             }
  270.         }
  271.         return $note."%";
  272.     }
  273.     public function getFinition(): ?Finition
  274.     {
  275.         return $this->finition;
  276.     }
  277.     public function setFinition(?Finition $finition): self
  278.     {
  279.         $this->finition $finition;
  280.         return $this;
  281.     }
  282.     public function getProduitParent(): ?self
  283.     {
  284.         return $this->produitParent;
  285.     }
  286.     public function setProduitParent(?self $produitParent): self
  287.     {
  288.         $this->produitParent $produitParent;
  289.         return $this;
  290.     }
  291.     /**
  292.      * @return Collection<int, self>
  293.      */
  294.     public function getProduits(): Collection
  295.     {
  296.         return $this->produits;
  297.     }
  298.     public function addProduit(self $produit): self
  299.     {
  300.         if (!$this->produits->contains($produit)) {
  301.             $this->produits[] = $produit;
  302.             $produit->setProduitParent($this);
  303.         }
  304.         return $this;
  305.     }
  306.     public function removeProduit(self $produit): self
  307.     {
  308.         if ($this->produits->removeElement($produit)) {
  309.             // set the owning side to null (unless already changed)
  310.             if ($produit->getProduitParent() === $this) {
  311.                 $produit->setProduitParent(null);
  312.             }
  313.         }
  314.         return $this;
  315.     }
  316.     /**
  317.      * @return Collection<int, Couleur>
  318.      */
  319.     public function getColors(): Collection
  320.     {
  321.         return $this->colors;
  322.     }
  323.     public function addColor(Couleur $color): self
  324.     {
  325.         if (!$this->colors->contains($color)) {
  326.             $this->colors[] = $color;
  327.         }
  328.         return $this;
  329.     }
  330.     public function removeColor(Couleur $color): self
  331.     {
  332.         $this->colors->removeElement($color);
  333.         return $this;
  334.     }
  335.     public function getPriceTtc(): ?string
  336.     {
  337.         return $this->priceTtc;
  338.     }
  339.     public function setPriceTtc(?string $priceTtc): static
  340.     {
  341.         $this->priceTtc $priceTtc;
  342.         return $this;
  343.     }
  344.     public function getPriceHt(): ?string
  345.     {
  346.         return $this->priceHt;
  347.     }
  348.     public function setPriceHt(?string $priceHt): static
  349.     {
  350.         $this->priceHt $priceHt;
  351.         return $this;
  352.     }
  353.     public function getTaxRate(): ?string
  354.     {
  355.         return $this->taxRate;
  356.     }
  357.     public function setTaxRate(?string $taxRate): static
  358.     {
  359.         $this->taxRate $taxRate;
  360.         return $this;
  361.     }
  362.     public function getRef(): ?string
  363.     {
  364.         return $this->ref;
  365.     }
  366.     public function setRef(?string $ref): static
  367.     {
  368.         $this->ref $ref;
  369.         return $this;
  370.     }
  371.      public function __toString()
  372.     {
  373.         if($this->translate()->getName()) {
  374.             return $this->translate()->getName();
  375.         }
  376.         return '';
  377.     }
  378.     //On triche pour ne pas repasser sur le front et dev en cours
  379.     public function getName()
  380.     {
  381.         if($this->translate()->getName()) {
  382.             return $this->translate()->getName();
  383.         }
  384.         return '';
  385.     }
  386.     public function getNameFr(): ?string
  387.     {
  388.         if($this->translate()->getName()) {
  389.             return $this->translate()->getName();
  390.         }
  391.         return '';
  392.     }
  393.     public function getNameLangue($lang): ?string
  394.     {
  395.         if($this->translate()->getName()) {
  396.             return $this->translate()->getName();
  397.         }
  398.         return '';
  399.     }
  400.     public function getDescription(): ?string
  401.     {
  402.         if($this->translate()->getDescription()) {
  403.             return $this->translate()->getDescription();
  404.         }
  405.         return '';
  406.     }
  407.     public function getPrice(){
  408.         return $this->getPriceTtc();
  409.     }
  410.     public function getPriceLangue($lang){
  411.         return $this->getPriceTtc();
  412.     }
  413.     /**
  414.      * @return Collection<int, ProduitCarrier>
  415.      */
  416.     public function getProduitCarriers(): Collection
  417.     {
  418.         return $this->produitCarriers;
  419.     }
  420.     public function addProduitCarrier(ProduitCarrier $produitCarrier): static
  421.     {
  422.         if (!$this->produitCarriers->contains($produitCarrier)) {
  423.             $this->produitCarriers->add($produitCarrier);
  424.             $produitCarrier->setProduit($this);
  425.         }
  426.         return $this;
  427.     }
  428.     public function removeProduitCarrier(ProduitCarrier $produitCarrier): static
  429.     {
  430.         if ($this->produitCarriers->removeElement($produitCarrier)) {
  431.             // set the owning side to null (unless already changed)
  432.             if ($produitCarrier->getProduit() === $this) {
  433.                 $produitCarrier->setProduit(null);
  434.             }
  435.         }
  436.         return $this;
  437.     }
  438.     public function isIsSelection(): ?bool
  439.     {
  440.         return $this->isSelection;
  441.     }
  442.     public function setIsSelection(bool $isSelection): static
  443.     {
  444.         $this->isSelection $isSelection;
  445.         return $this;
  446.     }
  447.     public function getPriceProductTtc(): ?string
  448.     {
  449.         return $this->priceProductTtc;
  450.     }
  451.     public function setPriceProductTtc(?string $priceProductTtc): static
  452.     {
  453.         $this->priceProductTtc $priceProductTtc;
  454.         return $this;
  455.     }
  456.     public function getPriceProductHt(): ?string
  457.     {
  458.         return $this->priceProductHt;
  459.     }
  460.     public function setPriceProductHt(?string $priceProductHt): static
  461.     {
  462.         $this->priceProductHt $priceProductHt;
  463.         return $this;
  464.     }
  465.     public function getTaxRateProductHt(): ?string
  466.     {
  467.         return $this->taxRateProductHt;
  468.     }
  469.     public function setTaxRateProductHt(?string $taxRateProductHt): static
  470.     {
  471.         $this->taxRateProductHt $taxRateProductHt;
  472.         return $this;
  473.     }
  474.     public function getPriceServiceTtc(): ?string
  475.     {
  476.         return $this->priceServiceTtc;
  477.     }
  478.     public function setPriceServiceTtc(?string $priceServiceTtc): static
  479.     {
  480.         $this->priceServiceTtc $priceServiceTtc;
  481.         return $this;
  482.     }
  483.     public function getPriceServiceHt(): ?string
  484.     {
  485.         return $this->priceServiceHt;
  486.     }
  487.     public function setPriceServiceHt(?string $priceServiceHt): static
  488.     {
  489.         $this->priceServiceHt $priceServiceHt;
  490.         return $this;
  491.     }
  492.     public function getTaxRateServiceTtc(): ?string
  493.     {
  494.         return $this->taxRateServiceTtc;
  495.     }
  496.     public function setTaxRateServiceTtc(?string $taxRateServiceTtc): static
  497.     {
  498.         $this->taxRateServiceTtc $taxRateServiceTtc;
  499.         return $this;
  500.     }
  501.     public function isIsCoupCoeur(): ?bool
  502.     {
  503.         return $this->isCoupCoeur;
  504.     }
  505.     public function setIsCoupCoeur(bool $isCoupCoeur): static
  506.     {
  507.         $this->isCoupCoeur $isCoupCoeur;
  508.         return $this;
  509.     }
  510.     public function getTemplatePdf(): ?string
  511.     {
  512.         return $this->templatePdf;
  513.     }
  514.     public function setTemplatePdf(?string $templatePdf): static
  515.     {
  516.         $this->templatePdf $templatePdf;
  517.         return $this;
  518.     }
  519. }