src/Entity/Newsletter.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  7. use App\Entity\BasePost;
  8. use App\Entity\Subscriber;
  9. /**
  10.  * @ORM\Entity(repositoryClass="App\Repository\NewsletterRepository")
  11.  * @UniqueEntity("name")
  12.  */
  13. class Newsletter
  14. {
  15.     use BasePost;
  16.     /**
  17.      * @ORM\Column(type="datetime", nullable=true)
  18.      */
  19.     private $sendingStart;
  20.     /**
  21.      * @ORM\Column(type="boolean")
  22.      */
  23.     private $sent;
  24.     
  25.     /**
  26.      * @ORM\ManyToMany(targetEntity="App\Entity\Media", mappedBy="newsletters", cascade={"persist", "remove"})
  27.      */
  28.     private $medias;
  29.     
  30.     /**
  31.      * @ORM\ManyToMany(targetEntity="App\Entity\SubscriberList", inversedBy="newsletters")
  32.      */
  33.     private $subscriberLists;
  34.     public function __construct()
  35.     {
  36.         $this->medias = new ArrayCollection();
  37.         $this->subscriberLists = new ArrayCollection();
  38.         $this->subscribers = new ArrayCollection();
  39.         $this->sent false;
  40.     }
  41.     
  42.     public function __toString()
  43.     {
  44.         return $this->name;    
  45.     }
  46.     public function getSendingStart(): ?\DateTimeInterface
  47.     {
  48.         return $this->sendingStart;
  49.     }
  50.     public function setSendingStart(?\DateTimeInterface $sendingStart): self
  51.     {
  52.         $this->sendingStart $sendingStart;
  53.         return $this;
  54.     }
  55.     public function getSent(): ?bool
  56.     {
  57.         return $this->sent;
  58.     }
  59.     public function setSent(bool $sent): self
  60.     {
  61.         $this->sent $sent;
  62.         return $this;
  63.     }
  64.     /**
  65.      * @return Collection|Media[]
  66.      */
  67.     public function getMedias(): Collection
  68.     {
  69.         return $this->medias;
  70.     }
  71.     public function addMedia(Media $media): self
  72.     {
  73.         if (!$this->medias->contains($media)) {
  74.             $this->medias[] = $media;
  75.             $media->addNewsletter($this);
  76.         }
  77.         return $this;
  78.     }
  79.     public function removeMedia(Media $media): self
  80.     {
  81.         if ($this->medias->contains($media)) {
  82.             $this->medias->removeElement($media);
  83.             $media->removeNewsletter($this);
  84.         }
  85.         return $this;
  86.     }
  87.     /**
  88.      * @return Collection|SubscriberList[]
  89.      */
  90.     public function getSubscriberLists(): Collection
  91.     {
  92.         return $this->subscriberLists;
  93.     }
  94.     public function addSubscriberList(SubscriberList $subscriberList): self
  95.     {
  96.         if (!$this->subscriberLists->contains($subscriberList)) {
  97.             $this->subscriberLists[] = $subscriberList;
  98.         }
  99.         return $this;
  100.     }
  101.     public function removeSubscriberList(SubscriberList $subscriberList): self
  102.     {
  103.         if ($this->subscriberLists->contains($subscriberList)) {
  104.             $this->subscriberLists->removeElement($subscriberList);
  105.         }
  106.         return $this;
  107.     }
  108.     /**
  109.      * @return Subscriber[]
  110.      */
  111.     public function getSubscribers(): array
  112.     {
  113.         $subscribers = [];
  114.         $subscriberLists $this->subscriberLists;
  115.         foreach ($subscriberLists as $subscriberList) {
  116.             foreach ($subscriberList->getSubscribers() as $subscriber) {
  117.                 $subscribers[$subscriber->getId()] = $subscriber;
  118.             }
  119.         }
  120.         return $subscribers;
  121.     }
  122.     /**
  123.      * @return Subscriber[]
  124.      */
  125.     public function getActiveSubscribers(): array
  126.     {
  127.         $subscribers = [];
  128.         $subscriberLists $this->subscriberLists;
  129.         foreach ($subscriberLists as $subscriberList) {
  130.             foreach ($subscriberList->getSubscribers() as $subscriber) {
  131.                 if($subscriber->isActive()) $subscribers[$subscriber->getId()] = $subscriber;
  132.             }
  133.         }
  134.         return $subscribers;
  135.     }
  136. }