|  | @@ -31,16 +31,18 @@ final class PartyController extends AbstractController
 | 
	
		
			
				|  |  |          ]);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    #[Route('/party/delete/{id}', name: 'app_party_delete', requirements: ['id' => '\d+'], methods: ['GET'])]
 | 
	
		
			
				|  |  | +    // supprimer une partie
 | 
	
		
			
				|  |  | +    #[Route('/party/delete/{id}', name: 'app_party_delete', requirements: ['id' => Requirement::UUID_V7], methods: ['GET'])]
 | 
	
		
			
				|  |  |      public function delete(?Party $party, EntityManager $manager, SlotRepository $slotRepository): Response
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        // Seuls gestionnaires (MANAGER), admin (ADMIN)
 | 
	
		
			
				|  |  | +        // Seuls admin (ADMIN)
 | 
	
		
			
				|  |  |          $user = $this->getUser();
 | 
	
		
			
				|  |  | -        if (!in_array('ROLE_ADMIN', $roles) && !in_array('ROLE_MANAGER', $roles)) {}
 | 
	
		
			
				|  |  | +        if (!in_array('ROLE_ADMIN', $roles)) {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    #[Route('/party/validate/{id}', name: 'app_party_delete', requirements: ['id' => '\d+'], methods: ['GET'])]
 | 
	
		
			
				|  |  | +    // valider une partie proposée par un MJ
 | 
	
		
			
				|  |  | +    #[Route('/party/validate/{id}', name: 'app_party_delete', requirements: ['id' => Requirement::UUID_V7], methods: ['GET'])]
 | 
	
		
			
				|  |  |      public function validate(?Party $party, EntityManager $manager, SlotRepository $slotRepository): Response
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          // Seuls gestionnaires (MANAGER), admin (ADMIN)
 | 
	
	
		
			
				|  | @@ -49,6 +51,10 @@ final class PartyController extends AbstractController
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // modifier une partie
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // ajouter une partie
 | 
	
		
			
				|  |  |      #[Route('/party/add/{id}', name: 'app_party_add', requirements: ['id' => '\d+'], methods: ['GET','POST'])]
 | 
	
		
			
				|  |  |      public function add(?Slot $slot, Request $request, SlotRepository $slotRepository, GamemasterRepository $gamemasterRepository, GameRepository $gameRepository, EntityManagerInterface $manager): Response
 | 
	
		
			
				|  |  |      {
 | 
	
	
		
			
				|  | @@ -86,29 +92,35 @@ final class PartyController extends AbstractController
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          $form->handleRequest($request);
 | 
	
		
			
				|  |  |          if ($form->isSubmitted() && $form->isValid()) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              // Ajouter les slots séléctionnés
 | 
	
		
			
				|  |  |              $slotsString = $request->request->get('party_slots');
 | 
	
		
			
				|  |  |              $gamemasterSelectedId = $request->request->get('party_gamemaster');
 | 
	
		
			
				|  |  |              $gamemasterSelected = $gamemasterRepository->findByStrID($gamemasterSelectedId);
 | 
	
		
			
				|  |  |              $gameSelectedId = $request->request->get('party_game');
 | 
	
		
			
				|  |  |              $gameSelected = $gameRepository->findByStrID($gameSelectedId);
 | 
	
		
			
				|  |  | -            $new_slots = explode("|", $slotsString);
 | 
	
		
			
				|  |  | -            foreach($new_slots as $add_this_slot) {
 | 
	
		
			
				|  |  | -                $add_this_slot_obj = $slotRepository->findById($add_this_slot);
 | 
	
		
			
				|  |  | -                $party->addSlot($add_this_slot_obj);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            $party->setStartOn(clone $party->getSlots()[0]->getStartOn());
 | 
	
		
			
				|  |  | -            $party->setEndOn(clone $party->getSlots()->last()->getEndOn());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if ($gameSelected && $gamemasterSelected) {
 | 
	
		
			
				|  |  | +                $new_slots = explode("|", $slotsString);
 | 
	
		
			
				|  |  | +                foreach($new_slots as $add_this_slot) {
 | 
	
		
			
				|  |  | +                    $add_this_slot_obj = $slotRepository->findById($add_this_slot);
 | 
	
		
			
				|  |  | +                    $party->addSlot($add_this_slot_obj);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                $party->setStartOn(clone $party->getSlots()[0]->getStartOn());
 | 
	
		
			
				|  |  | +                $party->setEndOn(clone $party->getSlots()->last()->getEndOn());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            $party->setGamemaster($gamemasterSelected);
 | 
	
		
			
				|  |  | -            $party->setGame($gameSelected);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            $manager->persist($party);
 | 
	
		
			
				|  |  | -            $manager->flush();
 | 
	
		
			
				|  |  | +                $party->setGamemaster($gamemasterSelected);
 | 
	
		
			
				|  |  | +                $party->setGame($gameSelected);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            $this->addFlash('success', 'Partie ajoutée au planning');
 | 
	
		
			
				|  |  | +                $manager->persist($party);
 | 
	
		
			
				|  |  | +                $manager->flush();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                $this->addFlash('success', 'Partie ajoutée au planning.');
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                $this->addFlash('danger', 'Pas de MJ ou de jeu sélectionné.');
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              return $this->redirectToRoute('app_main'); // @todo: à modifier !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 |