src/Entity/ContactList.php line 20

Open in your IDE?
  1. <?php
  2.     namespace App\Entity;
  3.     use App\Repository\ContactListRepository;
  4.     use App\Traits\DateTrait;
  5.     use Doctrine\Common\Collections\ArrayCollection;
  6.     use Doctrine\Common\Collections\Collection;
  7.     use Doctrine\ORM\Mapping as ORM;
  8.     use JMS\Serializer\Annotation as Serializer;
  9.     use JMS\Serializer\Annotation\Expose;
  10.     use JMS\Serializer\Annotation\Groups;
  11.     use Symfony\Component\Validator\Constraints as Assert;
  12.     /**
  13.      * @ORM\Entity(repositoryClass=ContactListRepository::class)
  14.      *
  15.      * @Serializer\ExclusionPolicy("ALL")
  16.      */
  17.     class ContactList
  18.     {
  19.         use DateTrait;
  20.         /**
  21.          * @ORM\Id
  22.          * @ORM\GeneratedValue
  23.          * @ORM\Column(type="integer")
  24.          *
  25.          * @Expose
  26.          * @Groups({"contactList"})
  27.          */
  28.         private ?int $id NULL;
  29.         /**
  30.          * @ORM\Column(type="string", length=255)
  31.          * @Assert\NotBlank(message="Le nom de la liste de contacts est obligatoire")
  32.          *
  33.          * @Expose
  34.          * @Groups({"contactList"})
  35.          */
  36.         private ?string $label NULL;
  37.         /**
  38.          * @ORM\ManyToMany(targetEntity=User::class, inversedBy="contactLists", cascade={"persist"})
  39.          */
  40.         private Collection $users;
  41.         /**
  42.          * @ORM\OneToMany(targetEntity=Newsletter::class, mappedBy="contactList")
  43.          */
  44.         private Collection $newsletters;
  45.         public function __construct()
  46.         {
  47.             $this->users       = new ArrayCollection();
  48.             $this->newsletters = new ArrayCollection();
  49.         }
  50.         /*
  51.          * ============================================================================================
  52.          * =============================== FONCTIONS CUSTOM ===========================================
  53.          * ============================================================================================
  54.          */
  55.         public function countNewsletterisProcessingOrProgrammed()
  56.         {
  57.             $i 0;
  58.             foreach ($this->getNewsletters() as $newsletter) {
  59.                 if ($newsletter instanceof Newsletter && in_array($newsletter->getStatus(), [
  60.                         Newsletter::STATUS_PROCESSING,
  61.                         Newsletter::STATUS_PROGRAMMED,
  62.                     ])) {
  63.                     $i++;
  64.                 }
  65.             }
  66.             return $i;
  67.         }
  68.         /*
  69.          * ============================================================================================
  70.          * ============================== FIN FONCTIONS CUSTOM ========================================
  71.          * ============================================================================================
  72.          */
  73.         /**
  74.          * @return Collection|Newsletter[]
  75.          */
  76.         public function getNewsletters(): Collection
  77.         {
  78.             return $this->newsletters;
  79.         }
  80.         public function getId(): ?int
  81.         {
  82.             return $this->id;
  83.         }
  84.         public function getLabel(): ?string
  85.         {
  86.             return $this->label;
  87.         }
  88.         public function setLabel(string $label): self
  89.         {
  90.             $this->label $label;
  91.             return $this;
  92.         }
  93.         /**
  94.          * @return Collection|User[]
  95.          */
  96.         public function getUsers(): Collection
  97.         {
  98.             return $this->users;
  99.         }
  100.         public function addUser(User $user): self
  101.         {
  102.             if (!$this->users->contains($user)) {
  103.                 $this->users[] = $user;
  104.             }
  105.             return $this;
  106.         }
  107.         public function removeUser(User $user): self
  108.         {
  109.             $this->users->removeElement($user);
  110.             return $this;
  111.         }
  112.         public function addNewsletter(Newsletter $newsletter): self
  113.         {
  114.             if (!$this->newsletters->contains($newsletter)) {
  115.                 $this->newsletters[] = $newsletter;
  116.                 $newsletter->setContactList($this);
  117.             }
  118.             return $this;
  119.         }
  120.         public function removeNewsletter(Newsletter $newsletter): self
  121.         {
  122.             if ($this->newsletters->removeElement($newsletter)) {
  123.                 // set the owning side to null (unless already changed)
  124.                 if ($newsletter->getContactList() === $this) {
  125.                     $newsletter->setContactList(NULL);
  126.                 }
  127.             }
  128.             return $this;
  129.         }
  130.     }