src/EventSubscriber/CalendarSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Repository\SessionsRepository;
  4. use CalendarBundle\CalendarEvents;
  5. use CalendarBundle\Entity\Event;
  6. use CalendarBundle\Event\CalendarEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Security\Core\Security;
  9. class CalendarSubscriber implements EventSubscriberInterface
  10. {
  11.     private $sessionsRepository
  12.     private $security;
  13.     public function __construct(SessionsRepository $sessionsRepositorySecurity $security)
  14.     {
  15.         $this->sessionsRepository $sessionsRepository;
  16.         $this->security $security;
  17.     }
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             CalendarEvents::SET_DATA => 'onCalendarSetData',
  22.         ];
  23.     }
  24.     #[Route('/fc-load-events')]
  25.     public function onCalendarSetData(CalendarEvent $calendar)
  26.     {
  27.         $user $this->security->getUser();
  28.         $start $calendar->getStart();
  29.         $end $calendar->getEnd();
  30.         $filters $calendar->getFilters();
  31.         //$sessions = $this->sessionsRepository->findAll();  
  32.         if( in_array('ROLE_ADMIN'$user->getRoles()) ){
  33.         
  34.             $sessions $this->sessionsRepository->findAll();  
  35.         }else{
  36.             $sessions $this->sessionsRepository->findByUser($user->getId());
  37.         }
  38.         // Show sessions data on calendar
  39.         if( !empty($sessions)  ){
  40.             foreach($sessions as $session){
  41.                 $event = new Event(
  42.                     $session->getDate()->format('').' '.$session->getChild()->getFirstname().' '.$session->getChild()->getLastname(),
  43.                     new \DateTime($session->getDate()->format('Y-m-d H:i')),
  44.                     new \DateTime($session->getDate()->format('Y-m-d H:i')),
  45.                 );
  46.                 $event->addOption(
  47.                     'url',
  48.                     'http://crmsuzielc.fr/sessions/' $session->getId(),
  49.                 );
  50.                 $event->addOption(
  51.                     'allDay',
  52.                     false,
  53.                 ); 
  54.                 
  55.                 $calendar->addEvent($event);
  56.             }
  57.         } 
  58.     }
  59. }