|  | @@ -4,15 +4,82 @@ namespace App\Controller;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
	
		
			
				|  |  |  use Symfony\Component\HttpFoundation\Response;
 | 
	
		
			
				|  |  | +use Symfony\Component\Routing\Requirement\Requirement;
 | 
	
		
			
				|  |  |  use Symfony\Component\Routing\Attribute\Route;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +use App\Repository\EventRepository;
 | 
	
		
			
				|  |  | +use App\Entity\Event;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  final class MainController extends AbstractController
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      #[Route('/', name: 'app_main')]
 | 
	
		
			
				|  |  | -    public function index(): Response
 | 
	
		
			
				|  |  | +    public function index(EventRepository $repository): Response
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | +        // Est-ce qu'un utilisateur est connecté et qu'il est au moins "staff" ?
 | 
	
		
			
				|  |  | +        $user = $this->getUser();
 | 
	
		
			
				|  |  | +        $onlyPublicAccess = true;
 | 
	
		
			
				|  |  | +        if ($user) {
 | 
	
		
			
				|  |  | +            $roles = $user->getRoles();
 | 
	
		
			
				|  |  | +            if (in_array('ROLE_STAFF', $roles) || in_array('ROLE_MANAGER', $roles) || in_array('ROLE_ADMIN', $roles)) {
 | 
	
		
			
				|  |  | +                $onlyPublicAccess = false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // Récupérer la liste des événements visibles
 | 
	
		
			
				|  |  | +        $events = $repository->findEventsToCome($onlyPublicAccess);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          return $this->render('main/index.html.twig', [
 | 
	
		
			
				|  |  | -            'controller_name' => 'MainController',
 | 
	
		
			
				|  |  | +            'events' => $events,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #[Route('/booking', name: 'app_main_booking_main')]
 | 
	
		
			
				|  |  | +    public function bookingMain(EventRepository $repository): Response
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // Est-ce qu'un utilisateur est connecté et qu'il est au moins "staff" ?
 | 
	
		
			
				|  |  | +        $user = $this->getUser();
 | 
	
		
			
				|  |  | +        $onlyPublicAccess = true;
 | 
	
		
			
				|  |  | +        if ($user) {
 | 
	
		
			
				|  |  | +            $roles = $user->getRoles();
 | 
	
		
			
				|  |  | +            if (in_array('ROLE_STAFF', $roles) || in_array('ROLE_MANAGER', $roles) || in_array('ROLE_ADMIN', $roles)) {
 | 
	
		
			
				|  |  | +                $onlyPublicAccess = false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // Récupérer la liste des événements visibles
 | 
	
		
			
				|  |  | +        $events = $repository->findEventsToCome($onlyPublicAccess);
 | 
	
		
			
				|  |  | +        $event = $events[0];
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return $this->render('main/booking.html.twig', [
 | 
	
		
			
				|  |  | +            'event' => $event,
 | 
	
		
			
				|  |  | +            'events' => $events
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #[Route('/booking/{id}', name: 'app_main_booking', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]
 | 
	
		
			
				|  |  | +    public function booking(?Event $event, EventRepository $repository): Response
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        // Contrôler qu'un événement est bien ok
 | 
	
		
			
				|  |  | +        if (!$event) {
 | 
	
		
			
				|  |  | +            $this->addFlash('danger', 'Événement inconnu !');
 | 
	
		
			
				|  |  | +            $this->redirectToRoute('app_main');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // Est-ce qu'un utilisateur est connecté et qu'il est au moins "staff" ?
 | 
	
		
			
				|  |  | +        $user = $this->getUser();
 | 
	
		
			
				|  |  | +        $onlyPublicAccess = true;
 | 
	
		
			
				|  |  | +        if ($user) {
 | 
	
		
			
				|  |  | +            $roles = $user->getRoles();
 | 
	
		
			
				|  |  | +            if (in_array('ROLE_STAFF', $roles) || in_array('ROLE_MANAGER', $roles) || in_array('ROLE_ADMIN', $roles)) {
 | 
	
		
			
				|  |  | +                $onlyPublicAccess = false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // Récupérer la liste des événements visibles
 | 
	
		
			
				|  |  | +        $events = $repository->findEventsToCome($onlyPublicAccess);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return $this->render('main/booking.html.twig', [
 | 
	
		
			
				|  |  | +            'event' => $event,
 | 
	
		
			
				|  |  | +            'events' => $events
 | 
	
		
			
				|  |  |          ]);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -52,6 +119,7 @@ final class MainController extends AbstractController
 | 
	
		
			
				|  |  |      #[Route('/contact', name: 'app_contact')]
 | 
	
		
			
				|  |  |      public function contact(): Response
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | +        // @todo: formulaire de contact avec envoi d'un mail
 | 
	
		
			
				|  |  |          // Lire le contenu de la charte des animations depuis un fichier
 | 
	
		
			
				|  |  |          $codeContent = file_get_contents(__DIR__ . '/../../public/pages/legal.md');
 | 
	
		
			
				|  |  |  
 |