src/Products/NotificationsBundle/Entity/Lists/StaticList.php line 21

Open in your IDE?
  1. <?php
  2. namespace Products\NotificationsBundle\Entity\Lists;
  3. use Cms\CoreBundle\Entity\OneRoster\OneRosterUser;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\Common\Collections\Criteria;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Products\NotificationsBundle\Entity\AbstractList;
  9. use Products\NotificationsBundle\Entity\Lists\Components\ListSubscription;
  10. /**
  11.  * Class StaticList
  12.  * @package Products\NotificationsBundle\Entity\Lists
  13.  *
  14.  * @ORM\Entity(
  15.  *     repositoryClass = "Products\NotificationsBundle\Doctrine\Repository\Lists\StaticListRepository",
  16.  * )
  17.  */
  18. class StaticList extends AbstractList
  19. {
  20.     const DISCR 'static';
  21.     /**
  22.      * @var Collection
  23.      *
  24.      * @ORM\OneToMany(
  25.      *     targetEntity = "Products\NotificationsBundle\Entity\Lists\Components\ListSubscription",
  26.      *     mappedBy = "list",
  27.      * )
  28.      */
  29.     protected Collection $subscriptions;
  30.     /**
  31.      *
  32.      */
  33.     public function __construct()
  34.     {
  35.         $this->subscriptions = new ArrayCollection();
  36.     }
  37.     /**
  38.      * @param Criteria|null $criteria
  39.      * @return Collection|ListSubscription[]
  40.      */
  41.     public function getSubscriptions(?Criteria $criteria null): Collection
  42.     {
  43.         if ( ! empty($criteria)) {
  44.             return $this->subscriptions->matching($criteria);
  45.         }
  46.         return $this->subscriptions;
  47.     }
  48.     /**
  49.      * @param Criteria|null $criteria
  50.      * @return array|ListSubscription[]
  51.      */
  52.     public function getSubscriptionsAsArray(?Criteria $criteria null): array
  53.     {
  54.         return $this->getSubscriptions($criteria)->toArray();
  55.     }
  56.     /**
  57.      * @param ListSubscription $subscription
  58.      * @return $this
  59.      */
  60.     public function addSubscription(ListSubscription $subscription): self
  61.     {
  62.         $this->subscriptions->add($subscription);
  63.         //$subscription->setList($this);
  64.         return $this;
  65.     }
  66.     /**
  67.      * @return array|string[]
  68.      */
  69.     public function getRoles(): array
  70.     {
  71.         $roles = [];
  72.         foreach (OneRosterUser::TYPES as $type) {
  73.             $roles array_merge(
  74.                 $roles,
  75.                 OneRosterUser::TYPES_MAPPING[$type]
  76.             );
  77.         }
  78.         return array_values(array_unique($roles));
  79.     }
  80.     /**
  81.      * @param StaticList $list
  82.      * @return $this
  83.      */
  84.     public function merge(StaticList $list): self
  85.     {
  86.         $this->setTypes($list->getTypes());
  87.         $this->subscriptions->clear();
  88.         foreach ($list->getSubscriptionsAsArray() as $subscription) {
  89.             $this->subscriptions->add(
  90.                 (new ListSubscription())
  91.                     ->setList($this)
  92.                     ->setProfile($subscription->getProfile())
  93.             );
  94.         }
  95.         return $this;
  96.     }
  97. }