src/Controller/Front/AgendaController.php line 20

  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Entity\Agenda;
  4. use App\Repository\AgendaRepository;
  5. use App\Repository\PoleRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class AgendaController extends AbstractController
  11. {
  12.     public function __construct(private AgendaRepository $evenementRepository)
  13.     {
  14.     }
  15.     #[Route('/evenements'name'app_evenement_list')]
  16.     public function index(
  17.         PoleRepository $poleRepository,
  18.         Request $request
  19.     ): Response {
  20.         return $this->render('front/evenement/index.html.twig', [
  21.             'poles' => $poleRepository->findAll(),
  22.             'evenements' => $this->evenementRepository->findBy(['visible' => true]),
  23.             'poleSearch' => $request->get('pole'),
  24.         ]);
  25.     }
  26.     #[Route('/evenements/fc-load-events'name'app_evenement_fc_load_events')]
  27.     public function fcLoadEvents(
  28.         Request $request,
  29.         PoleRepository $poleRepository,
  30.     ): Response {
  31.         $filters json_decode($request->get('filters'), true);
  32.         if ([] === $filters) {
  33.             $filters $poleRepository->findAll();
  34.         }
  35.         $evenements $this->evenementRepository->findByDate(
  36.             $request->get('start'),
  37.             $request->get('end'),
  38.             $filters
  39.         );
  40.         $events = [];
  41.         foreach ($evenements as $evenement) {
  42.             /** @var Agenda $evenement */
  43.             $date $evenement->getDate();
  44.             $heureDebut null !== $evenement->getHeureDebut() ? 'T'.$evenement->getHeureDebut()->format('H:i:s') : '';
  45.             $heureFin null !== $evenement->getHeureFin() ? 'T'.$evenement->getHeureFin()->format('H:i:s') : '';
  46.             $events[] = [
  47.                 'title' => $evenement->getTitre(),
  48.                 'start' => $date->format('Y-m-d').$heureDebut,
  49.                 'end' => $date->format('Y-m-d').$heureFin,
  50.                 'url' => $this->generateUrl('app_evenement_detail_slug', ['slug' => $evenement->getSlug()]),
  51.                 'backgroundColor' => $evenement->getPoleId()->getColor() ? '#'.$evenement->getPoleId()->getColor() : '#43147369',
  52.                 'borderColor' => $evenement->getPoleId()->getColor() ? '#'.$evenement->getPoleId()->getColor() : '#43147369',
  53.             ];
  54.         }
  55.         return $this->json($events);
  56.     }
  57.     #[
  58.         Route('/evenement/{evenement<[0-9]\d*>}'name'app_evenement_detail'),
  59.         Route('/evenement/{slug}'name'app_evenement_detail_slug')
  60.     ]
  61.     public function detail(
  62.         ?int $evenement,
  63.         ?string $slug
  64.     ): Response {
  65.         if (!$slug) {
  66.             $evenement $this->evenementRepository->find($evenement);
  67.         } else {
  68.             $evenement $this->evenementRepository->findOneBy(['slug' => $slug]);
  69.         }
  70.         if (null === $evenement || (!$this->isGranted('ROLE_ADMIN') && false === $evenement->isVisible())) {
  71.             throw $this->createNotFoundException('Page not found');
  72.         }
  73.         if ($this->isGranted('ROLE_ADMIN') && false === $evenement->isVisible()) {
  74.             $this->addFlash('success''Cette page est visible car vous ĂȘte administrateur');
  75.         }
  76.         $evenements $this->evenementRepository->findOther($evenement);
  77.         return $this->render('front/evenement/detail.html.twig', [
  78.             'evenement' => $evenement,
  79.             'evenements' => $evenements,
  80.         ]);
  81.     }
  82.     // #[Route('/delete/{id}', name: 'app_agenda_delete_back', methods: ['POST'])]
  83.     // public function delete(Request $request, Agenda $agenda, AgendaRepository $agendaRepository): Response
  84.     // {
  85.     //     if ($this->isCsrfTokenValid('delete'.$agenda->getId(), $request->request->get('_token'))) {
  86.     //         $agendaRepository->remove($agenda, true);
  87.     //     }
  88.     //     return $this->redirectToRoute('app_agenda_index_back', [], Response::HTTP_SEE_OTHER);
  89.     // }
  90. }