|
- <?php
-
- namespace Lc\CaracoleBundle\Model\Reduction;
-
- use Doctrine\Common\Collections\ArrayCollection;
- use Doctrine\Common\Collections\Collection;
- use Doctrine\ORM\Mapping as ORM;
- use Lc\CaracoleBundle\Doctrine\Extension\FilterMerchantInterface;
- use Lc\CaracoleBundle\Doctrine\Extension\FilterSectionInterface;
- use Lc\CaracoleBundle\Doctrine\Extension\OrderAmountMinInterface;
- use Lc\CaracoleBundle\Doctrine\Extension\OrderAmountMinTrait;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionCartPropertyInterface;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionCartPropertyTrait;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionInterface;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionPropertyTrait;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionTrait;
- use Lc\CaracoleBundle\Doctrine\Extension\ReductionPropertyInterface;
- use Lc\CaracoleBundle\Model\Merchant\MerchantInterface;
- use Lc\CaracoleBundle\Model\PointSale\PointSaleInterface;
- use Lc\CaracoleBundle\Model\Section\SectionInterface;
- use Lc\SovBundle\Doctrine\Extension\StatusInterface;
- use Lc\SovBundle\Doctrine\Extension\StatusTrait;
- use Lc\SovBundle\Doctrine\Pattern\AbstractLightEntity;
- use Lc\SovBundle\Model\User\UserInterface;
-
- /**
- * @ORM\MappedSuperclass()
- */
- abstract class ReductionCartModel extends AbstractLightEntity implements ReductionPropertyInterface, ReductionInterface,
- ReductionCartPropertyInterface,
- FilterSectionInterface,
- OrderAmountMinInterface, StatusInterface
- {
- use StatusTrait;
- use OrderAmountMinTrait;
- use ReductionTrait;
- use ReductionCartPropertyTrait;
- use ReductionPropertyTrait {
- ReductionPropertyTrait::__construct as private __reductionPropertyConstruct;
- }
-
- const APPLIED_TO_DELIVERY = 'delivery';
- const APPLIED_TO_ORDER_PRODUCTS = 'order-products';
-
- /**
- * @ORM\Column(type="string", length=255)
- */
- protected $title;
-
- /**
- * @ORM\ManyToOne(targetEntity="Lc\CaracoleBundle\Model\Section\SectionInterface")
- * @ORM\JoinColumn(nullable=false)
- */
- protected $section;
-
- /**
- * @ORM\Column(type="array", nullable=true)
- */
- protected $codes = [];
-
- /**
- * @ORM\Column(type="integer")
- */
- protected $availableQuantity;
-
- /**
- * @ORM\Column(type="integer")
- */
- protected $availableQuantityPerUser;
-
- /**
- * @ORM\ManyToMany(targetEntity="Lc\CaracoleBundle\Model\PointSale\PointSaleInterface")
- */
- protected $pointSales;
-
- /**
- * @ORM\ManyToMany(targetEntity="Lc\CaracoleBundle\Model\Reduction\ReductionCartInterface")
- */
- protected $uncombinables;
-
- /**
- * @ORM\Column(type="array", nullable=true)
- */
- protected $uncombinableTypes = [];
-
- /**
- * @ORM\Column(type="integer", nullable=true)
- */
- protected $availableQuantityPerCode;
-
- public function __toString()
- {
- return $this->title;
- }
-
- public function __construct()
- {
- $this->__reductionPropertyConstruct();
- $this->pointSales = new ArrayCollection();
- $this->uncombinables = new ArrayCollection();
- }
-
- public function getTitle(): ?string
- {
- return $this->title;
- }
-
- public function setTitle(string $title): self
- {
- $this->title = $title;
-
- return $this;
- }
-
- public function getSection(): SectionInterface
- {
- return $this->section;
- }
-
- public function setSection(SectionInterface $section): self
- {
- $this->section = $section;
-
- return $this;
- }
-
-
- public function getCodes(): ?array
- {
- return $this->codes;
- }
-
- public function setCodes(?array $codes): self
- {
- $this->codes = $codes;
-
- return $this;
- }
-
- /**
- * @return Collection|PointSaleInterface[]
- */
- public function getPointSales(): Collection
- {
- return $this->pointSales;
- }
-
- public function addPointSale(PointSaleInterface $pointSale): self
- {
- if (!$this->pointSales->contains($pointSale)) {
- $this->pointSales[] = $pointSale;
- }
-
- return $this;
- }
-
- public function removePointSale(PointSaleInterface $pointSale): self
- {
- if ($this->pointSales->contains($pointSale)) {
- $this->pointSales->removeElement($pointSale);
- }
-
- return $this;
- }
-
- public function getAvailableQuantity(): ?int
- {
- return $this->availableQuantity;
- }
-
- public function setAvailableQuantity(int $availableQuantity): self
- {
- $this->availableQuantity = $availableQuantity;
-
- return $this;
- }
-
- public function getAvailableQuantityPerUser(): ?int
- {
- return $this->availableQuantityPerUser;
- }
-
- public function setAvailableQuantityPerUser(int $availableQuantityPerUser): self
- {
- $this->availableQuantityPerUser = $availableQuantityPerUser;
-
- return $this;
- }
-
- /**
- * @return Collection|self[]
- */
- public function getUncombinables(): Collection
- {
- return $this->uncombinables;
- }
-
- public function addUncombinable(self $uncombinable): self
- {
- if (!$this->uncombinables->contains($uncombinable)) {
- $this->uncombinables[] = $uncombinable;
- }
-
- return $this;
- }
-
- public function removeUncombinables(self $uncombinable): self
- {
- if ($this->uncombinables->contains($uncombinable)) {
- $this->uncombinables->removeElement($uncombinable);
- }
-
- return $this;
- }
-
- public function getUncombinableTypes(): ?array
- {
- return $this->uncombinableTypes;
- }
-
- public function setUncombinableTypes(?array $uncombinableTypes): self
- {
- $this->uncombinableTypes = $uncombinableTypes;
-
- return $this;
- }
-
- public function getAvailableQuantityPerCode(): ?int
- {
- return $this->availableQuantityPerCode;
- }
-
- public function setAvailableQuantityPerCode(int $availableQuantityPerCode): self
- {
- $this->availableQuantityPerCode = $availableQuantityPerCode;
-
- return $this;
- }
-
- }
|