<?php namespace Lc\ShopBundle\Model; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Lc\ShopBundle\Context\FilterMultipleMerchantsInterface; use Lc\ShopBundle\Context\OrderAmountMinInterface; /** * @ORM\MappedSuperclass() */ abstract class PointSale extends AbstractDocumentEntity implements FilterMultipleMerchantsInterface, OrderAmountMinInterface { use OrderAmountMin; /** * @ORM\ManyToMany(targetEntity="Lc\ShopBundle\Context\MerchantInterface", inversedBy="pointSales") */ protected $merchants; /** * @ORM\Column(type="string", length=63, nullable=true) */ protected $code; /** * @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\PointSaleDayInfoInterface", mappedBy="pointSale", orphanRemoval=true) */ protected $pointSaleDayInfos; /** * @ORM\OneToOne(targetEntity="Lc\ShopBundle\Context\AddressInterface", inversedBy="pointSale", cascade={"persist", "remove"}) * @ORM\JoinColumn(nullable=false) */ protected $address; public function labelAdminChoice(){ return $this->getTitle(); } public function __construct() { $this->merchants = new ArrayCollection(); $this->pointSaleDayInfos = new ArrayCollection(); } public function __toString() { return $this->getTitle() ; } /** * @return Collection|Merchant[] */ public function getMerchants(): Collection { return $this->merchants; } public function addMerchant(Merchant $merchant): self { if (!$this->merchants->contains($merchant)) { $this->merchants[] = $merchant; } return $this; } public function removeMerchant(Merchant $merchant): self { if ($this->merchants->contains($merchant)) { $this->merchants->removeElement($merchant); } return $this; } public function getCode(): ?string { return $this->code; } public function setCode(?string $code): self { $this->code = $code; return $this; } /** * @return Collection|PointSaleDayInfo[] */ public function getPointSaleDayInfos(): Collection { return $this->pointSaleDayInfos; } public function addPointSaleDayInfo(PointSaleDayInfo $pointSaleDayInfo): self { if (!$this->pointSaleDayInfos->contains($pointSaleDayInfo)) { $this->pointSaleDayInfos[] = $pointSaleDayInfo; $pointSaleDayInfo->setPointSale($this); } return $this; } public function removePointSaleDayInfo(PointSaleDayInfo $pointSaleDayInfo): self { if ($this->pointSaleDayInfos->contains($pointSaleDayInfo)) { $this->pointSaleDayInfos->removeElement($pointSaleDayInfo); // set the owning side to null (unless already changed) if ($pointSaleDayInfo->getPointSale() === $this) { $pointSaleDayInfo->setPointSale(null); } } return $this; } public function getAddress(): ?Address { return $this->address; } public function setAddress(Address $address): self { $this->address = $address; return $this; } }