src/Controller/ConfigurationController.php line 72

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\GlobalAdmin;
  4. use App\Entity\Utilisateur;
  5. use App\Entity\Etat ;
  6. use App\Entity\Questions ;
  7. use App\Entity\Entreprise ;
  8. use App\Entity\Pays ;
  9. use App\Entity\TypeCompte ;
  10. use App\Entity\Formule ;
  11. use App\Entity\Competences;
  12. use App\Entity\Niveau;
  13. use App\Entity\SousFamilleCompetence;
  14. use App\Entity\FamilleCompetence;
  15. use App\Entity\Formules;
  16. use App\Entity\QuestionCompetences;
  17. use App\Entity\FormuleOptions;
  18. use App\Entity\AffSousFamilleFamille;
  19. use App\Entity\AffCompetenceSf;
  20. use App\Entity\TailleEntreprise;
  21. use App\Entity\Region;
  22. use App\Entity\Langue;
  23. use App\Entity\ConditionGenerale;
  24. use App\Entity\Cgi;
  25. use App\Entity\ConfigServices;
  26. use App\Entity\MentionsLegales;
  27. use App\Entity\Ape;
  28. use App\Repository\FormulesRepository;
  29. use App\Repository\FormuleOptionsRepository;
  30. use App\Repository\ConditionGeneraleRepository;
  31. use App\Repository\CgiRepository;
  32. use App\Repository\MentionsLegalesRepository;
  33. use DateTime;
  34. use App\Form\UtilisateurType;
  35. use App\Repository\AdministrateursRepository;
  36. use App\Repository\EntrepriseRepository;
  37. use App\Repository\NiveauRepository;
  38. use App\Repository\ConfigServicesRepository;
  39. use App\Repository\EtatRepository;
  40. use App\Repository\ConfigSmtpRepository;
  41. use App\Repository\ConnexionAdministrateursRepository;
  42. use App\Repository\CompetencesRepository;
  43. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  44. use Symfony\Component\HttpFoundation\Request;
  45. use Symfony\Component\HttpFoundation\Response;
  46. use Symfony\Component\Routing\Annotation\Route;
  47. use Symfony\Component\HttpFoundation\JsonResponse;
  48. use App\Repository\GroupeRestrictionRepository;
  49. use App\Repository\GroupeRestrictionPageRepository;
  50. use App\Repository\NiveauAdminRepository;
  51. use Symfony\Component\HttpFoundation\File\UploadedFile;
  52. use Symfony\Component\Filesystem\Filesystem;
  53. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  54. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  55. use Doctrine\ORM\EntityManagerInterface;
  56. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3Validator;
  57. class ConfigurationController extends AbstractController
  58. {
  59.     public function __construct(SessionInterface $session Container $container EntityManagerInterface $em )
  60.     {
  61.         
  62.         $this->em $em ;
  63.         $this->session $session ;
  64.     }
  65.     function genererCode($length){
  66.         
  67.         $chars '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  68.         $string '';
  69.         for($i=0$i<$length$i++){
  70.             $string .= $chars[rand(0strlen($chars)-1)];
  71.         }
  72.             
  73.         return $string;
  74.             
  75.     }
  76.     private function getAdressIp(){
  77.         $ip_expediteur '' ;
  78.             
  79.         if(!empty($_SERVER['HTTP_CLIENT_IP'])){
  80.           $ip_expediteur $_SERVER['HTTP_CLIENT_IP'];
  81.         }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
  82.           $ip_expediteur $_SERVER['HTTP_X_FORWARDED_FOR'];
  83.         }else{
  84.           $ip_expediteur $_SERVER['REMOTE_ADDR'];
  85.         }
  86.         return $ip_expediteur ;
  87.     }
  88.     /**
  89.      * @Route("/configuration", name="configuration", methods={"GET","POST"} , options={"expose"=true})
  90.      */
  91.     public function configuration(): Response
  92.     {
  93.         return $this->render('configuration/index.html.twig', [
  94.             'controller_name' => 'ConfigurationController',
  95.         ]);
  96.     }
  97.    
  98.          
  99.  
  100.     /**
  101.      * @Route("/configuration_etat", name="configuration_etat", methods={"GET","POST"} , options={"expose"=true})
  102.      */
  103.     public function configuration_etat(Request $request,GroupeRestrictionRepository $groupeRestrictionRepository,AdministrateursRepository $AdministrateursRepository,
  104.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  105.     {
  106.         $accessArray=[];
  107.         $niveauAcessPages = [];
  108.         $groupeRestrictions = [];
  109.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  110.             $admin $this->session->get('supAdT9m2XJzn4');
  111.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  112.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  113.             $adminId $admin->getId();
  114.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  115.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  116.             $accessArray $restrictionPages[0]->getAccess();
  117.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  118.             $niveauAcessPagesCollection->initialize();
  119.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  120.         }else {
  121.             return $this->redirectToRoute('connexion');
  122.         }
  123.         return $this->render('configuration/config_etat.html.twig',[
  124.             'admin' => $admin,
  125.             'access' => $accessArray,
  126.             'pages' => $niveauAcessPages
  127.         ]);
  128.     }
  129.      /**
  130.      * @Route("/serverEtats", name="serverEtats", methods={"GET","POST"}, options = {"expose" = true})
  131.      */
  132.     public function serverEtats(Request $request  ): Response
  133.     {
  134.                 
  135.         //echo $this->session->getMetadataBag()->getLifetime();
  136.                     
  137.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  138.          //   return new Response('disconnect');
  139.         //}
  140.         
  141.         
  142.         
  143.         $sql_where "" ;
  144.         
  145.         
  146.         
  147.         if($request->get('search')['value']!=""){
  148.             $sql_where .= ' AND (  u.etat LIKE \'%'.$request->get('search')['value'].'%\'   ) ' ;            
  149.         }
  150.         
  151.         
  152.         
  153.         
  154.         $user_array = [] ;
  155.         
  156.         $sql_where2 "";
  157.         
  158.         
  159.         
  160.         
  161.         
  162.         $limit =  $request->get('length') ;
  163.             
  164.         $offset $request->get('start') ;
  165.         
  166.         $array_search = array();
  167.         
  168.         $columns = ['u.id','u.etat','u.description','u.date_creation','u.date_update','u.status'] ;
  169.         
  170.         $orders = [] ;
  171.         
  172.         
  173.         for($i=$i<count($request->get('order')) ;$i++ ){
  174.             
  175.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  176.             
  177.         }
  178.         
  179.         
  180.         if( count($orders)>0){
  181.         $order " ORDER BY ".implode(' , ',$orders) ;
  182.         }
  183.         else{
  184.         $order "" ;  
  185.         }
  186.         
  187.         
  188.         
  189.         $total_etats = [];
  190.         
  191.         
  192.         
  193.         $total_etats $this->em->createQuery(
  194.             'SELECT u 
  195.             FROM App\Entity\Etat u
  196.             
  197.             
  198.             WHERE 1=1 '.$sql_where.'
  199.              
  200.             '
  201.             )
  202.                 
  203.                 ->getResult()  ;
  204.       
  205.                 
  206.         
  207.         $I_nbResultatsTotal count$total_etats ) ;
  208.         
  209.         
  210.         $etats $this->em->createQuery(
  211.                 'SELECT u 
  212.                 FROM App\Entity\Etat u
  213.                
  214.                 
  215.                 WHERE 1=1 '.$sql_where.' '.$order.'
  216.                  
  217.                 '
  218.                 )
  219.                 ->setMaxResults($limit)
  220.                 ->setFirstResult($offset)
  221.                 ->getResult()  ;
  222.         
  223.         
  224.         $output = [] ; 
  225.                
  226.         foreach($etats as $etat){
  227.             
  228.         $output[] = [
  229.                 
  230.                 'id'=>$etat->getId() ,
  231.                 'etat'=>$etat->getEtat() ,
  232.                 'description'=>$etat->getDescription() ,
  233.                 'status'=>$etat->getStatus() ,
  234.                 'created_at' => date_format$etat->getDateCreation() , 'd/m/Y H:i'),
  235.                 'updated_at' => date_format$etat->getDateUpdate() , 'd/m/Y H:i')
  236.                 
  237.         ];
  238.         
  239.         
  240.         
  241.         
  242.         }
  243.         
  244.         
  245.         $JSON json_encode($output);
  246.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  247.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  248.         return $response;
  249.         
  250.         
  251.         
  252.         
  253.         
  254.     }
  255.     /**
  256.      * @Route("/ajout_etat", name="ajout_etat" , options = {"expose"=true})
  257.      */
  258.     public function ajout_etat(Request $request  ): Response
  259.     {
  260.         $etat = new Etat();
  261.         $etat->setEtat($request->get('nom_etat_n'));
  262.         $etat->setStatus($request->get('status_etat_n'));
  263.         $etat->setDescription($request->get('description_etat_n'));
  264.         $etat->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  265.         $etat->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  266.         $this->em->persist($etat);
  267.         $this->em->flush();
  268.         return new Response('OK');
  269.     }
  270.     /**
  271.      * @Route("/get_etat", name="get_etat" , options = {"expose"=true})
  272.      */
  273.     public function get_etat(Request $request  ): Response
  274.     {
  275.         return false;
  276.     }
  277.     
  278.     /**
  279.      * @Route("/modif_etat/{id}", name="modif_etat" , methods={"POST"}, options = {"expose"=true})
  280.      */
  281.     public function modif_etat(int $idRequest $request): Response
  282.     {   
  283.         $etat $this->em->getRepository(Etat::class)->find($id);
  284.         if (!$etat) {
  285.             return new JsonResponse(['status' => 'KOO''message' => 'Etat not found!']);
  286.         };
  287.         $etat->setEtat($request->get('nom_etat_n_modif'));
  288.         $etat->setDescription($request->get('description_etat_n_modif'));
  289.         $etat->setStatus($request->get('status_etat_n_modif'));
  290.         $etat->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  291.         try {
  292.             $this->em->persist($etat);
  293.             $this->em->flush();
  294.             return new JsonResponse(['status' => 'OK''message' => 'Etat mise à jour avec succès!']);
  295.         } catch (\Exception $e) {
  296.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de etat: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  297.         }
  298.     }
  299.     /**
  300.      * @Route("/delete_etat/{id}", name="delete_etat" , methods={"DELETE"}, options = {"expose"=true})
  301.      */
  302.     public function delete_etat(int $idRequest $request): Response
  303.     {   
  304.         $etat $this->em->getRepository(Etat::class)->find($id);
  305.         if (!$etat) {
  306.             return new Response('Etat not found!'Response::HTTP_NOT_FOUND);
  307.         };
  308.         try {
  309.             $this->em->remove($etat);
  310.             $this->em->flush();
  311.             return new JsonResponse(['status' => 'OK']);
  312.         } catch (\Exception $e) {
  313.             return new Response('Error deleting etat: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  314.         }
  315.     }
  316.     /**
  317.      * @Route("/serverQuestions", name="serverQuestions", methods={"GET","POST"}, options = {"expose" = true})
  318.      */
  319.     public function serverQuestions(Request $request  ): Response
  320.     {
  321.                 
  322.         //echo $this->session->getMetadataBag()->getLifetime();
  323.                     
  324.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  325.          //   return new Response('disconnect');
  326.         //}
  327.         
  328.         
  329.         
  330.         $sql_where "" ;
  331.         
  332.         
  333.         
  334.          if($request->get('search')['value']!=""){
  335.             $sql_where .= ' AND ( u.type LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  336.         }
  337.          
  338.         
  339.         
  340.         
  341.         $user_array = [] ;
  342.         
  343.         $sql_where2 "";
  344.         
  345.         
  346.         
  347.         
  348.         
  349.         $limit =  $request->get('length') ;
  350.             
  351.         $offset $request->get('start') ;
  352.         
  353.         $array_search = array();
  354.         
  355.         $columns = ['u.id','u.question','u.type'] ;
  356.         
  357.         $orders = [] ;
  358.         
  359.         
  360.         for($i=$i<count($request->get('order')) ;$i++ ){
  361.             
  362.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  363.             
  364.         }
  365.         
  366.         
  367.         if( count($orders)>0){
  368.         $order " ORDER BY ".implode(' , ',$orders) ;
  369.         }
  370.         else{
  371.         $order "" ;  
  372.         }
  373.         
  374.         
  375.         
  376.         $total_questions = [];
  377.         
  378.         
  379.         
  380.         $total_questions $this->em->createQuery(
  381.             'SELECT u 
  382.             FROM App\Entity\Questions u
  383.             
  384.             
  385.             WHERE 1=1 '.$sql_where.'
  386.              
  387.             '
  388.             )
  389.                 
  390.                 ->getResult()  ;
  391.       
  392.                 
  393.         
  394.         $I_nbResultatsTotal count$total_questions ) ;
  395.         
  396.         
  397.         $questions $this->em->createQuery(
  398.                 'SELECT u 
  399.                 FROM App\Entity\Questions u
  400.                
  401.                 
  402.                 WHERE 1=1 '.$sql_where.' '.$order.'
  403.                  
  404.                 '
  405.                 )
  406.                 ->setMaxResults($limit)
  407.                 ->setFirstResult($offset)
  408.                 ->getResult()  ;
  409.         
  410.         
  411.         $output = [] ; 
  412.                
  413.         foreach($questions as $question){
  414.             
  415.         $output[] = [
  416.                 
  417.                 'id'=>$question->getId() ,
  418.                 'question'=>$question->getQuestion() ,
  419.                 'type'=>$question->getType() ,
  420.                 'created_at' => date_format$question->getDateCreation() , 'd/m/Y H:i'),
  421.                 'updated_at' => date_format$question->getDateUpdate() , 'd/m/Y H:i')
  422.                 
  423.         ];
  424.         
  425.         
  426.         
  427.         
  428.         }
  429.         
  430.         
  431.         $JSON json_encode($output);
  432.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  433.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  434.         return $response;
  435.         
  436.         
  437.         
  438.         
  439.         
  440.     }
  441.     /**
  442.      * @Route("/configuration_questions", name="configuration_questions", methods={"GET","POST"} , options={"expose"=true})
  443.      */
  444.     public function configuration_questions(Request $request AdministrateursRepository $AdministrateursRepositoryNiveauAdminRepository $niveauAdminRepository,GroupeRestrictionRepository $groupeRestrictionRepository,
  445.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  446.     {
  447.         $accessArray=[];
  448.         $niveauAcessPages = [];
  449.         $groupeRestrictions = [];
  450.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  451.             $admin $this->session->get('supAdT9m2XJzn4');
  452.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  453.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  454.             $adminId $admin->getId();
  455.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  456.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  457.             $accessArray $restrictionPages[0]->getAccess();
  458.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  459.             $niveauAcessPagesCollection->initialize();
  460.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  461.         }else {
  462.             return $this->redirectToRoute('connexion');
  463.         }
  464.         $niveauAdmins $niveauAdminRepository->findAll();
  465.         return $this->render('configuration/config_questions.html.twig',[
  466.             'admin' => $admin,
  467.             'access' => $accessArray,
  468.             'pages' => $niveauAcessPages,
  469.             'niveauAdmins' => $niveauAdmins,
  470.         ]);
  471.     }
  472.     /**
  473.      * @Route("/ajout_question", name="ajout_question" , options = {"expose"=true})
  474.      */
  475.     public function ajout_question(Request $request  ): Response
  476.     {
  477.         $question = new Questions();
  478.         $question->setType($request->get('type_question_n'));
  479.         $question->setQuestion($request->get('nom_question_n'));
  480.         $question->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  481.         $question->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  482.         $this->em->persist($question);
  483.         $this->em->flush();
  484.         return new Response('OK');
  485.     }
  486.     /**
  487.      * @Route("/modif_question/{id}", name="modif_question" , methods={"POST"}, options = {"expose"=true})
  488.      */
  489.     public function modif_question(int $idRequest $request): Response
  490.     {   
  491.         $question $this->em->getRepository(Questions::class)->find($id);
  492.         if (!$question) {
  493.             return new JsonResponse(['status' => 'KOO''message' => 'Question not found!']);
  494.         };
  495.         $question->setType($request->get('type_question_n_modif'));
  496.         $question->setQuestion($request->get('nom_question_n_modif'));
  497.         $question->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  498.         try {
  499.             $this->em->persist($question);
  500.             $this->em->flush();
  501.             return new JsonResponse(['status' => 'OK''message' => 'Question mise à jour avec succès!']);
  502.         } catch (\Exception $e) {
  503.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de la question: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  504.         }
  505.     }
  506.     /**
  507.      * @Route("/delete_question/{id}", name="delete_question" , methods={"DELETE"}, options = {"expose"=true})
  508.      */
  509.     public function delete_question(int $idRequest $request): Response
  510.     {   
  511.         $question $this->em->getRepository(Questions::class)->find($id);
  512.         if (!$question) {
  513.             return new Response('Question not found!'Response::HTTP_NOT_FOUND);
  514.         };
  515.         try {
  516.             $this->em->remove($question);
  517.             $this->em->flush();
  518.             return new JsonResponse(['status' => 'OK']);
  519.         } catch (\Exception $e) {
  520.             return new Response('Error deleting question: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  521.         }
  522.     }
  523.     //Debut Partie Niveau
  524.     /**
  525.      * @Route("/configuration_niveau_filiale", name="configuration_niveau_filiale", methods={"GET","POST"} , options={"expose"=true})
  526.      */
  527.     public function configuration_niveau_filiale(Request $requestEtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  528.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  529.     {
  530.         $accessArray=[];
  531.         $niveauAcessPages = [];
  532.         $groupeRestrictions = [];
  533.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  534.             $admin $this->session->get('supAdT9m2XJzn4');
  535.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  536.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  537.             $adminId $admin->getId();
  538.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  539.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  540.             $accessArray $restrictionPages[0]->getAccess();
  541.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  542.             $niveauAcessPagesCollection->initialize();
  543.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  544.         }else {
  545.             return $this->redirectToRoute('connexion');
  546.         }
  547.         $niveau $this->em->getRepository(Niveau::class)->findAll(); 
  548.         return $this->render('configuration/config_niv_filiale.html.twig'
  549.         [
  550.             "admin" => $admin,
  551.             'niveaus' => $niveau,
  552.             'access' => $accessArray,
  553.             'pages' => $niveauAcessPages
  554.         ]);
  555.     }
  556.     /**
  557.      * @Route("/modifier_niveau/{id}", name="modifier_niveau", methods={"POST"}, options={"expose"=true})
  558.      */
  559.     public function modifier_niveau(Request $request$id): Response
  560.     {
  561.         $niveau $this->em->getRepository(Niveau::class)->find($id);
  562.         if (!$niveau) {
  563.             return new Response('Niveau not found!'Response::HTTP_NOT_FOUND);
  564.         }
  565.         //dd($niveau);
  566.         $nomNiveau $request->get('nom_niveau');
  567.         $etat $request->get('etat_niveau');
  568.         $niveau->setNiveau($nomNiveau);
  569.         $niveau->setEtat($etat);
  570.         try {
  571.             $this->em->persist($niveau);
  572.             $this->em->flush();
  573.             return new Response('Niveau mise a jour avec succeés!');
  574.         } catch (\Exception $e) {
  575.             return new Response('Error en midifcation du niveau: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  576.         }
  577.     }
  578.     /**
  579.      * @Route("/supprimer_niveau/{id}", name="supprimer_niveau", methods={"DELETE"}, options={"expose"=true})
  580.      */
  581.     public function supprimer_niveau(Request $request$id): Response
  582.     {
  583.         $niveau $this->em->getRepository(Niveau::class)->find($id);
  584.         if (!$niveau) {
  585.             return new Response('Niveau not found!'Response::HTTP_NOT_FOUND);
  586.         }
  587.         try {
  588.             $this->em->remove($niveau);
  589.             $this->em->flush();
  590.             return new Response('Niveau supprimer avec success!');
  591.         } catch (\Exception $e) {
  592.             return new Response('Error deleting niveau: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  593.         }
  594.     }
  595.     /**
  596.      * @Route("/enregistrer_niveau", name="enregistrer_niveau", methods={"POST"} , options={"expose"=true})
  597.      */
  598.     public function enregistrer_niveau(Request $request): Response
  599.     {
  600.         //dd($request->request->all());
  601.         $nomNiveau $request->get('nom_niveau');
  602.         $etat $request->get('etat_niveau');
  603.         //dd($etat);
  604.         $niveau = new Niveau();
  605.         $niveau->setNiveau($nomNiveau);
  606.         $niveau->setEtat($etat);
  607.        
  608.         $currentDateTime = new DateTime();
  609.         $niveau->setDateCreation($currentDateTime);
  610.         //dd($niveau);
  611.         $this->em->persist($niveau);
  612.   
  613.         $this->em->flush();
  614.       
  615.         return new Response('Form data received and saved successfully!');
  616.     }
  617.     //Fin Partie Niveau
  618.     //debut Partie Configuration Compétence
  619.     /**
  620.      * @Route("/configuration_competence", name="configuration_competence", methods={"GET","POST"} , options={"expose"=true})
  621.      */
  622.     public function configuration_competence(Request $request 
  623.     CompetencesRepository $CompetencesRepository ,FamilleCompetenceRepository $FamilleCompetenceRepository 
  624.     SousFamilleCompetenceRepository $SousFamilleCompetenceRepository,
  625.     AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  626.     GroupeRestrictionPageRepository $grouprestrictionpageRepository ): Response
  627.     {
  628.         $accessArray=[];
  629.         $niveauAcessPages = [];
  630.         $groupeRestrictions = [];
  631.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  632.             $admin $this->session->get('supAdT9m2XJzn4');
  633.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  634.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  635.             $adminId $admin->getId();
  636.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  637.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  638.             $accessArray $restrictionPages[0]->getAccess();
  639.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  640.             $niveauAcessPagesCollection->initialize();
  641.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  642.         }else {
  643.             return $this->redirectToRoute('connexion');
  644.         }
  645.         $FamilleCompetence $FamilleCompetenceRepository->findBy(['etat'=>1]);
  646.         $SousFamilleCompetence $SousFamilleCompetenceRepository->findBy(['etat'=>1]);
  647.         $competences $CompetencesRepository->findBy(['etat'=>1]);
  648.         return $this->render('configuration/config_competence.html.twig',[
  649.             'admin' => $admin,
  650.             'famille_competences'=>$FamilleCompetence,
  651.             'sous_famille_competences'=>$SousFamilleCompetence,
  652.             'competences'=>$competences,
  653.             'access' => $accessArray,
  654.             'pages' => $niveauAcessPages
  655.         ]);
  656.     }
  657.     /**
  658.      * @Route("/ajout_competence", name="ajout_competence" , options = {"expose"=true})
  659.      */
  660.     public function ajout_competence(Request $request CompetencesRepository $CompetencesRepository ): Response
  661.     {
  662.         $existence $CompetencesRepository->findOneBy(['competence'=>$request->get('competence_n')]);
  663.         if($existence == null){
  664.             $competence = new Competences();
  665.             $competence->setCompetence($request->get('competence_n'));
  666.             $competence->setDescription($request->get('description_n'));
  667.             $competence->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  668.             $competence->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  669.             $competence->setEtat($request->get('etat_n'));
  670.             $this->em->persist($competence);
  671.             $this->em->flush();
  672.             return new Response('OK');
  673.         }else{
  674.             return new Response('KOO');
  675.         }
  676.     }
  677.     /**
  678.      * @Route("/modif_competence/{id}", name="modif_competence" , methods={"POST"}, options = {"expose"=true})
  679.      */
  680.     public function modif_competence(int $idRequest $request): Response
  681.     {   
  682.         $competence $this->em->getRepository(Competences::class)->find($id);
  683.         if (!$competence) {
  684.             return new JsonResponse(['status' => 'KOO''message' => 'Competences not found!']);
  685.         };
  686.         $competence->setCompetence($request->get('competence_n_modif'));
  687.         $competence->setDescription($request->get('description_n_modif'));
  688.         $competence->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  689.         $competence->setEtat($request->get('etat_n_modif'));
  690.         try {
  691.             $this->em->persist($competence);
  692.             $this->em->flush();
  693.             return new JsonResponse(['status' => 'OK''message' => 'Question mise à jour avec succès!']);
  694.         } catch (\Exception $e) {
  695.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de la competence: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  696.         }
  697.     }
  698.     /**
  699.      * @Route("/delete_competence/{id}", name="delete_competence" , methods={"DELETE"}, options = {"expose"=true})
  700.      */
  701.     public function delete_competence(int $idRequest $request): Response
  702.     {   
  703.         $competence $this->em->getRepository(Competences::class)->find($id);
  704.         if (!$competence) {
  705.             return new Response('Competence not found!'Response::HTTP_NOT_FOUND);
  706.         };
  707.         try {
  708.             $this->em->remove($competence);
  709.             $this->em->flush();
  710.             return new JsonResponse(['status' => 'OK']);
  711.         } catch (\Exception $e) {
  712.             return new Response('Error deleting competence: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  713.         }
  714.     }
  715.     /**
  716.      * @Route("/ajout_sf_competence", name="ajout_sf_competence" , options = {"expose"=true})
  717.      */
  718.     public function ajout_sf_competence(Request $request SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
  719.     {
  720.         $existence $SousFamilleCompetenceRepository->findOneBy(['nom_sf'=>$request->get('competesous_famille_nnce_n')]);
  721.         if($existence == null){
  722.             $SousFamilleCompetence = new SousFamilleCompetence();
  723.             $SousFamilleCompetence->setNomSf($request->get('sous_famille_n'));
  724.             $SousFamilleCompetence->setDescription($request->get('description_sf_n'));
  725.             $SousFamilleCompetence->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  726.             $SousFamilleCompetence->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  727.             $SousFamilleCompetence->setEtat($request->get('etat_sf_n'));
  728.             $this->em->persist($SousFamilleCompetence);
  729.             $this->em->flush();
  730.             return new Response('OK');
  731.         }else{
  732.             return new Response('KOO');
  733.         }
  734.            
  735.         
  736.        
  737.     }
  738.     /**
  739.      * @Route("/modif_sfCompetence/{id}", name="modif_sfCompetence" , methods={"POST"}, options = {"expose"=true})
  740.      */
  741.     public function modif_sfCompetence(int $idRequest $request): Response
  742.     {   
  743.         $competenceSf $this->em->getRepository(SousFamilleCompetence::class)->find($id);
  744.         if (!$competenceSf) {
  745.             return new JsonResponse(['status' => 'KOO''message' => 'Sous famille not found!']);
  746.         };
  747.         $competenceSf->setNomSf($request->get('sous_famille_n_modif'));
  748.         $competenceSf->setDescription($request->get('description_sf_n_modif'));
  749.         $competenceSf->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  750.         $competenceSf->setEtat($request->get('etat_sf_n_modif'));
  751.         try {
  752.             $this->em->persist($competenceSf);
  753.             $this->em->flush();
  754.             return new JsonResponse(['status' => 'OK''message' => 'Sous famille  mise à jour avec succès!']);
  755.         } catch (\Exception $e) {
  756.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de famille competence: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  757.         }
  758.     }
  759.     /**
  760.      * @Route("/deleteSf_competence/{id}", name="deleteSf_competence" , methods={"DELETE"}, options = {"expose"=true})
  761.      */
  762.     public function deleteSf_competence(int $idRequest $request): Response
  763.     {   
  764.         $competenceSf $this->em->getRepository(SousFamilleCompetence::class)->find($id);
  765.         if (!$competenceSf) {
  766.             return new Response('Sous famille competence not found!'Response::HTTP_NOT_FOUND);
  767.         };
  768.         try {
  769.             $this->em->remove($competenceSf);
  770.             $this->em->flush();
  771.             return new JsonResponse(['status' => 'OK']);
  772.         } catch (\Exception $e) {
  773.             return new Response('Error deleting sous famille competence: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  774.         }
  775.     }
  776.     /**
  777.      * @Route("/ajout_famille_competence", name="ajout_famille_competence" , options = {"expose"=true})
  778.      */
  779.     public function ajout_famille_competence(Request $request FamilleCompetenceRepository $FamilleCompetenceRepository ): Response
  780.     {
  781.         $existence $FamilleCompetenceRepository->findOneBy(['nom_f'=>$request->get('famille_n')]);
  782.         if($existence == null){
  783.             $FamilleCompetence = new FamilleCompetence();
  784.             $FamilleCompetence->setNomF($request->get('famille_n'));
  785.             $FamilleCompetence->setDescription($request->get('description_f_n'));
  786.             $FamilleCompetence->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  787.             $FamilleCompetence->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  788.             $FamilleCompetence->setEtat($request->get('etat_f_n'));
  789.             $this->em->persist($FamilleCompetence);
  790.             $this->em->flush();
  791.             return new Response('OK');
  792.         }else{
  793.             return new Response('KOO');
  794.         }
  795.        
  796.     }
  797.     /**
  798.      * @Route("/modif_fCompetence/{id}", name="modif_fCompetence" , methods={"POST"}, options = {"expose"=true})
  799.      */
  800.     public function modif_fCompetence(int $idRequest $request): Response
  801.     {   
  802.         $competenceF $this->em->getRepository(FamilleCompetence::class)->find($id);
  803.         if (!$competenceF) {
  804.             return new JsonResponse(['status' => 'KOO''message' => 'Famille not found!']);
  805.         };
  806.         $competenceF->setNomF($request->get('famille_n_modif'));
  807.         $competenceF->setDescription($request->get('description_f_n_modif'));
  808.         $competenceF->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  809.         $competenceF->setEtat($request->get('etat_f_n_modif'));
  810.         try {
  811.             $this->em->persist($competenceF);
  812.             $this->em->flush();
  813.             return new JsonResponse(['status' => 'OK''message' => 'Famille competence mise à jour avec succès!']);
  814.         } catch (\Exception $e) {
  815.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de famille competence: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  816.         }
  817.     }
  818.     /**
  819.      * @Route("/deletef_competence/{id}", name="deletef_competence" , methods={"DELETE"}, options = {"expose"=true})
  820.      */
  821.     public function deletef_competence(int $idRequest $request): Response
  822.     {   
  823.         $competenceF $this->em->getRepository(FamilleCompetence::class)->find($id);
  824.         if (!$competenceF) {
  825.             return new Response('Famille competence not found!'Response::HTTP_NOT_FOUND);
  826.         };
  827.         try {
  828.             $this->em->remove($competenceF);
  829.             $this->em->flush();
  830.             return new JsonResponse(['status' => 'OK']);
  831.         } catch (\Exception $e) {
  832.             return new Response('Error deleting famille competence: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  833.         }
  834.     }
  835.       /**
  836.      * @Route("/affectation_competence", name="affectation_competence" , options = {"expose"=true})
  837.      */
  838.     public function affectation_competence(Request $request FamilleCompetenceRepository $FamilleCompetenceRepository CompetencesRepository $CompetencesRepository SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
  839.     {
  840.         $sf $SousFamilleCompetenceRepository->find($request->get('sous_famille_competence'));
  841.         $f $FamilleCompetenceRepository->find($request->get('famille_competence'));
  842.         $cs $request->get('competences');
  843.         
  844.         $AffCompetenceSf = new AffCompetenceSf();
  845.         $AffCompetenceSf->setCompetences($cs);
  846.         $AffCompetenceSf->setSousFamilleCompetence($sf);
  847.         $AffCompetenceSf->setFamille($f);
  848.         $AffCompetenceSf->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  849.         $this->em->persist($AffCompetenceSf);
  850.         $this->em->flush();
  851.         
  852.         $AffSousFamilleFamille = new AffSousFamilleFamille();
  853.         $AffSousFamilleFamille->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  854.         $AffSousFamilleFamille->setSousFamille($sf);
  855.         $AffSousFamilleFamille->setFamille($f);
  856.         $this->em->persist($AffSousFamilleFamille);
  857.         $this->em->flush();
  858.         
  859.         return new Response('OK');
  860.         
  861.        
  862.     }
  863.     /**
  864.      * @Route("/modif_AffCompetence/{id}", name="modif_AffCompetence" , options = {"expose"=true})
  865.      */
  866.     public function modif_AffCompetence(int $id,Request $request FamilleCompetenceRepository $FamilleCompetenceRepository CompetencesRepository $CompetencesRepository SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
  867.     {
  868.         $sf $SousFamilleCompetenceRepository->find($request->get('sous_famille_competence_edit'));
  869.         $f $FamilleCompetenceRepository->find($request->get('famille_competence_edit'));
  870.         $cs $request->get('competences');
  871.         $AffCompetenceSf $this->em->getRepository(AffCompetenceSf::class)->find($id);
  872.         if (!$AffCompetenceSf) {
  873.             return new JsonResponse(['status' => 'KOO''message' => 'Affectation famille not found!']);
  874.         };
  875.         $AffCompetenceSf->setCompetences($cs);
  876.         $AffCompetenceSf->setSousFamilleCompetence($sf);
  877.         $AffCompetenceSf->setFamille($f);
  878.         try {
  879.             $this->em->persist($AffCompetenceSf);
  880.             $this->em->flush();
  881.             return new JsonResponse(['status' => 'OK''message' => 'Affectation famille  mise à jour avec succès!']);
  882.         } catch (\Exception $e) {
  883.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de affectation famille competence: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  884.         }
  885.         
  886.     }
  887.     /**
  888.      * @Route("/deleteAff_competence/{id}", name="deleteAff_competence" , methods={"DELETE"}, options = {"expose"=true})
  889.      */
  890.     public function deleteAff_competence(int $idRequest $request): Response
  891.     {   
  892.         $AffCompetenceSf $this->em->getRepository(AffCompetenceSf::class)->find($id);
  893.         if (!$AffCompetenceSf) {
  894.             return new Response('Famille competence not found!'Response::HTTP_NOT_FOUND);
  895.         };
  896.         try {
  897.             $this->em->remove($AffCompetenceSf);
  898.             $this->em->flush();
  899.             return new JsonResponse(['status' => 'OK']);
  900.         } catch (\Exception $e) {
  901.             return new Response('Error deleting affectation competence: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  902.         }
  903.     }
  904.     /**
  905.      * @Route("/serverCompetence", name="serverCompetence", methods={"GET","POST"}, options = {"expose" = true})
  906.      */
  907.     public function serverCompetence(Request $request  ): Response
  908.     {
  909.                 
  910.         //echo $this->session->getMetadataBag()->getLifetime();
  911.                     
  912.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  913.          //   return new Response('disconnect');
  914.         //}
  915.         
  916.         
  917.         
  918.         $sql_where "" ;
  919.         
  920.         
  921.         
  922.          if($request->get('search')['value']!=""){
  923.             $sql_where .= ' AND ( u.competence LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  924.         }
  925.          
  926.         
  927.         
  928.         
  929.         $user_array = [] ;
  930.         
  931.         $sql_where2 "";
  932.         
  933.         
  934.         
  935.         
  936.         
  937.         $limit =  $request->get('length') ;
  938.             
  939.         $offset $request->get('start') ;
  940.         
  941.         $array_search = array();
  942.         
  943.         $columns = ['u.id','u.competence''u.etat''u.date_creation''u.date_update'] ;
  944.         
  945.         $orders = [] ;
  946.         
  947.         
  948.         for($i=$i<count($request->get('order')) ;$i++ ){
  949.             
  950.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  951.             
  952.         }
  953.         
  954.         
  955.         if( count($orders)>0){
  956.         $order " ORDER BY ".implode(' , ',$orders) ;
  957.         }
  958.         else{
  959.         $order "" ;  
  960.         }
  961.         
  962.         
  963.         
  964.         $total_competences = [];
  965.         
  966.         
  967.         
  968.         $total_competences $this->em->createQuery(
  969.             'SELECT u 
  970.             FROM App\Entity\Competences u
  971.             
  972.             
  973.             WHERE 1=1 '.$sql_where.'
  974.              
  975.             '
  976.             )
  977.                 
  978.                 ->getResult()  ;
  979.       
  980.                 
  981.         
  982.         $I_nbResultatsTotal count$total_competences ) ;
  983.         
  984.         
  985.         $competeneces $this->em->createQuery(
  986.                 'SELECT u 
  987.                 FROM App\Entity\Competences u
  988.                
  989.                 
  990.                 WHERE 1=1 '.$sql_where.' '.$order.'
  991.                  
  992.                 '
  993.                 )
  994.                 ->setMaxResults($limit)
  995.                 ->setFirstResult($offset)
  996.                 ->getResult()  ;
  997.         
  998.         
  999.         $output = [] ; 
  1000.         $etat '';
  1001.                
  1002.         foreach($competeneces as $competence){
  1003.             if($competence->getEtat() == 1){
  1004.                 $etat '<span class="badge bg-success">Actif</span>';
  1005.             }else if($competence->getEtat() == 0){
  1006.                 $etat '<span class="badge bg-danger">Inactif</span>';
  1007.             };
  1008.             
  1009.         $output[] = [
  1010.                 
  1011.                 'id'=>$competence->getId() ,
  1012.                 'competenece'=>$competence->getCompetence() ,
  1013.                 'etat'=>$etat ,
  1014.                 'created_at' => date_format$competence->getDateCreation() , 'd/m/Y H:i'),
  1015.                 'updated_at' => date_format$competence->getDateUpdate() , 'd/m/Y H:i')
  1016.                 
  1017.         ];
  1018.         
  1019.         
  1020.         
  1021.         
  1022.         }
  1023.         
  1024.         
  1025.         $JSON json_encode($output);
  1026.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1027.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1028.         return $response;
  1029.         
  1030.         
  1031.         
  1032.         
  1033.         
  1034.     }
  1035.     /**
  1036.      * @Route("/serverFamilleCompetence", name="serverFamilleCompetence", methods={"GET","POST"}, options = {"expose" = true})
  1037.      */
  1038.     public function serverFamilleCompetence(Request $request  ): Response
  1039.     {
  1040.                     
  1041.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1042.          //   return new Response('disconnect');
  1043.         //}
  1044.         
  1045.         
  1046.         
  1047.         $sql_where "" ;
  1048.         
  1049.         
  1050.         
  1051.          if($request->get('search')['value']!=""){
  1052.             $sql_where .= ' AND ( u.nom_f LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  1053.         }
  1054.          
  1055.         
  1056.         
  1057.         
  1058.         $user_array = [] ;
  1059.         
  1060.         $sql_where2 "";
  1061.         
  1062.         
  1063.         
  1064.         
  1065.         
  1066.         $limit =  $request->get('length') ;
  1067.             
  1068.         $offset $request->get('start') ;
  1069.         
  1070.         $array_search = array();
  1071.         
  1072.         $columns = ['u.id''u.nom_f''u.description''u.etat''u.date_creation''u.date_update'];
  1073.         
  1074.         $orders = [] ;
  1075.         
  1076.         
  1077.         for($i=$i<count($request->get('order')) ;$i++ ){
  1078.             
  1079.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1080.             
  1081.         }
  1082.         
  1083.         
  1084.         if( count($orders)>0){
  1085.         $order " ORDER BY ".implode(' , ',$orders) ;
  1086.         }
  1087.         else{
  1088.         $order "" ;  
  1089.         }
  1090.         
  1091.         
  1092.         
  1093.         $total_competences = [];
  1094.         
  1095.         
  1096.         
  1097.         $total_competences $this->em->createQuery(
  1098.             'SELECT u 
  1099.             FROM App\Entity\FamilleCompetence u
  1100.             
  1101.             
  1102.             WHERE 1=1 '.$sql_where.'
  1103.              
  1104.             '
  1105.             )
  1106.                 
  1107.                 ->getResult()  ;
  1108.       
  1109.                 
  1110.         
  1111.         $I_nbResultatsTotal count$total_competences ) ;
  1112.         
  1113.         
  1114.         $famillecompeteneces $this->em->createQuery(
  1115.                 'SELECT u 
  1116.                 FROM App\Entity\FamilleCompetence u
  1117.                
  1118.                 
  1119.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1120.                  
  1121.                 '
  1122.                 )
  1123.                 ->setMaxResults($limit)
  1124.                 ->setFirstResult($offset)
  1125.                 ->getResult()  ;
  1126.         
  1127.         
  1128.         $output = [] ; 
  1129.         $etat '';
  1130.                
  1131.         foreach($famillecompeteneces as $competence){
  1132.             if($competence->getEtat() == 1){
  1133.                 $etat '<span class="badge bg-success">Actif</span>';
  1134.             }else if($competence->getEtat() == 0){
  1135.                 $etat '<span class="badge bg-danger">Inactif</span>';
  1136.             };
  1137.             
  1138.         $output[] = [
  1139.                 
  1140.                 'id'=>$competence->getId() ,
  1141.                 'familleCompetenece'=>$competence->getNomF() ,
  1142.                 'description'=>$competence->getDescription() ,
  1143.                 'etat'=>$etat ,
  1144.                 'created_at' => date_format$competence->getDateCreation() , 'd/m/Y H:i'),
  1145.                 'updated_at' => date_format$competence->getDateUpdate() , 'd/m/Y H:i')      
  1146.         ];
  1147.         
  1148.         
  1149.         
  1150.         
  1151.         }
  1152.         
  1153.         
  1154.         $JSON json_encode($output);
  1155.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1156.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1157.         return $response;
  1158.         
  1159.         
  1160.         
  1161.         
  1162.         
  1163.     }
  1164.     /**
  1165.      * @Route("/serverSousFamilleCompetence", name="serverSousFamilleCompetence", methods={"GET","POST"}, options = {"expose" = true})
  1166.      */
  1167.     public function serverSousFamilleCompetence(Request $request): Response
  1168.     {
  1169.                     
  1170.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1171.          //   return new Response('disconnect');
  1172.         //}
  1173.         
  1174.         $sql_where "" ;
  1175.         
  1176.         if($request->get('search')['value']!=""){
  1177.             $sql_where .= ' AND ( u.nom_sf LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  1178.         }
  1179.         if($request->get('search')['value']!=""){
  1180.             $sql_where .= ' AND ( u.description LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  1181.         }
  1182.          
  1183.         
  1184.         $user_array = [] ;
  1185.         
  1186.         $sql_where2 "";
  1187.         
  1188.         
  1189.         
  1190.         
  1191.         
  1192.         $limit =  $request->get('length') ;
  1193.             
  1194.         $offset $request->get('start') ;
  1195.         
  1196.         $array_search = array();
  1197.         
  1198.         $columns = ['u.id''u.nom_sf''u.description''u.etat''u.date_creation''u.date_update'];
  1199.         
  1200.         $orders = [] ;
  1201.         
  1202.         
  1203.         for($i=$i<count($request->get('order')) ;$i++ ){
  1204.             
  1205.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1206.             
  1207.         }
  1208.         
  1209.         
  1210.         if( count($orders)>0){
  1211.         $order " ORDER BY ".implode(' , ',$orders) ;
  1212.         }
  1213.         else{
  1214.         $order "" ;  
  1215.         }
  1216.         
  1217.         
  1218.         
  1219.         $total_competences = [];
  1220.         
  1221.         
  1222.         
  1223.         $total_competences $this->em->createQuery(
  1224.             'SELECT u 
  1225.             FROM App\Entity\SousFamilleCompetence u
  1226.             
  1227.             
  1228.             WHERE 1=1 '.$sql_where.'
  1229.              
  1230.             '
  1231.             )
  1232.                 
  1233.                 ->getResult()  ;
  1234.       
  1235.                 
  1236.         
  1237.         $I_nbResultatsTotal count$total_competences ) ;
  1238.         
  1239.         
  1240.         $sousFamillecompeteneces $this->em->createQuery(
  1241.                 'SELECT u 
  1242.                 FROM App\Entity\SousFamilleCompetence u
  1243.                
  1244.                 
  1245.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1246.                  
  1247.                 '
  1248.                 )
  1249.                 ->setMaxResults($limit)
  1250.                 ->setFirstResult($offset)
  1251.                 ->getResult()  ;
  1252.         
  1253.         
  1254.         $output = [] ; 
  1255.         $etat '';
  1256.                
  1257.         foreach($sousFamillecompeteneces as $competence){
  1258.             if($competence->getEtat() == 1){
  1259.                 $etat '<span class="badge bg-success">Actif</span>';
  1260.             }else if($competence->getEtat() == 0){
  1261.                 $etat '<span class="badge bg-danger">Inactif</span>';
  1262.             };
  1263.             
  1264.         $output[] = [
  1265.                 
  1266.                 'id'=>$competence->getId() ,
  1267.                 'sousFamilleCompetenece'=>$competence->getNomSf() ,
  1268.                 'description'=>$competence->getDescription() ,
  1269.                 'etat'=>$etat ,
  1270.                 'created_at' => date_format$competence->getDateCreation() , 'd/m/Y H:i'),
  1271.                 'updated_at' => date_format$competence->getDateUpdate() , 'd/m/Y H:i')      
  1272.         ];
  1273.          
  1274.         }
  1275.         
  1276.         $JSON json_encode($output);
  1277.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1278.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1279.         return $response;
  1280.         
  1281.     }
  1282.     /**
  1283.      * @Route("/serverAffectation", name="serverAffectation", methods={"GET","POST"}, options = {"expose" = true})
  1284.      */
  1285.     public function serverAffectation(Request $request,CompetencesRepository $CompetencesRepository,FamilleCompetenceRepository $FamilleCompetenceRepository,SousFamilleCompetenceRepository $SousFamilleCompetenceRepository): Response
  1286.     {
  1287.                     
  1288.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1289.          //   return new Response('disconnect');
  1290.         //}
  1291.         
  1292.         $sql_where "" ;
  1293.         
  1294.         if($request->get('search')['value']!=""){
  1295.             $sql_where .= ' AND ( u.id LIKE \'%'.$request->get('search')['value'].'%\' ) ' 
  1296.             // $searchValue = $request->get('search')['value'];
  1297.            // $sql_where .= ' AND (u.id LIKE \'%'.$searchValue.'%\' OR sf.nom_sf LIKE \'%'.$searchValue.'%\' OR f.nom_f LIKE \'%'.$searchValue.'%\') ';
  1298.         }
  1299.          
  1300.         
  1301.         $user_array = [] ;
  1302.         
  1303.         
  1304.         $limit =  $request->get('length') ;
  1305.             
  1306.         $offset $request->get('start') ;
  1307.         
  1308.         $array_search = array();
  1309.         
  1310.         $columns = ['u.id''u.famille','u.sous_famille_competence','u.competence''u.date_creation'] ;
  1311.         $orders = [] ;
  1312.         
  1313.         for($i=$i<count($request->get('order')) ;$i++ ){
  1314.             
  1315.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1316.             
  1317.         }
  1318.         
  1319.         if( count($orders)>0){
  1320.         $order " ORDER BY ".implode(' , ',$orders) ;
  1321.         }
  1322.         else{
  1323.         $order "" ;  
  1324.         }
  1325.         $total_competences = [];
  1326.     
  1327.         $total_competences $this->em->createQuery(
  1328.             'SELECT u 
  1329.             FROM App\Entity\AffCompetenceSf u
  1330.             WHERE 1=1 '.$sql_where.'
  1331.             '
  1332.             )  
  1333.             ->getResult();
  1334.         $I_nbResultatsTotal count$total_competences ) ;
  1335.         
  1336.         
  1337.         $affCompetenceSfArray $this->em->createQuery(
  1338.                 'SELECT u
  1339.                 FROM App\Entity\AffCompetenceSf u
  1340.                 WHERE 1=1 '.$sql_where.' '.$order
  1341.                     )
  1342.                 ->setMaxResults($limit)
  1343.                 ->setFirstResult($offset)
  1344.                 ->getResult()  ;
  1345.         //$affCompetenceSfArray = $this->em->createQuery(
  1346.                //     'SELECT u, sf, f
  1347.              //       FROM App\Entity\AffCompetenceSf u
  1348.             //        JOIN u.sous_famille_competence AS sf
  1349.              //       JOIN u.famille AS f
  1350.             //        WHERE 1=1 '.$sql_where.' 
  1351.              //           )
  1352.               //      ->getResult()  ;
  1353.         
  1354.         $output = [] ; 
  1355.                
  1356.         foreach($affCompetenceSfArray as $affCompetenceSf){
  1357.             $sousFamilleCompetenceId $affCompetenceSf->getSousFamilleCompetenceId();
  1358.             $familleCompetenceId $affCompetenceSf->getFamilleCompetenceId();
  1359.             $sousFamilleCompetenceName $SousFamilleCompetenceRepository->find($sousFamilleCompetenceId)->getNomSf();
  1360.             $FamilleCompetenceName $FamilleCompetenceRepository->find($familleCompetenceId)->getNomF();
  1361.             $competencesArray $affCompetenceSf->getCompetenceIds();
  1362.             $competenceNames = [];
  1363.             foreach($competencesArray as $competence){
  1364.                 $competenceNames[] = '<span class="badge bg-primary">' .$CompetencesRepository->find($competence)->getCompetence(). '</span>';
  1365.             }
  1366.             
  1367.             $output[] = [           
  1368.                     'id'=>$affCompetenceSf->getId() ,
  1369.                     'competence'=>implode(' '$competenceNames) ,
  1370.                     'sous_famille_competence'=>$sousFamilleCompetenceName ,
  1371.                     'famille' => $FamilleCompetenceName,
  1372.                     'date_creation' => date_format$affCompetenceSf->getDateCreation() , 'd/m/Y H:i')        
  1373.             ];
  1374.         
  1375.         }
  1376.         
  1377.         $JSON json_encode($output);
  1378.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1379.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1380.         return $response;     
  1381.         
  1382.     }
  1383.     // end Partie Configuration Compétence
  1384.     
  1385.     /**
  1386.      * @Route("/configuration_formule", name="configuration_formule", methods={"GET","POST"} , options={"expose"=true})
  1387.      */
  1388.     public function configuration_formule(Request $request EtatRepository $EtatRepositoryAdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  1389.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  1390.     {
  1391.         $accessArray=[];
  1392.         $niveauAcessPages = [];
  1393.         $groupeRestrictions = [];
  1394.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1395.             $admin $this->session->get('supAdT9m2XJzn4');
  1396.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  1397.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1398.             $adminId $admin->getId();
  1399.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  1400.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  1401.             $accessArray $restrictionPages[0]->getAccess();
  1402.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1403.             $niveauAcessPagesCollection->initialize();
  1404.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1405.         }else {
  1406.             return $this->redirectToRoute('connexion');
  1407.         }
  1408.         $etats $EtatRepository->findAll();
  1409.         return $this->render('configuration/config_formule.html.twig',[
  1410.             'admin' => $admin,
  1411.             'etats'=>$etats,
  1412.             'access' => $accessArray,
  1413.             'pages' => $niveauAcessPages
  1414.         ]);
  1415.     }
  1416.     /**
  1417.      * @Route("/configuration_smtp", name="configuration_smtp", methods={"GET","POST"} , options={"expose"=true})
  1418.      */
  1419.     public function configuration_smtp(Request $request ,ConfigSmtpRepository $ConfigSmtpRepository ,EtatRepository $EtatRepositoryAdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  1420.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  1421.     {
  1422.         $smtp $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
  1423.         $accessArray=[];
  1424.         $niveauAcessPages = [];
  1425.         $groupeRestrictions = [];
  1426.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1427.             $admin $this->session->get('supAdT9m2XJzn4');
  1428.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  1429.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1430.             $adminId $admin->getId();
  1431.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  1432.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  1433.             $accessArray $restrictionPages[0]->getAccess();
  1434.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1435.             $niveauAcessPagesCollection->initialize();
  1436.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1437.         }else {
  1438.             return $this->redirectToRoute('connexion');
  1439.         }
  1440.         $etats $EtatRepository->findAll();
  1441.         return $this->render('configuration/config_smtp.html.twig',[
  1442.             'admin' => $admin,
  1443.             'etats'=>$etats,
  1444.             'smtp' => $smtp,
  1445.          
  1446.         ]);
  1447.     }
  1448.     /**
  1449.      * @Route("/testSmtp", name="testSmtp", methods={"GET","POST"} , options = {"expose" = true})
  1450.      */
  1451.     public function testSmtp(Request $request GlobalAdmin $GlobalAdmin ConfigSmtpRepository $ConfigSmtpRepository): Response
  1452.     {
  1453.         if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1454.             return new Response('disconnect') ;
  1455.         }
  1456.     
  1457.                 $transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp')  ))
  1458.                 ->setUsername($request->get('user_smtp'))
  1459.                 ->setPassword($request->get('mdp_smtp'))
  1460.                 ;               
  1461.                     
  1462.                 try{
  1463.                     
  1464.                     $mailer = new \Swift_Mailer($transport);
  1465.                     return new Response('OK') ;
  1466.                 }
  1467.                 catch (\Swift_TransportException $e) {                
  1468.                     return new Response($e->getMessage()) ;
  1469.                 }
  1470.             
  1471.     }
  1472.     /**
  1473.      * @Route("/testDestinataires", name="testDestinataires", methods={"GET","POST"} , options = {"expose" = true})
  1474.      */
  1475.     public function testDestinataires(Request $request GlobalAdmin $GlobalAdmin ConfigSmtpRepository $ConfigSmtpRepository): Response
  1476.     {
  1477.         if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1478.             return new Response('disconnect') ;
  1479.         }
  1480.                 $transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp')  ))
  1481.                 ->setUsername($request->get('user_smtp'))
  1482.                 ->setPassword($request->get('mdp_smtp'))
  1483.                 ;
  1484.                 $mailer = new \Swift_Mailer($transport);
  1485.                 $sender $request->get('user_smtp') ;
  1486.                 $msg = [];
  1487.                 foreach($request->get('destinataires') as $destinataire ){
  1488.                     if($destinataire != ""){
  1489.                     $message = (new \Swift_Message('Test SMTP : Destinataires')) ;
  1490.                     $message->setFrom($sender)
  1491.                     ->setTo($destinataire)
  1492.                     ->setBody(
  1493.                         $this->renderView(
  1494.                             // templates/emails/registration.txt.twig
  1495.                             'emails/test.html.twig'
  1496.                         ), 'text/html'
  1497.                     );
  1498.                     
  1499.                     try{
  1500.                         
  1501.                         $mailer->send($message);
  1502.                         $msg[] = 'OK' ;
  1503.                         
  1504.                     }
  1505.                     catch (\Swift_TransportException $e) {   
  1506.                         
  1507.                         $msg[] = $e->getMessage() ;
  1508.                     }
  1509.                     }
  1510.                     
  1511.                 }
  1512.                 return new Response(json_encode($msg), 200, ['Content-Type' => 'application/json']) ;
  1513.             
  1514.     }
  1515.     /**
  1516.      * @Route("/testDestinatairesTransaction", name="testDestinatairesTransaction", methods={"GET","POST"} , options = {"expose" = true})
  1517.      */
  1518.     public function testDestinatairesTransaction(Request $request GlobalAdmin $GlobalAdmin ConfigSmtpRepository $ConfigSmtpRepository): Response
  1519.     {
  1520.         if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1521.             return new Response('disconnect') ;
  1522.         }
  1523.         
  1524.                 
  1525.         $transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp')  ))
  1526.         ->setUsername($request->get('user_smtp'))
  1527.         ->setPassword($request->get('mdp_smtp'))
  1528.         ;
  1529.         $mailer = new \Swift_Mailer($transport);
  1530.         $sender $request->get('user_smtp') ;
  1531.         $msg = [];
  1532.         foreach($request->get('destinataires_transaction') as $destinataire ){
  1533.         
  1534.             if($destinataire != ""){
  1535.                 
  1536.             $message = (new \Swift_Message('Test SMTP : Destinataires Transaction')) ;
  1537.             $message->setFrom($sender)
  1538.             ->setTo($destinataire)
  1539.             ->setBody(
  1540.                 $this->renderView(
  1541.                     // templates/emails/registration.txt.twig
  1542.                     'emails/test_transaction.html.twig'
  1543.                 ), 'text/html'
  1544.             );
  1545.             
  1546.             try{
  1547.                 
  1548.                 $mailer->send($message);
  1549.                 $msg[] = 'OK' ;
  1550.                 
  1551.             }
  1552.             catch (\Swift_TransportException $e) {   
  1553.                 
  1554.                 $msg[] = $e->getMessage() ;
  1555.             }
  1556.             }
  1557.             
  1558.         }
  1559.         return new Response(json_encode($msg), 200, ['Content-Type' => 'application/json']) ;
  1560.     
  1561.     
  1562.     }
  1563.      /**
  1564.      * @Route("/sauvegardeConfigSmtp", name="sauvegardeConfigSmtp", methods={"GET","POST"} , options = {"expose" = true})
  1565.      */
  1566.     public function sauvegardeConfigSmtp(Request $request GlobalAdmin $GlobalAdmin ConfigSmtpRepository $ConfigSmtpRepository): Response
  1567.     {
  1568.         if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  1569.             return new Response('disconnect') ;
  1570.         }
  1571.         $token $GlobalAdmin->genererCode(20) ;
  1572.         
  1573.         if($request->get('id_smtp') != "" ){
  1574.             $smtp $ConfigSmtpRepository->find($request->get('id_smtp')) ;
  1575.         }
  1576.         else{
  1577.             $smtp = new ConfigSmtp();
  1578.         }
  1579.         $smtp->setHost$request->get('host_smtp') );
  1580.         $smtp->setPort$request->get('port_smtp') );
  1581.         $smtp->setTypeConnexion$request->get('type_smtp') );
  1582.         $smtp->setUser$request->get('user_smtp') );
  1583.         $smtp->setMdp$request->get('mdp_smtp') );
  1584.         $smtp->setDestinataires$request->get('destinataires') );
  1585.         $smtp->setDestinatairesTransaction$request->get('destinataires_transaction') );
  1586.         
  1587.         
  1588.         $this->em->persist($smtp);
  1589.         $this->em->flush();
  1590.         return new Response($smtp->getId());
  1591.     }
  1592.     /**
  1593.      * @Route("/configuration-pages-legales", name="configuration-pages-legales", methods={"GET","POST"} , options={"expose"=true})
  1594.      */
  1595.     public function configuration_html_pages(Request $request EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  1596.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  1597.     {
  1598.         $accessArray=[];
  1599.         $niveauAcessPages = [];
  1600.         $groupeRestrictions = [];
  1601.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1602.             $admin $this->session->get('supAdT9m2XJzn4');
  1603.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  1604.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1605.             $adminId $admin->getId();
  1606.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  1607.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  1608.             $accessArray $restrictionPages[0]->getAccess();
  1609.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1610.             $niveauAcessPagesCollection->initialize();
  1611.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1612.         }else {
  1613.             return $this->redirectToRoute('connexion');
  1614.         }
  1615.         
  1616.         $langues $this->em->getRepository(Langue::class)->findAll(); 
  1617.         
  1618.         return $this->render('configuration/configuration_html_pages.html.twig',[
  1619.             'admin' => $admin,
  1620.             'access' => $accessArray,
  1621.             'pages' => $niveauAcessPages,
  1622.             'langues'=>$langues
  1623.         ]);
  1624.     }
  1625.     /**
  1626.      * @Route("/add_content_to_pages", name="add_content_to_pages", methods={"GET","POST"} , options={"expose"=true})
  1627.      */
  1628.     public function add_content_to_pages(Request $request): JsonResponse
  1629.     {
  1630.         //dd($request->request->all());
  1631.         if($request->get('selectedPage')=='cg'){
  1632.             $page=new ConditionGenerale();
  1633.         }
  1634.         else if($request->get('selectedPage')=='cgv'){
  1635.             $page=new Cgi();
  1636.         }
  1637.         
  1638.         else{
  1639.             $page=new MentionsLegales();
  1640.         }
  1641.         $langue$this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
  1642.         $page->setContenu($request->get('page_content'))
  1643.             ->setLangue($langue)
  1644.             ->setDateCreation(new \DateTime());
  1645.         try {
  1646.             $this->em->persist($page);
  1647.             $this->em->flush();
  1648.             return new JsonResponse(['status' => 'OK']);
  1649.         } catch (\Exception $e) {
  1650.             return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
  1651.         } /**/
  1652.         
  1653.       
  1654.     }
  1655.     /**
  1656.      * @Route("/edit_page_content", name="edit_page_content", methods={"GET","POST"} , options={"expose"=true})
  1657.      */
  1658.     public function edit_page_content(Request $request,MentionsLegalesRepository $MentionsLegalesRepository,CgiRepository $CgiRepositoryConditionGeneraleRepository $ConditionGeneraleRepository): JsonResponse
  1659.     {
  1660.         //dd($request->request->all());
  1661.         if($request->get('selectedPage')=='cg'){
  1662.             
  1663.             $page $ConditionGeneraleRepository->find($request->get('id_page'));
  1664.         }
  1665.         else if($request->get('selectedPage')=='cgv'){
  1666.             $page $CgiRepository->find($request->get('id_page'));
  1667.         }
  1668.         
  1669.         else{
  1670.             $page $MentionsLegalesRepository->find($request->get('id_page'));
  1671.         }
  1672.         $langue$this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
  1673.         
  1674.         //$langue= $this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
  1675.         $page->setContenu($request->get('page_content'))
  1676.         ->setDisplayPosition($request->get('emplacement'))
  1677.         ->setLangue($langue)
  1678.             ->setDateUpdate(new \DateTime());
  1679.         try {
  1680.             $this->em->persist($page);
  1681.             $this->em->flush();
  1682.             return new JsonResponse(['status' => 'OK']);
  1683.         } catch (\Exception $e) {
  1684.             return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
  1685.         } /**/
  1686.         
  1687.       
  1688.     }
  1689.     /**
  1690.      * @Route("/serveContentCG", name="serveContentCG", methods={"GET"} , options={"expose"=true})
  1691.      */
  1692.     public function serveContentCG(Request $request): Response{
  1693.         $sql_where "" ;
  1694.             if($request->get('search')['value']!=""){
  1695.                 $sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;  
  1696.                  }
  1697.              
  1698.             
  1699.             $limit =  $request->get('length') ;
  1700.                 
  1701.             $offset $request->get('start') ;
  1702.             
  1703.             $array_search = array();
  1704.             
  1705.             $columns = ['p.langue','p.contenu','p.date_creation'];
  1706.             
  1707.             $orders = [];
  1708.     for ($i 0$i count($request->get('order')); $i++) {
  1709.         $orders[] = $columns[$request->get('order')[$i]['column']] . ' ' $request->get('order')[$i]['dir'];
  1710.     }
  1711.             
  1712.     $order = !empty($orders) ? " ORDER BY " implode(','$orders) : '';
  1713.             $pagesContents $this->em->createQuery(
  1714.                 'SELECT p
  1715.                 FROM App\Entity\ConditionGenerale p
  1716.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1717.                      
  1718.                      '
  1719.             )->setMaxResults($limit)
  1720.             ->setFirstResult($offset)
  1721.             ->getResult();
  1722.             
  1723.             $out=[];
  1724.            
  1725.     
  1726.             
  1727.             if(!empty($pagesContents))
  1728.                 {
  1729.                     foreach ($pagesContents as $pageContent) {
  1730.                         $idCrypté sha1($pageContent->getId());
  1731.                         $baseUrl $request->getSchemeAndHttpHost(); 
  1732.                         $lienPageLegale $baseUrl '/contenu-page-condition-generale/' $idCrypté;
  1733.                           
  1734.     
  1735.                              
  1736.                           $out[] = [
  1737.                                 'id' => $pageContent->getId(),
  1738.                                 'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
  1739.                                 'contenu'=>$pageContent->getContenu(),
  1740.                                 'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
  1741.                                 'emplacementVal'=>$pageContent->getDisplayPosition(),
  1742.                                 
  1743.                                 'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
  1744.                                 'date_creation'=>date_format$pageContent->getDateCreation() , 'd/m/Y '),
  1745.                                 'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
  1746.                                 
  1747.                                 
  1748.                             
  1749.                             ];
  1750.                         
  1751.                     }
  1752.                 }
  1753.             $I_nbResultatsTotal count$out ) ;
  1754.     
  1755.     
  1756.             
  1757.             
  1758.             $JSON json_encode($out);
  1759.             $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1760.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1761.             return $response;
  1762.             
  1763.     }
  1764.         /**
  1765.      * @Route("/serveContentCGV", name="serveContentCGV", methods={"GET"} , options={"expose"=true})
  1766.      */
  1767.     public function serveContentCGV(Request $request): Response{
  1768.         $sql_where "" ;
  1769.             if($request->get('search')['value']!=""){
  1770.                 $sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;  
  1771.                  }
  1772.              
  1773.             
  1774.             $limit =  $request->get('length') ;
  1775.                 
  1776.             $offset $request->get('start') ;
  1777.             
  1778.             $array_search = array();
  1779.             
  1780.             $columns = ['p.langue','p.contenu','p.date_creation'];
  1781.             
  1782.             $orders = [];
  1783.     for ($i 0$i count($request->get('order')); $i++) {
  1784.         $orders[] = $columns[$request->get('order')[$i]['column']] . ' ' $request->get('order')[$i]['dir'];
  1785.     }
  1786.             
  1787.     $order = !empty($orders) ? " ORDER BY " implode(','$orders) : '';
  1788.             $pagesContents $this->em->createQuery(
  1789.                 'SELECT p
  1790.                 FROM App\Entity\Cgi p
  1791.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1792.                      
  1793.                      '
  1794.             )->setMaxResults($limit)
  1795.             ->setFirstResult($offset)
  1796.             ->getResult();
  1797.             
  1798.             $out=[];
  1799.            
  1800.     
  1801.             
  1802.             if(!empty($pagesContents))
  1803.                 {
  1804.                     foreach ($pagesContents as $pageContent) {
  1805.                   
  1806.                           
  1807.     
  1808.                              
  1809.                         $idCrypté sha1($pageContent->getId());
  1810.                         $baseUrl $request->getSchemeAndHttpHost(); 
  1811.                         $lienPageLegale $baseUrl '/contenu-page-cgi/' $idCrypté;
  1812.                           
  1813.     
  1814.                              
  1815.                           $out[] = [
  1816.                                 'id' => $pageContent->getId(),
  1817.                                 'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
  1818.                                 'contenu'=>$pageContent->getContenu(),
  1819.                                 'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
  1820.                                 'emplacementVal'=>$pageContent->getDisplayPosition(),
  1821.                                 
  1822.                                 'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
  1823.                                 'date_creation'=>date_format$pageContent->getDateCreation() , 'd/m/Y '),
  1824.                                 'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
  1825.                                 
  1826.                                 
  1827.                             
  1828.                             ];
  1829.                         
  1830.                     }
  1831.                 }
  1832.             $I_nbResultatsTotal count$out ) ;
  1833.     
  1834.     
  1835.             
  1836.             
  1837.             $JSON json_encode($out);
  1838.             $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1839.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1840.             return $response;
  1841.             
  1842.     }
  1843.     /**
  1844.      * @Route("/servePagesContentMentionsLegales", name="servePagesContentMentionsLegales", methods={"GET"} , options={"expose"=true})
  1845.      */
  1846.     public function servePagesContentMentionsLegales(Request $request): Response{
  1847.         $sql_where "" ;
  1848.             if($request->get('search')['value']!=""){
  1849.                 $sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;  
  1850.                  }
  1851.              
  1852.             
  1853.             $limit =  $request->get('length') ;
  1854.                 
  1855.             $offset $request->get('start') ;
  1856.             
  1857.             $array_search = array();
  1858.             
  1859.             $columns = ['p.langue','p.contenu','p.date_creation'];
  1860.             
  1861.             $orders = [];
  1862.     for ($i 0$i count($request->get('order')); $i++) {
  1863.         $orders[] = $columns[$request->get('order')[$i]['column']] . ' ' $request->get('order')[$i]['dir'];
  1864.     }
  1865.             
  1866.     $order = !empty($orders) ? " ORDER BY " implode(','$orders) : '';
  1867.             $pagesContents $this->em->createQuery(
  1868.                 'SELECT p
  1869.                 FROM App\Entity\MentionsLegales p
  1870.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1871.                      
  1872.                      '
  1873.             )->setMaxResults($limit)
  1874.             ->setFirstResult($offset)
  1875.             ->getResult();
  1876.             
  1877.             $out=[];
  1878.            
  1879.     
  1880.             
  1881.             if(!empty($pagesContents))
  1882.                 {
  1883.                     foreach ($pagesContents as $pageContent) {
  1884.                   
  1885.                         $idCrypté sha1($pageContent->getId());
  1886.                         $baseUrl $request->getSchemeAndHttpHost(); 
  1887.                         $lienPageLegale $baseUrl '/contenu-page-legale/' $idCrypté;
  1888.                           
  1889.     
  1890.                              
  1891.                           $out[] = [
  1892.                                 'id' => $pageContent->getId(),
  1893.                                 'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
  1894.                                 'contenu'=>$pageContent->getContenu(),
  1895.                                 'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
  1896.                                 'emplacementVal'=>$pageContent->getDisplayPosition(),
  1897.                                 
  1898.                                 'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
  1899.                                 'date_creation'=>date_format$pageContent->getDateCreation() , 'd/m/Y '),
  1900.                                 'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
  1901.                                 
  1902.                                 
  1903.                             
  1904.                             ];
  1905.                         
  1906.                     }
  1907.                 }
  1908.             $I_nbResultatsTotal count$out ) ;
  1909.     
  1910.     
  1911.             
  1912.             
  1913.             $JSON json_encode($out);
  1914.             $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1915.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1916.             return $response;
  1917.             
  1918.     }
  1919.       /**
  1920.      * @Route("/contenu-page-condition-generale/{id}", name="contenu-page-condition-generale", methods={"GET"} , options={"expose"=true})
  1921.      */
  1922.     public function afficherPageConditionGenerale$id,Request $requestEtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  1923.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
  1924.     {
  1925.         $accessArray=[];
  1926.         $niveauAcessPages = [];
  1927.         $groupeRestrictions = [];
  1928.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1929.             $admin $this->session->get('supAdT9m2XJzn4');
  1930.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  1931.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1932.             $adminId $admin->getId();
  1933.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  1934.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  1935.             $accessArray $restrictionPages[0]->getAccess();
  1936.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1937.             $niveauAcessPagesCollection->initialize();
  1938.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1939.         }else {
  1940.             return $this->redirectToRoute('connexion');
  1941.         }
  1942.         
  1943.         $langues $this->em->getRepository(Langue::class)->findAll(); 
  1944.         
  1945.         $pageContent $this->em->createQuery(
  1946.             'SELECT p
  1947.             FROM App\Entity\ConditionGenerale p
  1948.              WHERE SHA1(p.id) = \''.$id.'\' 
  1949.         '
  1950.         )
  1951.         ->getOneOrNullResult()  ; 
  1952.         //dd($pageContent);
  1953.         return $this->render('configuration/affichage_contenu.html.twig', [
  1954.             'pageText' => $pageContent->getContenu(),
  1955.             'admin' => $admin,
  1956.             'access' => $accessArray,
  1957.             'pages' => $niveauAcessPages,
  1958.             'langues'=>$langues
  1959.         ]);
  1960.            
  1961.     }
  1962.       /**
  1963.      * @Route("/contenu-page-cgi/{id}", name="contenu-page-cgi", methods={"GET"} , options={"expose"=true})
  1964.      */
  1965.     public function afficherPageCgi$id,Request $requestEtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  1966.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
  1967.     {
  1968.         $accessArray=[];
  1969.         $niveauAcessPages = [];
  1970.         $groupeRestrictions = [];
  1971.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  1972.             $admin $this->session->get('supAdT9m2XJzn4');
  1973.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  1974.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  1975.             $adminId $admin->getId();
  1976.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  1977.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  1978.             $accessArray $restrictionPages[0]->getAccess();
  1979.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  1980.             $niveauAcessPagesCollection->initialize();
  1981.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  1982.         }else {
  1983.             return $this->redirectToRoute('connexion');
  1984.         }
  1985.         
  1986.         $langues $this->em->getRepository(Langue::class)->findAll(); 
  1987.         
  1988.         $pageContent $this->em->createQuery(
  1989.             'SELECT p
  1990.             FROM App\Entity\Cgi p
  1991.              WHERE SHA1(p.id) = \''.$id.'\' 
  1992.         '
  1993.         )
  1994.         ->getOneOrNullResult()  ; 
  1995.         //dd($pageContent);
  1996.         return $this->render('configuration/affichage_contenu.html.twig', [
  1997.             'pageText' => $pageContent->getContenu(),
  1998.             'admin' => $admin,
  1999.             'access' => $accessArray,
  2000.             'pages' => $niveauAcessPages,
  2001.             'langues'=>$langues
  2002.         ]);
  2003.            
  2004.     }
  2005.       /**
  2006.      * @Route("/contenu-page-legale/{id}", name="contenu-page-legale", methods={"GET"} , options={"expose"=true})
  2007.      */
  2008.     public function afficherPageLegale$id,Request $requestEtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  2009.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
  2010.     {
  2011.         $accessArray=[];
  2012.         $niveauAcessPages = [];
  2013.         $groupeRestrictions = [];
  2014.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  2015.             $admin $this->session->get('supAdT9m2XJzn4');
  2016.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  2017.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  2018.             $adminId $admin->getId();
  2019.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  2020.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  2021.             $accessArray $restrictionPages[0]->getAccess();
  2022.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  2023.             $niveauAcessPagesCollection->initialize();
  2024.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  2025.         }else {
  2026.             return $this->redirectToRoute('connexion');
  2027.         }
  2028.         
  2029.         $langues $this->em->getRepository(Langue::class)->findAll(); 
  2030.         
  2031.         $pageContent $this->em->createQuery(
  2032.             'SELECT p
  2033.             FROM App\Entity\MentionsLegales p
  2034.              WHERE SHA1(p.id) = \''.$id.'\' 
  2035.         '
  2036.         )
  2037.         ->getOneOrNullResult()  ; 
  2038.         //dd($pageContent);
  2039.         return $this->render('configuration/affichage_contenu.html.twig', [
  2040.             'pageText' => $pageContent->getContenu(),
  2041.             'admin' => $admin,
  2042.             'access' => $accessArray,
  2043.             'pages' => $niveauAcessPages,
  2044.             'langues'=>$langues
  2045.         ]);
  2046.            
  2047.     }
  2048.     /**
  2049.      * @Route("/delete_page_cg/{id}", name="delete_page_cg" , methods={"DELETE"}, options = {"expose"=true})
  2050.      */
  2051.     public function delete_page_cg$idRequest $request,ConditionGeneraleRepository $ConditionGeneraleRepository): Response
  2052.     {
  2053.         $page $ConditionGeneraleRepository->find($id);
  2054.         if (!$page) {
  2055.             return new Response('page not found!'Response::HTTP_NOT_FOUND);
  2056.         }
  2057.         
  2058.         try {
  2059.             
  2060.         
  2061.             $this->em->remove($page);
  2062.             $this->em->flush();
  2063.             return new JsonResponse(['status' => 'OK']);
  2064.         } catch (\Exception $e) {
  2065.             return new Response('Error deleting page: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  2066.         }
  2067.     }
  2068.      /**
  2069.      * @Route("/delete_page_cgv/{id}", name="delete_page_cgv" , methods={"DELETE"}, options = {"expose"=true})
  2070.      */
  2071.     public function delete_page_cgv$idRequest $request,CgiRepository $CgiRepository): Response
  2072.     {
  2073.         $page $CgiRepository->find($id);
  2074.         if (!$page) {
  2075.             return new Response('page not found!'Response::HTTP_NOT_FOUND);
  2076.         }
  2077.         
  2078.         try {
  2079.             
  2080.         
  2081.             $this->em->remove($page);
  2082.             $this->em->flush();
  2083.             return new JsonResponse(['status' => 'OK']);
  2084.         } catch (\Exception $e) {
  2085.             return new Response('Error deleting page: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  2086.         }
  2087.     }
  2088.      /**
  2089.      * @Route("/delete_page_mentions_legales/{id}", name="delete_page_mentions_legales" , methods={"DELETE"}, options = {"expose"=true})
  2090.      */
  2091.     public function delete_page_mentions_legales$idRequest $request,MentionsLegalesRepository $MentionsLegalesRepository): Response
  2092.     {
  2093.         $page $MentionsLegalesRepository->find($id);
  2094.         if (!$page) {
  2095.             return new Response('page not found!'Response::HTTP_NOT_FOUND);
  2096.         }
  2097.         
  2098.         try {
  2099.             
  2100.         
  2101.             $this->em->remove($page);
  2102.             $this->em->flush();
  2103.             return new JsonResponse(['status' => 'OK']);
  2104.         } catch (\Exception $e) {
  2105.             return new Response('Error deleting page: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  2106.         }
  2107.     }
  2108.     
  2109.     /**
  2110.      * @Route("/configuration_formules", name="configuration_formules", methods={"GET","POST"} , options={"expose"=true})
  2111.      */
  2112.     public function configuration_formules(Request $request EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  2113.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  2114.     {
  2115.         $accessArray=[];
  2116.         $niveauAcessPages = [];
  2117.         $groupeRestrictions = [];
  2118.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  2119.             $admin $this->session->get('supAdT9m2XJzn4');
  2120.         }else if($this->session->get('supAdT9m2XJzn4')&& ($request->hasSession())){
  2121.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  2122.             $adminId $admin->getId();
  2123.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  2124.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  2125.             $accessArray $restrictionPages[0]->getAccess();
  2126.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  2127.             $niveauAcessPagesCollection->initialize();
  2128.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  2129.         }else {
  2130.             return $this->redirectToRoute('connexion');
  2131.         }
  2132.         $etats $EtatRepository->findAll();
  2133.         $formules $this->em->getRepository(Formules::class)->findAll(); 
  2134.         $regions $this->em->getRepository(Region::class)->findAll(); 
  2135.         
  2136.         $pays =  $this->em->getRepository(Pays::class)->findAll();
  2137.         $entreprises =  $this->em->getRepository(Entreprise::class)->findAll();
  2138.         $tailles_entreprise $this->em->getRepository(TailleEntreprise::class)->findAll(); 
  2139.         
  2140.         return $this->render('configuration/config_new_formule.html.twig',[
  2141.             'admin' => $admin,
  2142.             'etats'=>$etats,
  2143.             'formules' => $formules,
  2144.             'access' => $accessArray,
  2145.             'pages' => $niveauAcessPages,
  2146.             'entreprises'=>$entreprises,
  2147.             'pays'=>$pays,
  2148.             'tailles_entreprise'=>$tailles_entreprise,
  2149.             'regions'=>$regions
  2150.         ]);
  2151.     }
  2152.      /**
  2153.      * @Route("/verif_existing_pays_code", name="verif_existing_pays_code", methods={"GET","POST"} , options={"expose"=true})
  2154.      */
  2155.     public function verif_existing_pays_code(Request $request EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  2156.     GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  2157.     {
  2158.         $value $request->get('code');
  2159.         $paysCible $request->get('paysCible');
  2160.         $suggestions=[];
  2161.         if(!empty($paysCible))
  2162.         {
  2163.             $query $this->em->getRepository(Pays::class)
  2164.             ->createQueryBuilder('p')
  2165.             ->where('p.alpha2 = :alpha2')
  2166.             ->andWhere('p.id IN (:paysCible)')
  2167.             ->setParameter('alpha2'strtoupper($value))
  2168.             ->setParameter('paysCible'$paysCible)
  2169.             ->getQuery();
  2170.         $exists $query->getOneOrNullResult();
  2171.             
  2172.         }
  2173.         else
  2174.             {
  2175.                 $exists $this->em->getRepository(Pays::class)->findOneBy(['alpha2' => strtoupper($value)]);
  2176.        
  2177.             }
  2178.         $pays $this->em->getRepository(Pays::class)->findAll();
  2179.         foreach ($pays as $p) {    
  2180.           $suggestions[] = [$p->getNomFrFR().'('.$p->getAlpha2().')'
  2181.               ];
  2182.             }
  2183.         return new JsonResponse([
  2184.             'exists' => $exists true false,
  2185.             'suggestions' => $suggestions
  2186.         ]);
  2187.     }
  2188.  
  2189.     /**
  2190.      * @Route("/add_formule", name="add_formule", methods={"POST","GET"} , options={"expose"=true})
  2191.      */
  2192.      public function add_formule(Request $requestEntityManagerInterface $emFormulesRepository $formulesRepository): JsonResponse
  2193.     {
  2194.         $data $request->request->all();
  2195.         $formule = new Formules();
  2196.         // Handle formula type and fields based on type
  2197.         $typeFormule $data['typeFormule'] ?? 'payante'// default to 'payante' if not set
  2198.         $formule->setType($typeFormule);
  2199.         if ($typeFormule === 'payante') {
  2200.             $formule->setPrix($data['prixFormule'] ?? null);
  2201.             $formule->setUnite($data['uniteFormule'] ?? null);
  2202.             $formule->setRegimeTva($data['regimeTva'] ?? null);
  2203.             $formule->setPeriodicite($data['periodicite'] ?? null);
  2204.         } else {
  2205.             // For 'gratuite' and 'permanente', set price-related fields to null
  2206.             $formule->setPrix(null);
  2207.             $formule->setUnite(null);
  2208.             $formule->setRegimeTva(null);
  2209.             $formule->setPeriodicite(null);
  2210.         }
  2211.         // Set common fields
  2212.         $formule->setNomFormule($data['nomFormule'] ?? null);
  2213.         $formule->setDure($data['dure'] ?? null);
  2214.         $formule->setEtat($data['etatFormule'] ?? null);
  2215.         $formule->setCodeFacturation($data['codeFacturation'] ?? null);
  2216.         
  2217.         // Handle visibility checkbox
  2218.         $isVisible = isset($data['visibilityCheckbox']);
  2219.         $formule->setIsVisible($isVisible);
  2220.         // Handle description fields (using the new properties)
  2221.         $formule->setDescription($data['descriptionOnline'] ?? null);
  2222.         $formule->setDescriptionFacture($data['descriptionFacture'] ?? null);
  2223.         
  2224.         // Handle multi-select fields
  2225.         $formule->setDestination($data['destinationFormule'] ?? null);
  2226.         $formule->setUserLimit($data['userLimit'] ?? null);
  2227.         // Handle bonus fields
  2228.         $formule->setBonnusGeo(isset($data['geoBonusCheckbox']) ? ($data['bonnusGeo'] ?? null) : null);
  2229.         $formule->setBonnusPub(isset($data['pubBonusCheckbox']) ? ($data['bonnus_pub'] ?? null) : null);
  2230.         $formule->setDureeBonnusPub(isset($data['pubBonusCheckbox']) ? ($data['duree_bonnus_pub'] ?? null) : null);
  2231.         $formule->setBonnusEvent($data['bonnus_event'] ?? null);
  2232.         $formule->setDureeBonnusEvent($data['dure']);
  2233.         // Handle "formuleFirstPage" checkbox
  2234.         $formule->setFormuleFirstPage(isset($data['formuleFirstPage']));
  2235.         $formule->setFrequence("produit");
  2236.         $formule->setDateCreation(new \DateTime());
  2237.         if($request->get('PaysSpecifiques')!=null){
  2238.             $formule->setPaysCibles($request->get('PaysSpecifiques'));
  2239.         }
  2240.         
  2241.         // Persist and flush the entity
  2242.         $em->persist($formule);
  2243.         $em->flush();
  2244.         return new JsonResponse(['status' => 'success''message' => 'Formule ajoutée avec succès!']);
  2245.     }
  2246.     public function add_formule0(Request $request,FormulesRepository $FormulesRepository): JsonResponse
  2247.     {
  2248.         dd($request->request->all(),$request->get('cp_cible'));
  2249.         
  2250.       
  2251.    
  2252.     
  2253.         
  2254.         $optionsString $request->get('options');
  2255.         $optionsArray json_decode($optionsStringtrue);
  2256.         $formulesEntity = new Formules();
  2257.         $formulesEntity->setEtat($request->get('etatFormule'));
  2258.         $formulesEntity->setType($request->get('typeFormule'));
  2259.         if($request->get('typeFormule') == "gratuite"){
  2260.             $dest=$request->get('destinationFormule')[0];
  2261.            // dd($nom);
  2262.             $formulesFiltrees=[];
  2263.             $formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);  
  2264.             $formulesFiltrees array_filter($formulesGratuites, function ($formule) use ( $dest) {
  2265.                 return $formule->getDestination()!=null &&in_array$dest$formule->getDestination());
  2266.             });
  2267.             $nom 'formule gratuite ' $request->get('destinationFormule')[0] . ' ' count($formulesFiltrees);
  2268.             $formulesEntity->setNomFormule($nom);
  2269.             
  2270.             $formulesEntity->setFrequence('Formule');
  2271.             $formulesEntity->setPeriodicite('Mensuel');
  2272.         }
  2273.         else{
  2274.             $formulesEntity->setNomFormule($request->get('nomFormule'));
  2275.             $formulesEntity->setPrix($request->get('prixFormule'));
  2276.             $formulesEntity->setUnite($request->get('uniteFormule'));
  2277.             $formulesEntity->setPeriodicite($request->get('periodicite'));
  2278.             $formulesEntity->setDure($request->get('dure'));
  2279.             $formulesEntity->setregimeTva($request->get('regimeTva'));
  2280.             $formulesEntity->setDescription($request->get('descriptionFormule'));
  2281.             $formulesEntity->setFrequence($request->get('frequenceFormule'));
  2282.             if($request->get('cp_cible')!=""){
  2283.                 $cpArr=json_decode($request->get('cp_cible'), true);
  2284.     
  2285.                 $formulesEntity->setCpCibles($cpArr);
  2286.             }
  2287.         
  2288.         }
  2289.         
  2290.         $formulesEntity->setDestination($request->get('destinationFormule'));
  2291.         $formulesEntity->setBonnusGeo($request->get('bonnusGeo'));
  2292.         $formulesEntity->setBonnusEvent($request->get('eventBonusInput'));
  2293.         $formulesEntity->setDureeBonnusEvent($request->get('dure_bonnus_event'));
  2294.         $formulesEntity->setBonnusPub($request->get('pubBonusInput'));
  2295.         $formulesEntity->setDureeBonnusPub($request->get('dure_bonnus_pub'));
  2296.         if($request->get('formuleFirstPage'))
  2297.         {
  2298.             $formulesEntity->setFormuleFirstPage(true);
  2299.         }
  2300.         else
  2301.         {
  2302.             $formulesEntity->setFormuleFirstPage(false);
  2303.         }
  2304.         $formulesEntity->setDateCreation(new \DateTime());
  2305.         if($request->get('PaysSpecifiques')!=null){
  2306.             $formulesEntity->setPaysCibles($request->get('PaysSpecifiques'));
  2307.         }
  2308.         
  2309.         /*if($request->get('EntreprisesSpecifiques')!=null){
  2310.             $formulesEntity->setEntreprisesCibles($request->get('EntreprisesSpecifiques'));
  2311.         }
  2312.         if($request->get('VillesSpecifiques')!=null){
  2313.             $formulesEntity->setVillesCibles($request->get('VillesSpecifiques'));
  2314.         }
  2315.         if($request->get('taillesSpecifiques')!=null){
  2316.             $formulesEntity->setTaillesEntrepriseCible($request->get('taillesSpecifiques'));
  2317.         }*/
  2318.         
  2319.         try {
  2320.             $this->em->persist($formulesEntity);
  2321.             $this->em->flush();
  2322.             return new JsonResponse(['status' => 'OK']);
  2323.         } catch (\Exception $e) {
  2324.             return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
  2325.         } 
  2326.         
  2327.       
  2328.     }
  2329.      /**
  2330.      * @Route("/get_formule_by_id/{id}", name="get_formule_by_id", methods={"GET"} , options={"expose"=true})
  2331.      */
  2332.     public function get_formule_by_id(Request $request,$id,FormulesRepository $FormulesRepository,FormuleOptionsRepository $formuleOptionsRepository): Response{
  2333.        // dd($id);
  2334.         $formule=$FormulesRepository->findOneBy(['id'=>$id]);
  2335.         if (!$formule) {
  2336.             $msg = ['msg'=>'KOO']  ;
  2337.         
  2338.             $JSON json_encode($msg);
  2339.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2340.             return $response;
  2341.         }
  2342.         /*$formuleOptions = $formuleOptionsRepository->findBy(['formule' => $id],['Ordre' => 'ASC']);
  2343.         $optionsData = [];
  2344.         foreach ($formuleOptions as $option) {
  2345.             $optionsData[] = [
  2346.                 'id' => $option->getId(),
  2347.                 'nom' => $option->getNomOption(),
  2348.                 'prix' => $option->getPrix(),
  2349.                 'unite' => $option->getUnite(),
  2350.                 'description' => $option->getDescription(),
  2351.                 'etat' => $option->getEtat(),
  2352.                 'ordre'=>$option->getOrdre(),
  2353.                 'paysCibles'=>$option->getPaysCibles()!=null?$option->getPaysCibles():[]
  2354.             ];
  2355.         }*/
  2356.         $excludedPays=[];
  2357.         if($formule->getType()=="gratuite"&&$formule->getDestination()!=null){
  2358.             $queryBuilder $FormulesRepository->createQueryBuilder('f')
  2359.             ->where('f.type = :type')
  2360.             ->andWhere('f.id != :id')
  2361.             ->setParameter('type''gratuite')
  2362.             ->setParameter('id'$formule->getId());
  2363.     
  2364.             $formulesGratuites $queryBuilder->getQuery()->getResult();   
  2365.             //dd($formulesGratuites);     
  2366.             $formulDest=$formule->getDestination()[0];
  2367.             $formulesFiltrees array_filter($formulesGratuites, function ($f) use ( $formulDest) {
  2368.                 return $f->getDestination()!=null &&in_array($formulDest$f->getDestination());
  2369.             });
  2370.             $paysCibles = [];
  2371.             foreach ($formulesFiltrees as $fo) {
  2372.                 if($fo->getPaysCibles()!=null)
  2373.                 {
  2374.                     $paysCibles array_merge($paysCibles$fo->getPaysCibles());
  2375.                 }
  2376.             }
  2377.             $excludedPaysarray_unique($paysCibles);
  2378.     
  2379.         
  2380.         }
  2381.         //dd($excludedPays);
  2382.         $res = [
  2383.             'id' => $formule->getId(),
  2384.             'statusFormule'=>$formule->getEtat(),
  2385.             'description'=>$formule->getDescription(),
  2386.             'nom' =>$formule->getNomFormule(),
  2387.             'typeFormule' =>$formule->getType(),
  2388.             'prix'=>$formule->getPrix()!=null?$formule->getPrix():"--",
  2389.             'Unite'=>$formule->getUnite()!=null?$formule->getUnite():"--",
  2390.             'paysCibles'=>$formule->getPaysCibles()!=null?$formule->getPaysCibles():[],
  2391.             'cpCibles'=>$formule->getCpCibles()!=null?$formule->getCpCibles():[],
  2392.            // 'entreprisesCibles'=>$formule->getEntreprisesCibles()!=null?$formule->getEntreprisesCibles():[],
  2393.             //'villesCibles'=>$formule->getVillesCibles()!=null?$formule->getVillesCibles():[],
  2394.             //'taillesECibles'=>$formule->getTaillesEntrepriseCible()!=null?$formule->getTaillesEntrepriseCible():[],
  2395.             // 'optionsData'=>$optionsData
  2396.             'destinations' => $formule->getDestination(),
  2397.             'frequence'=>$formule->getFrequence(),
  2398.             'periodicite'=>$formule->getPeriodicite(),
  2399.             'bonnusGeo'=>$formule->getBonnusGeo(),
  2400.             'bonnusEvent'=>$formule->getBonnusEvent(),
  2401.             'bonnusPub'=>$formule->getBonnusPub(),
  2402.             'regimeTva'=>$formule->getRegimeTva(),
  2403.             'dure'=>$formule->getDure(),
  2404.             'formuleProposeFirstPage'=>$formule->isFormuleFirstPage(),
  2405.             'excludedPays'=>$excludedPays,
  2406.             'dureeBonnusEvent'=>$formule->getDureeBonnusEvent(),
  2407.             'dureeBonnusPub'=>$formule->getDureeBonnusPub(),
  2408.            
  2409.         ];
  2410.     
  2411. $JSON json_encode($res);
  2412. $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2413. return $response;
  2414.        
  2415.     }
  2416.      /**
  2417.      * @Route("/get_formules_gratuits_pays", name="get_formules_gratuits_pays", methods={"GET"} , options={"expose"=true})
  2418.      */
  2419.     public function get_formules_gratuits_pays(Request $request,FormulesRepository $FormulesRepository,FormuleOptionsRepository $formuleOptionsRepository): Response{
  2420.         $destinationFormule=$request->get('destinationFormule');
  2421.         $formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);
  2422.         
  2423.     
  2424.         $formulesFiltrees array_filter($formulesGratuites, function ($formule) use ($destinationFormule) {
  2425.             return $formule->getDestination()!=null &&in_array($destinationFormule$formule->getDestination());
  2426.         });
  2427.         $paysCibles = [];
  2428.         foreach ($formulesFiltrees as $formule) {
  2429.             if($formule->getPaysCibles()!=null)
  2430.             {
  2431.                 $paysCibles array_merge($paysCibles$formule->getPaysCibles());
  2432.             }
  2433.         }
  2434.         return $this->json([
  2435.             'paysCibles' => array_unique($paysCibles)
  2436.         ]);
  2437.     }
  2438.     /**
  2439.      * @Route("/serveFormules", name="serveFormules", methods={"GET"} , options={"expose"=true})
  2440.      */
  2441.     public function serveFormules(Request $request): Response{
  2442.         $sql_where "" ;
  2443.         $paysId="75";
  2444.         $formules $this->em->getRepository(Formules::class)->findAll();
  2445.             if($request->get('custom_search')!=""){
  2446.                 $sql_where .= ' AND ( f.nom_formule LIKE \'%'.$request->get('custom_search').'%\' )' ;     
  2447.                 $sql_where .= ' OR ( f.description LIKE \'%'.$request->get('custom_search').'%\' )' ;     
  2448.                 $sql_where .= ' OR ( f.type LIKE \'%'.$request->get('custom_search').'%\' )' ;     
  2449.                  }
  2450.              
  2451.             
  2452.             $limit =  $request->get('length') ;
  2453.                 
  2454.             $offset $request->get('start') ;
  2455.             
  2456.             $array_search = array();
  2457.             
  2458.             $columns = ['f.nom_formule','f.regime_tva','f.frequence','f.type','f.etat'];
  2459.             
  2460.             $orders = [];
  2461.          //   dd($request->get('order'));
  2462.     for ($i 0$i count($request->get('order')); $i++) {
  2463.         if($request->get('order')[$i]['column']=="3"){
  2464.             $orders[] = "CASE WHEN f.type = 'gratuite' THEN 0 ELSE 1 END";
  2465.         }
  2466.         $orders[] = $columns[$request->get('order')[$i]['column']] . ' ' $request->get('order')[$i]['dir'];
  2467.     }
  2468.   
  2469.     $order = !empty($orders) ? " ORDER BY " implode(','$orders) : "CASE WHEN f.type = 'gratuite' THEN 0 ELSE 1 END";
  2470.             $formules $this->em->createQuery(
  2471.                 'SELECT f 
  2472.                 FROM App\Entity\Formules f
  2473.                 WHERE 1=1 '.$sql_where.' '.$order.'
  2474.                      
  2475.                      '
  2476.             )->setMaxResults($limit)
  2477.             ->setFirstResult($offset)
  2478.             ->getResult();
  2479.             
  2480.             $out=[];
  2481.            
  2482.             if ($request->get('cible_filter') != "tous") {
  2483.                 $cibleFilter $request->get('cible_filter');
  2484.                 $formules array_filter($formules, function ($formule) use ( $cibleFilter) {
  2485.                     return $formule->getDestination()!=null &&in_array$cibleFilter$formule->getDestination());
  2486.                 });
  2487.             }
  2488.             
  2489.             
  2490.             if(!empty($formules))
  2491.                 {
  2492.                     foreach ($formules as $formule) {
  2493.                   
  2494.                           if($formule->getEtat() == "1"){
  2495.                             $etat '<span class="badge bg-success">Activée</span>';
  2496.                         }else {
  2497.                             $etat '<span class="badge bg-danger">Désactivée</span>';
  2498.                         };  
  2499.     
  2500.                              
  2501.                           $out[] = [
  2502.                                 'id' => $formule->getId(),
  2503.                                 'Nom' =>$formule->getNomFormule(),
  2504.                                 'regimeTva'=>$formule->getRegimeTva(),
  2505.                                 'typeF' =>$formule->getType(),
  2506.                                 'Fréquence'=>$formule->getFrequence(),
  2507.                                 'etat'=>$etat,
  2508.                                 'formulePropose'=>$formule->isFormuleFirstPage()?'Oui':'Non',
  2509.                             
  2510.                             ];
  2511.                         
  2512.                     }
  2513.                 }
  2514.             $I_nbResultatsTotal count$out ) ;
  2515.     
  2516.     
  2517.             
  2518.             
  2519.             $JSON json_encode($out);
  2520.             $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  2521.             $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2522.             return $response;
  2523.             
  2524.         }
  2525.     /**
  2526.      * @Route("/update_formule/{id}", name="update_formule", methods={"POST","GET"}, options={"expose"=true})
  2527.      */
  2528.    public function update_formule(int $idRequest $requestFormulesRepository $FormulesRepository): Response
  2529.     {
  2530.         $data $request->request->all();
  2531.         $formulesEntity $this->em->getRepository(Formules::class)->find($id);
  2532.         if (!$formulesEntity) {
  2533.             return new Response('KOO');
  2534.         }
  2535.         // Handle formula type and fields based on type
  2536.         $typeFormule $data['typeFormule_modif'] ?? 'payante';
  2537.         $formulesEntity->setType($typeFormule);
  2538.         if ($typeFormule === 'payante') {
  2539.             $formulesEntity->setPrix($data['prixFormule_modif'] ?? null);
  2540.             $formulesEntity->setUnite($data['uniteFormule_modif'] ?? null);
  2541.             $formulesEntity->setRegimeTva($data['regimeTva_modif'] ?? null);
  2542.             $formulesEntity->setPeriodicite($data['periodicite_modif'] ?? null);
  2543.         } else {
  2544.             // For 'gratuite' and 'permanente', set price-related fields to null
  2545.             $formulesEntity->setPrix(null);
  2546.             $formulesEntity->setUnite(null);
  2547.             $formulesEntity->setRegimeTva(null);
  2548.             $formulesEntity->setPeriodicite(null);
  2549.         }
  2550.         // Set common fields
  2551.         $formulesEntity->setNomFormule($data['nomFormule_modif'] ?? null);
  2552.         $formulesEntity->setDure($data['dure_modif'] ?? null);
  2553.         $formulesEntity->setEtat($data['etat_modif'] ?? null);
  2554.         $formulesEntity->setCodeFacturation($data['codeFacturation_modif'] ?? null);
  2555.         // Handle visibility checkbox (checked means NOT visible)
  2556.         $isVisible = !isset($data['visibilityCheckbox_modif']);
  2557.         $formulesEntity->setIsVisible($isVisible);
  2558.         // Handle description fields (Online & Facture)
  2559.         $formulesEntity->setDescriptionOnline($data['descriptionOnline_modif'] ?? null);
  2560.         $formulesEntity->setDescriptionFacture($data['descriptionFacture_modif'] ?? null);
  2561.         // Handle multi-select fields (Chosen-select)
  2562.         $formulesEntity->setDestination($data['destinationFormule_modif'] ?? null);
  2563.         $formulesEntity->setUserLimit($data['userLimit_modif'] ?? null);
  2564.         $formulesEntity->setPaysCibles($data['PaysSpecifiques_modif'] ?? null);
  2565.         // Handle code postaux (cpSpecifiques)
  2566.         if (isset($data['cpSpecifiques_modif']) && is_string($data['cpSpecifiques_modif'])) {
  2567.             $cpArray array_map('trim'explode(','$data['cpSpecifiques_modif']));
  2568.             $formulesEntity->setCpCibles($cpArray);
  2569.         }
  2570.         // Handle bonus fields
  2571.         $formulesEntity->setBonnusGeo(isset($data['geoBonusCheckbox_modif']) ? ($data['bonnusGeo_modif'] ?? null) : null);
  2572.         $formulesEntity->setBonnusPub(isset($data['pubBonusCheckbox_modif']) ? ($data['pubBonusInput_modif'] ?? null) : null);
  2573.         $formulesEntity->setDureeBonnusPub(isset($data['pubBonusCheckbox_modif']) ? ($data['dureePubInput_modif'] ?? null) : null);
  2574.         $formulesEntity->setBonnusEvent(isset($data['eventBonusCheckbox_modif']) ? ($data['eventBonusInput_modif'] ?? null) : null);
  2575.         $formulesEntity->setDureeBonnusEvent(isset($data['eventBonusCheckbox_modif']) ? ($data['dureeEventInput_modif'] ?? null) : null);
  2576.         // Handle 'formuleFirstPage' checkbox
  2577.         $formulesEntity->setFormuleFirstPage(isset($data['formuleFirstPage_modif']));
  2578.         // Set update date
  2579.         $formulesEntity->setDateUpdate(new \DateTime());
  2580.         try {
  2581.             $this->em->persist($formulesEntity);
  2582.             $this->em->flush();
  2583.             return new Response('OK');
  2584.         } catch (\Exception $e) {
  2585.             return new Response('KO');
  2586.         }
  2587.     }
  2588.     public function update_formule0(int $id,Request $requestFormulesRepository $FormulesRepository ): Response
  2589.     {
  2590.         //dd($request->request->all());
  2591.        
  2592.         //$optionsString = $request->get('options');
  2593.         //$optionsArray = json_decode($optionsString, true);
  2594.         $formulesEntity $this->em->getRepository(Formules::class)->find($id);
  2595.         
  2596.         if (!$formulesEntity) {
  2597.             return new Response'KOO');
  2598.         }        
  2599.         $formulesEntity->setType($request->get('typeFormule_modif'));
  2600.         if($request->get('typeFormule_modif') != "gratuite"){
  2601.             //
  2602.             if($request->get('nomFormule_modif'))
  2603.            { $formulesEntity->setNomFormule($request->get('nomFormule_modif'));
  2604.            }
  2605.             $formulesEntity->setDescription($request->get('descriptionFormule_modif'));
  2606.             if($request->get('prixFormule_modif'))
  2607.             {
  2608.             $formulesEntity->setPrix($request->get('prixFormule_modif'));
  2609.             }
  2610.             if($request->get('uniteFormule_modif'))
  2611.             {
  2612.             $formulesEntity->setUnite($request->get('uniteFormule_modif'));
  2613.             }
  2614.             if($request->get('periodicite_modif'))
  2615.             {
  2616.                 $formulesEntity->setPeriodicite($request->get('periodicite_modif'));
  2617.             }
  2618.             if($request->get('dure_modif'))
  2619.             {
  2620.             
  2621.             $formulesEntity->setDure($request->get('dure_modif'));
  2622.             }
  2623.             if($request->get('regimeTva_modif'))
  2624.             {
  2625.             
  2626.             $formulesEntity->setregimeTva($request->get('regimeTva_modif'));
  2627.             }
  2628.             if($request->get('frequenceFormule_modif'))
  2629.             {
  2630.             
  2631.             $formulesEntity->setFrequence($request->get('frequenceFormule_modif'));
  2632.             }
  2633.             if($request->get('etat_modif'))
  2634.             {
  2635.             $formulesEntity->setEtat($request->get('etat_modif'));
  2636.             }
  2637.             if($request->get('cp_cible')!=""){
  2638.                 $cpArr=json_decode($request->get('cp_cible'), true);
  2639.     
  2640.                 $formulesEntity->setCpCibles($cpArr);
  2641.             }
  2642.             if($request->get('formuleFirstPage_modif'))
  2643.             {
  2644.                 $formulesEntity->setFormuleFirstPage(true);
  2645.             }
  2646.             else
  2647.             {
  2648.                 $formulesEntity->setFormuleFirstPage(false);
  2649.             }
  2650.     
  2651.         
  2652.         
  2653.         }
  2654.         else {
  2655.             $dest=$request->get('destinationFormule_modif')[0];
  2656.         
  2657.             // dd($nom);
  2658.              $formulesFiltrees=[];
  2659.              $formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);  
  2660.              $formulesFiltrees array_filter($formulesGratuites, function ($formule) use ( $dest) {
  2661.                  return $formule->getDestination()!=null &&in_array$dest$formule->getDestination());
  2662.              });
  2663.              $nom 'formule gratuite ' $request->get('destinationFormule_modif')[0] . ' ' count($formulesFiltrees);
  2664.              $formulesEntity->setNomFormule($nom);
  2665.              //dd($nom);
  2666.             //
  2667.             $formulesEntity->setDescription($request->get('descriptionFormule_modif'));
  2668.             
  2669.             $formulesEntity->setPrix(null); 
  2670.             $formulesEntity->setUnite(null);
  2671.         }
  2672.         
  2673.         $formulesEntity->setDestination($request->get('destinationFormule_modif'));
  2674.         $formulesEntity->setDateUpdate(new \DateTime());
  2675.         $formulesEntity->setPaysCibles($request->get('PaysSpecifiques_modif'));   
  2676.         
  2677.         $formulesEntity->setBonnusGeo($request->get('bonnusGeo_modif'));
  2678.         $formulesEntity->setBonnusEvent($request->get('eventBonusInput_modif'));
  2679.         $formulesEntity->setBonnusPub($request->get('pubBonusInput_modif'));
  2680.         $formulesEntity->setDureeBonnusEvent($request->get('dure_bonnus_event_modif'));
  2681.         $formulesEntity->setDureeBonnusPub($request->get('dure_bonnus_pub_modif'));
  2682.    
  2683.         try {
  2684.             $this->em->persist($formulesEntity);
  2685.             $this->em->flush();
  2686.             return new Response('OK');
  2687.         } catch (\Exception $e) {
  2688.             return new Response('KO');
  2689.             
  2690.         } 
  2691.        
  2692.         
  2693.     }
  2694.     /**
  2695.      * @Route("/delete_formule/{id}", name="delete_formule" , methods={"DELETE"}, options = {"expose"=true})
  2696.      */
  2697.     public function delete_formule$idRequest $request): Response
  2698.     {
  2699.         $formulesEntity $this->em->getRepository(Formules::class)->find($id);
  2700.         if (!$formulesEntity) {
  2701.             return new Response('Formule not found!'Response::HTTP_NOT_FOUND);
  2702.         }
  2703.         $formuleOptionsRepository $this->em->getRepository(FormuleOptions::class);
  2704.         $formuleOptions $formuleOptionsRepository->findBy(['formule' => $formulesEntity]);
  2705.         try {
  2706.             
  2707.             foreach ($formuleOptions as $formuleOption) {
  2708.                 $this->em->remove($formuleOption);
  2709.             }
  2710.             $this->em->remove($formulesEntity);
  2711.             $this->em->flush();
  2712.             return new JsonResponse(['status' => 'OK']);
  2713.         } catch (\Exception $e) {
  2714.             return new Response('Error deleting formule: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  2715.         }
  2716.     }
  2717.    
  2718.     
  2719.     /**
  2720.      * @Route("/supprimer_option/{id}", name="supprimer_option", methods={"DELETE"}, options = {"expose" = true})
  2721.      */
  2722.     public function supprimer_option$id): Response
  2723.     {
  2724.         $formuleOptionsRepository $this->em->getRepository(FormuleOptions::class);
  2725.         $formuleOptions $formuleOptionsRepository->find($id);
  2726.         if (!$formuleOptions) {
  2727.             throw $this->createNotFoundException('Options non trouvée pour l\'ID ' $id);
  2728.         }
  2729.         $this->em->remove($formuleOptions);
  2730.         $this->em->flush();
  2731.         return new JsonResponse(['status' => 'OK']);
  2732.         
  2733.     }
  2734.     /**
  2735.      * @Route("/serverFormule", name="serverFormule", methods={"GET","POST"}, options = {"expose" = true})
  2736.      */
  2737.     public function serverFormule(Request $request  ): Response
  2738.     {
  2739.                 
  2740.         //echo $this->session->getMetadataBag()->getLifetime();
  2741.                     
  2742.        // if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  2743.          //   return new Response('disconnect');
  2744.         //}
  2745.         
  2746.         
  2747.         
  2748.         $sql_where "" ;
  2749.         
  2750.         
  2751.         
  2752.          if($request->get('search')['value']!=""){
  2753.             $sql_where .= ' AND ( u.formule_option LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  2754.         }
  2755.          
  2756.         
  2757.         
  2758.         
  2759.         $user_array = [] ;
  2760.         
  2761.         $sql_where2 "";
  2762.         
  2763.         
  2764.         
  2765.         
  2766.         
  2767.         $limit =  $request->get('length') ;
  2768.             
  2769.         $offset $request->get('start') ;
  2770.         
  2771.         $array_search = array();
  2772.         
  2773.         $columns = ['u.id','u.formule_option'] ;
  2774.         
  2775.         $orders = [] ;
  2776.         
  2777.         
  2778.         for($i=$i<count($request->get('order')) ;$i++ ){
  2779.             
  2780.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  2781.             
  2782.         }
  2783.         
  2784.         
  2785.         if( count($orders)>0){
  2786.         $order " ORDER BY ".implode(' , ',$orders) ;
  2787.         }
  2788.         else{
  2789.         $order "" ;  
  2790.         }
  2791.         
  2792.         
  2793.         
  2794.         $total_options = [];
  2795.         
  2796.         
  2797.         
  2798.         $total_options $this->em->createQuery(
  2799.             'SELECT u 
  2800.             FROM App\Entity\Formule u
  2801.             
  2802.             
  2803.             WHERE 1=1 '.$sql_where.'
  2804.              
  2805.             '
  2806.             )
  2807.                 
  2808.                 ->getResult()  ;
  2809.       
  2810.                 
  2811.         
  2812.         $I_nbResultatsTotal count$total_options ) ;
  2813.         
  2814.         
  2815.         $options $this->em->createQuery(
  2816.                 'SELECT u 
  2817.                 FROM App\Entity\Formule u
  2818.                
  2819.                 
  2820.                 WHERE 1=1 '.$sql_where.' '.$order.'
  2821.                  
  2822.                 '
  2823.                 )
  2824.                 ->setMaxResults($limit)
  2825.                 ->setFirstResult($offset)
  2826.                 ->getResult()  ;
  2827.         
  2828.         
  2829.         $output = [] ; 
  2830.                
  2831.         foreach($options as $option){
  2832.             
  2833.         $output[] = [
  2834.                 
  2835.                 'id'=>$option->getId() ,
  2836.                 'option'=>$option->getFormuleOption() ,
  2837.                 'type'=>$option->getType() ,
  2838.                 'etat'=>$option->getEtat()->getEtat() ,
  2839.                 'prix'=>$option->getPrix().' '.$option->getUnite(),
  2840.                 'created_at' => date_format$option->getDateCreation() , 'd/m/Y H:i'),
  2841.                 'updated_at' => date_format$option->getDateUpdate() , 'd/m/Y H:i')
  2842.                 
  2843.         ];
  2844.         
  2845.         
  2846.         
  2847.         
  2848.         }
  2849.         
  2850.         
  2851.         $JSON json_encode($output);
  2852.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  2853.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2854.         return $response;
  2855.         
  2856.         
  2857.         
  2858.         
  2859.         
  2860.     }
  2861.     /**
  2862.      * @Route("/ajout_formule", name="ajout_formule" , options = {"expose"=true})
  2863.      */
  2864.     public function ajout_formule(Request $request EtatRepository $EtatRepository  ): Response
  2865.     {
  2866.         $etat $EtatRepository->find($request->get('etat_n'));
  2867.         $formule = new Formule();
  2868.         $formule->setFormuleOption($request->get('nom_option_n'));
  2869.         $formule->setType($request->get('type_option'));
  2870.         $formule->setEtat($etat);
  2871.         $formule->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  2872.         $formule->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  2873.         $formule->setPrix($request->get('prix_n'));
  2874.         $formule->setUnite($request->get('unite_n'));
  2875.         $this->em->persist($formule);
  2876.         $this->em->flush();
  2877.         return new Response('OK');
  2878.     }
  2879.     /**
  2880.      * @Route("/configuration_type_compte", name="configuration_type_compte", methods={"GET","POST"} , options={"expose"=true})
  2881.      */
  2882.     public function configuration_type_compte(Request $request EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepositoryGroupeRestrictionRepository $groupeRestrictionRepository,
  2883.     GroupeRestrictionPageRepository $grouprestrictionpageRepository ): Response
  2884.     {
  2885.         $accessArray=[];
  2886.         $niveauAcessPages = [];
  2887.         $groupeRestrictions = [];
  2888.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  2889.             $admin $this->session->get('supAdT9m2XJzn4');
  2890.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  2891.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  2892.             $adminId $admin->getId();
  2893.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  2894.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  2895.             $accessArray $restrictionPages[0]->getAccess();
  2896.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  2897.             $niveauAcessPagesCollection->initialize();
  2898.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  2899.         }else {
  2900.             return $this->redirectToRoute('connexion');
  2901.         }
  2902.         $etats $EtatRepository->findAll();
  2903.         return $this->render('configuration/config_type_compte.html.twig',[
  2904.             'admin' => $admin,
  2905.             'etats'=>$etats,
  2906.             'access' => $accessArray,
  2907.             'pages' => $niveauAcessPages
  2908.         ]);
  2909.     }
  2910.     /**
  2911.      * @Route("/ajout_type_compte", name="ajout_type_compte" , options = {"expose"=true})
  2912.      */
  2913.     public function ajout_type_compte(Request $request EtatRepository $EtatRepository  ): Response
  2914.     {
  2915.         $etat $EtatRepository->find($request->get('etat_n'));
  2916.         $type = new TypeCompte();
  2917.         $type->setTypeCompte($request->get('nom_type_n'));
  2918.         $type->setEtat($etat);
  2919.         $type->setDateCreation\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  2920.         $type->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  2921.         $this->em->persist($type);
  2922.         $this->em->flush();
  2923.         return new Response('OK');
  2924.     }
  2925.     /**
  2926.      * @Route("/modif_type/{id}", name="modif_type" , methods={"POST"}, options = {"expose"=true})
  2927.      */
  2928.     public function modif_type(int $idRequest $requestEtatRepository $EtatRepository): Response
  2929.     {   
  2930.         $etat $EtatRepository->find($request->get('etat_n_modif'));
  2931.         $type $this->em->getRepository(TypeCompte::class)->find($id);
  2932.         if (!$type) {
  2933.             return new JsonResponse(['status' => 'KOO''message' => 'Etat not found!']);
  2934.         };
  2935.         $type->setTypeCompte($request->get('nom_type_n_modif'));
  2936.         $type->setEtat($etat);
  2937.         $type->setDateUpdate\DateTime::createFromFormat('Y-m-d H:i:s',  date('Y-m-d H:i:s' ) ) );
  2938.         try {
  2939.             $this->em->persist($type);
  2940.             $this->em->flush();
  2941.             return new JsonResponse(['status' => 'OK''message' => 'Type compte mise à jour avec succès!']);
  2942.         } catch (\Exception $e) {
  2943.             return new JsonResponse(['status' => 'error''message' => 'Erreur en modification de type Compte: ' $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
  2944.         }
  2945.     }
  2946.     /**
  2947.      * @Route("/delete_type/{id}", name="delete_type" , methods={"DELETE"}, options = {"expose"=true})
  2948.      */
  2949.     public function delete_type(int $idRequest $request): Response
  2950.     {   
  2951.         $type $this->em->getRepository(TypeCompte::class)->find($id);
  2952.         if (!$type) {
  2953.             return new Response('Question not found!'Response::HTTP_NOT_FOUND);
  2954.         };
  2955.         try {
  2956.             $this->em->remove($type);
  2957.             $this->em->flush();
  2958.             return new JsonResponse(['status' => 'OK']);
  2959.         } catch (\Exception $e) {
  2960.             return new Response('Error deleting question: ' $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
  2961.         }
  2962.     }
  2963.       /**
  2964.      * @Route("/serverTypeCompte", name="serverTypeCompte", methods={"GET","POST"}, options = {"expose" = true})
  2965.      */
  2966.     public function serverTypeCompte(Request $request  ): Response
  2967.     {
  2968.                 
  2969.         //echo $this->session->getMetadataBag()->getLifetime();
  2970.                     
  2971.         //if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
  2972.           //  return new Response('disconnect');
  2973.         //}
  2974.         
  2975.         
  2976.         
  2977.         $sql_where "" ;
  2978.         
  2979.         
  2980.         
  2981.          if($request->get('search')['value']!=""){
  2982.             $sql_where .= ' AND ( u.type_compte LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;            
  2983.         }
  2984.          
  2985.         
  2986.         
  2987.         
  2988.         $user_array = [] ;
  2989.         
  2990.         $sql_where2 "";
  2991.         
  2992.         
  2993.         
  2994.         
  2995.         
  2996.         $limit =  $request->get('length') ;
  2997.             
  2998.         $offset $request->get('start') ;
  2999.         
  3000.         $array_search = array();
  3001.         
  3002.         $columns = ['u.id','u.type_compte'] ;
  3003.         
  3004.         $orders = [] ;
  3005.         
  3006.         
  3007.         for($i=$i<count($request->get('order')) ;$i++ ){
  3008.             
  3009.              $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  3010.             
  3011.         }
  3012.         
  3013.         
  3014.         if( count($orders)>0){
  3015.         $order " ORDER BY ".implode(' , ',$orders) ;
  3016.         }
  3017.         else{
  3018.         $order "" ;  
  3019.         }
  3020.         
  3021.         
  3022.         
  3023.         $total_types = [];
  3024.         
  3025.         
  3026.         
  3027.         $total_types $this->em->createQuery(
  3028.             'SELECT u 
  3029.             FROM App\Entity\TypeCompte u
  3030.             
  3031.             
  3032.             WHERE 1=1 '.$sql_where.'
  3033.              
  3034.             '
  3035.             )
  3036.                 
  3037.                 ->getResult()  ;
  3038.       
  3039.                 
  3040.         
  3041.         $I_nbResultatsTotal count$total_types ) ;
  3042.         
  3043.         
  3044.         $types $this->em->createQuery(
  3045.                 'SELECT u 
  3046.                 FROM App\Entity\TypeCompte u
  3047.                
  3048.                 
  3049.                 WHERE 1=1 '.$sql_where.' '.$order.'
  3050.                  
  3051.                 '
  3052.                 )
  3053.                 ->setMaxResults($limit)
  3054.                 ->setFirstResult($offset)
  3055.                 ->getResult()  ;
  3056.         
  3057.         
  3058.         $output = [] ; 
  3059.                
  3060.         foreach($types as $type){
  3061.             
  3062.         $output[] = [
  3063.                 
  3064.                 'id'=>$type->getId() ,
  3065.                 'type_compte'=>$type->getTypeCompte() ,
  3066.                 'etat'=>$type->getEtat()->getEtat() ,
  3067.                 'created_at' => date_format$type->getDateCreation() , 'd/m/Y H:i'),
  3068.                 'updated_at' => date_format$type->getDateUpdate() , 'd/m/Y H:i')
  3069.                 
  3070.         ];
  3071.         
  3072.         
  3073.         
  3074.         
  3075.         }
  3076.         
  3077.         
  3078.         $JSON json_encode($output);
  3079.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  3080.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  3081.         return $response;
  3082.         
  3083.         
  3084.         
  3085.         
  3086.         
  3087.     }
  3088.     
  3089.     /**
  3090.      * @Route("/DemandeProfessionel", name="DemandeProfessionel", methods={"GET","POST"} , options={"expose"=true})
  3091.      */
  3092.     public function DemandeProfessionel(Request $request EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository,GroupeRestrictionRepository $groupeRestrictionRepository,GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
  3093.     {
  3094.         $accessArray=[];
  3095.         $niveauAcessPages = [];
  3096.         $groupeRestrictions = [];
  3097.         if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
  3098.             $admin $this->session->get('supAdT9m2XJzn4');
  3099.         }else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
  3100.             $admin $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
  3101.             $adminId $admin->getId();
  3102.             $groupeRestrictions $groupeRestrictionRepository->findByAdminId($adminId);
  3103.             $restrictionPages $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
  3104.             $accessArray $restrictionPages[0]->getAccess();
  3105.             $niveauAcessPagesCollection $restrictionPages[0]->getNiveauAcessPages();
  3106.             $niveauAcessPagesCollection->initialize();
  3107.             $niveauAcessPages $niveauAcessPagesCollection->toArray();
  3108.         }else {
  3109.             return $this->redirectToRoute('connexion');
  3110.         }
  3111.         $etats $EtatRepository->findAll();
  3112.         return $this->render('configuration/config_demande_professionel.html.twig',[
  3113.              'admin' => $admin,
  3114.         ]);
  3115.     }
  3116. }