<?phpnamespace App\Entity;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;use App\Entity\BasePost;use App\Entity\Subscriber;/** * @ORM\Entity(repositoryClass="App\Repository\NewsletterRepository") * @UniqueEntity("name") */class Newsletter{ use BasePost; /** * @ORM\Column(type="datetime", nullable=true) */ private $sendingStart; /** * @ORM\Column(type="boolean") */ private $sent; /** * @ORM\ManyToMany(targetEntity="App\Entity\Media", mappedBy="newsletters", cascade={"persist", "remove"}) */ private $medias; /** * @ORM\ManyToMany(targetEntity="App\Entity\SubscriberList", inversedBy="newsletters") */ private $subscriberLists; public function __construct() { $this->medias = new ArrayCollection(); $this->subscriberLists = new ArrayCollection(); $this->subscribers = new ArrayCollection(); $this->sent = false; } public function __toString() { return $this->name; } public function getSendingStart(): ?\DateTimeInterface { return $this->sendingStart; } public function setSendingStart(?\DateTimeInterface $sendingStart): self { $this->sendingStart = $sendingStart; return $this; } public function getSent(): ?bool { return $this->sent; } public function setSent(bool $sent): self { $this->sent = $sent; return $this; } /** * @return Collection|Media[] */ public function getMedias(): Collection { return $this->medias; } public function addMedia(Media $media): self { if (!$this->medias->contains($media)) { $this->medias[] = $media; $media->addNewsletter($this); } return $this; } public function removeMedia(Media $media): self { if ($this->medias->contains($media)) { $this->medias->removeElement($media); $media->removeNewsletter($this); } return $this; } /** * @return Collection|SubscriberList[] */ public function getSubscriberLists(): Collection { return $this->subscriberLists; } public function addSubscriberList(SubscriberList $subscriberList): self { if (!$this->subscriberLists->contains($subscriberList)) { $this->subscriberLists[] = $subscriberList; } return $this; } public function removeSubscriberList(SubscriberList $subscriberList): self { if ($this->subscriberLists->contains($subscriberList)) { $this->subscriberLists->removeElement($subscriberList); } return $this; } /** * @return Subscriber[] */ public function getSubscribers(): array { $subscribers = []; $subscriberLists = $this->subscriberLists; foreach ($subscriberLists as $subscriberList) { foreach ($subscriberList->getSubscribers() as $subscriber) { $subscribers[$subscriber->getId()] = $subscriber; } } return $subscribers; } /** * @return Subscriber[] */ public function getActiveSubscribers(): array { $subscribers = []; $subscriberLists = $this->subscriberLists; foreach ($subscriberLists as $subscriberList) { foreach ($subscriberList->getSubscribers() as $subscriber) { if($subscriber->isActive()) $subscribers[$subscriber->getId()] = $subscriber; } } return $subscribers; }}