src/Controller/CalendarController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Document\Agent;
  4. use App\Document\Assignment;
  5. use App\Document\Flight;
  6. use App\Document\HomepageChecklist;
  7. use App\Document\HomepageNote;
  8. use App\Document\LgoEvent;
  9. use App\Document\LgoEventCalendar;
  10. use App\Document\LgoEventStatus;
  11. use App\Document\LocalAirport;
  12. use App\Document\Location;
  13. use App\Document\Pole;
  14. use App\Document\Supplier;
  15. use App\Document\Tracking;
  16. use App\Entity\AppParameter;
  17. use App\Service\TrackingService;
  18. use Doctrine\Common\Collections\ArrayCollection;
  19. use Doctrine\ODM\MongoDB\DocumentManager;
  20. use Doctrine\ORM\EntityManagerInterface;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. /**
  28.  * @IsGranted("ROLE_ADMIN")
  29.  */
  30. class CalendarController extends AbstractController
  31. {
  32.     /**
  33.      * @Route("/", name="app_root")
  34.      */
  35.     public function index(): Response
  36.     {
  37.         return $this->redirectToRoute('app_homepage');
  38.     }
  39.     /**
  40.      * @Route("/calendar", name="app_calendar")
  41.      */
  42.     public function calendar(DocumentManager $managerRequest $requestSessionInterface $sessionTrackingService $trackingServiceEntityManagerInterface $entityManager): Response
  43.     {
  44.         $start = new \DateTime(date('Y-m-d'));
  45.         $end = new \DateTime(date('Y-m-d')." 23:59");
  46.         $statusCategories = ["A VENIR""EN COURS""TERMINE"];
  47.         if($request->get("displayMode")){
  48.             $displayMode $request->get("displayMode");
  49.             $session->set("displayMode"$displayMode);
  50.         } else {
  51.             if($session->get("displayMode")) {
  52.                 $displayMode $session->get("displayMode");
  53.             } else {
  54.                 $displayMode "agenda";
  55.             }
  56.         }
  57.         if($request->get("displayView")){
  58.             $displayView $request->get("displayView");
  59.             $session->set("displayView"$displayView);
  60.         } else {
  61.             if($session->get("displayView")) {
  62.                 $displayView $session->get("displayView");
  63.             } else {
  64.                 $displayView "timeline1";
  65.             }
  66.         }
  67.         if($request->get("date")){
  68.             $start = new \DateTime($request->get("date"));
  69.             $end = new \DateTime($request->get("date")." 23:59");
  70.         }
  71.         if($request->get("idEvent")){
  72.             $session->set('lastShownEventId'$request->get("idEvent") );
  73.         }
  74.         $lgoEventCalendars $manager->getRepository(LgoEventCalendar::class)->findBy([], ["position" => "ASC"]);
  75.         if($request->get("calendar")){
  76.             $checkedCalendarIds $request->get("calendar");
  77.             $session->set("checkedCalendarIds"$checkedCalendarIds);
  78.         } else {
  79.             if($session->get("checkedCalendarIds")){
  80.                 $checkedCalendarIds $session->get("checkedCalendarIds");
  81.             } else {
  82.                 $checkedCalendarIds = [];
  83.                 foreach($lgoEventCalendars as $calendar){
  84.                     if($calendar->getName() != "MASQUES" AND $calendar->getName() != "RESAS NON CONFIRMEES"){
  85.                         $checkedCalendarIds[] = $calendar->getId();
  86.                     }
  87.                 }
  88.             }
  89.         }
  90.         if($request->get("airport")){
  91.             $checkedAirportsCodes $request->get("airport");
  92.             $session->set("checkedAirportsCodes"$checkedAirportsCodes);
  93.         } else {
  94.             if($session->get("checkedAirportsCodes")){
  95.                 $checkedAirportsCodes $session->get("checkedAirportsCodes");
  96.             } else {
  97.                 $checkedAirportsCodes = ["AUTRE","SBH","SXM","SJU","PTP""ANU""AXA"];
  98.             }
  99.         }
  100.         if($request->get("statusCategory")){
  101.             $checkedStatutCategories2 $request->get("statusCategory");
  102.             $session->set("checkedStatutCategories"$checkedStatutCategories2);
  103.         } else {
  104.             if($session->get("checkedStatutCategories")){
  105.                 $checkedStatutCategories2 $session->get("checkedStatutCategories");
  106.             } else {
  107.                 $checkedStatutCategories2 $statusCategories;
  108.             }
  109.         }
  110.         $vipSuppliers $manager->getRepository(Supplier::class)->findBy(["isVipSupplier" => true]);
  111. //        if($request->get("vipSupplier")){
  112. //            $checkedVipSuppliers2 = $request->get("vipSupplier");
  113. //            $session->set("checkedVipSuppliers", $checkedVipSuppliers2);
  114. //        } else {
  115. //            if($session->get("checkedVipSuppliers")){
  116. //                $checkedVipSuppliers2 = $session->get("checkedVipSuppliers");
  117. //            } else {
  118. //                $checkedVipSuppliers2 = $vipSuppliers;
  119. //                foreach($vipSuppliers as $vipSupplier){
  120. //                    $checkedVipSuppliers2[] = $vipSupplier->getId();
  121. //                }
  122. //            }
  123. //        }
  124.         #----
  125.         $checkedCalendars = [];
  126.         foreach($lgoEventCalendars as $calendar){
  127.             if(in_array($calendar->getId(), $checkedCalendarIds)){
  128.                 $checkedCalendars[] = $calendar;
  129.             }
  130.         }
  131.         #----
  132.         $localAirports =  $manager->getRepository(LocalAirport::class)->findBy([], ["id" => "ASC"]);
  133.         $checkedAirports = [];
  134.         foreach($localAirports as $airport){
  135.             if(in_array($airport->getIataCode(), $checkedAirportsCodes)){
  136.                 $checkedAirports[] = $airport;
  137.             }
  138.         }
  139.         #----
  140.         $checkedStatutCategories = [];
  141.         $checkedStatutCategoriesObjects = [];
  142.         foreach($statusCategories as $statusCategory){
  143.             if(in_array($statusCategory$checkedStatutCategories2)){
  144.                 $checkedStatutCategories[] = $statusCategory;
  145.                 foreach($manager->getRepository(LgoEventStatus::class)->findBy(["category" => $statusCategory]) as $lgoEventStatus){
  146.                     $checkedStatutCategoriesObjects[] = $lgoEventStatus;
  147.                 }
  148.             }
  149.         }
  150.         #----
  151. //        $checkedVipSuppliers = [];
  152. //        $checkedVipSuppliersObjects = [];
  153. //        foreach($vipSuppliers as $vipSupplier){
  154. //            if(in_array($vipSupplier->getId(), $checkedVipSuppliers2)){
  155. //                $checkedVipSuppliers[] = $vipSupplier->getId();
  156. //                $checkedVipSuppliersObjects[] = $vipSupplier;
  157. //            }
  158. //        }
  159.         $checkedVipSuppliers null;
  160.         if($this->getUser()->getUserIdentifier()){
  161.             if($this->getUser()->getUserIdentifier() == "VIP EASYWAY"){
  162.                 $checkedVipSuppliers $manager->getRepository(Supplier::class)->findOneBy(["name" => "HALLEY AVIATION - HA"]);
  163.             }
  164.         }
  165.         #----
  166.         $nextDate = clone $start;
  167.         $nextDate->add(new \DateInterval('P1D'));
  168.         $prevDate = clone $start;
  169.         $prevDate->sub(new \DateInterval('P1D'));
  170.         $flights =  $manager->getRepository(Flight::class)->findByDateAndAirport($start,$checkedAirports);
  171.         $events $manager->getRepository(LgoEvent::class)->findByDate($start,null$checkedCalendars$flights$checkedStatutCategoriesObjects$checkedVipSuppliers);
  172.         #$events = $manager->getRepository(LgoEvent::class)->findByDate($start,$end);
  173.         #$events = $manager->getRepository(LgoEvent::class)->findByDate($start,null, $checkedCalendars);
  174.         /**@var \App\Entity\LgoEvent $event */
  175.         $selectedEvents = [];
  176.         foreach($events as $event){
  177.             if($event->getBooking()){
  178.                 if($event->getBooking()->getStatus()->getLabel() != 'Request'){
  179.                     $selectedEvents[] = $event;
  180.                 }
  181.             } else {
  182.                 $selectedEvents[] = $event;
  183.             }
  184.         }
  185.         #--- Remove events if airport is not in airport filter ---
  186. //        $selectedEventsAfterAirportFilter = [];
  187. //        foreach ($selectedEvents as $event){
  188. //            if($event->getFlight() AND $event->getFlight()->getAirport() AND in_array($event->getFlight()->getAirport()->getIataCode(), $checkedAirportsCodes)){
  189. //                $selectedEventsAfterAirportFilter[] = $event;
  190. //            } elseif($event->getFlight() == null){  /* For Handling events */
  191. //                $selectedEventsAfterAirportFilter[] = $event;
  192. //            }
  193. //        }
  194.         #--- Remove events if status is not in status filter ---
  195. //        $selectedEventsAfterStatusFilter = [];
  196. //        foreach ($selectedEventsAfterAirportFilter as $event){
  197. //            if($event->getStatus() AND in_array($event->getStatus()->getCategory(), $checkedStatutCategories2)){
  198. //                $selectedEventsAfterStatusFilter[] = $event;
  199. //            }
  200. //        }
  201.         #-------
  202.         if($start->format("Ymd") < date('Ymd')){
  203.             $agents $manager->getRepository(Agent::class)->findAll();
  204.         } else {
  205.             $agents $manager->getRepository(Agent::class)->findBy(["isActive" => 1]);
  206.         }
  207.         $planningAgent = [];
  208.         foreach($events as $event){
  209.             $agentNumbers $event->getAgents()->count();
  210.             if($agentNumbers 0){
  211.                 foreach($event->getAgents() as $agent){
  212.                     $planningAgent[$agent->getId()][] = $event;
  213.                 }
  214.             } else {
  215.                 $planningAgent[0][] = $event;
  216.             }
  217.         }
  218.         $listAgentAffectation = [];
  219.         $listAgentAffectation[0] = "NON AFFECTE";
  220.         foreach($agents as $agent){
  221.             $listAgentAffectation[$agent->getId()] = $agent->getLastName().' '.$agent->getFirstName();
  222.         }
  223.         /**@var \App\Document\LgoEvent $event */
  224.         $planningSupplier = [];
  225.         foreach($events as $event){
  226.             if($event->getFlight()){
  227.                 if($event->getFlight()->getSupplier()){
  228.                     $planningSupplier[$event->getFlight()->getSupplier()->getId()][] = $event;
  229.                 }
  230.             }
  231.             if($event->getConnectingFlight()){
  232.                 if($event->getConnectingFlight()->getSupplier()){
  233.                     $planningSupplier[$event->getConnectingFlight()->getSupplier()->getId()][] = $event;
  234.                 }
  235.             }
  236.         }
  237.         $tailsNumbers = [];
  238.         $tailsNumbersPerSupplier = [];
  239.         $suppliers $manager->getRepository(Supplier::class)->findAll();
  240.         foreach($suppliers as $supplier){
  241.             foreach($supplier->getTailNumbers() as $tail){
  242.                 $tailsNumbers[$tail] = $supplier->getName();
  243.             }
  244.         }
  245.         ksort($tailsNumbers);
  246.         #--- Used to open last displayed Event Canvas-
  247.         $lastShownEventId null;
  248.         if($request->get('lastShownEventId')){
  249.             $lastShownEventId $request->get('lastShownEventId');
  250.         }
  251.         if($session->get('lastShownEventId')){
  252.             $lastShownEventId $session->get('lastShownEventId');
  253.             $session->set('lastShownEventId'null );
  254.         }
  255.         #-----
  256.         $lastSyncParameter $entityManager->getRepository(AppParameter::class)->findOneBy(["name" => "LAST_LGS_SYNC"]);
  257.         $lastSyncDate = new \DateTime($lastSyncParameter->getValue());
  258. //        $dateInterval = $lasySyncDate->diff(new \DateTime());
  259. //        if($dateInterval->i > 10){
  260. //            $lastSyncMessage = 'Dernière syn'
  261. //        };
  262.         /*foreach($selectedEvents as $event){
  263.             if($event->getIdLgs() == 29268){
  264.                 dump($event);
  265.             }
  266.         }
  267.         dd($selectedEvents);*/
  268.         $firstDayOfMonth = clone $start;
  269.         $firstDayOfMonth $firstDayOfMonth->modify('first day of this month');
  270.         $firstDayOfCalendar = clone $firstDayOfMonth;
  271.         $firstDayOfCalendar $firstDayOfCalendar->modify('Monday this week');
  272.         $lastDayOfMonth = clone $start;
  273.         $lastDayOfMonth $lastDayOfMonth->modify('last day of this month');
  274.         $lastDayOfCalendar = clone $lastDayOfMonth;
  275.         $lastDayOfCalendar $lastDayOfCalendar->modify('Sunday this week');
  276.         $datesArray = [];
  277.         $tempDate = clone $firstDayOfCalendar;
  278.         while($tempDate <= $lastDayOfCalendar){
  279.             $datesArray[] = new \DateTime($tempDate->format('Y-m-d'));
  280.             $tempDate->add(new \DateInterval('P1D'));
  281.         }
  282.         $prevMonth = clone $firstDayOfMonth;
  283.         $prevMonth->modify('first day of last month');
  284.         $nextMonth = clone $lastDayOfMonth;
  285.         $nextMonth->modify("tomorrow");
  286.         return $this->render('admin/calendar/index.html.twig', [
  287.             'date' => $start->format('Y-m-d'),
  288.             'events' => $selectedEvents,
  289.             'nextDate' => $nextDate,
  290.             'prevDate' => $prevDate,
  291.             'agents' => $agents,
  292.             'lgoEventCalendars' => $lgoEventCalendars,
  293.             'localAirports' => $localAirports,
  294.             'checkedCalendars' => $checkedCalendars,
  295.             'checkedAirports' => $checkedAirports,
  296.             #'checkedVipSuppliers' => $checkedVipSuppliers,
  297.             'allEventStatus' => $manager->getRepository(LgoEventStatus::class)->findAll(),
  298.             'allCalendars' => $manager->getRepository(LgoEventCalendar::class)->findBy([], ["position" => "ASC"]),
  299.             'allLocations' => $manager->getRepository(Location::class)->findBy([], ["name" => "ASC"]),
  300.             'planningAgent' => $planningAgent,
  301.             'listAgentAffectation' => $listAgentAffectation,
  302.             'displayMode' => $displayMode,
  303.             'displayView' => $displayView,
  304.             'tailsNumbers' => $tailsNumbers,
  305.             'allSuppliers' => $manager->getRepository(Supplier::class)->findBy([],["name"=>"ASC"]),
  306.             'planningSupplier' => $planningSupplier,
  307.             'trackings' => $trackingService->getAllTrackings($start),
  308.             'statusCategories' => $statusCategories,
  309.             'checkedStatutCategories' => $checkedStatutCategories,
  310.             'lastShownEventId' => $lastShownEventId,
  311.             'lastSyncDate' => $lastSyncDate,
  312.             'vipSuppliers' => $vipSuppliers,
  313.             'datesArray' => $datesArray,
  314.             'prevMonth' => $prevMonth,
  315.             'nextMonth' => $nextMonth,
  316.         ]);
  317.     }
  318.     /**
  319.      * @Route("/reconfirmation", name="app_lgo_reconfirmation", methods={"GET"})
  320.      */
  321.     public function reconfirmation(DocumentManager $managerRequest $requestSessionInterface $sessionTrackingService $trackingServiceEntityManagerInterface $entityManager): Response
  322.     {
  323.         $start = new \DateTime(date('Y-m-d'));
  324.         $end = new \DateTime(date('Y-m-d')." 23:59");
  325.         if($request->get("date")){
  326.             $start = new \DateTime($request->get("date"));
  327.             $end = new \DateTime($request->get("date")." 23:59");
  328.         }
  329.         #----
  330.         $nextDate = clone $start;
  331.         $nextDate->add(new \DateInterval('P1D'));
  332.         $prevDate = clone $start;
  333.         $prevDate->sub(new \DateInterval('P1D'));
  334.         /**@var LgoEvent $event **/
  335.         $selectedEvents = new ArrayCollection();
  336.         $calendars $manager->getRepository(LgoEventCalendar::class)->findBy([], ["position" => "ASC"]);
  337.         $calendars = new ArrayCollection($calendars);
  338.         $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "ANNULE"]));
  339.         $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "MASQUES"]));
  340.         $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "RESAS NON CONFIRMEES"]));
  341.         //-- removed because should be grouped with arrival / departures --
  342.         $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "ARRIVEES JET"]));
  343.         $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "DEPARTS JET"]));
  344.         $type "tousSaufHandling";
  345.         if($request->get('type')){
  346.             $type $request->get('type');
  347.         }
  348.         if($type == "handling"){
  349.             $calendars $manager->getRepository(LgoEventCalendar::class)->findBy(["name" => "HANDLING"]);
  350.         } else {
  351.             $calendars->removeElement($manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "HANDLING"]));
  352.         }
  353.         foreach($calendars as $calendar){
  354.             if($calendar->getName() == "ARRIVEES"){
  355.                 $selectedCalendars = [$calendar$manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "ARRIVEES JET"])];
  356.             } elseif($calendar->getName() == "DEPARTS"){
  357.                 $selectedCalendars = [$calendar$manager->getRepository(LgoEventCalendar::class)->findOneBy(["name" => "DEPARTS JET"])];
  358.             } else {
  359.                 $selectedCalendars = [$calendar];
  360.             }
  361.             $flights =  $manager->getRepository(Flight::class)->findByDateAndAirport($start);
  362.             $events $manager->getRepository(LgoEvent::class)->findByDate($start$end$selectedCalendars$flights);
  363.             foreach ($events as $event) {
  364.                 $selectedEvents->add($event);
  365.             }
  366.         }
  367.         #--- SEARCH IN CONTACT OR LOCATION ---
  368.         if($request->get("search")){
  369.             $search strtolower($request->get("search"));
  370.             foreach($selectedEvents as $event){
  371.                 $keepInArray false;
  372.                 #-- LOCATION --
  373.                 if($event->getLocations()){
  374.                     foreach($event->getLocations() as $location){
  375.                         if(str_contains(strtolower($location->getName()), $search)){
  376.                             $keepInArray true;
  377.                         }
  378.                     }
  379.                 }
  380.                 #-- CONTACT --
  381.                 if($event->getBooking()){
  382.                     if(str_contains(strtolower($event->getBooking()->getContactFreeText()), $search)) {
  383.                         $keepInArray true;
  384.                     }
  385.                     if($event->getBooking()->getLocalContact()){
  386.                         if(str_contains(strtolower($event->getBooking()->getLocalContact()->getName()), $search)){
  387.                             $keepInArray true;
  388.                         }
  389.                     }
  390.                 }
  391.                 #-- REMOVE FROM ARRAY --
  392.                 if($keepInArray == false){
  393.                     $selectedEvents->removeElement($event);
  394.                 }
  395.             }
  396.         }
  397.         return $this->render('admin/calendar/reconfirmation.html.twig', [
  398.             'date' => $start->format('Y-m-d'),
  399.             'events' => $selectedEvents,
  400.             'nextDate' => $nextDate,
  401.             'prevDate' => $prevDate,
  402.             'calendars' => $calendars,
  403.         ]);
  404.     }
  405.     /**
  406.      * @Route("/mini-calendar/{date}", name="app_calendar_mini")
  407.      */
  408.     public function miniCalendar($dateRequest $request): Response
  409.     {
  410.         $date = new \DateTime($date);
  411.         $firstDayOfMonth = clone $date;
  412.         $firstDayOfMonth $firstDayOfMonth->modify('first day of this month');
  413.         $firstDayOfCalendar = clone $firstDayOfMonth;
  414.         $firstDayOfCalendar $firstDayOfCalendar->modify('Monday this week');
  415.         $lastDayOfMonth = clone $date;
  416.         $lastDayOfMonth $lastDayOfMonth->modify('last day of this month');
  417.         $lastDayOfCalendar = clone $lastDayOfMonth;
  418.         $lastDayOfCalendar $lastDayOfCalendar->modify('Sunday this week');
  419.         $datesArray = [];
  420.         $tempDate = clone $firstDayOfCalendar;
  421.         while($tempDate <= $lastDayOfCalendar){
  422.             $datesArray[] = new \DateTime($tempDate->format('Y-m-d'));
  423.             $tempDate->add(new \DateInterval('P1D'));
  424.         }
  425.         $prevMonth = clone $firstDayOfMonth;
  426.         $prevMonth->modify('first day of last month');
  427.         $nextMonth = clone $lastDayOfMonth;
  428.         $nextMonth->modify("tomorrow");
  429.         return $this->render('admin/calendar/mini-calendar.html.twig', [
  430.             'date' => $date,
  431.             'datesArray' => $datesArray,
  432.             'prevMonth' => $prevMonth,
  433.             'nextMonth' => $nextMonth,
  434.         ]);
  435.     }
  436.     /**
  437.      * @Route("/homepage", name="app_homepage")
  438.      */
  439.     public function homepage(Request $requestDocumentManager $manager): Response
  440.     {
  441.         $date = new \DateTime(date('Y-m-d'));
  442.         if($request->get("date")){
  443.             $date = new \DateTime($request->get("date"));
  444.         }
  445.         $end = clone $date;
  446.         $end->setTime(23,59);
  447.         $events $manager->getRepository(LgoEvent::class)->findByDate($date$end);
  448.         $otherEvents = [];
  449.         $missingBagsEvents = [];
  450.         $extras = [];
  451.         $indicators = [];
  452.         $indicators["ARRIVALS"] = 0;
  453.         $indicators["DEPARTURES"] = 0;
  454.         $indicators["HANDLINGS"] = 0;
  455.         $lastMinuteEvents = [];
  456.         /**@var \App\Document\LgoEvent $event **/
  457.         foreach($events as $event){
  458.             if($event->getCalendar()){
  459.                 $name $event->getCalendar()->getName();
  460.                 if($name == "ARRIVEES" OR $name == "ARRIVEES JET"){
  461.                     $indicators["ARRIVALS"]++;
  462.                 } elseif($name == "DEPARTS" OR $name == "DEPARTS JET") {
  463.                     $indicators["DEPARTURES"]++;
  464.                 } elseif($name == "HANDLING") {
  465.                     $indicators["HANDLINGS"]++;
  466.                 } elseif($name == "AUTRE"){
  467.                     if($event->isMissingBag()){
  468.                         $missingBagsEvents[] = $event;
  469.                     } else {
  470.                         $otherEvents[] = $event;
  471.                     }
  472.                 }
  473.             }
  474.             foreach($event->getServiceItems() as $serviceItem){
  475.                 if($serviceItem->getService()->isIsExtra()){
  476.                     $extras[] = $serviceItem;
  477.                 }
  478.             }
  479.             if($event->getBooking()){
  480.                 if($event->getBooking()->getCreatedAt()->format("Y-m-d") == date('Y-m-d')){
  481.                     $lastMinuteEvents[] = $event;
  482.                 }
  483.             }
  484.         }
  485.         $checklist $manager->getRepository(HomepageChecklist::class)->findOneBy(["date" => $date]);
  486.         if(!$checklist){
  487.             $checklist = new HomepageChecklist();
  488.             $checklist->setDate($date);
  489.             $manager->persist($checklist);
  490.             $manager->flush();
  491.         }
  492.         #---- PLANNING / POLES ----
  493.         $poles $manager->getRepository(Pole::class)->findBy([], ["position" => "ASC"]);
  494.         $assignmentsPole = [];
  495.         foreach($poles as $pole){
  496.             $assignmentsPole[$pole->getId()] = [];
  497.             $assignments $manager->getRepository(Assignment::class)->findByCriterias($date$end$pole);
  498.             $assignmentsPole[$pole->getId()] = $assignments->toArray();
  499.         }
  500.         $poleDemandesOff $manager->getRepository(Pole::class)->findOneBy(["name" => "Demande Off"]);
  501.         $assignmentsDemandesOff $manager->getRepository(Assignment::class)->findBy(["pole" => $poleDemandesOff]);
  502.         #---- ESPACE PERSO ----
  503.         $myAgent $manager->getRepository(Agent::class)->findOneBy(["idLgs" => $this->getUser()->getUserIdentifier()]);
  504.         $myAssignmentsDemandesOff $manager->getRepository(Assignment::class)->findBy(["pole" => $poleDemandesOff"agent" => $myAgent ]);
  505.         return $this->render('admin/calendar/homepage.html.twig', [
  506.             'date' => $date,
  507.             'indicators' => $indicators,
  508.             'otherEvents' => $otherEvents,
  509.             'extras' => $extras,
  510.             'missingBagsEvents' => $missingBagsEvents,
  511.             'lastMinuteEvents' => $lastMinuteEvents,
  512.             'checklist' => $checklist,
  513.             'homepageNotes' => $manager->getRepository(HomepageNote::class)->findBy(["date" => $date]),
  514.             'agents' => $manager->getRepository(Agent::class)->findBy(["isActive" => true], ["firstname" => "ASC""lastname" => "ASC"]),
  515.             'poles' => $poles,
  516.             'assignmentsPole' => $assignmentsPole,
  517.             'assignmentsDemandesOff' => $assignmentsDemandesOff,
  518.             'myAssignmentsDemandesOff' => $myAssignmentsDemandesOff,
  519.         ]);
  520.     }
  521.     /**
  522.      * @Route("/homepage/add-note", name="app_homepage_add_note")
  523.      */
  524.     public function addNote(Request $requestDocumentManager $manager): Response
  525.     {
  526.         $note = new HomepageNote();
  527.         $note->setNote($request->get("note"));
  528.         $note->setDate(new \DateTime($request->get("date")));
  529.         $manager->persist($note);
  530.         $manager->flush();
  531.         return $this->redirectToRoute('app_homepage', ["date" => $note->getDate()->format("Y-m-d")]);
  532.     }
  533.     /**
  534.      * @Route("/homepage/delete-note/{id}", name="app_homepage_delete_note")
  535.      */
  536.     public function deleteNote($idRequest $requestDocumentManager $manager): Response
  537.     {
  538.         $note $manager->getRepository(HomepageNote::class)->find($id);
  539.         $manager->remove($note);
  540.         $manager->flush();
  541.         return $this->redirectToRoute('app_homepage', ["date" => $note->getDate()->format("Y-m-d")]);
  542.     }
  543.     /**
  544.      * @Route("/homepage/update-checklist", name="app_homepage_update_checklist")
  545.      */
  546.     public function updateChecklist(Request $requestDocumentManager $manager): Response
  547.     {
  548.         $checklist $manager->getRepository(HomepageChecklist::class)->find($request->get("id"));
  549.         if($checklist){
  550.             $itemName $request->get("itemName");
  551.             if($itemName == "agent"){
  552.                 $checklist->setAgent(null);
  553.                 $agent $manager->getRepository(Agent::class)->find($request->get("value"));
  554.                 if($agent){
  555.                     $checklist->setAgent($agent);
  556.                 }
  557.             }
  558.             if($itemName == "isLgsCheckPerformed"){
  559.                 $checklist->setIsLgsCheckPerformed($request->get("value"));
  560.             }
  561.             if($itemName == "isOperationCheckPerformed"){
  562.                 $checklist->setIsOperationCheckPerformed($request->get("value"));
  563.             }
  564.             if($itemName == "isEmailsCheckPerformed"){
  565.                 $checklist->setIsEmailsCheckPerformed($request->get("value"));
  566.             }
  567.         }
  568.         $manager->persist($checklist);
  569.         $manager->flush();
  570.         return $this->redirectToRoute('app_homepage', ["date" => $checklist->getDate()->format("Y-m-d")]);
  571.     }
  572. }