<?php
namespace App\Entity;
use App\Repository\CalculatorProductBusinessCardRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=CalculatorProductBusinessCardRepository::class)
* @UniqueEntity("code")
*/
class CalculatorProductBusinessCard
{
use TimestampableEntity;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="string", length=255, unique=true)
*/
private $code;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $price = [];
/**
* @ORM\OneToMany(targetEntity=BusinessCardOption::class, mappedBy="calculatorProductBusinessCard",
* orphanRemoval=true, cascade={"persist", "remove"})
*/
private $businessCardOptions;
/**
* @ORM\ManyToOne(targetEntity=Calculator::class, inversedBy="calculatorProductBusinessCards")
*/
private $calculator;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $priceTop = [];
public function __construct()
{
$this->businessCardOptions = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getCode(): ?string
{
return $this->code;
}
public function setCode(string $code): self
{
$this->code = $code;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getPrice(): ?array
{
return $this->price;
}
public function setPrice(?array $price): self
{
$this->price = $price;
return $this;
}
public function getCalculator(): ?Calculator
{
return $this->calculator;
}
public function setCalculator(?Calculator $calculator): self
{
$this->calculator = $calculator;
return $this;
}
public function getBusinessCardOptions(): Collection
{
return $this->businessCardOptions;
}
public function addBusinessCardOption(BusinessCardOption $businessCardOption): self
{
if (!$this->businessCardOptions->contains($businessCardOption)) {
$this->businessCardOptions[] = $businessCardOption;
$businessCardOption->setCalculatorProductBusinessCard($this);
}
return $this;
}
public function removeBusinessCardOption(BusinessCardOption $businessCardOption): self
{
if ($this->businessCardOptions->contains($businessCardOption)) {
$this->businessCardOptions->removeElement($businessCardOption);
$businessCardOption->setCalculatorProductBusinessCard(null);
}
return $this;
}
/*public function __toString() {
return $this->getName();
}*/
public function __clone(){
$this->id = null;
$businessCardOptions = new ArrayCollection();
foreach ($this->businessCardOptions as $businessCardOption) {
$newBusinessCardOption = clone $businessCardOption;
$newBusinessCardOption->setCalculatorProductBusinessCard($this);
$businessCardOptions->add($newBusinessCardOption);
}
$this->businessCardOptions = $businessCardOptions;
}
public function getPriceTop(): ?array
{
return $this->priceTop;
}
public function setPriceTop(?array $priceTop): self
{
$this->priceTop = $priceTop;
return $this;
}
public function getAdminBase(): ?string
{
return $this->adminBase;
}
public function setAdminBase(?string $adminBase): self
{
$this->adminBase = $adminBase;
return $this;
}
}