src/EventSubscriber/CalendarSubscriber.php line 31

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Repository\DemandeInspectionRepository;
  4. use CalendarBundle\CalendarEvents;
  5. use CalendarBundle\Entity\Event;
  6. use CalendarBundle\Event\CalendarEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  9. class CalendarSubscriber implements EventSubscriberInterface
  10. {
  11.     private $demandeIspectionRepo;
  12.     private $router;
  13.     public function __construct(
  14.         DemandeInspectionRepository $demandeIspectionRepo,
  15.         UrlGeneratorInterface $router
  16.     ) {
  17.         $this->demandeIspectionRepo $demandeIspectionRepo;
  18.         $this->router $router;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             CalendarEvents::SET_DATA => 'onCalendarSetData',
  24.         ];
  25.     }
  26.     public function onCalendarSetData(CalendarEvent $calendar)
  27.     {
  28.         $start $calendar->getStart();
  29.         $end $calendar->getEnd();
  30.         $filters $calendar->getFilters();
  31.         // Modify the query to fit to your entity and needs
  32.         $demande_inspect $this->demandeIspectionRepo
  33.             ->createQueryBuilder('di')
  34.             ->where('di.DateSouhaitee BETWEEN :start and :end')
  35.             ->setParameter('start'$start->format('Y-m-d H:i:s'))
  36.             ->setParameter('end'$end->format('Y-m-d H:i:s'))
  37.             ->getQuery()
  38.             ->getResult()
  39.         ;
  40.         foreach ($demande_inspect as $inspect) {
  41.             // this create the events with your data (here booking data) to fill calendar
  42.             $inspectEvent = new Event(
  43.                 $inspect->getDemandeur(),
  44.                 $inspect->setDateSouhaitee(),
  45.                 $inspect->setDateSouhaitee() // If the end date is null or not defined, a all day event is created.
  46.             );
  47.             /*
  48.              * Add custom options to events
  49.              *
  50.              * For more information see: https://fullcalendar.io/docs/event-object
  51.              * and: https://github.com/fullcalendar/fullcalendar/blob/master/src/core/options.ts
  52.              */
  53.             $inspectEvent->setOptions([
  54.                 'backgroundColor' => 'red',
  55.                 'borderColor' => 'red',
  56.             ]);
  57.             // finally, add the event to the CalendarEvent to fill the calendar
  58.             $calendar->addEvent($inspectEvent);
  59.         }
  60.     }
  61. }