<?php
namespace App\Entity\Produit;
use App\Entity\Order\OrderLineColor;
use App\Repository\CouleurRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Produit\Produit;
use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
#[ORM\Entity(repositoryClass: CouleurRepository::class)]
class Couleur implements TranslatableInterface
{
use TranslatableTrait;
#[Assert\Valid]
protected $translations;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\Column(type: 'string', length: 255)]
private $type;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $priceHt;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $priceTtc;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $taxRate;
#[ORM\ManyToMany(targetEntity: Produit::class, mappedBy: 'colors')]
private $produits;
#[ORM\ManyToMany(targetEntity: Produit::class, mappedBy: 'colors')]
private $produitsColors;
#[ORM\OneToMany(mappedBy: 'color', targetEntity: OrderLineColor::class)]
private Collection $orderLineColors;
#[ORM\OneToMany(mappedBy: 'color', targetEntity: ImageProduit::class)]
private Collection $imageProduits;
public function __construct()
{
$this->produits = new ArrayCollection();
$this->produitsColors = new ArrayCollection();
$this->orderLineColors = new ArrayCollection();
$this->imageProduits = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
if($this->translate()->getName()) {
return $this->translate()->getName();
}
return '';
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
public function getPriceHt()
{
return $this->priceHt;
}
public function setPriceHt($priceHt): self
{
$this->priceHt = $priceHt;
return $this;
}
public function getPriceTtc()
{
return $this->priceTtc;
}
public function setPriceTtc($priceTtc): self
{
$this->priceTtc = $priceTtc;
return $this;
}
public function getTaxRate()
{
return $this->taxRate;
}
public function setTaxRate($taxRate): self
{
$this->taxRate = $taxRate;
return $this;
}
/**
* @return Collection<int, Produit>
*/
public function getProduits(): Collection
{
return $this->produits;
}
public function addProduit(Produit $produit): self
{
if (!$this->produits->contains($produit)) {
$this->produits[] = $produit;
$produit->addColor($this);
}
return $this;
}
public function removeProduit(Produit $produit): self
{
if ($this->produits->removeElement($produit)) {
$produit->removeColor($this);
}
return $this;
}
/**
* @return Collection<int, Produit>
*/
public function getProduitsColors(): Collection
{
return $this->produitsColors;
}
public function addProduitsColor(Produit $produitsColor): self
{
if (!$this->produitsColors->contains($produitsColor)) {
$this->produitsColors[] = $produitsColor;
$produitsColor->addColor($this);
}
return $this;
}
public function removeProduitsColor(Produit $produitsColor): self
{
if ($this->produitsColors->removeElement($produitsColor)) {
$produitsColor->removeColor($this);
}
return $this;
}
/**
* @return Collection<int, OrderLineColor>
*/
public function getOrderLineColors(): Collection
{
return $this->orderLineColors;
}
public function addOrderLineColor(OrderLineColor $orderLineColor): static
{
if (!$this->orderLineColors->contains($orderLineColor)) {
$this->orderLineColors->add($orderLineColor);
$orderLineColor->setColor($this);
}
return $this;
}
public function removeOrderLineColor(OrderLineColor $orderLineColor): static
{
if ($this->orderLineColors->removeElement($orderLineColor)) {
// set the owning side to null (unless already changed)
if ($orderLineColor->getColor() === $this) {
$orderLineColor->setColor(null);
}
}
return $this;
}
public function __toString(){
return $this->translate()->getName(). " (".$this->getPriceTtc()." €)";
}
/**
* @return Collection<int, ImageProduit>
*/
public function getImageProduits(): Collection
{
return $this->imageProduits;
}
public function addImageProduit(ImageProduit $imageProduit): static
{
if (!$this->imageProduits->contains($imageProduit)) {
$this->imageProduits->add($imageProduit);
$imageProduit->setColor($this);
}
return $this;
}
public function removeImageProduit(ImageProduit $imageProduit): static
{
if ($this->imageProduits->removeElement($imageProduit)) {
// set the owning side to null (unless already changed)
if ($imageProduit->getColor() === $this) {
$imageProduit->setColor(null);
}
}
return $this;
}
}