|  | @@ -14,15 +14,78 @@ use App\Entity\Gamemaster;
 | 
	
		
			
				|  |  |  final class PrepareController extends AbstractController
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      #[Route('/prepare', name: 'app_prepare')]
 | 
	
		
			
				|  |  | -    public function prepare(): Response
 | 
	
		
			
				|  |  | +    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/index.html.twig', [
 | 
	
		
			
				|  |  | -            'controller_name' => 'PrepareController',
 | 
	
		
			
				|  |  | +        return $this->render('prepare/prepare.html.twig', [
 | 
	
		
			
				|  |  | +            'event' => $event,
 | 
	
		
			
				|  |  | +            'events' => $events
 | 
	
		
			
				|  |  |          ]);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |