<?php
namespace App\Entity;
use App\Repository\ProduitDeclinationValueRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
/**
* @ORM\Entity(repositoryClass=ProduitDeclinationValueRepository::class)
*/
class ProduitDeclinationValue implements JsonSerializable
{
private $appUrl;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $reference;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $buying_price;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $price_ht;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\ManyToOne(targetEntity=Produit::class, inversedBy="produitDeclinationValues")
* @ORM\JoinColumn(nullable=false)
*/
private $produit;
/**
* @ORM\OneToMany(targetEntity=GroupDeclinationValue::class, mappedBy="produitDeclination")
*/
private $groupDeclinationValues;
/**
* @ORM\ManyToMany(targetEntity=File::class, cascade={"persist"})
*/
private $picture;
/**
* @ORM\OneToMany(targetEntity=DocumentDeclinationProduit::class, mappedBy="produitDeclinationValue")
*/
private $documentDeclinationProduits;
/**
* @ORM\OneToMany(targetEntity=Stock::class, mappedBy="declinationProduit")
*/
private $stocks;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $uuid;
/**
* @ORM\OneToMany(targetEntity=Activity::class, mappedBy="produitDeclination")
*/
private $activities;
public function __construct(ContainerBagInterface $appUrl=NULL)
{
$this->groupDeclinationValues = new ArrayCollection();
$this->picture = new ArrayCollection();
$this->documentDeclinationProduits = new ArrayCollection();
$this->stocks = new ArrayCollection();
$this->activities = new ArrayCollection();
$this->appUrl = $appUrl;
}
public function getId(): ?int
{
return $this->id;
}
public function getReference(): ?string
{
return $this->reference;
}
public function setReference(string $reference): self
{
$this->reference = $reference;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getBuyingPrice(): ?float
{
return $this->buying_price;
}
public function setBuyingPrice(?float $buying_price): self
{
$this->buying_price = $buying_price;
return $this;
}
public function getPriceHt(): ?float
{
return $this->price_ht;
}
public function setPriceHt(?float $price_ht): self
{
$this->price_ht = $price_ht;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getProduit(): ?Produit
{
return $this->produit;
}
public function setProduit(?Produit $produit): self
{
$this->produit = $produit;
return $this;
}
/**
* @return Collection|GroupDeclinationValue[]
*/
public function getGroupDeclinationValues(): Collection
{
return $this->groupDeclinationValues;
}
public function addGroupDeclinationValue(GroupDeclinationValue $groupDeclinationValue): self
{
if (!$this->groupDeclinationValues->contains($groupDeclinationValue)) {
$this->groupDeclinationValues[] = $groupDeclinationValue;
$groupDeclinationValue->setProduitDeclination($this);
}
return $this;
}
public function removeGroupDeclinationValue(GroupDeclinationValue $groupDeclinationValue): self
{
if ($this->groupDeclinationValues->removeElement($groupDeclinationValue)) {
// set the owning side to null (unless already changed)
if ($groupDeclinationValue->getProduitDeclination() === $this) {
$groupDeclinationValue->setProduitDeclination(null);
}
}
return $this;
}
/**
* @return Collection|File[]
*/
public function getPicture(): Collection
{
return $this->picture;
}
public function addPicture(File $picture): self
{
if (!$this->picture->contains($picture)) {
$this->picture[] = $picture;
}
return $this;
}
public function removePicture(File $picture): self
{
$this->picture->removeElement($picture);
return $this;
}
/**
* @return Collection|DocumentDeclinationProduit[]
*/
public function getDocumentDeclinationProduits(): Collection
{
return $this->documentDeclinationProduits;
}
public function addDocumentDeclinationProduit(DocumentDeclinationProduit $documentDeclinationProduit): self
{
if (!$this->documentDeclinationProduits->contains($documentDeclinationProduit)) {
$this->documentDeclinationProduits[] = $documentDeclinationProduit;
$documentDeclinationProduit->setProduitDeclinationValue($this);
}
return $this;
}
public function removeDocumentDeclinationProduit(DocumentDeclinationProduit $documentDeclinationProduit): self
{
if ($this->documentDeclinationProduits->removeElement($documentDeclinationProduit)) {
// set the owning side to null (unless already changed)
if ($documentDeclinationProduit->getProduitDeclinationValue() === $this) {
$documentDeclinationProduit->setProduitDeclinationValue(null);
}
}
return $this;
}
/**
* @return Collection|Stock[]
*/
public function getStocks(): Collection
{
return $this->stocks;
}
public function addStock(Stock $stock): self
{
if (!$this->stocks->contains($stock)) {
$this->stocks[] = $stock;
$stock->setDeclinationProduit($this);
}
return $this;
}
public function removeStock(Stock $stock): self
{
if ($this->stocks->removeElement($stock)) {
// set the owning side to null (unless already changed)
if ($stock->getDeclinationProduit() === $this) {
$stock->setDeclinationProduit(null);
}
}
return $this;
}
public function getUuid(): ?int
{
return $this->uuid;
}
public function setUuid(?int $uuid): self
{
$this->uuid = $uuid;
return $this;
}
/**
* @return Collection|Activity[]
*/
public function getActivities(): Collection
{
return $this->activities;
}
public function addActivity(Activity $activity): self
{
if (!$this->activities->contains($activity)) {
$this->activities[] = $activity;
$activity->setProduitDeclination($this);
}
return $this;
}
public function removeActivity(Activity $activity): self
{
if ($this->activities->removeElement($activity)) {
// set the owning side to null (unless already changed)
if ($activity->getProduitDeclination() === $this) {
$activity->setProduitDeclination(null);
}
}
return $this;
}
public function jsonSerialize()
{
$tabPictures=[];
foreach ($this->getPicture() as $picture) {
array_push($tabPictures, $picture->getImageName());
}
foreach ($tabPictures as $key => $picture_name){
$tabPictures[$key] =(empty($tabPictures))?'no-image.png':$picture_name;
if(!empty($tabPictures) && file_exists($_ENV['APP_URL']."/public/images/".$picture_name) && !file_exists($_ENV['APP_URL']."/public/images/thumbs/".$picture_name))
$this->resizeImage($picture_name);
/*if(!empty($tabPictures) && !file_exists($_ENV['APP_URL']."/public/images/".$picture_name) && !file_exists($_ENV['APP_URL']."/public/images/thumbs/".$picture_name)){
$tabPictures[$key] = 'no-image.png';
}*/
}
return array(
'id'=>$this->getId(),
'picture' => $tabPictures,
'priceHT' => $this->getPriceHt(),
'groupDeclinationValues' => $this->getgroupDeclinationValues()->toArray()
);
}
}