<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Repository\ArticleRepository;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass=ArticleRepository::class)
* @Vich\Uploadable
* @ApiResource(
* collectionOperations={"get","post"},
* itemOperations={"get","put","patch","delete"},
* normalizationContext={"groups"={"article"}},
* denormalizationContext={"groups"={"article"}},
* attributes={"pagination_enabled"=false}
* )
*/
class Article
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups("article")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups("article")
*/
private $nameFr;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("article")
*/
private $nameEn;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("article")
*/
private $nameDe;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("article")
*/
private $nameNl;
/**
* @ORM\Column(type="float")
* @Groups("article")
*/
private $price;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $isHighlight;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $isVaryingWeight;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $isActive;
/**
* @ORM\Column(type="string", length=255, nullable = true)
* @Groups("article")
* @var string
*/
private $image;
/**
* @Vich\UploadableField(mapping="article_images", fileNameProperty="image")
* @var File
*/
private $imageFile;
/**
* @ORM\Column(type="datetime", nullable = true)
* @var DateTime
*/
private $updatedAt;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $descriptionFr;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $descriptionEn;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $descriptionDe;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $descriptionNl;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $nutritionalValueFr;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $nutritionalValueEn;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $nutritionalValueDe;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $nutritionalValueNl;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $ingredientFr;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $ingredientEn;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $ingredientDe;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $ingredientNl;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $allergenFr;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $allergenEn;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $allergenDe;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $allergenNl;
/**
* @ORM\Column(type="array", nullable=true)
* @Groups("article")
*/
private $arrayPrice = [];
/**
* @ORM\ManyToOne(targetEntity=Family::class, inversedBy="articles")
* @Groups("article")
*/
private $family;
/**
* @ORM\ManyToOne(targetEntity=Category::class, inversedBy="articles")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="SET NULL")
* @Groups("article")
*/
private $category;
/**
* @ORM\OneToMany(targetEntity=Promotion::class, mappedBy="article", orphanRemoval=true)
*/
private $promotions;
/**
* @ORM\Column(type="integer", nullable = true))
* @Groups("article")
*/
private $maxQty;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("article")
*/
private $articleNumber;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups("article")
*/
private $deliveryMin;
/**
* @ORM\Column(type="float", nullable=true)
* @Groups("article")
*/
private $weightAverage;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups("article")
*/
private $packaging;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $availability;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $isIGP;
/**
* @ORM\OneToMany(targetEntity=Catalog::class, mappedBy="article", orphanRemoval=true)
*/
private $catalogs;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("article")
*/
private $technicalData;
/**
* @ORM\Column(type="boolean")
* @Groups("article")
*/
private $isBulk;
public function __construct()
{
$this->promotions = new ArrayCollection();
$this->catalogs = new ArrayCollection();
}
public function convertArticleToArray(): array
{
$articleArray = [];
$articleArray["id"] = $this->getId();
$articleArray["nameFr"] = $this->getNameFr();
$articleArray["nameEn"] = $this->getNameEn();
$articleArray["nameDe"] = $this->getNameDe();
$articleArray["nameNl"] = $this->getNameNl();
$articleArray["descriptionFr"] = $this->getDescriptionFr();
$articleArray["descriptionEn"] = $this->getDescriptionEn();
$articleArray["descriptionDe"] = $this->getDescriptionNl();
$articleArray["descriptionNl"] = $this->getDescriptionDe();
$articleArray["price"] = $this->getPrice();
$articleArray["arrayPrice"] = $this->getArrayPrice();
$articleArray["isHighlight"] = $this->getIsHighlight();
$articleArray["isVaryingWeight"] = $this->getIsVaryingWeight();
$articleArray["nutritionalValueFr"] = $this->getNutritionalValueFr();
$articleArray["nutritionalValueEn"] = $this->getNutritionalValueEn();
$articleArray["nutritionalValueDe"] = $this->getNutritionalValueDe();
$articleArray["nutritionalValueNl"] = $this->getNutritionalValueNl();
$articleArray["ingredientFr"] = $this->getIngredientFr();
$articleArray["ingredientEn"] = $this->getIngredientEn();
$articleArray["ingredientDe"] = $this->getIngredientDe();
$articleArray["ingredientNl"] = $this->getIngredientNl();
$articleArray["allergenFr"] = $this->getAllergenFr();
$articleArray["allergenEn"] = $this->getAllergenEn();
$articleArray["allergenDe"] = $this->getAllergenDe();
$articleArray["allergenNl"] = $this->getAllergenNl();
$articleArray["isActive"] = $this->getIsActive();
$articleArray["maxQty"] = $this->getMaxQty();
$articleArray["isBulk"] = $this->getIsBulk();
if ($this->getImage()) {
$articleArray['image'] = true;
} else {
$articleArray['image'] = false;
}
return $articleArray;
}
public function getId(): ?int
{
return $this->id;
}
public function getPrice(): ?float
{
return $this->price;
}
public function setPrice(float $price): self
{
$this->price = $price;
return $this;
}
public function getIsHighlight(): ?bool
{
return $this->isHighlight;
}
public function setIsHighlight(bool $isHighlight): self
{
$this->isHighlight = $isHighlight;
return $this;
}
public function getIsVaryingWeight(): ?bool
{
return $this->isVaryingWeight;
}
public function setIsVaryingWeight(bool $isVaryingWeight): self
{
$this->isVaryingWeight = $isVaryingWeight;
return $this;
}
public function getIsActive(): ?bool
{
return $this->isActive;
}
public function setIsActive(bool $isActive): self
{
$this->isActive = $isActive;
return $this;
}
public function setImageFile(File $image = null)
{
$this->imageFile = $image;
// VERY IMPORTANT:
// It is required that at least one field changes if you are using Doctrine,
// otherwise the event listeners won't be called and the file is lost
if ($image) {
// if 'updatedAt' is not defined in your entity, use another property
$this->updatedAt = new \DateTime('now');
}
}
public function getUpdateAt()
{
return $this->updatedAt;
}
public function setUpdateAt(DateTime $dateTime)
{
$this->updatedAt = $dateTime;
}
public function getImageFile()
{
return $this->imageFile;
}
public function setImage($image)
{
$this->image = $image;
}
public function getImage()
{
return $this->image;
}
public function getNutritionalValueFr(): ?string
{
return $this->nutritionalValueFr;
}
public function setNutritionalValueFr(?string $nutritionalValueFr): self
{
$this->nutritionalValueFr = $nutritionalValueFr;
return $this;
}
public function getNutritionalValueEn(): ?string
{
return $this->nutritionalValueEn;
}
public function setNutritionalValueEn(?string $nutritionalValueEn): self
{
$this->nutritionalValueEn = $nutritionalValueEn;
return $this;
}
public function getNutritionalValueDe(): ?string
{
return $this->nutritionalValueDe;
}
public function setNutritionalValueDe(?string $nutritionalValueDe): self
{
$this->nutritionalValueDe = $nutritionalValueDe;
return $this;
}
public function getNutritionalValueNl(): ?string
{
return $this->nutritionalValueNl;
}
public function setNutritionalValueNl(?string $nutritionalValueNl): self
{
$this->nutritionalValueNl = $nutritionalValueNl;
return $this;
}
public function getIngredientFr(): ?string
{
return $this->ingredientFr;
}
public function setIngredientFr(?string $ingredientFr): self
{
$this->ingredientFr = $ingredientFr;
return $this;
}
public function getIngredientEn(): ?string
{
return $this->ingredientEn;
}
public function setIngredientEn(?string $ingredientEn): self
{
$this->ingredientEn = $ingredientEn;
return $this;
}
public function getIngredientDe(): ?string
{
return $this->ingredientDe;
}
public function setIngredientDe(?string $ingredientDe): self
{
$this->ingredientDe = $ingredientDe;
return $this;
}
public function getIngredientNl(): ?string
{
return $this->ingredientNl;
}
public function setIngredientNl(?string $ingredientNl): self
{
$this->ingredientNl = $ingredientNl;
return $this;
}
public function getAllergenFr(): ?string
{
return $this->allergenFr;
}
public function setAllergenFr(?string $allergenFr): self
{
$this->allergenFr = $allergenFr;
return $this;
}
public function getAllergenEn(): ?string
{
return $this->allergenEn;
}
public function setAllergenEn(?string $allergenEn): self
{
$this->allergenEn = $allergenEn;
return $this;
}
public function getAllergenDe(): ?string
{
return $this->allergenDe;
}
public function setAllergenDe(?string $allergenDe): self
{
$this->allergenDe = $allergenDe;
return $this;
}
public function getAllergenNl(): ?string
{
return $this->allergenNl;
}
public function setAllergenNl(?string $allergenNl): self
{
$this->allergenNl = $allergenNl;
return $this;
}
public function getDescriptionFr(): ?string
{
return $this->descriptionFr;
}
public function setDescriptionFr(?string $descriptionFr): self
{
$this->descriptionFr = $descriptionFr;
return $this;
}
public function getDescriptionEn(): ?string
{
return $this->descriptionEn;
}
public function setDescriptionEn(?string $descriptionEn): self
{
$this->descriptionEn = $descriptionEn;
return $this;
}
public function getDescriptionDe(): ?string
{
return $this->descriptionDe;
}
public function setDescriptionDe(?string $descriptionDe): self
{
$this->descriptionDe = $descriptionDe;
return $this;
}
public function getDescriptionNl(): ?string
{
return $this->descriptionNl;
}
public function setDescriptionNl(?string $descriptionNl): self
{
$this->descriptionNl = $descriptionNl;
return $this;
}
public function getNameFr(): ?string
{
return $this->nameFr;
}
public function setNameFr(string $nameFr): self
{
$this->nameFr = $nameFr;
return $this;
}
public function getNameEn(): ?string
{
return $this->nameEn;
}
public function setNameEn(string $nameEn): self
{
$this->nameEn = $nameEn;
return $this;
}
public function getNameDe(): ?string
{
return $this->nameDe;
}
public function setNameDe(string $nameDe): self
{
$this->nameDe = $nameDe;
return $this;
}
public function getNameNl(): ?string
{
return $this->nameNl;
}
public function setNameNl(string $nameNl): self
{
$this->nameNl = $nameNl;
return $this;
}
public function getArrayPrice(): ?array
{
return $this->arrayPrice;
}
public function setArrayPrice(?array $arrayPrice): self
{
$this->arrayPrice = $arrayPrice;
return $this;
}
public function getFamily(): ?Family
{
return $this->family;
}
public function setFamily(?Family $family): self
{
$this->family = $family;
return $this;
}
public function getCategory(): ?Category
{
return $this->category;
}
public function setCategory(?Category $category): self
{
$this->category = $category;
return $this;
}
/**
* @return Collection|Promotion[]
*/
public function getPromotions(): Collection
{
return $this->promotions;
}
public function addPromotion(Promotion $promotion): self
{
if (!$this->promotions->contains($promotion)) {
$this->promotions[] = $promotion;
$promotion->setArticle($this);
}
return $this;
}
public function removePromotion(Promotion $promotion): self
{
if ($this->promotions->removeElement($promotion)) {
// set the owning side to null (unless already changed)
if ($promotion->getArticle() === $this) {
$promotion->setArticle(null);
}
}
return $this;
}
public function getMaxQty(): ?int
{
return $this->maxQty;
}
public function setMaxQty(?int $maxQty): self
{
$this->maxQty = $maxQty;
return $this;
}
public function getArticleNumber(): ?string
{
return $this->articleNumber;
}
public function setArticleNumber(?string $articleNumber): self
{
$this->articleNumber = $articleNumber;
return $this;
}
public function getDeliveryMin(): ?int
{
return $this->deliveryMin;
}
public function setDeliveryMin(?int $deliveryMin): self
{
$this->deliveryMin = $deliveryMin;
return $this;
}
public function getWeightAverage(): ?float
{
return $this->weightAverage;
}
public function setWeightAverage(?float $weightAverage): self
{
$this->weightAverage = $weightAverage;
return $this;
}
public function getPackaging(): ?string
{
return $this->packaging;
}
public function setPackaging(?string $packaging): self
{
$this->packaging = $packaging;
return $this;
}
public function getIsIGP(): ?bool
{
return $this->isIGP;
}
public function setIsIGP(bool $isIGP): self
{
$this->isIGP = $isIGP;
return $this;
}
public function getAvailability(): ?bool
{
return $this->availability;
}
public function setAvailability(bool $availability): self
{
$this->availability = $availability;
return $this;
}
/**
* @return Collection|Catalog[]
*/
public function getCatalogs(): Collection
{
return $this->catalogs;
}
public function addCatalog(Catalog $catalog): self
{
if (!$this->catalogs->contains($catalog)) {
$this->catalogs[] = $catalog;
$catalog->setArticle($this);
}
return $this;
}
public function removeCatalog(Catalog $catalog): self
{
if ($this->catalogs->removeElement($catalog)) {
// set the owning side to null (unless already changed)
if ($catalog->getArticle() === $this) {
$catalog->setArticle(null);
}
}
return $this;
}
public function getTechnicalData(): ?string
{
return $this->technicalData;
}
public function setTechnicalData(?string $technicalData): self
{
$this->technicalData = $technicalData;
return $this;
}
public function getIsBulk(): ?bool
{
return $this->isBulk;
}
public function setIsBulk(bool $isBulk): self
{
$this->isBulk = $isBulk;
return $this;
}
}