|
@@ -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
|
|
|
]);
|
|
|
}
|
|
|
}
|