|
@@ -5,33 +5,76 @@ namespace App\Controller\Admin\EventConfig;
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
+use Symfony\Component\HttpFoundation\JsonResponse;
|
|
|
use Symfony\Component\Routing\Requirement\Requirement;
|
|
|
use Symfony\Component\Routing\Attribute\Route;
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
|
|
+use App\Entity\Event;
|
|
|
use App\Entity\Gamemaster;
|
|
|
use App\Repository\GamemasterRepository;
|
|
|
|
|
|
final class GamemasterController extends AbstractController
|
|
|
{
|
|
|
- #[Route('/admin/event/{id}/configure/gamemaster', name: 'app_admin_event_config_gamemaster')]
|
|
|
- public function index(GamemasterRepository $gamemaster): Response
|
|
|
+ #[Route('/admin/event/{id}/configure/gamemaster', name: 'app_admin_event_config_gamemaster', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]
|
|
|
+ public function index(?Event $event, GamemasterRepository $repository): Response
|
|
|
{
|
|
|
- $gamematers = $repository->findAll();
|
|
|
- return $this->render('gamemaster/index.html.twig', [
|
|
|
- 'controller_name' => 'GamemasterController',
|
|
|
+ $gamemasters = $repository->findAll();
|
|
|
+ return $this->render('admin/event/config/gamemaster.html.twig', [
|
|
|
+ 'gamemasters' => $gamemasters,
|
|
|
+ 'event' => $event,
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
- #[Route('/admin/event/{id}/configure/gamemaster/toggle/', name: 'app_admin_event_config_gamemaster')]
|
|
|
- public function toggle(GamemasterRepository $gamemaster): Response
|
|
|
+ #[Route('/admin/event/{id}/configure/gamemaster/toggle/', name: 'app_admin_event_config_gamemaster_toggle', requirements: ['id' => Requirement::UUID_V7], methods: ['POST'])]
|
|
|
+ public function toggle(?Event $event, Request $request, GamemasterRepository $repository, EntityManagerInterface $entityManager): JsonResponse
|
|
|
{
|
|
|
- $gamematers = $repository->findAll();
|
|
|
- return $this->render('gamemaster/index.html.twig', [
|
|
|
- 'controller_name' => 'GamemasterController',
|
|
|
- ]);
|
|
|
- }
|
|
|
+ // Récupération du MJ
|
|
|
+ $data = json_decode($request->getContent(), true);
|
|
|
+ $gamemasterID = $data['gamemasterId'] ?? null;
|
|
|
+ if (!$gamemasterID) {
|
|
|
+ return new JsonResponse(['success' => false]);
|
|
|
+ }
|
|
|
+ $gamemaster = $repository->findByStrID($gamemasterID);
|
|
|
+
|
|
|
+ if (in_array($gamemaster, $event->getGamemastersAssigned()->toArray()))
|
|
|
+ {
|
|
|
+ // Enlever le MJ de la liste
|
|
|
+ $event->removeGamemastersAssigned($gamemaster);
|
|
|
+ // Enlever les jeux spécifiques à ce MJ des jeux de l'événement
|
|
|
+ foreach($gamemaster->getGamesCanMaster() as $game) {
|
|
|
+ $notFound = true;
|
|
|
+ foreach($event->getGamemastersAssigned() as $otherGM) {
|
|
|
+ if (in_array($game, $otherGM->getGamesCanMaster()->toArray())) {
|
|
|
+ $notFound = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($notFound) {
|
|
|
+ $event->removeGameAssigned($game);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // marquer la réponse
|
|
|
+ $state='DISABLE';
|
|
|
+
|
|
|
+ } else {
|
|
|
+ // Ajouter le MJ à la liste
|
|
|
+ $event->addGamemastersAssigned($gamemaster);
|
|
|
+ // Ajouter les jeux spécifiques à ce MJ dans les jeux de l'événement
|
|
|
+ foreach($gamemaster->getGamesCanMaster() as $game) {
|
|
|
+ if (!in_array($game, $event->getGameAssigned()->toArray())) {
|
|
|
+ $event->addGameAssigned($game);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // marquer la réponse
|
|
|
+ $state='ENABLE';
|
|
|
|
|
|
- // Gérer les dispo de MJ par AJAX
|
|
|
+ }
|
|
|
+ $entityManager->persist($event);
|
|
|
+ $entityManager->flush();
|
|
|
+
|
|
|
+ return new JsonResponse(['success' => true, 'status' => $state]);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|