src/Controller/UtilisateursController.php line 61

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Utilisateurs ;
  4. use App\Entity\AffectationUtililisateur ;
  5. use App\Repository\AffectationUtililisateurRepository;
  6. use App\Repository\UtilisateursRepository;
  7. use App\Repository\NiveauUtilisateurRepository;
  8. use App\Repository\AffectationDevicesRepository;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Session\Session;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class UtilisateursController extends AbstractController
  15. {
  16.     
  17.     private $accessToken ;
  18.    
  19.     public function __construct()
  20.     {
  21.         
  22.         $this->accessToken $this->getTokenOpernicus()  ;
  23.     }
  24.     
  25.     function genererCode($length){
  26.         
  27.         $chars '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  28.         $string '';
  29.         for($i=0$i<$length$i++){
  30.             $string .= $chars[rand(0strlen($chars)-1)];
  31.         }
  32.             
  33.         return $string;
  34.             
  35.     }
  36.     function makeSalt($mdp){
  37.         
  38.         
  39.         $salt1 'VaCg22Jy4';
  40.         $salt2 '6V7dzJ6Cm' ;
  41.         $salt_mdp sha1($salt1.$mdp.$salt2) ;
  42.         return $salt_mdp ;
  43.             
  44.     }
  45.     
  46.     public function connexion(Request $request UtilisateursRepository $utilisateursRepository AffectationDevicesRepository $affectationDevicesRepository): Response
  47.     {
  48.         
  49.         $msg '';
  50.         if($request->get('confirmer') == "confirmer" ){
  51.             if( ($request->get('login') != "" ) && ($request->get('mdp') != "" ) ){
  52.             $existence_compte $utilisateursRepository->findOneBy(['login'=>$request->get('login')]) ;
  53.             if($existence_compte!=null){
  54.                 
  55.                 $verif_data $utilisateursRepository->findOneBy(['login'=>$request->get('login') , 'mdp'=> $this->makeSalt($request->get('mdp') ) ]) ;
  56.                 
  57.                 if($verif_data!=null){
  58.                     if($verif_data->getEtat() == ){
  59.                         $default_device $affectationDevicesRepository->findOneBy(['utilisateur'=>$verif_data]) ;
  60.                         $session= new session();
  61.                         $session->set('user_connected_telma',$verif_data);
  62.                         if($default_device != null){
  63.                         $session->set('default_device',$default_device->getDevice()->getImei());
  64.                         }
  65.                         
  66.                         return $this->redirectToRoute('tb') ;
  67.                         
  68.                     }
  69.                     else{
  70.                         $msg 'Votre compte est inactif , veuillez contacter l\'administrateur .' ;
  71.                     }
  72.                 }
  73.                 else{
  74.                 
  75.                     $msg 'Login ou mot de passe incorrecte .' ;
  76.                 }
  77.             }
  78.             else{
  79.                 $msg 'Compte innexistant .';
  80.             }
  81.             }
  82.         }
  83.         
  84.         return $this->render('utilisateurs/index.html.twig', [
  85.             'msg' => $msg ,
  86.         ]);
  87.         
  88.         
  89.     }
  90.     
  91.     
  92.     public function utilisateurs(Request $request NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  93.     {
  94.         
  95.             if ($request->hasSession() && ($session $request->getSession())) {
  96.             $session $request->getSession() ;
  97.             }
  98.             else{
  99.             $session = new session();
  100.             }
  101.             
  102.             if($session->get('user_connected_telma') == null){
  103.                 return $this->redirectToRoute('connexion') ;
  104.             }
  105.         if( $session->get('user_connected_telma')->getNiveau()->getId() == ){
  106.             $niveaux $niveauUtilisateurRepository->findBy(['id'=>]) ;
  107.         }
  108.         else if( $session->get('user_connected_telma')->getNiveau()->getId() == ){
  109.             $niveaux $niveauUtilisateurRepository->findBy(['id'=>[1,2] ]) ;
  110.         }
  111.         
  112.         
  113.         return $this->render('utilisateurs/utilisateurs.html.twig',['niveaux'=>$niveaux]);
  114.         
  115.         
  116.     }
  117.     
  118.     public function clients(Request $request NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  119.     {
  120.         
  121.             if ($request->hasSession() && ($session $request->getSession())) {
  122.             $session $request->getSession() ;
  123.             }
  124.             else{
  125.             $session = new session();
  126.             }
  127.             
  128.             if($session->get('user_connected_telma') == null){
  129.                 return $this->redirectToRoute('connexion') ;
  130.             }
  131.         if( $session->get('user_connected_telma')->getNiveau()->getId() == ){
  132.             $niveaux $niveauUtilisateurRepository->findBy(['id'=>]) ;
  133.         }
  134.         else if( $session->get('user_connected_telma')->getNiveau()->getId() == ){
  135.             $niveaux $niveauUtilisateurRepository->findBy(['id'=>[1,2] ]) ;
  136.         }
  137.         
  138.         
  139.         return $this->render('utilisateurs/clients.html.twig',['niveaux'=>$niveaux]);
  140.         
  141.         
  142.     }
  143.     
  144.     public function getTokenOpernicus(){
  145.         $curl curl_init();
  146.                 curl_setopt_array($curl, array(
  147.                 CURLOPT_URL => 'https://identity.dataspace.copernicus.eu/auth/realms/CDSE/protocol/openid-connect/token',
  148.                 CURLOPT_RETURNTRANSFER => true,
  149.                 CURLOPT_ENCODING => '',
  150.                 CURLOPT_MAXREDIRS => 10,
  151.                 CURLOPT_TIMEOUT => 0,
  152.                 CURLOPT_FOLLOWLOCATION => true,
  153.                 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  154.                 CURLOPT_CUSTOMREQUEST => 'POST',
  155.                 CURLOPT_POSTFIELDS => 'grant_type=client_credentials&client_id=sh-dee0a937-a3d7-4d36-bba6-5eef88554bbb&client_secret=cvauJQUX7X0itW432od6mEPNqpAUWTGv',
  156.                 CURLOPT_HTTPHEADER => array(
  157.                     'Content-Type: application/x-www-form-urlencoded',
  158.                     'Cookie: SERVERID=keycloak002.waw2'
  159.                 ),
  160.                 ));
  161.                 $response curl_exec($curl);
  162.                 
  163.                 curl_close($curl);
  164.                 
  165.         $jsonResponse json_decode($response,true);
  166.         return $accessToken $jsonResponse['access_token'] ;
  167.     }
  168.     
  169.     public function tb(Request $request UtilisateursRepository $utilisateursRepository): Response
  170.     {
  171.         
  172.         
  173.             if ($request->hasSession() && ($session $request->getSession())) {
  174.             $session $request->getSession() ;
  175.             }
  176.             else{
  177.             $session = new session();
  178.             }
  179.             
  180.             if($session->get('user_connected_telma') == null){
  181.                 return $this->redirectToRoute('connexion') ;
  182.             }
  183.             $entityManager $this->getDoctrine()->getManager();
  184.             $user $utilisateursRepository->find($session->get('user_connected_telma')) ;
  185.             $devices $entityManager->createQuery(
  186.                 'SELECT d.id as id_device , d.nom_device as nom_device , (SELECT c.altitude FROM App\Entity\ConfigDevice c WHERE c.device = a.device ) as altitude , (SELECT b.longitude FROM App\Entity\ConfigDevice b WHERE b.device = a.device ) as longitude  
  187.                 FROM App\Entity\AffectationDevices a
  188.                 JOIN a.device d
  189.                 WHERE 1=1 AND a.utilisateur = '.$user->getId().'
  190.                  
  191.                 '
  192.                 )
  193.                     
  194.                 ->getResult()  ;
  195.                 
  196.                 
  197.                 
  198.                 /*$curl = curl_init();
  199.                 curl_setopt_array($curl, array(
  200.                 CURLOPT_URL => 'https://sh.dataspace.copernicus.eu/api/v1/catalog/1.0.0/search?datetime=2023-12-01T00%3A00%3A00Z%2F2023-12-10T00%3A00%3A00Z&bbox=13%2C45%2C14%2C46&collections=sentinel-1-grd',
  201.                 CURLOPT_RETURNTRANSFER => true,
  202.                 CURLOPT_ENCODING => '',
  203.                 CURLOPT_MAXREDIRS => 10,
  204.                 CURLOPT_TIMEOUT => 0,
  205.                 CURLOPT_FOLLOWLOCATION => true,
  206.                 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  207.                 CURLOPT_CUSTOMREQUEST => 'GET',
  208.                 CURLOPT_HTTPHEADER => array(
  209.                     "Authorization: Bearer $this->accessToken"
  210.                 ),
  211.                 ));
  212.                 $response = curl_exec($curl);
  213.                 $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  214.                 curl_close($curl);
  215.                 
  216.                 if($httpcode == 401){
  217.                     $this->accessToken = $this->getTokenOpernicus() ;
  218.                     $curl = curl_init();
  219.                     curl_setopt_array($curl, array(
  220.                     CURLOPT_URL => 'https://sh.dataspace.copernicus.eu/api/v1/catalog/1.0.0/search?datetime=2023-12-01T00%3A00%3A00Z%2F2023-12-10T00%3A00%3A00Z&bbox=13%2C45%2C14%2C46&collections=sentinel-1-grd',
  221.                     CURLOPT_RETURNTRANSFER => true,
  222.                     CURLOPT_ENCODING => '',
  223.                     CURLOPT_MAXREDIRS => 10,
  224.                     CURLOPT_TIMEOUT => 0,
  225.                     CURLOPT_FOLLOWLOCATION => true,
  226.                     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  227.                     CURLOPT_CUSTOMREQUEST => 'GET',
  228.                     CURLOPT_HTTPHEADER => array(
  229.                         "Authorization: Bearer $this->accessToken"
  230.                     ),
  231.                     ));
  232.                     $response = curl_exec($curl);
  233.                     curl_close($curl);
  234.                 }
  235.                 $responseData = json_decode($response, true);
  236.                 */
  237.                 
  238.         return $this->render('utilisateurs/tb.html.twig',['devices'=>$devices 'href'=> '' ]);
  239.         
  240.          //$responseData['features'][0]['assets']['data']['href']
  241.         
  242.     }
  243.     public function deconnexion(request $request){
  244.         
  245.         
  246.         if ($request->hasSession() && ($session $request->getSession())) {
  247.         $session $request->getSession() ;
  248.         }
  249.         else{
  250.         $session = new session();
  251.         }
  252.         
  253.         
  254.         
  255.         $session->set('user_connected_telma',null);
  256.         $session->set('default_device',null);
  257.                 
  258.         
  259.         return $this->redirectToRoute('connexion');
  260.         
  261.         
  262.         
  263.         
  264.         
  265.     }
  266.     public function serverUtilisateurs(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  267.     {
  268.         
  269.         
  270.             if ($request->hasSession() && ($session $request->getSession())) {
  271.             $session $request->getSession() ;
  272.             }
  273.             else{
  274.             $session = new session();
  275.             }
  276.             
  277.             if($session->get('user_connected_telma') != null){
  278.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  279.             }
  280.         $entityManager $this->getDoctrine()->getManager();
  281.         
  282.         $sql_where='';
  283.         
  284.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  285.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  286.         }
  287.         
  288.         
  289.         
  290.         
  291.         $columns = ['p.id','p.nom','p.prenom' 'p.niveau' 'p.date_creation','p.etat' 'p.id'] ;
  292.         
  293.         $orders = [] ;
  294.         
  295.         
  296.         for($i=$i<count($request->get('order')) ;$i++ ){
  297.             
  298.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  299.             
  300.         }
  301.         
  302.         
  303.         if( count($orders)>0){
  304.         $order " ORDER BY ".implode(' , ',$orders) ;
  305.         }
  306.         else{
  307.         $order "" ;  
  308.         }
  309.         
  310.         
  311.         if( $usr_connected->getNiveau()->getId() == ){
  312.             $existance $entityManager->createQuery(
  313.             'SELECT p
  314.             FROM App\Entity\Utilisateurs p
  315.             
  316.             WHERE 1=1 AND p.niveau != 3 '.$sql_where.'
  317.              
  318.             '
  319.             )
  320.                 
  321.                 ->getResult()  ;
  322.         }
  323.         else if( $usr_connected->getNiveau()->getId() == ){
  324.             $existance $entityManager->createQuery(
  325.             'SELECT p.id
  326.             FROM App\Entity\Utilisateurs p
  327.             WHERE 1=1 AND p.niveau = 3 '.$sql_where.'
  328.                  
  329.             '
  330.             )
  331.                     
  332.                     ->getResult()  ;
  333.         }
  334.         
  335.         
  336.         
  337.         $I_nbResultatsTotal count$existance ) ;
  338.         
  339.         
  340.         $limit =  $request->get('length') ;
  341.             
  342.         $offset $request->get('start') ;
  343.         
  344.         $array_search = array();
  345.         
  346.         
  347.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  348.         //p.nom LIKE :nom
  349.         if( $usr_connected->getNiveau()->getId() == ){
  350.             $utilisateurs $entityManager->createQuery(
  351.                     'SELECT p
  352.                     FROM App\Entity\Utilisateurs p
  353.                     
  354.                     WHERE 1=1 AND p.niveau != 3 '.$sql_where.' '.$order.'
  355.                     
  356.                     
  357.                     '
  358.                     )
  359.                     ->setMaxResults($limit)
  360.                     ->setFirstResult($offset)
  361.                     ->getResult() ;
  362.         }
  363.         else if( $usr_connected->getNiveau()->getId() == ){
  364.         $utilisateurs $entityManager->createQuery(
  365.                 'SELECT a , p
  366.                 FROM App\Entity\AffectationUtililisateur a
  367.                 JOIN a.utilisateur p
  368.                 
  369.                 WHERE 1=1 AND a.affecter_a = '.$usr_connected->getId().' '.$sql_where.' '.$order.'
  370.                 
  371.                 
  372.                 '
  373.                 )
  374.                 ->setMaxResults($limit)
  375.                 ->setFirstResult($offset)
  376.                 ->getResult() ;
  377.                 
  378.         }
  379.         
  380.         $output =[] ;
  381.         
  382.         
  383.         foreach($utilisateurs as $utilisateur){
  384.             
  385.             if( $usr_connected->getNiveau()->getId() == ){
  386.                 $utilisateur $utilisateur->getUtilisateur();
  387.             }
  388.         
  389.             $output[] = [
  390.                 'nom'=>$utilisateur->getNom() ,
  391.                 'prenom'=>$utilisateur->getPrenom() ,
  392.                 'date_creation'=>$utilisateur->getDateCreation()!='' date('d/m/Y',strtotime($utilisateur->getDateCreation())) : '' ,
  393.                 'niveau'=>$utilisateur->getNiveau()!=null $utilisateur->getNiveau()->getNiveau() : 'Aucun' ,
  394.                 'etat'=>$utilisateur->getEtat() == 'Actif' 'Inactif' ,
  395.                 'id'=>$utilisateur->getId(),
  396.                 'token'=>$utilisateur->getToken(),
  397.                 
  398.             ];
  399.             
  400.             
  401.         }
  402.         
  403.         $JSON json_encode($output);
  404.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  405.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  406.         return $response;
  407.         
  408.         
  409.        
  410.         
  411.     }
  412.     public function serverClients(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  413.     {
  414.         
  415.         
  416.             if ($request->hasSession() && ($session $request->getSession())) {
  417.             $session $request->getSession() ;
  418.             }
  419.             else{
  420.             $session = new session();
  421.             }
  422.             
  423.             if($session->get('user_connected_telma') != null){
  424.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  425.             }
  426.         $entityManager $this->getDoctrine()->getManager();
  427.         
  428.         $sql_where='';
  429.         
  430.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  431.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  432.         }
  433.         
  434.         
  435.         
  436.         
  437.         $columns = ['p.id','p.nom','p.prenom' 'p.niveau' 'p.date_creation','p.etat' 'p.id'] ;
  438.         
  439.         $orders = [] ;
  440.         
  441.         
  442.         for($i=$i<count($request->get('order')) ;$i++ ){
  443.             
  444.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  445.             
  446.         }
  447.         
  448.         
  449.         if( count($orders)>0){
  450.         $order " ORDER BY ".implode(' , ',$orders) ;
  451.         }
  452.         else{
  453.         $order "" ;  
  454.         }
  455.         
  456.         
  457.         $existance $entityManager->createQuery(
  458.             'SELECT p
  459.             FROM App\Entity\Utilisateurs p
  460.             
  461.             WHERE 1=1 AND p.niveau != 3 '.$sql_where.'
  462.              
  463.             '
  464.             )
  465.                 
  466.                 ->getResult()  ;
  467.         
  468.         
  469.         
  470.         $I_nbResultatsTotal count$existance ) ;
  471.         
  472.         
  473.         $limit =  $request->get('length') ;
  474.             
  475.         $offset $request->get('start') ;
  476.         
  477.         $array_search = array();
  478.         $revendeur $utilisateursRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token') ]) ;
  479.         
  480.         
  481.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  482.         //p.nom LIKE :nom
  483.         $clients $entityManager->createQuery(
  484.             'SELECT p
  485.             FROM App\Entity\AffectationUtililisateur p
  486.             
  487.             WHERE 1=1 AND p.affecter_a='.$revendeur->getId().' '.$sql_where.' '.$order.'
  488.             
  489.             '
  490.             )
  491.             ->setMaxResults($limit)
  492.             ->setFirstResult($offset)
  493.             ->getResult() ;
  494.         
  495.         $output =[] ;
  496.         
  497.         
  498.         foreach($clients as $client){
  499.         
  500.             $output[] = [
  501.                 'nom'=>$client->getUtilisateur()->getNom() ,
  502.                 'prenom'=>$client->getUtilisateur()->getPrenom() ,
  503.                 'date_creation'=>$client->getUtilisateur()->getDateCreation()!='' date('d/m/Y',strtotime($client->getUtilisateur()->getDateCreation())) : '' ,
  504.                 'niveau'=>$client->getUtilisateur()->getNiveau()!=null $client->getUtilisateur()->getNiveau()->getNiveau() : 'Aucun' ,
  505.                 'etat'=>$client->getUtilisateur()->getEtat() == 'Actif' 'Inactif' ,
  506.                 'id'=>$client->getUtilisateur()->getId(),
  507.                 'token'=>$client->getUtilisateur()->getToken(),
  508.                 
  509.             ];
  510.             
  511.             
  512.         }
  513.         
  514.         $JSON json_encode($output);
  515.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  516.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  517.         return $response;
  518.         
  519.         
  520.        
  521.         
  522.     }
  523.     
  524.     public function getDeviceClient(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  525.     {
  526.         
  527.         
  528.         if ($request->hasSession() && ($session $request->getSession())) {
  529.             $session $request->getSession() ;
  530.             }
  531.             else{
  532.             $session = new session();
  533.             }
  534.             
  535.             if($session->get('user_connected_telma') != null){
  536.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  537.             }
  538.             
  539.         $entityManager $this->getDoctrine()->getManager();
  540.         
  541.         
  542.         $user $utilisateursRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token') ] ) ;
  543.         $output = [];
  544.         $info_sup = [];
  545.         if($user->getNiveau()->getId() == 3){
  546.             $devices $entityManager->createQuery(
  547.                     'SELECT p
  548.                     FROM App\Entity\AffectationDevices p
  549.                     JOIN p.utilisateur a
  550.     
  551.                     WHERE a.id = \''.$request->get('id').'\' AND a.token=\''.$request->get('token').'\'
  552.                     
  553.                     
  554.                     '
  555.                     )
  556.                     ->getResult() ;
  557.             $devices_online $entityManager->createQuery(
  558.                     'SELECT p
  559.                     FROM App\Entity\AffectationDevices p
  560.                     JOIN p.utilisateur a
  561.                     JOIN p.device d
  562.     
  563.                     WHERE a.id = \''.$request->get('id').'\' AND a.token=\''.$request->get('token').'\' AND d.etat_cnx = 1
  564.                     
  565.                     
  566.                     '
  567.                     )
  568.                     ->getResult() ;
  569.             $info_sup = [
  570.                     "client"=>$user->getPrenom().' '.$user->getNom() ,
  571.                     "id"=>$user->getId() ,
  572.                     "token"=>$user->getToken() ,
  573.                     "devices"=>count($devices) ,
  574.                     "devices_online"=> count($devices_online) ,
  575.                     
  576.                 ];
  577.                     foreach($devices as $device ){
  578.                         $output[] = [
  579.         
  580.                             'device'=>$device->getDevice()->getNomDevice() ,
  581.                             'imei'=>$device->getDevice()->getImei() ,
  582.                             'etat'=>$device->getDevice()->getEtatCnx() ,
  583.                             'id'=>$device->getDevice()->getId(),
  584.                             'token'=>$device->getDevice()->getToken(),
  585.                             
  586.                         ];
  587.                     }
  588.     
  589.     
  590.             }
  591.         
  592.         
  593.         
  594.         
  595.             
  596.             
  597.             
  598.         $JSON json_encode($output);
  599.         $JSON2 json_encode($info_sup);
  600.         $JSON '{"info_sup":'.$JSON2.',"data":'.$JSON.'}';
  601.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  602.         return $response;
  603.         
  604.         
  605.         
  606.         
  607.        
  608.         
  609.     }
  610.     public function getClients(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  611.     {
  612.         
  613.         
  614.         if ($request->hasSession() && ($session $request->getSession())) {
  615.             $session $request->getSession() ;
  616.             }
  617.             else{
  618.             $session = new session();
  619.             }
  620.             
  621.             if($session->get('user_connected_telma') != null){
  622.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  623.             }
  624.             
  625.         $entityManager $this->getDoctrine()->getManager();
  626.         
  627.         
  628.         $user $utilisateursRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token') ] ) ;
  629.         $output = [];
  630.         $info_sup = [];
  631.         if($user->getNiveau()->getId() == 2){
  632.         $clients $entityManager->createQuery(
  633.                 'SELECT p
  634.                 FROM App\Entity\AffectationUtililisateur p
  635.                 JOIN p.affecter_a a
  636.                 WHERE a.id = \''.$request->get('id').'\' AND a.token=\''.$request->get('token').'\'
  637.                 
  638.                 
  639.                 '
  640.                 )
  641.                 ->getResult() ;
  642.         $devices $entityManager->createQuery(
  643.             'SELECT a.id
  644.             FROM App\Entity\AffectationDevices a
  645.             WHERE 1=1 AND a.utilisateur = '.$user->getId().'
  646.              
  647.             '
  648.             )
  649.                 
  650.             ->getResult()  ;
  651.         
  652.         $devices_affecte $entityManager->createQuery(
  653.             'SELECT p.id
  654.             FROM App\Entity\Devices p
  655.             WHERE 1=1 AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 AND uaf.id IN ( SELECT us.id FROM App\Entity\AffectationUtililisateur u JOIN u.utilisateur us WHERE u.affecter_a = '.$user->getId().'  )  ) > 0
  656.              
  657.             '
  658.             )
  659.                 
  660.             ->getResult()  ;
  661.                 $info_sup = [
  662.                     "revendeur"=>$user->getPrenom().' '.$user->getNom() ,
  663.                     "id"=>$user->getId() ,
  664.                     "token"=>$user->getToken() ,
  665.                     "devices"=>count($devices) ,
  666.                     "devices_affecte"=> count($devices_affecte) ,
  667.                     
  668.                 ];
  669.                 foreach($clients as $client ){
  670.                     $output[] = [
  671.     
  672.                         'nom'=>$client->getUtilisateur()->getNom() ,
  673.                         'prenom'=>$client->getUtilisateur()->getPrenom() ,
  674.                         'etat'=>$client->getUtilisateur()->getEtat() ,
  675.                         'id'=>$client->getUtilisateur()->getId(),
  676.                         'token'=>$client->getUtilisateur()->getToken(),
  677.                         
  678.                     ];
  679.                 }
  680.         }
  681.         else if($user->getNiveau()->getId() == 3){
  682.             $clients $entityManager->createQuery(
  683.                     'SELECT p
  684.                     FROM App\Entity\AffectationUtililisateur p
  685.                     JOIN p.utilisateur a
  686.     
  687.                     WHERE a.id = \''.$request->get('id').'\' AND a.token=\''.$request->get('token').'\'
  688.                     
  689.                     
  690.                     '
  691.                     )
  692.                     ->getResult() ;
  693.                     foreach($clients as $client ){
  694.                         $output[] = [
  695.         
  696.                             'nom'=>$client->getAffecterA()->getNom() ,
  697.                             'prenom'=>$client->getAffecterA()->getPrenom() ,
  698.                             'etat'=>$client->getAffecterA()->getEtat() ,
  699.                             'id'=>$client->getAffecterA()->getId(),
  700.                             'token'=>$client->getAffecterA()->getToken(),
  701.                             
  702.                         ];
  703.                     }
  704.     
  705.     
  706.             }
  707.         
  708.         
  709.         
  710.         
  711.             
  712.             
  713.             
  714.         $JSON json_encode($output);
  715.         $JSON2 json_encode($info_sup);
  716.         $JSON '{"info_sup":'.$JSON2.',"data":'.$JSON.'}';
  717.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  718.         return $response;
  719.         
  720.         
  721.         
  722.         
  723.        
  724.         
  725.     }
  726.     
  727.     public function getUtilisateur(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  728.     {
  729.         
  730.         
  731.         $entityManager $this->getDoctrine()->getManager();
  732.         
  733.         
  734.         
  735.         $utilisateur $entityManager->createQuery(
  736.                 'SELECT p
  737.                 FROM App\Entity\Utilisateurs p
  738.                 
  739.                 WHERE p.id = \''.$request->get('id').'\' AND p.token=\''.$request->get('token').'\'
  740.                 
  741.                 
  742.                 '
  743.                 )
  744.                 ->getOneOrNullResult() ;
  745.         
  746.         
  747.         
  748.         
  749.             $output = [];
  750.             if($utilisateur!=null){
  751.                 $output = [
  752.                     'nom'=>$utilisateur->getNom() ,
  753.                     'prenom'=>$utilisateur->getPrenom() ,
  754.                     'email'=>$utilisateur->getEmail() ,
  755.                     'login'=>$utilisateur->getLogin() ,
  756.                     'niveau'=>$utilisateur->getNiveau()!=null $utilisateur->getNiveau()->getId() : '' ,
  757.                     'etat'=>$utilisateur->getEtat() ,
  758.                     'id'=>$utilisateur->getId(),
  759.                     'token'=>$utilisateur->getToken(),
  760.                     
  761.                 ];
  762.             }
  763.             
  764.         
  765.         
  766.         $JSON json_encode($output);
  767.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  768.         return $response;
  769.         
  770.         
  771.        
  772.         
  773.     }
  774.     
  775.     public function utilisateur_edit(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  776.     {
  777.         
  778.         
  779.         $entityManager $this->getDoctrine()->getManager();
  780.                 
  781.         
  782.         $utilisateur $utilisateursRepository->findOneBy(['id'=>$request->get('id_edit') , 'token'=>$request->get('token_edit')  ]) ;
  783.         $existance_utilisateur $entityManager->createQuery(
  784.             'SELECT u
  785.             FROM App\Entity\Utilisateurs u
  786.             WHERE u.login = \''.$request->get('login_edit').'\' AND u.id != '.$utilisateur->getId().'
  787.              
  788.             '
  789.             )
  790.                 
  791.                 ->getOneOrNullResult()  ;
  792.         if($existance_utilisateur != null){
  793.             return new Response('KOO') ;
  794.         }
  795.         if($utilisateur!=null){
  796.         try{
  797.             $utilisateur->setNom($request->get('nom_edit')) ;
  798.             $utilisateur->setPrenom($request->get('prenom_edit')) ;
  799.             $utilisateur->setLogin($request->get('login_edit')) ;
  800.             $utilisateur->setEtat($request->get('etat_edit')) ;
  801.             $utilisateur->setNiveau$niveauUtilisateurRepository->find($request->get('niveau_edit') ) ) ;
  802.             $utilisateur->setEmail($request->get('email_edit')) ;
  803.             if($request->get('mdp_edit')!=""){
  804.             $utilisateur->setMdp($this->makeSalt($request->get('mdp_edit') ) ) ;
  805.             }
  806.             $entityManager->persist($utilisateur) ;
  807.             $entityManager->flush() ;
  808.             return new Response('OK') ;
  809.         }
  810.         catch(Exception $e){
  811.             return new Response('KO') ;
  812.         }
  813.         }
  814.         else{
  815.             return new Response('KOO') ;
  816.         }
  817.        
  818.         
  819.     }
  820.     public function utilisateur_add(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  821.     {
  822.         
  823.         
  824.             if ($request->hasSession() && ($session $request->getSession())) {
  825.             $session $request->getSession() ;
  826.             }
  827.             else{
  828.             $session = new session();
  829.             }
  830.             
  831.             if($session->get('user_connected_telma') != null){
  832.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  833.             }
  834.         $entityManager $this->getDoctrine()->getManager();
  835.         $existance_utilisateur $utilisateursRepository->findBy(['login'=>$request->get('login')]) ;
  836.         if(count($existance_utilisateur) == 0){
  837.         
  838.         $utilisateur = new Utilisateurs() ;
  839.         $token $this->genererCode(20) ;
  840.             try{
  841.                 $utilisateur->setNom($request->get('nom')) ;
  842.                 $utilisateur->setPrenom($request->get('prenom')) ;
  843.                 $utilisateur->setLogin($request->get('login')) ;
  844.                 $utilisateur->setEtat($request->get('etat')) ;
  845.                 $utilisateur->setNiveau$niveauUtilisateurRepository->find($request->get('niveau') ) ) ;
  846.                 $utilisateur->setEmail($request->get('email')) ;
  847.                 $utilisateur->setMdp($this->makeSalt($request->get('mdp') ) ) ;
  848.                 $utilisateur->setToken($token) ;
  849.                 $utilisateur->setDateCreation(date('Y-m-d')) ;
  850.                 $entityManager->persist($utilisateur) ;
  851.                 $entityManager->flush() ;
  852.                 if($usr_connected->getNiveau()->getId() == ){
  853.                 $affect_user = new AffectationUtililisateur() ;
  854.                 $affect_user->setUtilisateur($utilisateur) ;
  855.                 $affect_user->setAffecterA($usr_connected) ;
  856.                 $entityManager->persist($affect_user) ;
  857.                 $entityManager->flush() ;
  858.                 }
  859.                 return new Response('OK') ;
  860.             }
  861.             catch(Exception $e){
  862.                 return new Response('KO') ;
  863.             }
  864.         }
  865.         else{
  866.             return new Response('KOO') ;
  867.         }
  868.        
  869.        
  870.         
  871.     }
  872.     public function utilisateur_delete(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  873.     {
  874.         
  875.         
  876.         $entityManager $this->getDoctrine()->getManager();
  877.                 
  878.         
  879.         $utilisateur $utilisateursRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token')  ]) ;
  880.         if($utilisateur!=null){
  881.         try{
  882.             
  883.             $entityManager->remove($utilisateur) ;
  884.             $entityManager->flush() ;
  885.             return new Response('OK') ;
  886.         }
  887.         catch(Exception $e){
  888.             return new Response('KO') ;
  889.         }
  890.         }
  891.         else{
  892.             return new Response('KOO') ;
  893.         }
  894.        
  895.         
  896.     }
  897.     
  898.     
  899. }