src/Controller/DefaultController.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. // begin token-guard ---------------------------------------------------------------------------------
  4. use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
  5. use Symfony\Component\Security\Csrf\CsrfToken;
  6. use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
  7. use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator;
  8. // end token-guard ---------------------------------------------------------------------------------
  9. // begin mochel meyer products --------------------------------------------------------------
  10. use App\Service\LOGDEFService;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Doctrine\Persistence\ManagerRegistry;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  18. use App\Entity\usr;
  19. use App\Entity\usl;
  20. class DefaultController extends AbstractController
  21. {
  22.   
  23.     // some services, begin token-guard ---------------------------------------------------------------------------------
  24.     private $csrfTokenManager;
  25.     private $parambag;
  26.     public function __construct
  27.         (
  28.             CsrfTokenManagerInterface $csrfTokenManager
  29.             ParameterBagInterface $parambag
  30.         )
  31.     {
  32.         $this->csrfTokenManager $csrfTokenManager;
  33.         $this->parambag $parambag;
  34.     }    
  35.     // end some services, token-guard ---------------------------------------------------------------------------------
  36.   
  37.     #[Route(path'/'name'indexRedirect')]
  38.     public function indexRedirect(Request $request)
  39.     {
  40.         return $this->redirect($this->generateUrl('pageaccueil'));    
  41.     }
  42.     
  43.     
  44.     #[Route(path'/accueil'name'pageaccueil')]
  45.     public function index
  46.         (
  47.             Request $request
  48.             ManagerRegistry $doctrine,
  49.             LOGDEFService $logdefservice
  50.         ): Response
  51.     {
  52.            
  53.         $em $doctrine->getManager();
  54.         $user $this->getUser();
  55.         $usrid $user->getUsrid();
  56.         $prfid $user->getPrfid()->getPrfid();
  57.         $prflib $user->getPrfid()->getPrflib();
  58.         
  59.         // vérif statu du compte (0,1,2)
  60.         $cptok=true;
  61.         $usr $em->getRepository(usr::class)->findOneBy(array('usrid'=>$usrid));
  62.         if(($usr->getUsrstatut()==2)||($usr->getUsrstatut()==0)){
  63.             if($usr->getUsrstatut()==2){
  64.                 $msg "Votre compte est actuellement bloqué (nac)";        // non actif
  65.             }else{
  66.                 $msg "Votre compte est en attente de validation (ava)";    // attente validation
  67.             }
  68.             $this->get('session')->getFlashBag()->add(
  69.                 "Erreur",
  70.                 $msg
  71.             );
  72.             
  73.             // renvoi page erreur
  74.             return $this->render('default\noaccess.html.twig'
  75.                 array(
  76.                 )
  77.             );
  78.             $cptok false;
  79.         
  80.         }else{
  81.             
  82.             if($usr->getUsrdatchgpwd()!=null){  // vérification de la validité du pwd
  83.                 $search_now time();
  84.                 $datchglimit date('Y-m-d'mktime(0,0,0,date('m'$search_now),date('d'$search_now),date('Y'$search_now)-1));
  85.                 if($usr->getUsrdatchgpwd()->format('Y-m-d')<=$datchglimit){
  86.                     $pwdok false;
  87.                 }
  88.             }else{
  89.                 $cptok false;
  90.             }
  91.             
  92.             if($cptok==false){  // modif pwd oblig
  93.                 return $this->render('usr\pwdoubli.html.twig', array(
  94.                     'msgcplt' => '',
  95.                     'pwdchgoblig' => 1
  96.                 ));        
  97.             }
  98.         }
  99.         
  100.         // =============== SUIVI LOGIN'S =====================
  101.         //var_dump($_SERVER);
  102.         if($cptok==true){
  103.             if(isset($_SERVER['HTTP_CACHE_CONTROL'])){  // variable temporaire, login réussi, mémo
  104.                 if($_SERVER['HTTP_CACHE_CONTROL']=="max-age=0"){    // indicateur démarrage session
  105.                     if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
  106.                         $ip $_SERVER['HTTP_X_FORWARDED_FOR'];
  107.                     }else{
  108.                         $ip $_SERVER['REMOTE_ADDR'];     // en général 127.0.0.1
  109.                     }
  110.                     
  111.                     $cook '';
  112.                     if(isset($_SERVER['HTTP_COOKIE'])){
  113.                         $cook str_replace('PHPSESSID=','',$_SERVER['HTTP_COOKIE']);
  114.                         $pos strpos($cook";");
  115.                         if($pos>1){
  116.                             $cook substr($cook0$pos-1);
  117.                         }else{
  118.                             $cook substr($cook0254);
  119.                         }
  120.                     }
  121.                     
  122.                     // enrgt dde : IP + Heure + login
  123.                     $datdde = new \DateTime();
  124.                     $usl = new usl;
  125.                     $usl->setUslip($ip);
  126.                     $usl->setUsldat($datdde);
  127.                     $usl->setUsllogin($user->getUsername());
  128.                     $usl->setUslctx('login');
  129.                     $usl->setUslcook($cook);
  130.                     $em->persist($usl);
  131.                     $em->flush();
  132.                 }
  133.             }
  134.             // =============================================
  135.             // màj usr ->date dernier log
  136.             $usrdatlog = new \DateTime();
  137.             $usrdatlog->createFromFormat("Y m d "time());
  138.             
  139.             $usr $em->getRepository(usr::class)->findOneBy(array('usrid'=>$user->getUsrid()));
  140.             $usr->setUsrchgpwdtok(null);
  141.             $usr->setUsrdatddechgpwd(null);
  142.             $usr->setUsrdatlog($usrdatlog);
  143.             $em->persist($usr);
  144.             $em->flush();
  145.             
  146.             // a) les infobulles de la page
  147.             $lesdefs = array('ppiplus','modplus','pfiplus');
  148.             $deflog = array();
  149.             foreach($lesdefs as $ladef){
  150.                 $deflog[$ladef] = $logdefservice->get_unedef($ladef); 
  151.             }
  152.             // expérience pour une mise en cache supplémentaire (10/24), voir aussi 
  153.             // config\packages\framework.yaml, rubrique when@dev....
  154.             // $response = new Response(
  155.                 // $this->render('default\index.html.twig', array(
  156.                     // 'base_dir' => realpath($this->parambag->get('kernel.project_dir').'/..').DIRECTORY_SEPARATOR,
  157.                     // 'help_dir' => $this->parambag->get('dochelp_web_path'),
  158.                     // 'prfid' => $prfid,
  159.                     // 'prflib' => $prflib,
  160.                     // 'deflog' => $deflog
  161.                 // ))
  162.             // );        
  163.             // $response->setSharedMaxAge(3600);
  164.             // return $response;
  165.             // Affichage index
  166.             return $this->render('default\index.html.twig', array(
  167.                 'base_dir' => realpath($this->parambag->get('kernel.project_dir').'/..').DIRECTORY_SEPARATOR,
  168.                 'help_dir' => $this->parambag->get('dochelp_web_path'),
  169.                 'prfid' => $prfid,
  170.                 'prflib' => $prflib,
  171.                 'deflog' => $deflog
  172.             ));        
  173.         }
  174.         
  175.     }
  176.     
  177.     #[Route(path'/savplus'name'savoirplus')]
  178.     public function ensavoirplus
  179.         (
  180.             Request $request
  181.             ManagerRegistry $doctrine,
  182.         ): Response
  183.     {
  184.         // affichage d'une page neutre : explications sur un des utilitaires 
  185.         $em $doctrine->getManager();
  186.         $user $this->getUser();
  187.         if($user!=null){        // protection ACL contre les lectures intempestives extérieures (saisie url directe)
  188.             if(isset($_GET['wich'])){   // quel outil ?
  189.                 switch($_GET['wich']){
  190.                     case 'ppiplus':
  191.                         return $this->render('default\ppiplus.html.twig', array());        
  192.                     break;
  193.                     case 'modplus':
  194.                         return $this->render('default\modplus.html.twig', array());        
  195.                     break;
  196.                     case 'pfiplus':
  197.                         return $this->render('default\pfiplus.html.twig', array());        
  198.                     break;
  199.                     default:
  200.                         $this->get('session')->getFlashBag()->add(
  201.                             'error',
  202.                             "Impossible d'accéder à la fonction demandée !"
  203.                         );
  204.                         return $this->redirect($this->generateUrl('pageaccueil')); // renvoi caval
  205.                     break;        
  206.                 }
  207.             
  208.             }else{      // protection ACL contre les lectures intempestives extérieures (saisie url directe)
  209.                 $this->get('session')->getFlashBag()->add(
  210.                     'Erreur',
  211.                     "Impossible d'accéder à la fonction demandée !"
  212.                 );
  213.                 return $this->redirect($this->generateUrl('pageaccueil')); // renvoi caval
  214.             }
  215.             
  216.         }else{      // protection ACL contre les lectures intempestives extérieures (saisie url directe)
  217.             $this->get('session')->getFlashBag()->add(
  218.                 'Erreur',
  219.                 "Impossible d'accéder à la fonction demandée !"
  220.             );
  221.             return $this->redirect($this->generateUrl('pageaccueil')); // renvoi caval
  222.         }
  223.         
  224.     }
  225.     // ===============================================================
  226.     // utilitaires iltu
  227.     // ===============================================================
  228.     /**
  229.      * 2020...
  230.      * suppression des comptes vides créés avant 31-12-2014 (ok si exec après ouv.session)
  231.      * 2022-07-15
  232.      * suppression des comptes vides créés avant 31-12-2016 (ok si exec après ouv.session)
  233.      * suppression des simu prosper, fusion, cif vides
  234.      */
  235.     #[Route(path'/supUsrVide'name'supUsrVide')]
  236.     public function supUsrVide(Request $request)
  237.     {
  238.         // ATTENTION : à ne pas utilier ou mettre à niveau avec PRB...
  239.         $em $doctrine->getManager();
  240.         $user $this->getUser();
  241.         
  242.         if($user->getusrid() == 11){    // vérif me
  243.     
  244.             $nb_usr_supp=0;$nb_pro_supp=0;$nb_fu_supp=0;$nb_cif_supp=0;
  245.             $query $em->getRepository(usr::class)->createQueryBuilder('usr'); 
  246.             $query
  247.                 ->select('usr')
  248.                 ->where('usr.usrdatcre <= :datcrelimit')
  249.                 // ->setParameter('datcrelimit' , '2014-12-31')
  250.                 ->setParameter('datcrelimit' '2016-12-31')
  251.                 ->orderBy('usr.usrdatcre''ASC')
  252.             ;
  253.             $usrs $query->getQuery()->getResult();
  254.             foreach($usrs as $usr){
  255.                 $usrasupp true;
  256.                 
  257.                 // =================================== PROSPER 
  258.                 $pros $em->getRepository(pro::class)->createQueryBuilder('pro')
  259.                     ->select('pro')
  260.                     ->where('pro.usrid = :usrid')
  261.                     ->setParameter('usrid' $usr->getusrid())
  262.                     ->orderBy('pro.proid''ASC')
  263.                     ->getQuery()->getResult()
  264.                 ;
  265.                 foreach($pros as $pro){
  266.                     
  267.                     $proan $em->getRepository(proan::class)->createQueryBuilder('proan')
  268.                         ->select('SUM(proan.PROAN_T1_a01+proan.PROAN_T1_a02+proan.PROAN_T1_a03+proan.PROAN_T1_a04+proan.PROAN_T1_a05+proan.PROAN_T1_a51+proan.PROAN_T1_b01+proan.PROAN_T1_b02+proan.PROAN_T1_b03+proan.PROAN_T1_b04+proan.PROAN_T1_b05+proan.PROAN_T1_c01+proan.PROAN_T1_c02+proan.PROAN_T1_c51+proan.PROAN_T1_x51+proan.PROAN_T1_x52+proan.PROAN_T2_a01+proan.PROAN_T2_a02+proan.PROAN_T2_a03+proan.PROAN_T2_a04+proan.PROAN_T2_a51+proan.PROAN_T2_a52+proan.PROAN_T2_a56+proan.PROAN_T2_a57+proan.PROAN_T3_a01+proan.PROAN_T3_a02+proan.PROAN_T3_a03+proan.PROAN_T3_a04+proan.PROAN_T3_a05+proan.PROAN_T3_a06+proan.PROAN_T3_a51+proan.PROAN_T3_b01+proan.PROAN_T3_b02+proan.PROAN_T3_b03+proan.PROAN_T3_b04+proan.PROAN_T3_b05+proan.PROAN_T3_b06+proan.PROAN_T3_b07+proan.PROAN_T3_b08+proan.PROAN_T3_b51+proan.PROAN_T3_x51+proan.PROAN_T4_a01+proan.PROAN_T4_a02+proan.PROAN_T4_a03+proan.PROAN_T4_a04+proan.PROAN_T4_a51+proan.PROAN_T4_a52) AS TOTO')
  269.                         ->where('proan.proid = :proid')
  270.                         ->setParameter('proid',$pro->getproid())
  271.                         ->groupBy('proan.proid')
  272.                         ->getQuery()
  273.                     ;
  274.                     if($proan->getSingleScalarResult()==0){ // PRO à supprimer
  275.                         foreach($pro->getPROANS() as $proan_a_sup){
  276.                             $pro->removePROAN($proan_a_sup);
  277.                         }
  278.                         $em->persist($pro);
  279.                         $em->flush();
  280.                         
  281.                         $pro_a_supp $em->getRepository(pro::class)->findOneBy(array('proid'=>$pro->getproid()));
  282.                         $em->remove($pro_a_supp);
  283.                         $em->flush();
  284.                         $nb_pro_supp++;
  285.                         
  286.                     }else{
  287.                         $usrasupp false;      // USR à maintenir
  288.                     }
  289.                 }
  290.                 
  291.                 
  292.                 // =================================== FUSION 
  293.                 $fus $em->getRepository(fu_sim::class)->createQueryBuilder('fusim')
  294.                     ->select('fusim')
  295.                     ->where('fusim.usrid = :usrid')
  296.                     ->setParameter('usrid' $usr->getusrid())
  297.                     ->orderBy('fusim.SIMID''ASC')
  298.                     ->getQuery()->getResult()
  299.                 ;
  300.                 foreach($fus as $fu){
  301.                     
  302.                     $fucomm $em->getRepository(fu_comm::class)->createQueryBuilder('fucomm')
  303.                         ->select('SUM(fucomm.COMTHBAS+fucomm.COMTHPRO+fucomm.COMFBBAS+fucomm.COMFBPRO+fucomm.COMFNBBAS+fucomm.COMFNBPRO+fucomm.COMCFEBAS+fucomm.COMCFEPRO+fucomm.COMCVAE+fucomm.COMIFER+fucomm.COMTAFNB+fucomm.COMTASCOM+fucomm.COMDCRTP+fucomm.COMFNGIR+fucomm.COMCPS+fucomm.COMACNE) AS TOTO')
  304.                         ->where('fucomm.SIMID = :SIMID')
  305.                         ->setParameter('SIMID',$fu->getSIMID())
  306.                         ->groupBy('fucomm.SIMID')
  307.                         ->getQuery()
  308.                     ;
  309.                     $totcomm $fucomm->getOneOrNullResult();
  310.                     if($totcomm==null){
  311.                         $totcomm 0;
  312.                     }
  313.                     
  314.                     $fuepci $em->getRepository(fu_epci::class)->createQueryBuilder('fuepci')
  315.                         ->select('SUM(fuepci.EPCDGFPOP+fuepci.EPCCOMNBR+fuepci.EPCDGFHAB+fuepci.EPCCIF+fuepci.EPCTHTXDPT+fuepci.EPCTHBAS+fuepci.EPCTHPRO+fuepci.EPCTHPROC+fuepci.EPCFBBAS+fuepci.EPCFBPRO+fuepci.EPCFBPROC+fuepci.EPCFNBBAS+fuepci.EPCFNBPRO+fuepci.EPCFNBPROC+fuepci.EPCCFEBAS+fuepci.EPCCFEPRO+fuepci.EPCCFEPROC+fuepci.EPCCFEZBAS+fuepci.EPCCFEZPRO+fuepci.EPCCFEEBAS+fuepci.EPCCFEEPRO+fuepci.EPCCVAE+fuepci.EPCIFER+fuepci.EPCTAFNB+fuepci.EPCTASCOM+fuepci.EPCDCRTP+fuepci.EPCFNGIR+fuepci.EPCCPS+fuepci.EPCACNE+fuepci.EPCCOMCVAE+fuepci.EPCCOMIFER+fuepci.EPCCOMTAFNB+fuepci.EPCCOMTASCOM+fuepci.EPCCOMCPS+fuepci.EPCCOMACTP+fuepci.EPCCOMCT+fuepci.EPCCOMARF+fuepci.EPCCOMCSC+fuepci.EPCCOMFNGIR+fuepci.EPCCOMDCRTP+fuepci.EPCOM+fuepci.EPCCOMOM+fuepci.EPCRASS+fuepci.EPCCOMRASS+fuepci.EPCCOMDS+fuepci.EPCDOTBAS+fuepci.EPCDOTPERE+fuepci.EPCBONIF+fuepci.EPCMAJOR+fuepci.EPCGARANT+fuepci.EPCECRET) AS TOTO')
  316.                         ->where('fuepci.SIMID = :SIMID')
  317.                         ->setParameter('SIMID',$fu->getSIMID())
  318.                         ->groupBy('fuepci.SIMID')
  319.                         ->getQuery()
  320.                     ;
  321.                     $totepci $fuepci->getOneOrNullResult();
  322.                     if($totepci==null){
  323.                         $totepci 0;
  324.                     }
  325.                     
  326.                     if(($totcomm==0)&&($totepci==0)){   // SIM à supprimer
  327.                         foreach($fu->getFUCOMMS() as $fucomm_a_sup){
  328.                             $fu->removeFUCOMM($fucomm_a_sup);
  329.                         }
  330.                         foreach($fu->getFUEPCIS() as $fuepci_a_sup){
  331.                             $fu->removeFUEPCI($fuepci_a_sup);
  332.                         }
  333.                         $em->persist($fu);
  334.                         $em->flush();
  335.                         
  336.                         $fu_a_supp $em->getRepository(fu_sim::class)->findOneBy(array('SIMID'=>$fu->getSIMID()));
  337.                         $em->remove($fu_a_supp);
  338.                         $em->flush();
  339.                         $nb_fu_supp++;
  340.                         
  341.                     }else{
  342.                         $usrasupp false;      // USR à maintenir
  343.                     }
  344.                 }
  345.                 
  346.                 // =================================== CIF 
  347.                 $cifs $em->getRepository(cif_sim::class)->createQueryBuilder('cifsim')
  348.                     ->select('cifsim')
  349.                     ->where('cifsim.usrid = :usrid')
  350.                     ->setParameter('usrid' $usr->getusrid())
  351.                     ->orderBy('cifsim.SIMID''ASC')
  352.                     ->getQuery()->getResult()
  353.                 ;
  354.                 foreach($cifs as $cif){
  355.                     
  356.                     $cifcomm $em->getRepository('App:CIF_COMM23')->createQueryBuilder('cifcomm')
  357.                         ->select('SUM(cifcomm.COMDCRTP+cifcomm.COMFNGIR+cifcomm.COMTHPX+cifcomm.COMFBPX+cifcomm.COMFNBPX+cifcomm.COMCVAE+cifcomm.COMTAFNB+cifcomm.COMCFE+cifcomm.COMIFER+cifcomm.COMTASCOM+cifcomm.COMRASS+cifcomm.COMTEOM) AS TOTO')
  358.                         ->where('cifcomm.SIMID = :SIMID')
  359.                         ->setParameter('SIMID',$cif->getSIMID())
  360.                         ->groupBy('cifcomm.SIMID')
  361.                         ->getQuery()
  362.                     ;
  363.                     $totcomm $cifcomm->getOneOrNullResult();
  364.                     if($totcomm==null){
  365.                         $totcomm 0;
  366.                     }
  367.                     
  368.                     $repo $em->getRepository('App:CIF_EPCI1');    // simu epci
  369.                     $cifepci $repo->createQueryBuilder('cifepci')
  370.                         ->select('SUM(cifepci.EPCDGFPOP+cifepci.EPCCIF) AS TOTO')
  371.                         ->where('cifepci.SIMID = :SIMID')
  372.                         ->setParameter('SIMID',$cif->getSIMID())
  373.                         ->groupBy('cifepci.SIMID')
  374.                         ->getQuery()
  375.                     ;
  376.                     $totepci $cifepci->getOneOrNullResult();
  377.                     if($totepci==null){
  378.                         $totepci 0;
  379.                     }
  380.                     
  381.                     if(($totcomm==0)&&($totepci==0)){   // SIM à supprimer
  382.                         foreach($cif->getCIFCOMM23S() as $cifcomm_a_sup){
  383.                             $cif->removeCIFCOMM23($cifcomm_a_sup);
  384.                         }
  385.                         foreach($cif->getCIFEPCIS() as $cifepci_a_sup){
  386.                             $cif->removeCIFEPCI($cifepci_a_sup);
  387.                         }
  388.                         $em->persist($cif);
  389.                         $em->flush();
  390.                         
  391.                         $cif_a_supp $em->getRepository(cif_sim::class)->findOneBy(array('SIMID'=>$cif->getSIMID()));
  392.                         $em->remove($cif_a_supp);
  393.                         $em->flush();
  394.                         $nb_cif_supp++;
  395.                         
  396.                     }else{
  397.                         $usrasupp false;      // USR à maintenir
  398.                     }
  399.                 }
  400.                 
  401.                 if($usrasupp==true){
  402.                     $usr_a_supp $em->getRepository(usr::class)->findOneBy(array('usrid'=>$usr->getusrid()));
  403.                     $em->remove($usr_a_supp);
  404.                     $em->flush();
  405.                     $nb_usr_supp++;
  406.                 }
  407.             }
  408.             // Message d'information    
  409.             $this->get('session')->getFlashBag()->add(
  410.                 'success',
  411.                 'Nb USR supp: '.$nb_usr_supp.' Nb PRO supp: '.$nb_pro_supp.' Nb FUSION supp: '.$nb_fu_supp.' Nb CIF supp: '.$nb_cif_supp
  412.                 //'il faut activer la fonction en premier'
  413.             );
  414.             return $this->render('default\index.html.twig', array(
  415.                 'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  416.                 'help_dir' => $this->container->getParameter('dochelp_web_path'),
  417.                 'prfid' => 0,
  418.                 'prflib' => 'nondef',
  419.             ));        
  420.         }else{      // erreur réservé admin
  421.             $this->get('session')->getFlashBag()->add(
  422.                 'error',
  423.                 'La page demandée n\'existe pas ! (adm)'
  424.             );
  425.             // Affichage page inexistante
  426.             return $this->render('default\noway.html.twig'
  427.                 array(
  428.                     'width'=> 1200,
  429.                     'height'=> 300
  430.                 )
  431.             );        
  432.         }
  433.         
  434.     }
  435.     
  436.     
  437.     
  438.     
  439.     /**
  440.      * suppression des simulations PROSPER stériles (ok si exec après ouv.session)
  441.      * @Route("/supProSteril", name="supProSteril")
  442.      */
  443.     public function supProSteril(Request $request)
  444.     {
  445.         $em $this->getDoctrine()->getManager();
  446.         $user $this->getUser();
  447.         
  448.         if($user->getusrid() == 11){    // vérif me
  449.     
  450.             $i=0;
  451.             $repo $em->getRepository('App:PRO');
  452.             $pros $repo->createQueryBuilder('pro')
  453.                 ->select('pro')
  454.                 ->orderBy('pro.proid''ASC')
  455.                 ->getQuery()
  456.                 ->getResult()
  457.             ;
  458.             foreach($pros as $pro){
  459.                 $repo $em->getRepository('App:PROAN');
  460.                 $proan $repo->createQueryBuilder('proan')
  461.                     ->select('SUM(proan.PROAN_T1_a01+proan.PROAN_T1_a02+proan.PROAN_T1_a03+proan.PROAN_T1_a04+proan.PROAN_T1_a05+proan.PROAN_T1_a51+proan.PROAN_T1_b01+proan.PROAN_T1_b02+proan.PROAN_T1_b03+proan.PROAN_T1_b04+proan.PROAN_T1_b05+proan.PROAN_T1_c01+proan.PROAN_T1_c02+proan.PROAN_T1_c51+proan.PROAN_T1_x51+proan.PROAN_T1_x52+proan.PROAN_T2_a01+proan.PROAN_T2_a02+proan.PROAN_T2_a03+proan.PROAN_T2_a04+proan.PROAN_T2_a51+proan.PROAN_T2_a52+proan.PROAN_T2_a56+proan.PROAN_T2_a57+proan.PROAN_T3_a01+proan.PROAN_T3_a02+proan.PROAN_T3_a03+proan.PROAN_T3_a04+proan.PROAN_T3_a05+proan.PROAN_T3_a06+proan.PROAN_T3_a51+proan.PROAN_T3_b01+proan.PROAN_T3_b02+proan.PROAN_T3_b03+proan.PROAN_T3_b04+proan.PROAN_T3_b05+proan.PROAN_T3_b06+proan.PROAN_T3_b07+proan.PROAN_T3_b08+proan.PROAN_T3_b51+proan.PROAN_T3_x51+proan.PROAN_T4_a01+proan.PROAN_T4_a02+proan.PROAN_T4_a03+proan.PROAN_T4_a04+proan.PROAN_T4_a51+proan.PROAN_T4_a52) AS TOTO')
  462.                     ->where('proan.proid = :proid')
  463.                     ->setParameter('proid',$pro->getproid())
  464.                     ->groupBy('proan.proid')
  465.                     ->getQuery()
  466.                 ;
  467.                 if($proan->getSingleScalarResult()==0){ // PRO à supprimer
  468.                     foreach($pro->getPROANS() as $proan_a_sup){
  469.                         $pro->removePROAN($proan_a_sup);
  470.                     }
  471.                     $em->persist($pro);
  472.                     $em->flush();
  473.                     
  474.                     $pro_a_supp $em->getRepository('App:PRO')->findOneBy(array('proid'=>$pro->getproid()));
  475.                     $em->remove($pro_a_supp);
  476.                     $em->flush();
  477.                 }
  478.             }
  479.             // Message d'information    
  480.             $this->get('session')->getFlashBag()->add(
  481.                 'success',
  482.                 'Les projets PROSPER sans données ont été supprimés avec succès'
  483.                 //'il faut activer la fonction en premier'
  484.             );
  485.             return $this->render('default\index.html.twig', array(
  486.                 'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  487.                 'help_dir' => $this->container->getParameter('dochelp_web_path'),
  488.                 'prfid' => 0,
  489.                 'prflib' => 'nondef',
  490.             ));
  491.             
  492.         }else{      // erreur réservé admin
  493.             $this->get('session')->getFlashBag()->add(
  494.                 'error',
  495.                 'La page demandée n\'existe pas ! (adm)'
  496.             );
  497.             // Affichage page inexistante
  498.             return $this->render('default\noway.html.twig', array(
  499.             ));        
  500.         }
  501.       
  502.     }
  503.     
  504.     
  505.     
  506.     /**
  507.      * création des couples PRF, MEN manquants
  508.      * @Route("/prfMenAcc", name="crePrfMenAcc")
  509.      */
  510.     public function crePrfMenAcc(Request $request)
  511.     {
  512.         
  513.         $em $this->getDoctrine()->getManager();
  514.         $user $this->getUser();
  515.         
  516.         if($user->getusrid() == 11){    // vérif me
  517.         
  518.             $repo $this->getDoctrine()->getManager()->getRepository('App:PRF');
  519.             $prfs $repo->createQueryBuilder('prf')
  520.                 ->select('prf')
  521.                 ->orderBy('prf.prfid''ASC')
  522.                 ->getQuery()
  523.                 ->getResult()
  524.             ;
  525.             $repo $this->getDoctrine()->getManager()->getRepository('App:MEN');
  526.             $mens $repo->createQueryBuilder('men')
  527.                 ->select('men')
  528.                 ->orderBy('men.MENID''ASC')
  529.                 ->getQuery()
  530.                 ->getResult()
  531.             ;
  532.             $em $this->getDoctrine()->getManager();
  533.             foreach($prfs as $prf){
  534.                 $prfid_ec $prf->getprfid();
  535.                 foreach($mens as $men){
  536.                     
  537.                     $repo $this->getDoctrine()->getManager()->getRepository('App:PRF_MEN');
  538.                     $prf_men $repo->createQueryBuilder('prfmen')
  539.                         ->select('prfmen')
  540.                         ->where('prfmen.prfid = :prfid')
  541.                         ->setParameter('prfid',$prfid_ec)
  542.                         ->andwhere('prfmen.MENID = :MENID')
  543.                         ->setParameter('MENID',$men->getMENID())
  544.                         ->getQuery()
  545.                         ->getArrayResult()
  546.                     ;
  547.                     
  548.                     if(count($prf_men)==0){     // ajouter le couple sans droit
  549.                         
  550.                         /*
  551.                         $PRF_MEN = new PRF_MEN;
  552.                         $PRF_MEN->setprfid($prf);
  553.                         $PRF_MEN->setMENID($men);
  554.                         $PRF_MEN->setPRMACC(0);
  555.                         $em->persist($PRF_MEN);
  556.                         $em->flush();
  557.                         */
  558.                     }
  559.                 }
  560.             }
  561.             
  562.             // Message d'information    
  563.             $this->get('session')->getFlashBag()->add(
  564.                 'success',
  565.                 'Les couples PRF, MEN ont été ajoutés avec succès'
  566.                 //'il faut activer la fonction en premier'
  567.             );
  568.             
  569.             return $this->redirect($this->generateUrl('pageaccueil'));
  570.             
  571.         }else{      // erreur réservé admin
  572.             $this->get('session')->getFlashBag()->add(
  573.                 'error',
  574.                 'La page demandée n\'existe pas ! (adm)'
  575.             );
  576.             // Affichage page inexistante
  577.             return $this->render('default\noway.html.twig', array(
  578.             ));        
  579.         }
  580.             
  581.     }
  582.     /**
  583.      * cryptage des mots de passe des utilisateurs
  584.      * @Route("/usrLogPwd", name="doLogPwd")
  585.      */
  586.     public function doLogPwd(Request $request)
  587.     {
  588.         
  589.         $em $this->getDoctrine()->getManager();
  590.         $user $this->getUser();
  591.         
  592.         if($user->getusrid() == 11){    // vérif me
  593.         
  594.             $repo $this->getDoctrine()->getManager()->getRepository('App:USR');
  595.             $usr $repo->createQueryBuilder('usr')
  596.                 ->select('usr')
  597.                 ->orderBy('usr.username''ASC')        // USRLOGIN
  598.                 ->where('usr.password is null')
  599.                 ->andwhere('usr.usrid = :usrid')
  600.                 ->setParameter('usrid'11)
  601.                 ->getQuery()
  602.                 ->getResult()
  603.             ;
  604.             foreach($usr as $u){
  605.                 $hash $this->get('security.password_encoder')->encodePassword($u$u->getUSRPWD());
  606.                 $u->setPassword($hash);
  607.                 $em $this->getDoctrine()->getManager();
  608.                 $em->persist($u);
  609.                 $em->flush();
  610.             }
  611.             
  612.             // Message d'information    
  613.             $this->get('session')->getFlashBag()->add(
  614.                 'success',
  615.                 'Les mots de passe des utilisateurs ont été cryptés avec succès'
  616.             );
  617.             
  618.             //var_dump($this->get('session'));
  619.             
  620.             return $this->redirect($this->generateUrl('pageaccueil'));
  621.         
  622.         }else{      // erreur réservé admin
  623.             $this->get('session')->getFlashBag()->add(
  624.                 'error',
  625.                 'La page demandée n\'existe pas ! (adm)'
  626.             );
  627.             // Affichage page inexistante
  628.             return $this->render('default\noway.html.twig', array(
  629.             ));        
  630.         }
  631.         
  632.     }
  633.     /**
  634.      * Récupération + mémorisation URL courante pour redirection après login
  635.      */
  636.     #[Route(path'/storeRedirect'name'storeRedirect')]
  637.     public function storeRedirect(Request $request)
  638.     {
  639.         $currentUrl $request->query->get('uri');
  640.         if($currentUrl=='logout'){
  641.             return $this->redirect($this->generateUrl('app_logout'));
  642.         }else{
  643.             return $this->redirect($currentUrl);        // à vérifier
  644.         }
  645.     }
  646.     
  647.     
  648.     
  649.     /**
  650.      * Vérif statut de la session courante (Contrôle d'accès utilisateur), si pas OK retour login
  651.      */
  652.     #[Route(path'/isalive'name'isalive')]
  653.     public function isalive(Request $request)
  654.     {
  655.         $results = (session_status() === PHP_SESSION_ACTIVE) ? TRUE FALSE;
  656.         $response = new Response(json_encode($results));
  657.         return $response;
  658.     }
  659.     
  660. }