|
@@ -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');
|
|
|
|