src/Controller/EditerSessionController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Membre;
  4. use App\Entity\Seance;
  5. use App\Entity\Session;
  6. use App\Form\SessionType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. class EditerSessionController extends AbstractController
  16. {
  17.     #[Route('/editer-session/{id?0}'name'edit-session')]
  18.     #[Security("is_granted('ROLE_ADMIN') or is_granted('ROLE_INTERVENANT')")]
  19.     public function index(Session $session=nullManagerRegistry $doctrineRequest $request,int $id,EntityManagerInterface $entityManager1): Response
  20.     {
  21.         if(!$session){
  22.             $session = new Session();
  23.         }
  24.         $sessionId $session->getId();
  25.         $repository $doctrine->getRepository(Seance::class);
  26.         $seances $repository->findBy(['sessions'=>$sessionId]);
  27.         $queryBuilder $entityManager1->createQueryBuilder();
  28.         $queryBuilder->select('mss')
  29.              ->from('App\Entity\MembreSeanceSuiviEns''mss')
  30.              ->join('mss.Seance''seance')
  31.              ->join('seance.sessions''session')
  32.              ->where('session.id = :sessions_id')
  33.              ->setParameter('sessions_id'$sessionId);
  34.         $query $queryBuilder->getQuery();
  35.         $particpants $query->getResult();
  36.         
  37.         
  38.         $form $this->createForm(SessionType::class, $session);
  39.         $form->handleRequest($request);
  40.         if($form->isSubmitted()){
  41.             
  42.                 $datedebut $session->getDatedebut();
  43.                 $datefin $session->getDatefin();
  44.                 $nbrmaxparticipants $session->getNbrmaxparticipants();
  45.                 
  46.                 if ($datefin <= $datedebut) {
  47.                     // Ajouter un message d'avertissement si la date de fin n'est pas après la date de début
  48.                     $this->addFlash('warning''La date de fin doit être après la date de début!');
  49.                     
  50.                     // Re-rendre le formulaire avec les données
  51.                     return $this->render('ajouter_session/index.html.twig', [
  52.                         'form' => $form->createView(),
  53.                     ]);
  54.                 }
  55.                 
  56.                 // Vérifier le nombre maximum de participants
  57.                 if ($nbrmaxparticipants !== null) {
  58.                     // Convertir la valeur en entier pour vérification
  59.                     $nbrmaxparticipants = (int)$nbrmaxparticipants;
  60.         
  61.                     // Vérifier que le nombre maximum de participants est un nombre entier >= 1
  62.                     if ($nbrmaxparticipants 1) {
  63.                         $this->addFlash('warning''Le nombre maximum de participants doit être supérieur ou égal à 1!');
  64.                         
  65.                         return $this->render('ajouter_session/index.html.twig', [
  66.                             'form' => $form->createView(),
  67.                         ]);
  68.                     } elseif (!filter_var($nbrmaxparticipantsFILTER_VALIDATE_INT)) {
  69.                         $this->addFlash('warning''Le nombre maximum de participants doit être un nombre valide!');
  70.                         
  71.                         return $this->render('ajouter_session/index.html.twig', [
  72.                             'form' => $form->createView(),
  73.                         ]);
  74.                     }
  75.                 }
  76.                 
  77.                 
  78.             $manager $doctrine->getManager();
  79.             $manager->persist($session);
  80.             $manager->flush();
  81.             
  82.             $this->addFlash("success"," Modifier avec succès");
  83.             return $this->redirectToRoute('edit-session', ['id' => $session->getId()]);
  84.         }
  85.         return $this->render('editer_session/index.html.twig', [
  86.             'form' => $form->createView(),
  87.             'session' =>$session,
  88.             'seances' =>$seances,
  89.             'particpants' => $particpants,
  90.         ]);
  91.     }
  92.     #[Route('/supprimer-session/{id?0}'name'delete-session'), 
  93.     IsGranted("ROLE_ADMIN")]
  94.     public function delete($idManagerRegistry $doctrine,Request $request): Response
  95. {
  96.     $session $doctrine->getRepository(Session::class)->find($id);
  97.     if (!$session) {
  98.         throw $this->createNotFoundException('No session found for id ' $id);
  99.     }
  100.     $seances $session->getSeances();
  101.     $manager $doctrine->getManager();
  102.     // Suppression de toutes les seances associées
  103.     foreach ($seances as $seance) {
  104.         $manager->remove($seance);
  105.     }
  106.     $manager->remove($session);
  107.     $manager->flush();
  108.     return $this->redirectToRoute('app_ajouter_session');
  109. }
  110. }