src/Subscriber/User/WebcamSubscriber.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber\User;
  3. use App\Event\User\LivecamOfflineEvent;
  4. use App\Event\User\LivecamOnlineEvent;
  5. use App\Service\ActivityFeedService;
  6. use App\Service\MemberService;
  7. use App\Service\User\MemberOnlineService;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class WebcamSubscriber implements EventSubscriberInterface
  10. {
  11.     protected MemberService $memberService;
  12.     protected ActivityFeedService $activityFeed;
  13.     protected MemberOnlineService $memberOnlineService;
  14.     public function __construct(MemberService $memberServiceMemberOnlineService $memberOnlineService,
  15.         ActivityFeedService $activityFeed)
  16.     {
  17.         $this->memberService $memberService;
  18.         $this->memberOnlineService $memberOnlineService;
  19.         $this->activityFeed $activityFeed;
  20.     }
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             LivecamOnlineEvent::class => [
  25.                 ['onWebcamOnlineSetMemberFlag'0],
  26.                 ['onWebcamOnlineUpdateMemberOnline'1],
  27.             ],
  28.             LivecamOfflineEvent::class => [
  29.                 ['onWebcamOfflineSetMemberFlag'0],
  30.             ],
  31.         ];
  32.     }
  33.     /**
  34.      * @throws \Doctrine\ORM\ORMException
  35.      * @throws \Doctrine\ORM\OptimisticLockException
  36.      */
  37.     public function onWebcamOnlineSetMemberFlag(LivecamOnlineEvent $event)
  38.     {
  39.         $member $event->getMember();
  40.         $member->setIsWebcamActive(true);
  41.         $this->memberService->storeMember($member);
  42.     }
  43.     /**
  44.      * @return void
  45.      *
  46.      * @throws \Doctrine\ORM\ORMException
  47.      * @throws \Doctrine\ORM\OptimisticLockException
  48.      */
  49.     public function onWebcamOnlineUpdateMemberOnline(LivecamOnlineEvent $event)
  50.     {
  51.         $member $event->getMember();
  52.         if (!$existing $this->memberOnlineService->getMemberOnlineByMember($member)) {
  53.             $existing $this->memberOnlineService->createOnlineStatusForMember($member);
  54.         }
  55.         $this->memberOnlineService->refreshMemberOnlineStatus($existing);
  56.     }
  57.     /**
  58.      * @throws \Doctrine\ORM\ORMException
  59.      * @throws \Doctrine\ORM\OptimisticLockException
  60.      */
  61.     public function onWebcamOfflineSetMemberFlag(LivecamOfflineEvent $event)
  62.     {
  63.         $member $event->getMember();
  64.         $member->setIsWebcamActive(false);
  65.         $this->memberService->storeMember($member);
  66.     }
  67. }