src/Controller/Formations/FormationsController.php line 528

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Formations;
  3. use App\Classes\AbsencesControle;
  4. use App\Entity\Formations;
  5. use App\Entity\InscriptionsFormations;
  6. use App\Entity\StagiairesAbsences;
  7. use App\Entity\StagiairesReports;
  8. use App\Form\Formations\Attestations\AttestationsRechercherFormType;
  9. use App\Form\Formations\Evaluations\EvaluationsRechercherFormType;
  10. use App\Form\Formations\FormationsRechercherFormType;
  11. use App\Form\Formations\Presences\PresencesStagiaireFormType;
  12. use App\Repository\ConvocationsEtatsRepository;
  13. use App\Repository\ConvocationsReponsesRepository;
  14. use App\Repository\ConvocationsRepository;
  15. use App\Repository\EvaluationsRattrapagesRepository;
  16. use App\Repository\EvaluationsRepository;
  17. use App\Repository\FormationsEtatsRepository;
  18. use App\Repository\FormationsRepository;
  19. use App\Repository\InscriptionsFormationsEtatsRepository;
  20. use App\Repository\InscriptionsFormationsRepository;
  21. use App\Repository\PlagesFormationsRepository;
  22. use App\Repository\PlanningsFormationsRepository;
  23. use App\Repository\SitesRepository;
  24. use App\Repository\StagiairesAbsencesRepository;
  25. use App\Repository\StagiairesReportsRepository;
  26. use App\Repository\StagiairesRepository;
  27. use Doctrine\Persistence\ManagerRegistry;
  28. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  29. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  30. use Symfony\Component\HttpFoundation\Cookie;
  31. use Symfony\Component\HttpFoundation\Request;
  32. use Symfony\Component\HttpFoundation\Response;
  33. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  34. use Symfony\Component\Routing\Annotation\Route;
  35. class FormationsController extends AbstractController
  36. {
  37.     private $message;
  38.     private string $AttestPdfDirectory//Chemin d'uplaod des fichiers PDF 'config/services.yaml'
  39.     public function __construct(SitesRepository $sitesRepositorystring $AttestPdfDirectory)
  40.     {
  41.         $this->sites $sitesRepository;
  42.         $this->AttestPdfDirectory $AttestPdfDirectory;
  43.     }
  44.     
  45.     /**
  46.      * @Route("/formations/", name="formations")
  47.      */
  48.     public function index(
  49.         FormationsRepository $formationsRepository
  50.         SitesRepository $sitesRepository,
  51.         FormationsEtatsRepository $formationsEtatsRepository,
  52.         Request $request
  53.         ): Response
  54.     {
  55.         // $formations = $formationsRepository->findAll();
  56.         $formationsEtats $formationsEtatsRepository->findAll(); 
  57.         //GESTION DES VALEURS DANS LE FORMULAIRE DE RECHERCHES
  58.         $cookie $request->cookies->get('FormationsRecherches');
  59.         if($cookie) {
  60.             $dataCookie unserialize($cookie);
  61.             $formationIntitule $dataCookie['formationIntitule'];
  62.             $formationDateDebut $dataCookie['formationDateDebut'];
  63.             $formationSite $dataCookie['formationSite'];
  64.             $formationEtat $dataCookie['formationEtat'];
  65.             $formationStagiaire $dataCookie['formationStagiaire'];
  66.             if($formationDateDebut != '') {
  67.                 $formationDateDebut $formationDateDebut;
  68.             }
  69.             else {
  70.                 $formationDateDebut null;
  71.             }
  72.             if($formationSite != '') {
  73.                 $formationSite null;
  74.             }
  75.             else {
  76.                 $formationSite null;
  77.             }
  78.             if($formationEtat != '') {
  79.                 $formationEtat $formationsEtatsRepository->find($formationEtat->getId());
  80.             }
  81.             else {
  82.                 $formationEtat null;
  83.             }
  84.         }
  85.         else {
  86.             $formationIntitule null;
  87.             $formationDateDebut null;
  88.             $formationSite null;
  89.             $formationEtat null;
  90.             $formationStagiaire null;
  91.         }
  92.         
  93.         $formulaireRecherches $this->createForm(FormationsRechercherFormType::class, null, [
  94.             'formationIntitule' => $formationIntitule,
  95.             'formationDateDebut' => $formationDateDebut,
  96.             'formationSite' => $formationSite,
  97.             'formationEtat' => $formationEtat,
  98.             'formationStagiaire' => $formationStagiaire,
  99.         ]);
  100.         $formulaireRecherches->handleRequest($request);
  101.         if($formulaireRecherches->isSubmitted() && $formulaireRecherches->isValid()) 
  102.         {
  103.             $formationIntitule $formulaireRecherches->get('intitule')->getData();
  104.             $formationDateDebut $formulaireRecherches->get('dateDebut')->getData();
  105.             $formationSite $formulaireRecherches->get('site')->getData();
  106.             $formationEtat $formulaireRecherches->get('etat')->getData();
  107.             $formationStagiaire $formulaireRecherches->get('stagiaire')->getData();
  108.             if($formationSite != null){
  109.                 $formationSite $sitesRepository->find($formationSite->getId());
  110.             } else {
  111.                 $formationSite null;
  112.             }
  113.             if($formationEtat != null){
  114.                 $formationEtat $formationsEtatsRepository->find($formationEtat->getId());
  115.             }
  116.             else {
  117.                 $formationEtat null;
  118.             }
  119.             //CREATION COOKIE STOCKAGE DES DONNEES DE RECHERCHES
  120.             $data = [
  121.                 'formationIntitule' => $formationIntitule
  122.                 'formationDateDebut' => $formationDateDebut
  123.                 'formationSite' => $formationSite,
  124.                 'formationEtat' => $formationEtat,
  125.                 'formationStagiaire' => $formationStagiaire
  126.             ];
  127.             $data serialize($data);
  128.             $expires time() + 36000;
  129.             //LOCAL
  130.             $cookie Cookie::create('FormationsRecherches'$data,  $expires'/'''truetrue);
  131.             // VPS
  132.             // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', 
  133.             $res = new Response();
  134.             $res->headers->setCookie$cookie );
  135.             $res->sendHeaders();
  136.         }
  137.         $formations $formationsRepository->findByListeFormationsRecherhes(
  138.             $formationIntitule,
  139.             $formationDateDebut,
  140.             $formationSite,
  141.             $formationEtat,
  142.             $formationStagiaire
  143.         );
  144.         
  145.         return $this->render('formations/formationsListing.html.twig', [
  146.             'formations' => $formations,
  147.             'formationsEtats' => $formationsEtats,
  148.             'formulaireRecherches' => $formulaireRecherches->createView(),
  149.             'formationStagiaire' => $formationStagiaire
  150.         ]);
  151.     }
  152.     /**
  153.      * @Route("/formations/recherches/initialiser", name="formations_recherches_reset")
  154.      */
  155.     public function recherchesReset(): Response
  156.     {
  157.         $data = [
  158.             'formationIntitule' => ''
  159.             'formationDateDebut' => ''
  160.             'formationSite' => '',
  161.             'formationEtat' => '',
  162.             'formationStagiaire' => ''
  163.         ];
  164.         $data serialize($data);
  165.         $expires time() + 36000;
  166.         //LOCAL
  167.         $cookie Cookie::create('FormationsRecherches'$data,  $expires'/'''truetrue);
  168.         // VPS
  169.         // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', true, true);
  170.         $res = new Response();
  171.         $res->headers->setCookie($cookie);
  172.         $res->sendHeaders();
  173.      
  174.         return $this->redirectToRoute('formations');
  175.     }
  176.     
  177.     /**
  178.      * @Route("/formations/afficher/{id}", name="formations_show")
  179.      */
  180.     public function showFormation($idManagerRegistry $doctrineConvocationsRepository $convocationsRepositoryPlanningsFormationsRepository $planningsFormationsRepositoryFormationsEtatsRepository $formationsEtatsRepositoryConvocationsEtatsRepository $convocationsEtatsRepositoryInscriptionsFormationsEtatsRepository $inscriptionsFormationsEtatsRepositoryPlagesFormationsRepository $plagesFormationsRepository): Response
  181.     {
  182.         $entityManager $doctrine->getManager();
  183.         $formation $entityManager->getRepository(Formations::class)->find($id);
  184.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  185.         $convocationEtat $convocationsEtatsRepository->findAll();
  186.         $inscriptionEtat $inscriptionsFormationsEtatsRepository->findAll();
  187.         // VERIFIER SI TOUTES LES REPONSES AUX CONVOC ONT ETE TRAITEES
  188.         $ConvocAllClosed $convocationsRepository->findByConvocAllClosed($id);
  189.         $formationPlanningConstruit $formation->getPlanningsFormations()[0];
  190.         // dd(empty($formationPlanningConstruit));
  191.         // dd($ConvocAllClosed);
  192.         if(empty($ConvocAllClosed) && !empty($formationPlanningConstruit)){
  193.             $ConvocAllClosed=true;
  194.         } else {
  195.             $ConvocAllClosed=false;
  196.         }
  197.         // dd($ConvocAllClosed);
  198.         
  199.         $plannings $planningsFormationsRepository->findBy(
  200.             ['formation' => $formation],
  201.             ['dateDebut' => 'ASC']
  202.         );
  203.         $convocations $convocationsRepository->findByOrderByName($id);
  204.         $domainesColors = [
  205.             => 'bg-secondary',
  206.             => 'bg-primary',
  207.             => 'bg-success',
  208.             => 'bg-warning'
  209.         ];
  210.         $jourFr = [
  211.             '1' => 'Lundi',
  212.             '2' => 'Mardi',
  213.             '3' => 'Mercredi',
  214.             '4' => 'Jeudi',
  215.             '5' => 'Vendredi',
  216.             '6' => 'Samedi',
  217.             '7' => 'Dimanche',
  218.         ];
  219.         return $this->render('formations/formationsAfficher.html.twig', [
  220.             'formation' => $formation,
  221.             'plannings' => $plannings,
  222.             'message' => $this->message,
  223.             'domainesColors' => $domainesColors,
  224.             'convocations' => $convocations,
  225.             'formationEtat' => $formationEtat,
  226.             'convocationEtat' => $convocationEtat,
  227.             'ConvocAllClosed' => $ConvocAllClosed,
  228.             'inscriptionEtat' => $inscriptionEtat,
  229.             'jourFr' => $jourFr,
  230.             'nav' => '1'
  231.         ]);
  232.     }
  233.     /**
  234.      * @Route("/formations/afficher/planning/{idFormation}", name="formations_show_planning")
  235.      */
  236.     public function showFormationPlanning($idFormationFormationsRepository $formationsRepositoryPlanningsFormationsRepository $planningsFormationsRepositoryFormationsEtatsRepository $formationsEtatsRepository): Response
  237.     {
  238.         $formation $formationsRepository->find($idFormation);
  239.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  240.         // $plannings = $planningsFormationsRepository->findBy(
  241.         //     ['formation' => $formation],
  242.         //     ['dateDebut', 'demiJournee' => 'ASC'],
  243.         // );
  244.         $plannings $planningsFormationsRepository->createQueryBuilder('p')
  245.         ->andWhere('p.formation = :idFormation')
  246.         // ->andWhere('p.etat = 1')
  247.         ->setParameter('idFormation'$idFormation)
  248.         ->orderBy('p.dateDebut''ASC')
  249.         ->addOrderBy('p.demiJournee''ASC')
  250.         ->getQuery()
  251.         ->getResult();
  252.         // dd($plannings);
  253.         $domainesColors = [
  254.             => 'bg-secondary',
  255.             => 'bg-primary',
  256.             => 'bg-success',
  257.             => 'bg-warning'
  258.         ];
  259.         $jourFr = [
  260.             '1' => 'Lundi',
  261.             '2' => 'Mardi',
  262.             '3' => 'Mercredi',
  263.             '4' => 'Jeudi',
  264.             '5' => 'Vendredi',
  265.             '6' => 'Samedi',
  266.             '7' => 'Dimanche',
  267.         ];
  268.         return $this->render('formations/formationsAfficherPlanning.html.twig', [
  269.             'formation' => $formation,
  270.             'plannings' => $plannings,
  271.             'message' => $this->message,
  272.             'domainesColors' => $domainesColors,
  273.             'formationEtat' => $formationEtat,
  274.             'jourFr' => $jourFr,
  275.             'nav' => '2'
  276.         ]);
  277.     }
  278.     /**
  279.      * @Route("/formations/afficher/inscriptions/{idFormation}", name="formations_show_inscriptions")
  280.      */
  281.     public function showFormationInscriptions(
  282.         $idFormation
  283.         FormationsRepository $formationsRepository
  284.         FormationsEtatsRepository $formationsEtatsRepository,
  285.         InscriptionsFormationsRepository $inscriptionsFormationsRepository,
  286.         InscriptionsFormationsEtatsRepository $inscriptionsFormationsEtatsRepository,
  287.         ConvocationsRepository $convocationsRepository,
  288.         StagiairesReportsRepository $stagiairesReportsRepository,
  289.         StagiairesAbsencesRepository $stagiairesAbsencesRepository
  290.         ): Response
  291.     {
  292.         $formation $formationsRepository->find($idFormation);
  293.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  294.         $inscriptions $inscriptionsFormationsRepository->createQueryBuilder('i')
  295.         ->leftJoin('i.stagiaires''s')
  296.         ->where('i.formations = ' $idFormation)
  297.         ->andWhere('i.etat < 3')
  298.         ->orderBy('s.nom''ASC')
  299.         ->addOrderBy('s.prenom''ASC')
  300.         ->getQuery()
  301.         ->getResult();
  302.         
  303.         $inscriptionEtat $inscriptionsFormationsEtatsRepository->findAll();
  304.         $stagiaireConvocationsTab = [];
  305.         $stagiairesReportsTab = [];
  306.         $stagairesAbsencesTab = [];
  307.         foreach($inscriptions as $inscription) {
  308.             $idStagiaire $inscription->getStagiaires()->getId();
  309.             $numBloc $inscription->getFormations()->getBloc()->getNumBloc();
  310.             $convocation $convocationsRepository->findBy([
  311.                 'Stagiaire' => $inscription->getStagiaires(),
  312.                 'formation' => $formation
  313.             ]);
  314.             if(!empty($convocation)) {
  315.                 $stagiaireConvocationsTab[$idStagiaire] = true;
  316.             } else {
  317.                 $stagiaireConvocationsTab[$idStagiaire] = false;
  318.             }
  319.             
  320.             $stagiairesReports $stagiairesReportsRepository->findBy([
  321.                 'stagiaires' => $idStagiaire,
  322.                 'numBloc' => $numBloc
  323.             ]);
  324.             if(!empty($stagiairesReports)) {
  325.                 $stagiairesReportsTab[$idStagiaire] = [truecount($stagiairesReports)];
  326.             } else {
  327.                 $stagiairesReportsTab[$idStagiaire] = [falsecount($stagiairesReports)];
  328.             }
  329.             $stagiairesAbsences $stagiairesAbsencesRepository->findBy([
  330.                 'stagiaires' => $inscription->getStagiaires(),
  331.                 'numBloc' => $numBloc
  332.             ]);
  333.             if(!empty($stagiairesAbsences)) {
  334.                 $stagairesAbsencesTab[$idStagiaire] = [truecount($stagiairesAbsences)];
  335.             } else {
  336.                 $stagairesAbsencesTab[$idStagiaire] = [falsecount($stagiairesAbsences)];
  337.             }
  338.         }
  339.         // dd($stagiairesReportsTab);
  340.         
  341.         
  342.         $jourFr = [
  343.             '1' => 'Lundi',
  344.             '2' => 'Mardi',
  345.             '3' => 'Mercredi',
  346.             '4' => 'Jeudi',
  347.             '5' => 'Vendredi',
  348.             '6' => 'Samedi',
  349.             '7' => 'Dimanche',
  350.         ];
  351.         return $this->render('formations/formationsAfficherInscriptions.html.twig', [
  352.             'formation' => $formation,
  353.             'inscriptions' => $inscriptions,
  354.             'formationEtat' => $formationEtat,
  355.             'inscriptionEtat' => $inscriptionEtat,
  356.             'stagiaireConvocationsTab' => $stagiaireConvocationsTab,
  357.             'stagiairesReportsTab' => $stagiairesReportsTab,
  358.             'stagairesAbsencesTab' => $stagairesAbsencesTab,
  359.             'jourFr' => $jourFr,
  360.             'nav' => '3'
  361.         ]);
  362.     }
  363.     /**
  364.      * @Route("/formations/afficher/convocations/{idFormation}", name="formations_show_convocations")
  365.      */
  366.     public function showFormationConvocations(
  367.         $idFormation
  368.         FormationsRepository $formationsRepository
  369.         ConvocationsRepository $convocationsRepository
  370.         FormationsEtatsRepository $formationsEtatsRepository
  371.         ConvocationsEtatsRepository $convocationsEtatsRepository,
  372.         StagiairesReportsRepository $stagiairesReportsRepository,
  373.         StagiairesAbsencesRepository $stagiairesAbsencesRepository,
  374.         ConvocationsReponsesRepository $convocationsReponsesRepository
  375.         ): Response
  376.     {
  377.         $formation $formationsRepository->find($idFormation);
  378.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  379.         $convocationEtat $convocationsEtatsRepository->findAll();
  380.         $convocationsResponsesListe $convocationsReponsesRepository->findAll();
  381.         // VERIFIER SI TOUTES LES REPONSES AUX CONVOC ONT ETE TRAITEES
  382.         $ConvocAllClosed $convocationsRepository->findByConvocAllClosed($idFormation);
  383.         $formationPlanningConstruit $formation->getPlanningsFormations()[0];
  384.         
  385.         if(empty($ConvocAllClosed) && !empty($formationPlanningConstruit)){
  386.             $ConvocAllClosed=true;
  387.         } else {
  388.             $ConvocAllClosed=false;
  389.         }
  390.         $convocations $convocationsRepository->findByOrderByName($idFormation);
  391.         $nbreTotalConvoc count($convocations);
  392.         $stagiairesReportsTab = [];
  393.         $stagairesAbsencesTab = [];
  394.         foreach($convocations as $convocation) {
  395.             $idStagiaire $convocation->getStagiaire()->getId();
  396.             $numBloc $convocation->getFormation()->getBloc()->getNumBloc();
  397.             
  398.             $stagiairesReports $stagiairesReportsRepository->findBy([
  399.                 'stagiaires' => $idStagiaire,
  400.                 'numBloc' => $numBloc
  401.             ]);
  402.             if(!empty($stagiairesReports)) {
  403.                 $stagiairesReportsTab[$idStagiaire] = [truecount($stagiairesReports)];
  404.             } else {
  405.                 $stagiairesReportsTab[$idStagiaire] = [falsecount($stagiairesReports)];
  406.             }
  407.             $stagiairesAbsences $stagiairesAbsencesRepository->findBy([
  408.                 'stagiaires' => $convocation->getStagiaire(),
  409.                 'numBloc' => $numBloc
  410.             ]);
  411.             if(!empty($stagiairesAbsences)) {
  412.                 $stagairesAbsencesTab[$idStagiaire] = [truecount($stagiairesAbsences)];
  413.             } else {
  414.                 $stagairesAbsencesTab[$idStagiaire] = [falsecount($stagiairesAbsences)];
  415.             }
  416.         }
  417.         
  418.         //Vérification si toutes les convocations sont clôturées
  419.         $convocationsToutesTraitees $convocationsRepository->createQueryBuilder('s')
  420.             ->join('s.formation''f')
  421.             ->andWhere('f.id = '.$idFormation)
  422.             ->andWhere('s.etat = 1')
  423.             ->andWhere("s.reponse IS NULL")
  424.             ->getQuery()
  425.             ->getResult();
  426.             
  427.             if(empty($convocationsToutesTraitees)) {
  428.                 $traitementConvocProgress true;
  429.             }
  430.             else {
  431.                 $traitementConvocProgress false;
  432.             }
  433.             // dd($ConvocAllClosed);
  434.             
  435.         $jourFr = [
  436.             '1' => 'Lundi',
  437.             '2' => 'Mardi',
  438.             '3' => 'Mercredi',
  439.             '4' => 'Jeudi',
  440.             '5' => 'Vendredi',
  441.             '6' => 'Samedi',
  442.             '7' => 'Dimanche',
  443.         ];
  444.         return $this->render('formations/formationsAfficherConvocations.html.twig', [
  445.             'formation' => $formation,
  446.             'message' => $this->message,
  447.             'convocations' => $convocations,
  448.             'formationEtat' => $formationEtat,
  449.             'convocationEtat' => $convocationEtat,
  450.             'convocationsResponsesListe' => $convocationsResponsesListe,
  451.             'ConvocAllClosed' => $ConvocAllClosed,
  452.             'traitementConvocProgress' => $traitementConvocProgress,
  453.             'stagiairesReportsTab' => $stagiairesReportsTab,
  454.             'stagairesAbsencesTab' => $stagairesAbsencesTab,
  455.             'jourFr' => $jourFr,
  456.             'nav' => '4'
  457.         ]);
  458.     }
  459.     /**
  460.      * @Route("/formations/afficher/presences/{idFormation}", name="formations_show_presences")
  461.      */
  462.     public function showFormationPresences(
  463.         $idFormation
  464.         FormationsRepository $formationsRepository
  465.         PlanningsFormationsRepository $planningsFormationsRepository
  466.         FormationsEtatsRepository $formationsEtatsRepository
  467.         PlagesFormationsRepository $plagesFormationsRepository
  468.         ): Response
  469.     {
  470.         $formation $formationsRepository->find($idFormation);
  471.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  472.         
  473.         $plannings $planningsFormationsRepository->findBy(
  474.             ['formation' => $formation],
  475.             ['dateDebut' => 'ASC']
  476.         );
  477.         $tabAbsences = [];
  478.         //CALCUL DES ABSENCES
  479.         foreach($plannings as $planning) {
  480.             $plagesAbsences $plagesFormationsRepository->createQueryBuilder('p')
  481.                 ->select("p")
  482.                 ->andWhere('p.planning = '.$planning->getId())
  483.                 ->andWhere('p.presences = 2')
  484.                 ->andWhere('p.etat = 1')
  485.                 // ->groupBy('p.stagiaire')
  486.                 ->getQuery()
  487.                 ->getResult();
  488.             // dd($plagesAbsences);
  489.             $nbreAbsentsPlage count($plagesAbsences);
  490.             $plagesStagiaires $plagesFormationsRepository->createQueryBuilder('p')
  491.                 ->select("p")
  492.                 ->andWhere('p.planning = '.$planning->getId())
  493.                 // ->groupBy('p.stagiaire')
  494.                 ->getQuery()
  495.                 ->getResult();
  496.             $nbreStagiairesPlage count($plagesStagiaires);
  497.             $tabAbsences[$planning->getId()]=array($nbreAbsentsPlage$nbreStagiairesPlage);
  498.         }
  499.         // dd($tabAbsences);
  500.         $domainesColors = [
  501.             => 'bg-secondary',
  502.             => 'bg-primary',
  503.             => 'bg-success',
  504.             => 'bg-warning'
  505.         ];
  506.         $jourFr = [
  507.             '1' => 'Lundi',
  508.             '2' => 'Mardi',
  509.             '3' => 'Mercredi',
  510.             '4' => 'Jeudi',
  511.             '5' => 'Vendredi',
  512.             '6' => 'Samedi',
  513.             '7' => 'Dimanche',
  514.         ];
  515.         return $this->render('formations/formationsAfficherPresences2.html.twig', [
  516.             'formation' => $formation,
  517.             'plannings' => $plannings,
  518.             'domainesColors' => $domainesColors,
  519.             'formationEtat' => $formationEtat,
  520.             'jourFr' => $jourFr,
  521.             'tabAbsences' => $tabAbsences,
  522.             'nav' => '6',
  523.         ]);
  524.     }
  525.     /**
  526.      * @Route("/formations/afficher/evaluations/{idFormation}", name="formations_show_eval")
  527.      */
  528.     public function showFormationEval(
  529.         $idFormation
  530.         EvaluationsRepository $evaluationsRepository
  531.         EvaluationsRattrapagesRepository $evaluationsRattrapagesRepository
  532.         FormationsRepository $formationsRepository
  533.         FormationsEtatsRepository $formationsEtatsRepository,
  534.         InscriptionsFormationsRepository $inscriptionsFormationsRepository,
  535.         Request $request
  536.         ): Response
  537.     {
  538.         $formation $formationsRepository->find($idFormation);
  539.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  540.         $inscriptions $inscriptionsFormationsRepository->findBy(
  541.             [
  542.                 'formations' => $formation,
  543.                 'etat' => 2
  544.             ]
  545.         );
  546.         $rechercheExiste null;
  547.         //GESTION DES VALEURS DANS LE FORMULAIRE DE RECHERCHES
  548.             $cookie $request->cookies->get('EvaluationsRecherches');
  549.             if($cookie) {
  550.                 $rechercheExiste 1;
  551.                 $dataCookie unserialize($cookie);
  552.                 $evaluationStagiaireNom $dataCookie['evaluationStagiaireNom'];
  553.                 $evaluationSaisies $dataCookie['evaluationSaisies'];
  554.                 $evaluationResultat $dataCookie['evaluationResultat'];
  555.                 $evaluationType $dataCookie['evaluationType'];
  556.                 if($evaluationStagiaireNom != '') {
  557.                     $evaluationStagiaireNom $evaluationStagiaireNom;
  558.                 }
  559.                 else {
  560.                     $evaluationStagiaireNom null;
  561.                 }
  562.                 if($evaluationSaisies != '') {
  563.                     $evaluationSaisies $evaluationSaisies;
  564.                 }
  565.                 else {
  566.                     $evaluationSaisies null;
  567.                 }
  568.                 if($evaluationResultat != '') {
  569.                     $evaluationResultat $evaluationResultat;
  570.                 }
  571.                 else {
  572.                     $evaluationResultat null;
  573.                 }
  574.                 
  575.                 if($evaluationType != '') {
  576.                     $evaluationType $evaluationType;
  577.                 }
  578.                 else {
  579.                     $evaluationType null;
  580.                 }
  581.             }
  582.             else {
  583.                 $evaluationStagiaireNom null;
  584.                 $evaluationSaisies null;
  585.                 $evaluationResultat null;
  586.                 $evaluationType null;
  587.             }
  588.             
  589.             $formulaireRecherches $this->createForm(EvaluationsRechercherFormType::class, null, [
  590.                 'evaluationStagiaireNom' => $evaluationStagiaireNom,
  591.                 'evaluationSaisies' => $evaluationSaisies,
  592.                 'evaluationResultat' => $evaluationResultat,
  593.                 'evaluationType' => $evaluationType
  594.             ]);
  595.             $formulaireRecherches->handleRequest($request);
  596.             if($formulaireRecherches->isSubmitted() && $formulaireRecherches->isValid()) 
  597.             {
  598.                 $evaluationStagiaireNom $formulaireRecherches->get('stagiaireNom')->getData();
  599.                 $evaluationSaisies $formulaireRecherches->get('saisies')->getData();
  600.                 $evaluationResultat $formulaireRecherches->get('resultat')->getData();
  601.                 $evaluationType $formulaireRecherches->get('typeEval')->getData();
  602.                 //CREATION COOKIE STOCKAGE DES DONNEES DE RECHERCHES
  603.                 $data = [
  604.                     'evaluationStagiaireNom' => $evaluationStagiaireNom
  605.                     'evaluationSaisies' => $evaluationSaisies
  606.                     'evaluationResultat' => $evaluationResultat
  607.                     'evaluationType' => $evaluationType
  608.                 ];
  609.                 $data serialize($data);
  610.                 $expires time() + 36000;
  611.                 //LOCAL
  612.                 $cookie Cookie::create('EvaluationsRecherches'$data,  $expires'/'''truetrue);
  613.                 // VPS
  614.                 // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', 
  615.                 $res = new Response();
  616.                 $res->headers->setCookie$cookie );
  617.                 $res->sendHeaders();
  618.             }
  619.         // FIN TRAITEMENT DES RECHERCHES
  620.         
  621.         if($evaluationType == 1) {
  622.             $evaluations $evaluationsRepository->findByEvaluationsRecherches($formation$evaluationStagiaireNom$evaluationSaisies$evaluationResultat);
  623.             $evaluationsRattapages $evaluationsRattrapagesRepository->findByEvaluationsRattrapagesRecherches($formation$evaluationStagiaireNom$evaluationSaisies$evaluationResultat);
  624.             $evaluationsRattrapagesTab = [];
  625.             foreach($evaluationsRattapages as $rattrapage) {
  626.                 $evaluationsRattrapagesTab[$rattrapage->getStagiaire()->getId()] = 1;
  627.             }
  628.             $evaluationsRattapages "";
  629.         }
  630.         else if($evaluationType == 2) {
  631.             $evaluations "";
  632.             $evaluationsRattapages $evaluationsRattrapagesRepository->findByEvaluationsRattrapagesRecherches($formation$evaluationStagiaireNom$evaluationSaisies$evaluationResultat);
  633.             $evaluationsRattrapagesTab = [];
  634.             foreach($evaluationsRattapages as $rattrapage) {
  635.                 $evaluationsRattrapagesTab[$rattrapage->getStagiaire()->getId()] = 1;
  636.             }
  637.             // dd($evaluationsRattapages);
  638.         }
  639.         else {
  640.             $evaluations $evaluationsRepository->findByEvaluationsRecherches($formation$evaluationStagiaireNom$evaluationSaisies$evaluationResultat);
  641.             $evaluationsRattapages $evaluationsRattrapagesRepository->findByEvaluationsRattrapagesRecherches($formation$evaluationStagiaireNom$evaluationSaisies$evaluationResultat);
  642.             
  643.             $evaluationsRattrapagesTab = [];
  644.             foreach($evaluationsRattapages as $rattrapage) {
  645.                 $evaluationsRattrapagesTab[$rattrapage->getStagiaire()->getId()] = 1;
  646.             }
  647.         }
  648.         
  649.         
  650.         return $this->render('formations/formationsAfficherEvaluations.html.twig', [
  651.             'formation' => $formation,
  652.             'formationEtat' => $formationEtat,
  653.             'nav' => '7',
  654.             'evaluations' => $evaluations,
  655.             'evaluationsRattapages' => $evaluationsRattapages,
  656.             'evaluationsRattrapagesTab' => $evaluationsRattrapagesTab,
  657.             'inscriptions' => $inscriptions,
  658.             'formulaireRecherches' => $formulaireRecherches->createView(),
  659.             'rechercheExiste' => $rechercheExiste
  660.         ]);
  661.     }
  662.     /**
  663.      * @Route("/formations/afficher/evaluations/rechercher/initialiser/{idFormation}", name="formations_show_eval_recherches_reset")
  664.      */
  665.     public function showFormationEvalRecherchesReset(
  666.         $idFormation
  667.     ): Response
  668.     {
  669.         $data = [
  670.             'evaluationStagiaireNom' => ''
  671.             'evaluationSaisies' => ''
  672.             'evaluationResultat' => '',
  673.             'evaluationSaisies' => ''
  674.             'evaluationType' => ''
  675.         ];
  676.         $data serialize($data);
  677.         $expires time() + 36000;
  678.         //LOCAL
  679.         $cookie Cookie::create('EvaluationsRecherches'$data,  $expires'/'''truetrue);
  680.         // VPS
  681.         // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', true, true);
  682.         $res = new Response();
  683.         $res->headers->setCookie($cookie);
  684.         $res->sendHeaders();
  685.      
  686.         return $this->redirectToRoute('formations_show_eval', [
  687.             'idFormation' => $idFormation
  688.         ]);
  689.     }
  690.     /**
  691.      * @Route("/formations/afficher/attestations/{idFormation}", name="formations_show_attestations")
  692.      */
  693.     public function showFormationAttestations(
  694.         $idFormation
  695.         FormationsRepository $formationsRepository
  696.         FormationsEtatsRepository $formationsEtatsRepository,
  697.         InscriptionsFormationsRepository $inscriptionsFormationsRepository,
  698.         EvaluationsRepository $evaluationsRepository,
  699.         EvaluationsRattrapagesRepository $evaluationsRattrapagesRepository,
  700.         plagesFormationsRepository $plagesFormationsRepository,
  701.         ConvocationsRepository $convocationsRepository,
  702.         Request $request
  703.         ): Response
  704.     {
  705.         $formation $formationsRepository->find($idFormation);
  706.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  707.         $rechercheExiste null;
  708.         //GESTION DES VALEURS DANS LE FORMULAIRE DE RECHERCHES
  709.             $cookie $request->cookies->get('AttestationsRecherches');
  710.             if($cookie) {
  711.                 $rechercheExiste 1;
  712.                 $dataCookie unserialize($cookie);
  713.                 
  714.                 $attestationStagiaireNom $dataCookie['attestationStagiaireNom'];
  715.                 $attestationResultat $dataCookie['attestationResultat'];
  716.                 if($attestationStagiaireNom != '') {
  717.                     $attestationStagiaireNom $attestationStagiaireNom;
  718.                 }
  719.                 else {
  720.                     $attestationStagiaireNom null;
  721.                 }
  722.                 if($attestationResultat != '') {
  723.                     $attestationResultat $attestationResultat;
  724.                 }
  725.                 else {
  726.                     $attestationResultat null;
  727.                 }   
  728.             }
  729.             else {
  730.                 $attestationStagiaireNom null;
  731.                 $attestationResultat null;
  732.             }
  733.             
  734.             $formulaireRecherches $this->createForm(AttestationsRechercherFormType::class, null, [
  735.                 'attestationStagiaireNom' => $attestationStagiaireNom,
  736.                 'attestationResultat' => $attestationResultat,
  737.             ]);
  738.             $formulaireRecherches->handleRequest($request);
  739.             if($formulaireRecherches->isSubmitted() && $formulaireRecherches->isValid()) 
  740.             {
  741.                 $attestationStagiaireNom $formulaireRecherches->get('stagiaireNom')->getData();
  742.                 $attestationResultat $formulaireRecherches->get('resultat')->getData();
  743.                 //CREATION COOKIE STOCKAGE DES DONNEES DE RECHERCHES
  744.                 $data = [
  745.                     'attestationStagiaireNom' => $attestationStagiaireNom
  746.                     'attestationResultat' => $attestationResultat
  747.                 ];
  748.                 $data serialize($data);
  749.                 $expires time() + 36000;
  750.                 //LOCAL
  751.                 $cookie Cookie::create('AttestationsRecherches'$data,  $expires'/'''truetrue);
  752.                 // VPS
  753.                 // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', 
  754.                 $res = new Response();
  755.                 $res->headers->setCookie$cookie );
  756.                 $res->sendHeaders();
  757.             }
  758.         // FIN TRAITEMENT DES RECHERCHES
  759.         $inscriptions $inscriptionsFormationsRepository->findByAttestationsRecherches(
  760.             $formation,
  761.             $attestationStagiaireNom
  762.         );
  763.         // dd($inscriptions);
  764.         $evaluationsTab = [];
  765.         $evaluationTabPSC1 = [];
  766.         $evaluationsRattrapagesTab = [];
  767.         $evaluationsRattrapagesTabPSC1 = [];
  768.         
  769.         $absences = [];
  770.         foreach($inscriptions as $inscription) {
  771.             $stagiaire $inscription->getStagiaires();
  772.             $idStagiaire $stagiaire->getId();
  773.             $evaluations $evaluationsRepository->findBy([
  774.                 'formation' => $formation,
  775.                 'stagiaire' => $stagiaire,
  776.                 'validation' => [1,2]
  777.             ]);
  778.             
  779.             $evaluationsRattrapages $evaluationsRattrapagesRepository->findBy([
  780.                 'formation' => $formation,
  781.                 'stagiaire' => $stagiaire,
  782.                 'validation' => [1,2]
  783.             ]);
  784.             
  785.             $evaluationsTab[$idStagiaire] = count($evaluations);
  786.             if($evaluations) {
  787.                 $evaluationTabPSC1[$idStagiaire] = $evaluations[0]->getPart2PSC1();
  788.             }
  789.             else {
  790.                 $evaluationTabPSC1[$idStagiaire] = '';
  791.             }
  792.             $evaluationsRattrapagesTab[$idStagiaire] = count($evaluationsRattrapages);
  793.             if($evaluationsRattrapages) {
  794.                 $evaluationsRattrapagesTabPSC1[$idStagiaire] = $evaluationsRattrapages[0]->getPart2PSC1();
  795.             }
  796.             else {
  797.                 $evaluationsRattrapagesTabPSC1[$idStagiaire] = '';
  798.             }
  799.             $absencesStagiaires $plagesFormationsRepository->findByPlagesAbsences($stagiaire$idFormation);
  800.             if(count($absencesStagiaires) > 0) {
  801.                 $absences[$stagiaire->getId()] = true;
  802.             } else {
  803.                 $absences[$stagiaire->getId()] = false;
  804.             }
  805.             //TABLEAU DES CONVOCATIONS POUR DEBLOQUER STAGIAIRE AVANT CLOTURE DE FORMATION
  806.             $tabConvocation = [];
  807.             foreach($inscriptions as $inscription) {
  808.                 $stagiaire $inscription->getStagiaires();
  809.                 $idStagiaire $stagiaire->getId();
  810.                 
  811.                 $convocation $convocationsRepository->findBy(['Stagiaire' => $stagiaire'formation' => $formation]);
  812.                 $idConvocation $convocation[0]->getId();
  813.                 $tabConvocation[$idStagiaire] = $idConvocation;
  814.             }
  815.             // dd($tabConvocation);
  816.         }
  817.         $jourFr = [
  818.             '1' => 'Lundi',
  819.             '2' => 'Mardi',
  820.             '3' => 'Mercredi',
  821.             '4' => 'Jeudi',
  822.             '5' => 'Vendredi',
  823.             '6' => 'Samedi',
  824.             '7' => 'Dimanche',
  825.         ];
  826.         return $this->render('formations/formationsAfficherAttestations.html.twig', [
  827.             'formation' => $formation,
  828.             'formationEtat' => $formationEtat,
  829.             'inscriptions' => $inscriptions,
  830.             'evaluationsTab' => $evaluationsTab,
  831.             'evaluationsRattrapagesTab' => $evaluationsRattrapagesTab,
  832.             'evaluationsTabPSC1' => $evaluationTabPSC1,
  833.             'evaluationsRattrapagesTabPSC1' => $evaluationsRattrapagesTabPSC1,
  834.             'formulaireRecherches' => $formulaireRecherches->createView(),
  835.             'absences' => $absences,
  836.             'jourFr' => $jourFr,
  837.             'nav' => '8',
  838.             'tabConvocation' => $tabConvocation
  839.         ]);
  840.     }
  841.     /**
  842.      * @Route("/formations/afficher/attestations/rechercher/initialiser/{idFormation}", name="formations_show_attestations_recherches_reset")
  843.      */
  844.     public function showFormationAttestationsRecherchesReset(
  845.         $idFormation
  846.     ): Response
  847.     {
  848.         $data = [
  849.             'attestationStagiaireNom' => ''
  850.             'attestationResultat' => '',
  851.         ];
  852.         $data serialize($data);
  853.         $expires time() + 36000;
  854.         //LOCAL
  855.         $cookie Cookie::create('AttestationsRecherches'$data,  $expires'/'''truetrue);
  856.         // VPS
  857.         // $cookie = Cookie::create('FormationsRecherches', $data,  $expires, '/', 'ama64.fr', true, true);
  858.         $res = new Response();
  859.         $res->headers->setCookie($cookie);
  860.         $res->sendHeaders();
  861.      
  862.         return $this->redirectToRoute('formations_show_attestations', [
  863.             'idFormation' => $idFormation
  864.         ]);
  865.     }
  866.     /**
  867.      * @Route("/formations/afficher/attestations/finFormation/{idFormation}", name="formations_show_attestations_fin")
  868.      */
  869.     public function showFormationAttestationsFin(
  870.         $idFormation
  871.         FormationsRepository $formationsRepository
  872.         // PlanningsFormationsRepository $planningsFormationsRepository,
  873.         FormationsEtatsRepository $formationsEtatsRepository
  874.         PlagesFormationsRepository $plagesFormationsRepository,
  875.         InscriptionsFormationsRepository $inscriptionsFormationsRepository
  876.         ): Response
  877.     {
  878.         $formation $formationsRepository->find($idFormation);
  879.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  880.         
  881.         // $plannings = $planningsFormationsRepository->findBy(
  882.         //     ['formation' => $formation],
  883.         //     ['dateDebut' => 'ASC']
  884.         // );
  885.         $inscriptions $inscriptionsFormationsRepository->findByListeStagiairesInscriptionsPresences(2$idFormation)->getQuery()->getResult();
  886.         // dd($inscriptions);
  887.         $tabAttestationsStagiairesPresents = [];
  888.         foreach($inscriptions as $inscription) {
  889.             $plagesAbsents $plagesFormationsRepository->createQueryBuilder('p')
  890.                 ->join('p.planning''f')
  891.                 ->join('p.stagiaire''s')
  892.                 ->andWhere('f.formation = '.$idFormation)
  893.                 ->andWhere('s.id = '.$inscription->getStagiaires()->getId())
  894.                 ->andWhere('p.presences = 2')
  895.                 ->andWhere('p.etat = 1')
  896.                 ->getQuery()
  897.                 ->getResult();
  898.             if(empty($plagesAbsents)) {
  899.                 $tabAttestationsStagiairesPresents[] = [
  900.                     'idStagiaire' => $inscription->getStagiaires()->getId(),
  901.                     'nomPrenom' => $inscription->getStagiaires()->getNom().' '.$inscription->getStagiaires()->getPrenom()
  902.                 ];
  903.             }
  904.         }
  905.         // dd($tabAttestationsStagiairesPresents);
  906.         // $plagesAbsents = '';
  907.         // foreach($plagesPresents as $plagePresent) {
  908.         //     $plagesAbsents = $plagesFormationsRepository->createQueryBuilder('p')
  909.         //     ->join('p.planning', 'f')
  910.         //     ->join('p.stagiaire', 's')
  911.         //     ->andWhere('f.formation = '.$idFormation)
  912.         //     ->andWhere('p.presences = 2')
  913.         //     ->andWhere('s.id = '.$plagePresent->getStagiaire()->getId())
  914.         //     ->orderBy('s.nom', 'ASC')
  915.         //     ->getQuery()
  916.         //     ->getResult();
  917.         //     // dd($plagesAbsents);
  918.             
  919.         // }
  920.         // // dd($tabAttestationsStagiairesPresents);
  921.         $domainesColors = [
  922.             => 'bg-secondary',
  923.             => 'bg-primary',
  924.             => 'bg-success',
  925.             => 'bg-warning'
  926.         ];
  927.         $jourFr = [
  928.             '1' => 'Lundi',
  929.             '2' => 'Mardi',
  930.             '3' => 'Mercredi',
  931.             '4' => 'Jeudi',
  932.             '5' => 'Vendredi',
  933.             '6' => 'Samedi',
  934.             '7' => 'Dimanche',
  935.         ];
  936.         return $this->render('formations/formationsAfficherAttestationsFinFormation.html.twig', [
  937.             
  938.             'formation' => $formation,
  939.             'tabAttestationsStagiairesPresents' => $tabAttestationsStagiairesPresents,
  940.             // 'plagesAbsents' => $plagesAbsents,
  941.             // 'plannings' => $plannings,
  942.             // 'message' => $this->message,
  943.             // 'domainesColors' => $domainesColors,
  944.             'formationEtat' => $formationEtat,
  945.             'jourFr' => $jourFr,
  946.             'nav' => '9'
  947.         ]);
  948.     }
  949.     /**
  950.      * @Route("/formations/afficher/bilan/{idFormation}", name="formations_show_bilan")
  951.      */
  952.     public function showFormationBilan(
  953.         $idFormation
  954.         FormationsRepository $formationsRepository
  955.         FormationsEtatsRepository $formationsEtatsRepository,
  956.         ConvocationsRepository $convocationsRepository,
  957.         PlagesFormationsRepository $plagesFormationsRepository,
  958.         EvaluationsRepository $evaluationsRepository,
  959.         EvaluationsRattrapagesRepository $evaluationsRattrapagesRepository
  960.         ): Response
  961.     {
  962.         $formation $formationsRepository->find($idFormation);
  963.         // dd($formation->getFormationInsciptions()[1]->getStagiaires()->getPlagesFormations()[0]);
  964.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  965.         
  966.         //CONVOCATIONS : nbre de convoc / nbre de s'engage / nbre de demande de report / nbre contientieux
  967.         $convocationsTab = [];
  968.         $convocations $convocationsRepository->findByConvocBilan($idFormation'');
  969.         $convocationsTab['total'] = $convocations;
  970.         $convocations $convocationsRepository->findByConvocBilan($idFormation, [2]);
  971.         $convocationsTab['engage'] = $convocations;
  972.         $convocations $convocationsRepository->findByConvocBilan($idFormation, [3,4,5,6,7,8,9]);
  973.         $convocationsTab['report'] = $convocations;
  974.         $convocations $convocationsRepository->findByConvocBilan($idFormation, [1,10,11]);
  975.         $convocationsTab['contentieux'] = $convocations;
  976.         
  977.         //
  978.         $plagesTab = [];
  979.         $plages $plagesFormationsRepository->findByPlagesBilan($idFormationnull);
  980.         $plagesTab['total'] = $plages;
  981.         $plages $plagesFormationsRepository->findByPlagesBilan($idFormation1);
  982.         $plagesTab['presences'] = ($plages*100)/$plagesTab['total'];
  983.         $plages $plagesFormationsRepository->findByPlagesBilan($idFormation2);
  984.         $plagesTab['absences'] = ($plages*100)/$plagesTab['total'];
  985.         //
  986.         $evaluationsTab = [];
  987.         $evaluationsRattrapagesTab = [];
  988.         if($formation->getBloc()->getNumBloc() == 1) {
  989.             $evaluations $evaluationsRepository->findByEvaluationsBilan($idFormationnull);
  990.             $evaluationsTab['total'] = $evaluations;
  991.     
  992.             
  993.             $evaluations $evaluationsRepository->findByEvaluationsBilan($idFormation1);
  994.             $evaluationsTab['reussite'] = ($evaluations*100)/$evaluationsTab['total'];
  995.     
  996.             $evaluations $evaluationsRepository->findByEvaluationsBilan($idFormation2);
  997.             $evaluationsTab['echec'] = ($evaluations*100)/$evaluationsTab['total'];
  998.             $evaluationsRattrapages $evaluationsRattrapagesRepository->findByEvalutionsRattrapagesBilan($idFormationnull);
  999.             $evaluationsRattrapagesTab['total'] = $evaluationsRattrapages;
  1000.             if($evaluationsRattrapagesTab['total'] != 0) {
  1001.                 $evaluationsRattrapages $evaluationsRattrapagesRepository->findByEvalutionsRattrapagesBilan($idFormation1);
  1002.                 $evaluationsRattrapagesTab['reussite'] = ($evaluationsRattrapages*100)/$evaluationsRattrapagesTab['total'];
  1003.         
  1004.                 $evaluationsRattrapages $evaluationsRattrapagesRepository->findByEvalutionsRattrapagesBilan($idFormation2);
  1005.                 $evaluationsRattrapagesTab['echec'] = ($evaluationsRattrapages*100)/$evaluationsRattrapagesTab['total'];
  1006.             }
  1007.             else {
  1008.                 $evaluationsRattrapagesTab['reussite'] = 0;
  1009.                 $evaluationsRattrapagesTab['echec'] = 0;
  1010.             }
  1011.         }
  1012.         // CHEMIN TELECHARGEMENT DES ATTESTATIONS ZIP
  1013.         $domainesColors = [
  1014.             => 'bg-secondary',
  1015.             => 'bg-primary',
  1016.             => 'bg-success',
  1017.             => 'bg-warning'
  1018.         ];
  1019.         $jourFr = [
  1020.             '1' => 'Lundi',
  1021.             '2' => 'Mardi',
  1022.             '3' => 'Mercredi',
  1023.             '4' => 'Jeudi',
  1024.             '5' => 'Vendredi',
  1025.             '6' => 'Samedi',
  1026.             '7' => 'Dimanche',
  1027.         ];
  1028.         return $this->render('formations/formationsAfficherBilan.html.twig', [
  1029.             
  1030.             'formation' => $formation,
  1031.             'formationEtat' => $formationEtat,
  1032.             'convocationsTab' => $convocationsTab,
  1033.             'plagesTab' => $plagesTab,
  1034.             'evaluationsTab' => $evaluationsTab,
  1035.             'evaluationsRattrapagesTab' => $evaluationsRattrapagesTab,
  1036.             'jourFr' => $jourFr,
  1037.             'nav' => '10'
  1038.         ]);
  1039.     }
  1040.     /**
  1041.      * @Route("/formations/bilan/attestations/telecharger/{idFormation}", name="formations_bilan_attestations_zip_download")
  1042.      */
  1043.     public function attestationsZipDownload(
  1044.         $idFormation,
  1045.         FormationsRepository $formationsRepository
  1046.         ): Response
  1047.     {
  1048.         $formation $formationsRepository->find($idFormation); 
  1049.         $formationIntitule $formation->getIntitule();
  1050.         $formationIntitule str_replace(' ''-'$formationIntitule);    
  1051.         return (new BinaryFileResponse(
  1052.             $this->AttestPdfDirectory.'idFormation-'.$idFormation.'/'.$formationIntitule.'_Bilan.zip'
  1053.         ))->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT$formationIntitule.'_Bilan.zip');
  1054.     }
  1055.     /**
  1056.      * @Route("/formations/attestations/PSC1/afficher/{idFormation}", name="formations_show_psc1")
  1057.      */
  1058.     public function showPSC1(
  1059.         $idFormation
  1060.         FormationsRepository $formationsRepository
  1061.         FormationsEtatsRepository $formationsEtatsRepository,
  1062.         PlagesFormationsRepository $plagesFormationsRepository,
  1063.         PlanningsFormationsRepository $planningsFormationsRepository
  1064.         ): Response
  1065.     {
  1066.         $formation $formationsRepository->find($idFormation);
  1067.         $formationEtat $formationsEtatsRepository->find($formation->getEtat());
  1068.         
  1069.         // $listeStagiaires = $plagesFormationsRepository->findByPlagesPSC1($idFormation);
  1070.         // $listePlagesPSC1 = $plagesFormationsRepository->findByPlagesPSC1Toutes($idFormation);
  1071.         $plannings $planningsFormationsRepository->createQueryBuilder('planning')
  1072.         ->andWhere('planning.formation IN (:val1)')
  1073.         ->andWhere('planning.etat = 1')
  1074.         ->andWhere("planning.psc1Groupe1 = 1 OR planning.psc1Groupe2 = 1")
  1075.         ->setParameter('val1'$formation)
  1076.         ->getQuery()
  1077.         ->getResult();
  1078.         // dd($plannings);
  1079.         $planningsDateDebut1 $plannings[0]->getDateDebut();
  1080.         $planningsDateDebut2 $plannings[1]->getDateDebut();
  1081.         $plagesToutes $plagesFormationsRepository->createQueryBuilder('plages')
  1082.         ->leftJoin('plages.planning''planning')
  1083.         ->leftJoin('plages.stagiaire''stagiaire')
  1084.         ->andWhere('plages.planning IN (:val1)')
  1085.         ->andWhere('plages.etat = 1')
  1086.         ->setParameter('val1'$plannings)
  1087.         ->orderBy('planning.psc1Groupe1''DESC')
  1088.         ->addOrderBy('stagiaire.id''ASC')
  1089.         ->getQuery()
  1090.         ->getResult();
  1091.         // dump($plagesToutes);
  1092.         $listeStagiairesTab = [];
  1093.         $x 1;
  1094.         foreach($plagesToutes as $plage) {
  1095.             if (array_key_exists($plage->getStagiaire()->getId(), $listeStagiairesTab)) {
  1096.                 if($plage->getPlanning()->getPsc1Groupe1() == 1) {
  1097.                     $listeStagiairesTab[$plage->getStagiaire()->getId()][] = ['psc1Groupe1' => [$plage->getId(), $plage->getPSC1Groupe()]];
  1098.                 }
  1099.                 else if($plage->getPlanning()->getPsc1Groupe2() == 1) {
  1100.                     $listeStagiairesTab[$plage->getStagiaire()->getId()][] = ['psc1Groupe2' => [$plage->getId(), $plage->getPSC1Groupe()]];
  1101.                 }
  1102.             } else {
  1103.                 $listeStagiairesTab[$plage->getStagiaire()->getId()]['stagiaire'] = [
  1104.                     'id' => $plage->getStagiaire()->getId(),
  1105.                     'nom' => $plage->getStagiaire()->getNom(),
  1106.                     'prenom' => $plage->getStagiaire()->getPrenom(),
  1107.                 ];
  1108.                 if($plage->getPlanning()->getPsc1Groupe1() == 1) {
  1109.                     $listeStagiairesTab[$plage->getStagiaire()->getId()][] = ['psc1Groupe1' => [$plage->getId(), $plage->getPSC1Groupe()]];
  1110.                 }
  1111.                 else if($plage->getPlanning()->getPsc1Groupe2() == 1) {
  1112.                     $listeStagiairesTab[$plage->getStagiaire()->getId()][] = ['psc1Groupe2' => [$plage->getId(), $plage->getPSC1Groupe()]];
  1113.                 }
  1114.             }
  1115.             $x++;
  1116.         }
  1117.         // dd($listeStagiairesTab);
  1118.         $domainesColors = [
  1119.             => 'bg-secondary',
  1120.             => 'bg-primary',
  1121.             => 'bg-success',
  1122.             => 'bg-warning'
  1123.         ];
  1124.         $jourFr = [
  1125.             '1' => 'Lundi',
  1126.             '2' => 'Mardi',
  1127.             '3' => 'Mercredi',
  1128.             '4' => 'Jeudi',
  1129.             '5' => 'Vendredi',
  1130.             '6' => 'Samedi',
  1131.             '7' => 'Dimanche',
  1132.         ];
  1133.         return $this->render('formations/formationsAfficherPSC1.html.twig', [
  1134.             'formation' => $formation,
  1135.             'formationEtat' => $formationEtat,
  1136.             'jourFr' => $jourFr,
  1137.             'listeStagiairesTab' => $listeStagiairesTab,
  1138.             'planningsDateDebut1' => $planningsDateDebut1,
  1139.             'planningsDateDebut2' => $planningsDateDebut2,
  1140.             'nav' => '5'
  1141.         ]);
  1142.     }
  1143. }