<?php
namespace App\EventSubscriber;
use App\Repository\SessionsRepository;
use CalendarBundle\CalendarEvents;
use CalendarBundle\Entity\Event;
use CalendarBundle\Event\CalendarEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
class CalendarSubscriber implements EventSubscriberInterface
{
private $sessionsRepository;
private $security;
public function __construct(SessionsRepository $sessionsRepository, Security $security)
{
$this->sessionsRepository = $sessionsRepository;
$this->security = $security;
}
public static function getSubscribedEvents()
{
return [
CalendarEvents::SET_DATA => 'onCalendarSetData',
];
}
#[Route('/fc-load-events')]
public function onCalendarSetData(CalendarEvent $calendar)
{
$user = $this->security->getUser();
$start = $calendar->getStart();
$end = $calendar->getEnd();
$filters = $calendar->getFilters();
//$sessions = $this->sessionsRepository->findAll();
if( in_array('ROLE_ADMIN', $user->getRoles()) ){
$sessions = $this->sessionsRepository->findAll();
}else{
$sessions = $this->sessionsRepository->findByUser($user->getId());
}
// Show sessions data on calendar
if( !empty($sessions) ){
foreach($sessions as $session){
$event = new Event(
$session->getDate()->format('').' '.$session->getChild()->getFirstname().' '.$session->getChild()->getLastname(),
new \DateTime($session->getDate()->format('Y-m-d H:i')),
new \DateTime($session->getDate()->format('Y-m-d H:i')),
);
$event->addOption(
'url',
'http://crmsuzielc.fr/sessions/' . $session->getId(),
);
$event->addOption(
'allDay',
false,
);
$calendar->addEvent($event);
}
}
}
}