123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- 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;
- use App\Entity\Gamemaster;
- use App\Security\Voter\EventAccessVoter;
- final class PrepareController extends AbstractController
- {
- #[Route('/prepare', name: 'app_prepare')]
- public function prepare(EventRepository $repository): Response
- {
- // Faut être au moins du STAFF
- $this->denyAccessUnlessGranted('ROLE_STAFF');
- // La personne connectée est-elle un MJ ?
- $gamemaster = null;
- $user = $this->getUser();
- if (in_array('ROLE_STAFF', $user->GetRoles())) {
- // C'est un membre du staff, on check son profil MJ
- $gamemaster = $user->getLinkToGamemaster();
- if (!$gamemaster) {
- // Mais c'est pas un MJ
- $this->addFlash('danger', 'Seuls les MJ de l\'équipe peuvent préparer un événement');
- return $this->redirectToRoute('app_main');
- }
- }
- // Tous événement même non publiés à venir
- $events = $repository->findEventsToPrepare($gamemaster);
- if (count($events) < 1) {
- // Aucun événement à préparer
- $this->addFlash('danger', 'Aucun événement en cours de préparation pour le moment.');
- return $this->redirectToRoute('app_main');
- }
- $event = $events[0];
- return $this->render('prepare/prepare.html.twig', [
- 'event' => $event,
- 'events' => $events
- ]);
- }
- #[Route('/prepare/{id}', name: 'app_prepare_planning', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]
- public function preparePlanning(?Event $event, EventRepository $repository): Response
- {
- // Si pas d'événement, ça dégage
- if (!$event) {
- $this->addFlash('danger', 'Événement inconnu !');
- return $this->redirectToRoute('app_prepare');
- }
- // On controle les droits d'accès sur l'événement
- $this->denyAccessUnlessGranted(EventAccessVoter::ACCESS_EVENT, $event);
- // La personne connectée est-elle un MJ ?
- $gamemaster = null;
- $user = $this->getUser();
- if (in_array('ROLE_STAFF', $user->GetRoles())) {
- // C'est un membre du staff, on check son profil MJ
- $gamemaster = $user->getLinkToGamemaster();
- if (!$gamemaster) {
- // Mais c'est pas un MJ
- $this->addFlash('danger', 'Seuls les MJ de l\'équipe peuvent préparer un événement');
- return $this->redirectToRoute('app_main');
- }
- }
- // Tous événement même non publiés à venir
- $events = $repository->findEventsToPrepare($gamemaster);
- if (count($events) < 1) {
- // Aucun événement à préparer
- $this->addFlash('danger', 'Aucun événement en cours de préparation pour le moment.');
- return $this->redirectToRoute('app_main');
- }
- return $this->render('prepare/prepare.html.twig', [
- 'event' => $event,
- 'events' => $events
- ]);
- }
- }
|