src/Controller/DevicesController.php line 1691

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Devices ;
  4. use App\Entity\AffectationDevices ;
  5. use App\Entity\ConfigDevice ;
  6. use App\Entity\Vannes ;
  7. use App\Entity\PlanificationVanne ;
  8. use App\Entity\Graph ;
  9. use App\Entity\AutoSeuil ;
  10. use App\Entity\ConfigDosage ;
  11. use App\Entity\CategorieVannes ;
  12. use App\Entity\CategorieGraph ;
  13. use App\Repository\UtilisateursRepository;
  14. use App\Repository\NiveauUtilisateurRepository;
  15. use App\Repository\DevicesRepository;
  16. use App\Repository\AffectationDevicesRepository;
  17. use App\Repository\ConfigDeviceRepository;
  18. use App\Repository\VannesRepository;
  19. use App\Repository\GraphRepository;
  20. use App\Repository\PlanificationVanneRepository;
  21. use App\Repository\ActionsRepository;
  22. use App\Repository\AlertesRepository;
  23. use App\Repository\ConfigDosageRepository;
  24. use App\Repository\CategorieVannesRepository;
  25. use App\Repository\CategorieGraphRepository;
  26. use App\Repository\AutoSeuilRepository;
  27. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  28. use Symfony\Component\HttpFoundation\Response;
  29. use Symfony\Component\Routing\Annotation\Route;
  30. use Symfony\Component\HttpFoundation\JsonResponse;
  31. use Symfony\Component\HttpFoundation\Request;
  32. use Symfony\Component\HttpFoundation\Session\Session;
  33. use Symfony\Component\Intl\Timezones;
  34. use Symfony\Contracts\HttpClient\HttpClientInterface;
  35. class DevicesController extends AbstractController
  36. {
  37.     private $client;
  38.     public function __construct(HttpClientInterface $client)
  39.     {
  40.         $this->client $client;
  41.     }
  42.     
  43.     function genererCode($length){
  44.         
  45.         $chars '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  46.         $string '';
  47.         for($i=0$i<$length$i++){
  48.             $string .= $chars[rand(0strlen($chars)-1)];
  49.         }
  50.             
  51.         return $string;
  52.             
  53.     }
  54.     public function vannes(Request $request DevicesRepository $devicesRepositoryCategorieGraphRepository $categorieGraphRepository): Response
  55.     {
  56.         if ($request->getSession()->get('user_connected_telma') == null ){
  57.             return $this->redirectToRoute('connexion') ;
  58.         }
  59.         $entityManager $this->getDoctrine()->getManager();
  60.         
  61.         if($request->get('id')!=''){
  62.         
  63.             $device $entityManager->createQuery(
  64.                 'SELECT p
  65.                 FROM App\Entity\AffectationDevices p
  66.                 JOIN p.device d
  67.                 JOIN p.utilisateur u
  68.                 WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().' AND d.id = '.$request->get('id').' AND d.token = \''.$request->get('token').'\'
  69.                 
  70.                 '
  71.                 )
  72.                 
  73.                     ->getOneOrNullResult()  ;
  74.         }
  75.         else{
  76.             $device $entityManager->createQuery(
  77.                 'SELECT p
  78.                 FROM App\Entity\AffectationDevices p
  79.                 JOIN p.device d
  80.                 JOIN p.utilisateur u
  81.                  WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().
  82.                  
  83.                 '
  84.                 )
  85.                 
  86.                     ->getOneOrNullResult()  ;
  87.         }
  88.         $devices $entityManager->createQuery(
  89.             'SELECT p
  90.             FROM App\Entity\AffectationDevices p
  91.             JOIN p.device d
  92.             JOIN p.utilisateur u
  93.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  94.              
  95.             '
  96.             )
  97.             
  98.                 ->getResult()  ;
  99.         
  100.         return $this->render('devices/vannes.html.twig',[
  101.             'devices'=>$devices,
  102.             'device'=>$device,
  103.             'categories'=>$device->getDevice()->getCategorieVannes()
  104.         ]);
  105.     }
  106.     public function graph(Request $request DevicesRepository $devicesRepositoryCategorieGraphRepository $categorieGraphRepository): Response
  107.     {
  108.         if ($request->getSession()->get('user_connected_telma') == null ){
  109.             return $this->redirectToRoute('connexion') ;
  110.         }
  111.         $entityManager $this->getDoctrine()->getManager();
  112.         $device $entityManager->createQuery(
  113.             'SELECT p
  114.             FROM App\Entity\AffectationDevices p
  115.             JOIN p.device d
  116.             JOIN p.utilisateur u
  117.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().' AND d.id = '.$request->get('id').' AND d.token = \''.$request->get('token').'\'
  118.              
  119.             '
  120.             )
  121.             
  122.                 ->getOneOrNullResult()  ;
  123.         
  124.         $devices $entityManager->createQuery(
  125.             'SELECT p
  126.             FROM App\Entity\AffectationDevices p
  127.             JOIN p.device d
  128.             JOIN p.utilisateur u
  129.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  130.              
  131.             '
  132.             )
  133.             
  134.                 ->getResult()  ;
  135.                
  136.         
  137.         return $this->render('devices/graph.html.twig',[
  138.             'devices'=>$devices,
  139.             'device'=>$device,
  140.             'categories'=>$device->getDevice()->getCategorieGraphs()
  141.         ]);
  142.     }
  143.     public function sensors(Request $request DevicesRepository $devicesRepositoryCategorieGraphRepository $categorieGraphRepository): Response
  144.     {
  145.         if ($request->getSession()->get('user_connected_telma') == null ){
  146.             return $this->redirectToRoute('connexion') ;
  147.         }
  148.         $entityManager $this->getDoctrine()->getManager();
  149.         $device $entityManager->createQuery(
  150.             'SELECT p
  151.             FROM App\Entity\AffectationDevices p
  152.             JOIN p.device d
  153.             JOIN p.utilisateur u
  154.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  155.              
  156.             '
  157.             )
  158.             
  159.                 ->getOneOrNullResult()  ;
  160.         $devices $entityManager->createQuery(
  161.             'SELECT p
  162.             FROM App\Entity\AffectationDevices p
  163.             JOIN p.device d
  164.             JOIN p.utilisateur u
  165.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  166.              
  167.             '
  168.             )
  169.             
  170.                 ->getResult()  ;
  171.                 
  172.         
  173.         return $this->render('devices/graph.html.twig',[
  174.             'devices'=>$devices,
  175.             'device'=>$device,
  176.             'categories'=>!is_null($device) ? $device->getDevice()->getCategorieGraphs() : null
  177.         ]);
  178.     }
  179.     
  180.     public function getAffectCategorieVanne(Request $request UtilisateursRepository $utilisateursRepositoryVannesRepository $vannesRepository): Response
  181.     {
  182.         $entityManager $this->getDoctrine()->getManager();
  183.         if ($request->hasSession() && ($session $request->getSession())) {
  184.             $session $request->getSession() ;
  185.         }
  186.         else{
  187.             $session = new session();
  188.         }
  189.             
  190.         if($session->get('user_connected_telma') != null){
  191.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  192.         }
  193.         else{
  194.             return $this->redirectToRoute('connexion') ;
  195.         }
  196.         $vanne $vannesRepository->find($request->get('id')) ;
  197.         return new JsonResponse(['id'=> !is_null($vanne->getCategorie()) ? $vanne->getCategorie()->getId() : '' ]) ;
  198.     }
  199.     
  200.     public function getAffectCategorieGraph(Request $request UtilisateursRepository $utilisateursRepositoryGraphRepository $graphRepository): Response
  201.     {
  202.         $entityManager $this->getDoctrine()->getManager();
  203.         if ($request->hasSession() && ($session $request->getSession())) {
  204.             $session $request->getSession() ;
  205.         }
  206.         else{
  207.             $session = new session();
  208.         }
  209.             
  210.         if($session->get('user_connected_telma') != null){
  211.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  212.         }
  213.         else{
  214.             return $this->redirectToRoute('connexion') ;
  215.         }
  216.         $graph $graphRepository->find($request->get('id')) ;
  217.         return new JsonResponse(['id'=> !is_null($graph->getCategorie()) ? $graph->getCategorie()->getId() : '' ]) ;
  218.     }
  219.     
  220.     public function affect_categorie_graph(Request $request UtilisateursRepository $utilisateursRepositoryGraphRepository $graphRepositoryCategorieGraphRepository $categorieGraphRepository): Response
  221.     {
  222.         $entityManager $this->getDoctrine()->getManager();
  223.         if ($request->hasSession() && ($session $request->getSession())) {
  224.             $session $request->getSession() ;
  225.         }
  226.         else{
  227.             $session = new session();
  228.         }
  229.             
  230.         if($session->get('user_connected_telma') != null){
  231.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  232.         }
  233.         else{
  234.             return $this->redirectToRoute('connexion') ;
  235.         }
  236.         $graph $graphRepository->find($request->get('graph_affect'));
  237.         $categorie $categorieGraphRepository->find($request->get('categorie')) ;
  238.         
  239.         $graph->setCategorie($categorie) ;
  240.         $entityManager->persist($graph) ;
  241.         $entityManager->flush() ;
  242.         return new Response('OK') ;
  243.     }
  244.     public function affect_categorie_vanne(Request $request UtilisateursRepository $utilisateursRepositoryVannesRepository $vannesRepositoryCategorieVannesRepository $categorieVannesRepository): Response
  245.     {
  246.         $entityManager $this->getDoctrine()->getManager();
  247.         if ($request->hasSession() && ($session $request->getSession())) {
  248.             $session $request->getSession() ;
  249.         }
  250.         else{
  251.             $session = new session();
  252.         }
  253.             
  254.         if($session->get('user_connected_telma') != null){
  255.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  256.         }
  257.         else{
  258.             return $this->redirectToRoute('connexion') ;
  259.         }
  260.         $vanne $vannesRepository->find($request->get('vanne_affect'));
  261.         $categorie $categorieVannesRepository->find($request->get('categorie')) ;
  262.         
  263.         $vanne->setCategorie($categorie) ;
  264.         $entityManager->persist($vanne) ;
  265.         $entityManager->flush() ;
  266.         return new Response('OK') ;
  267.     }
  268.     public function categorie_vannes(Request $request): Response
  269.     {
  270.         
  271.         $entityManager $this->getDoctrine()->getManager();
  272.         if ($request->getSession()->get('user_connected_telma') == null ){
  273.             return $this->redirectToRoute('connexion') ;
  274.         }
  275.         $device $entityManager->createQuery(
  276.             'SELECT p
  277.             FROM App\Entity\AffectationDevices p
  278.             JOIN p.device d
  279.             JOIN p.utilisateur u
  280.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  281.              
  282.             '
  283.             )
  284.             
  285.                 ->getOneOrNullResult()  ;
  286.         $devices $entityManager->createQuery(
  287.             'SELECT p
  288.             FROM App\Entity\AffectationDevices p
  289.             JOIN p.device d
  290.             JOIN p.utilisateur u
  291.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  292.              
  293.             '
  294.             )
  295.                 ->getResult()  ;
  296.         
  297.         $vannes $entityManager->createQuery(
  298.             'SELECT p
  299.             FROM App\Entity\Vannes p
  300.              WHERE p.device = '.$device->getDevice()->getId().'
  301.              
  302.             '
  303.             )
  304.                 ->getResult()  ;
  305.         return $this->render('devices/categorie_vannes.html.twig',[
  306.             'device'=>$device,
  307.             'devices'=>$devices,
  308.             'vannes'=>$vannes
  309.         ]);
  310.     }
  311.     public function categorie_graph(Request $request): Response
  312.     {
  313.         $entityManager $this->getDoctrine()->getManager();
  314.         if ($request->getSession()->get('user_connected_telma') == null ){
  315.             return $this->redirectToRoute('connexion') ;
  316.         }
  317.         $device $entityManager->createQuery(
  318.             'SELECT p
  319.             FROM App\Entity\AffectationDevices p
  320.             JOIN p.device d
  321.             JOIN p.utilisateur u
  322.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  323.              
  324.             '
  325.             )
  326.             
  327.                 ->getOneOrNullResult()  ;
  328.         $devices $entityManager->createQuery(
  329.             'SELECT p
  330.             FROM App\Entity\AffectationDevices p
  331.             JOIN p.device d
  332.             JOIN p.utilisateur u
  333.              WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
  334.              
  335.             '
  336.             )
  337.                 ->getResult()  ;
  338.         return $this->render('devices/categorie_graph.html.twig',[
  339.             'device'=>$device,
  340.             'devices'=>$devices
  341.         ]);
  342.     }
  343.     public function index(Request $request): Response
  344.     {
  345.         if ($request->getSession()->get('user_connected_telma') == null ){
  346.             return $this->redirectToRoute('connexion') ;
  347.         }
  348.         return $this->render('devices/index.html.twig', [
  349.             'controller_name' => 'DevicesController',
  350.         ]);
  351.     }
  352.     public function actions(Request $request): Response
  353.     {
  354.         if ($request->getSession()->get('user_connected_telma') == null ){
  355.             return $this->redirectToRoute('connexion') ;
  356.         }
  357.         return $this->render('devices/actions.html.twig');
  358.     }
  359.     public function alertes(Request $request): Response
  360.     {
  361.         if ($request->getSession()->get('user_connected_telma') == null ){
  362.             return $this->redirectToRoute('connexion') ;
  363.         }
  364.         return $this->render('devices/alertes.html.twig');
  365.     }
  366.     public function affectation_devices(Request $request UtilisateursRepository $utilisateursRepository): Response
  367.     {
  368.         $entityManager $this->getDoctrine()->getManager();
  369.             if ($request->hasSession() && ($session $request->getSession())) {
  370.             $session $request->getSession() ;
  371.             }
  372.             else{
  373.             $session = new session();
  374.             }
  375.             
  376.             if($session->get('user_connected_telma') != null){
  377.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  378.             }
  379.             else{
  380.                 return $this->redirectToRoute('connexion') ;
  381.             }
  382.         $clients = [] ;
  383.         if($usr_connected->getNiveau()->getId() == ){
  384.             $clients $entityManager->createQuery(
  385.                 'SELECT a , p
  386.                 FROM App\Entity\AffectationUtililisateur a
  387.                 JOIN a.utilisateur p
  388.                 
  389.                 WHERE 1=1 AND a.affecter_a = '.$usr_connected->getId().'
  390.                 
  391.                 '
  392.                 )
  393.                 ->getResult() ;
  394.         }
  395.         $revendeurs $utilisateursRepository->findBy(['niveau'=>'etat'=>1]);
  396.         return $this->render('devices/affectation_devices.html.twig', [
  397.             'revendeurs' => $revendeurs ,
  398.             'clients'=>$clients
  399.         ]);
  400.     }
  401.     public function planification(Request $request DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  402.     {
  403.         $entityManager $this->getDoctrine()->getManager();
  404.         $sql_where '' ;
  405.         $sql_where2 '' ;
  406.         if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
  407.             $session $request->getSession() ;
  408.             
  409.             $utilisateur $utilisateursRepository->find($session->get('user_connected_telma') ) ;
  410.             if($utilisateur->getNiveau()->getId() == ){
  411.             $sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  412.             $sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  413.             }
  414.         }
  415.         else{
  416.             return $this->redirectToRoute('connexion') ;
  417.         }
  418.         if( null != $request->get('device_filter') && ($request->get('device_filter')) ){
  419.             $sql_where .= ' AND d.id = '.$request->get('device_filter').' ' ;
  420.         }
  421.         else if($session->get('default_device')!=''){
  422.             $sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
  423.         }
  424.         
  425.         
  426.         $all_device $entityManager->createQuery(
  427.             'SELECT p
  428.             FROM App\Entity\AffectationDevices p
  429.             JOIN p.device d
  430.              WHERE 1=1 '.$sql_where2.'
  431.              
  432.             '
  433.             )
  434.                 ->getResult()  ;
  435.         $device $entityManager->createQuery(
  436.             'SELECT p
  437.             FROM App\Entity\AffectationDevices p
  438.             JOIN p.device d
  439.              WHERE 1=1 '.$sql_where.'
  440.              
  441.             '
  442.             )
  443.                 ->setMaxResults(1)
  444.                 ->getOneOrNullResult()  ;
  445.         $config null ;
  446.         $vannes = [] ;
  447.         if($device != null){
  448.         $config $entityManager->createQuery(
  449.             'SELECT p
  450.             FROM App\Entity\ConfigDevice p
  451.              WHERE p.device = '.$device->getDevice()->getId().'
  452.              
  453.             '
  454.             )
  455.                 ->setMaxResults(1)
  456.                 ->getOneOrNullResult()  ;
  457.         
  458.         $vannes $entityManager->createQuery(
  459.             'SELECT p
  460.             FROM App\Entity\Vannes p
  461.              WHERE p.device = '.$device->getDevice()->getId().'
  462.              
  463.             '
  464.             )
  465.                 ->getResult()  ;
  466.         }
  467.         $vannearr = [] ;
  468.         foreach($vannes as $vanne){
  469.             $vannearr[] = $vanne->getId() ;  
  470.         }
  471.         
  472.         
  473.         return $this->render('devices/planification.html.twig',[
  474.             'devices'=> $all_device ,
  475.             'device_filter'=>$request->get('device_filter')!='' $request->get('device_filter') : ( $device!= null $device->getDevice()->getId() : '' ),
  476.             'vannes_filter'=>$request->get('vannes_filter')!='' $request->get('vannes_filter') : '',
  477.             'vannearr'=>$vannearr ,
  478.             'default_device'=>$device,
  479.         ]);
  480.     }
  481.     
  482.     public function historique(Request $requestCategorieGraphRepository $categorieGraphRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  483.     {
  484.         date_default_timezone_set'Africa/Tunis' );
  485.     
  486.         $entityManager $this->getDoctrine()->getManager();
  487.         $sql_where '' ;
  488.         $sql_where2 '' ;
  489.         if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
  490.             $session $request->getSession() ;
  491.             
  492.             $utilisateur $utilisateursRepository->find($session->get('user_connected_telma') ) ;
  493.             if($utilisateur->getNiveau()->getId() == ){
  494.             $sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  495.             $sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  496.             }
  497.         }
  498.         else{
  499.             return $this->redirectToRoute('connexion') ;
  500.         }
  501.         if($request->get('device')!=''){
  502.             $sql_where .= ' AND d.id = '.$request->get('device').' ' ;
  503.         }
  504.         
  505.         
  506.         $all_device $entityManager->createQuery(
  507.             'SELECT p
  508.             FROM App\Entity\AffectationDevices p
  509.             JOIN p.device d
  510.              WHERE 1=1 '.$sql_where2.'
  511.              
  512.             '
  513.             )
  514.                 ->getResult()  ;
  515.         $device $entityManager->createQuery(
  516.             'SELECT p
  517.             FROM App\Entity\AffectationDevices p
  518.             JOIN p.device d
  519.              WHERE 1=1 '.$sql_where.'
  520.              
  521.             '
  522.             )
  523.                 ->setMaxResults(1)
  524.                 ->getOneOrNullResult()  ;
  525.         $vannes = [] ;
  526.         $config = [] ;
  527.         $graphs = [] ;
  528.         if($device != null){
  529.             
  530.         $config $entityManager->createQuery(
  531.             'SELECT p
  532.             FROM App\Entity\ConfigDevice p
  533.              WHERE p.device = '.$device->getDevice()->getId().'
  534.              
  535.             '
  536.             )
  537.                 ->setMaxResults(1)
  538.                 ->getOneOrNullResult()  ;
  539.         
  540.         $vannes $entityManager->createQuery(
  541.             'SELECT p
  542.             FROM App\Entity\Vannes p
  543.              WHERE p.device = '.$device->getDevice()->getId().'
  544.              
  545.             '
  546.             )
  547.                 ->getResult()  ;
  548.                 
  549.             $graphIds = [] ;
  550.             if($request->get('categorie_graph')!=''){
  551.                 
  552.                     $categorieGraph $categorieGraphRepository->find($request->get('categorie_graph')) ;
  553.                     $graphs $categorieGraph->getGraphs() ;
  554.                     foreach($graphs as $graph){
  555.                         $graphIds[] = $graph->getId() ;
  556.                     }
  557.                     
  558.             }
  559.             else{
  560.                 foreach($device->getDevice()->getcategorieGraphs()[0]->getGraphs() as $graph){
  561.                     $graphIds[] = $graph->getId() ;
  562.                 }
  563.                     
  564.             }
  565.             if(count($graphIds)>0){
  566.                 $graphs $entityManager->createQuery(
  567.                 'SELECT p
  568.                 FROM App\Entity\Graph p
  569.                 WHERE p.device = '.$device->getDevice()->getId().' AND p.id IN ('.implode(',',$graphIds).')
  570.                 
  571.                 '
  572.                 )
  573.                 ->getResult()  ;
  574.                     
  575.             }
  576.             else{
  577.                 $graphs = []  ;
  578.             }
  579.         
  580.         }
  581.         
  582.         
  583.         $action = [] ;
  584.         foreach($vannes as $vanne){
  585.             $actions $entityManager->createQuery(
  586.                 'SELECT p
  587.                 FROM App\Entity\Actions p
  588.                  WHERE p.vanne='.$vanne->getId().' AND p.action = 1  ORDER BY p.id DESC 
  589.                  
  590.                 '
  591.                 )
  592.                 ->setMaxResults(1)
  593.                 ->getOneOrNullResult()  ;
  594.                 if($actions != null){
  595.                 $durees explode(':',$actions->getDuree()) ;
  596.                 
  597.                 $sec_duree $durees[0]*3600 $durees[1]*60 $durees[2][0] ;
  598.                 
  599.                 //echo date("Y-m-d H:i:s") ;
  600.                 $now   strtotime(date("Y-m-d H:i:s"));
  601.                 //$date2 = strtotime($actions->getDateAction()) + ( $sec_duree * 1000 ) ;
  602.                 //echo date("Y-m-d H:i:s").' - '.date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)).' ' ;
  603.                 
  604.                 $date2 strtotimedate("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)) ) ;
  605.                 $duration =  ($date2 $now) ;
  606.                 $hours floor($duration 3600);
  607.                 $minutes floor(($duration 60) % 60);
  608.                 $seconds $duration 60;
  609.                 $duree "$hours:$minutes:$seconds";
  610.                 $action[$vanne->getId()] =  [
  611.                     'duree' => $duree ,
  612.                 ] ;
  613.                 }
  614.                 
  615.         }
  616.         
  617.         return $this->render('devices/historique.html.twig', [
  618.             'device' => $device,
  619.             'config' => $config ,
  620.             'vannes' => $vannes ,
  621.             'graphs' => $graphs ,
  622.             'devices' => $all_device ,
  623.             'action' => $action ,
  624.         ]);
  625.     }
  626.     public function live2(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  627.     {
  628.         return $this->render('devices/live2.html.twig');
  629.     }
  630.     public function live(Request $request CategorieVannesRepository $categorieVannesRepositoryCategorieGraphRepository $categorieGraphRepository ,UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
  631.     {
  632.         date_default_timezone_set'Africa/Tunis' );
  633.         
  634.         $entityManager $this->getDoctrine()->getManager();
  635.         $sql_where '' ;
  636.         $sql_where2 '' ;
  637.         if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
  638.             
  639.             $session $request->getSession() ;
  640.             
  641.             $utilisateur $utilisateursRepository->find($session->get('user_connected_telma') ) ;
  642.             if($utilisateur->getNiveau()->getId() == ){
  643.             $sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  644.             $sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  645.             }
  646.             
  647.         }
  648.         else{
  649.             return $this->redirectToRoute('connexion') ;
  650.         }
  651.         
  652.         if($request->get('device')!=''){
  653.             $sql_where .= ' AND d.id = '.$request->get('device').' ' ;
  654.         }
  655.         else if( $session->get('default_device')!=null ){
  656.             $sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
  657.         }
  658.         
  659.         
  660.         
  661.         $all_device $entityManager->createQuery(
  662.             'SELECT p
  663.             FROM App\Entity\AffectationDevices p
  664.             JOIN p.device d
  665.              WHERE 1=1 '.$sql_where2.'
  666.              
  667.             '
  668.             )
  669.                 ->getResult()  ;
  670.         $device $entityManager->createQuery(
  671.             'SELECT p
  672.             FROM App\Entity\AffectationDevices p
  673.             JOIN p.device d
  674.              WHERE 1=1 '.$sql_where.'
  675.              
  676.             '
  677.             )
  678.                 ->setMaxResults(1)
  679.                 ->getOneOrNullResult()  ;
  680.         $vannes = [] ;
  681.         $config = [] ;
  682.         $graphs = [] ;
  683.         if($device != null){
  684.             $config $entityManager->createQuery(
  685.                 'SELECT p
  686.                 FROM App\Entity\ConfigDevice p
  687.                 WHERE p.device = '.$device->getDevice()->getId().'
  688.                 
  689.                 '
  690.                 )
  691.                     ->setMaxResults(1)
  692.                     ->getOneOrNullResult()  ;
  693.                     
  694.                 
  695.             if($request->get('categorie_vanne')){
  696.                 $categorieVannes $categorieVannesRepository->find($request->get('categorie_vanne')) ;
  697.                 $vannes $categorieVannes->getVannes() ;
  698.             }
  699.             else if($device->getDevice()->getCategorieVannes() != null ){
  700.                 $vannes $device->getDevice()->getCategorieVannes()[0]->getVannes() ;
  701.             }
  702.             else{
  703.                 $vannes $entityManager->createQuery(
  704.                     'SELECT p
  705.                     FROM App\Entity\Vannes p
  706.                     WHERE p.device = '.$device->getDevice()->getId().'
  707.                     
  708.                     '
  709.                     )
  710.                         ->getResult()  ;
  711.             }
  712.             
  713.             
  714.             if($request->get('categorie_graph')!=''){
  715.                 $categorieGraph $categorieGraphRepository->find($request->get('categorie_graph')) ;
  716.                 $graphs $categorieGraph->getGraphs() ;
  717.             }
  718.             else if($device->getDevice()->getCategorieVannes() != null ){
  719.                 $graphs $device->getDevice()->getCategorieGraphs()[0]->getGraphs() ;
  720.             }
  721.             else{
  722.                 $graphs $entityManager->createQuery(
  723.                     'SELECT p
  724.                     FROM App\Entity\Graph p
  725.                     WHERE p.device = '.$device->getDevice()->getId().'
  726.                     
  727.                     '
  728.                     )
  729.                         ->getResult()  ;
  730.             }
  731.         }
  732.         
  733.         
  734.         $action = [] ;
  735.         foreach($vannes as $vanne){
  736.             $actions $entityManager->createQuery(
  737.                 'SELECT p
  738.                 FROM App\Entity\Actions p
  739.                  WHERE p.vanne='.$vanne->getId().' AND p.action = 1  ORDER BY p.id DESC 
  740.                  
  741.                 '
  742.                 )
  743.                 ->setMaxResults(1)
  744.                 ->getOneOrNullResult()  ;
  745.                 if($actions != null){
  746.                 $durees explode(':',$actions->getDuree()) ;
  747.                
  748.                 
  749.                 $sec_duree $durees[0]*3600 $durees[1]*60 + ($durees[2][0]+ $durees[2][1]) ;
  750.                 
  751.                 //echo date("Y-m-d H:i:s") ;
  752.                 $now   strtotime(date("Y-m-d H:i:s"));
  753.                 //$date2 = strtotime($actions->getDateAction()) + ( $sec_duree * 1000 ) ;
  754.                 //echo date("Y-m-d H:i:s").' - '.date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)).' ' ;
  755.                 
  756.                 $date2 strtotimedate("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)) ) ;
  757.                 $duration =  ($date2 $now) ;
  758.                 $hours floor($duration 3600);
  759.                 $minutes floor(($duration 60) % 60);
  760.                 $seconds $duration 60;
  761.                 $duree "$hours:$minutes:$seconds";
  762.                 $action[$vanne->getId()] =  [
  763.                     'duree' => $duree ,
  764.                 ] ;
  765.                 }
  766.                 
  767.         }
  768.        
  769.         
  770.         if($device!=null ){
  771.             $session->set('default_device',$device->getDevice()->getImei());
  772.         }
  773.         
  774.         $meteo null ;
  775.         //Client ID
  776.         //cf09688d-ef50-4161-a305-5e25e6aeef7a
  777.         //client Secret
  778.         //1cb50ab8-25a8-4476-8b73-9155b761c470
  779.         if(($config!=null) &&($config->getLatitude() != "")&&($config->getLongitude()!="")){
  780.             
  781.         
  782.         $response $this->client->request(
  783.             'GET',
  784.             'https://api.met.no/weatherapi/locationforecast/2.0/compact.json?lat='.$config->getLatitude().'&lon='.$config->getLongitude().''
  785.         );
  786.         
  787.         $reponses $response->toArray() ;
  788.         //dd($meteo = $reponses['properties']['timeseries']) ;
  789.         
  790.         $meteo $reponses['properties']['timeseries'][0]["data"] ;
  791.         }
  792.         
  793.         
  794.         return $this->render('devices/live.html.twig', [
  795.             'device' => $device,
  796.             'config' => $config ,
  797.             'vannes' => $vannes ,
  798.             'graphs' => $graphs ,
  799.             'devices' => $all_device ,
  800.             'action' => $action ,
  801.             'meteo' => $meteo
  802.         ]);
  803.     }
  804.     public function previsions(Request $request PlanificationVanneRepository $planificationVanneRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  805.     {
  806.         if ($request->getSession()->get('user_connected_telma') == null ){
  807.             return $this->redirectToRoute('connexion') ;
  808.         }
  809.         if ($request->hasSession() && ($session $request->getSession())) {
  810.             $session $request->getSession() ;
  811.             }
  812.             else{
  813.             $session = new session();
  814.             }
  815.         $entityManager $this->getDoctrine()->getManager();
  816.         $sql_where '' ;
  817.         $sql_where2 '' ;
  818.         if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
  819.             
  820.             $session $request->getSession() ;
  821.             
  822.             $utilisateur $utilisateursRepository->find($session->get('user_connected_telma') ) ;
  823.             if($utilisateur->getNiveau()->getId() == ){
  824.             $sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  825.             $sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
  826.             }
  827.             
  828.         }
  829.         else{
  830.             return $this->redirectToRoute('connexion') ;
  831.         }
  832.         
  833.         if($request->get('device')!=''){
  834.             $sql_where .= ' AND d.id = '.$request->get('device').' ' ;
  835.         }
  836.         else if( $session->get('default_device')!=null ){
  837.             $sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
  838.         }
  839.         
  840.         
  841.         
  842.         $all_device $entityManager->createQuery(
  843.             'SELECT p
  844.             FROM App\Entity\AffectationDevices p
  845.             JOIN p.device d
  846.              WHERE 1=1 '.$sql_where2.'
  847.              
  848.             '
  849.             )
  850.                 ->getResult()  ;
  851.         $device $entityManager->createQuery(
  852.             'SELECT p
  853.             FROM App\Entity\AffectationDevices p
  854.             JOIN p.device d
  855.              WHERE 1=1 '.$sql_where.'
  856.              
  857.             '
  858.             )
  859.                 ->setMaxResults(1)
  860.                 ->getOneOrNullResult()  ;
  861.         $vannes = [] ;
  862.         $config = [] ;
  863.         $graphs = [] ;
  864.         if($device != null){
  865.         $config $entityManager->createQuery(
  866.             'SELECT p
  867.             FROM App\Entity\ConfigDevice p
  868.              WHERE p.device = '.$device->getDevice()->getId().'
  869.              
  870.             '
  871.             )
  872.                 ->setMaxResults(1)
  873.                 ->getOneOrNullResult()  ;
  874.         }
  875.         
  876.         $meteos '';
  877.         if( ($config!=null) && ($config->getLatitude() != "")&&($config->getLongitude()!="")){
  878.             
  879.             
  880.             
  881.             date_default_timezone_set'Africa/Tunis' );
  882.         
  883.             $responsemeteo $this->client->request(
  884.                 'GET',
  885.                 'https://api.open-meteo.com/v1/forecast?latitude='.$config->getLatitude().'&longitude='.$config->getLongitude().'&hourly=temperature_2m,relative_humidity_2m,et0_fao_evapotranspiration,soil_temperature_6cm,soil_temperature_18cm,soil_temperature_54cm,soil_moisture_3_to_9cm,soil_moisture_9_to_27cm,soil_moisture_27_to_81cm'
  886.             );
  887.             
  888.             $reponsesmeteo $responsemeteo->toArray() ;
  889.     
  890.             
  891.         
  892.             $response $this->client->request(
  893.                 'GET',
  894.                 'https://api.met.no/weatherapi/locationforecast/2.0/compact.json?lat='.$config->getLatitude().'&lon='.$config->getLongitude().''
  895.             );
  896.             
  897.             $reponses $response->toArray() ;
  898.             /*$response = $this->client->request(
  899.                 'POST',
  900.                 'https://api-connect.eos.com/weather/v1/meteomatics/2024-01-15T00:00:00ZP2D:PT1H', [
  901.                     'headers' => [
  902.                         'Content-Type' => 'text/plain',
  903.                         'x-api-key' => 'apk.ea5d5f72d59812a1207567a7cee535583701be3c50acb58940ed69f4f4c39954',
  904.                     ],
  905.                     'extra'=>[
  906.                         'parameters'=>"evaporation_1h:mm/".$config->getLatitude().",".$config->getLongitude()."/html"
  907.                     ]
  908.                 ]
  909.             );
  910.             
  911.             $reponses = $response->toArray() ;
  912.             
  913.             dd($reponses) ;*/
  914.             $meteos $reponses['properties']['timeseries'];
  915.     
  916.     
  917.             //dd($meteos);
  918.             
  919.             //$meteo = $reponses['properties']['timeseries'][0]["data"] ;
  920.             
  921.     
  922.             
  923.     
  924.             }
  925.             return $this->render('devices/previsions.html.twig', [
  926.                 'meteos' => $meteos ,
  927.                 'devices'=>$all_device,
  928.                 'device' => $device,
  929.             ]);
  930.     }
  931.     
  932.     public function serverEvents(Request $request PlanificationVanneRepository $planificationVanneRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  933.     {
  934.         $entityManager $this->getDoctrine()->getManager();
  935.         if ($request->hasSession() && ($session $request->getSession())) {
  936.             $session $request->getSession() ;
  937.             }
  938.             else{
  939.             $session = new session();
  940.             }
  941.         $sql_where "" ;
  942.         
  943.         if($request->get('device')!=''){
  944.             $sql_where .= ' AND p.device = '.$request->get('device').' ' ;
  945.         }
  946.         else{
  947.             $sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
  948.         }
  949.         date_default_timezone_set'Africa/Tunis' );
  950.         if($request->get('start')!=''){
  951.             $sql_where .= ' AND p.start >= \''.date('Y-m-d H:i',strtotime($request->get('start'))).'\' ' ;
  952.         }
  953.         if($request->get('end')!=''){
  954.             $sql_where .= ' AND p.end <= \''.date('Y-m-d H:i',strtotime($request->get('end'))).'\' ' ;
  955.         }
  956.         
  957.         if(($request->get('vannes'))&&( count(explode(',',$request->get('vannes')) )>0)){
  958.             $sql_where .= ' AND p.vanne IN ('.$request->get('vannes').') ' ;
  959.         }
  960.         
  961.         $planifications $entityManager->createQuery(
  962.         'SELECT p 
  963.         FROM App\Entity\PlanificationVanne p
  964.         JOIN p.device d
  965.          WHERE 1=1 '.$sql_where.'  
  966.          
  967.         '
  968.         )
  969.             
  970.             ->getResult()  ;
  971.     $output= [];
  972.     $couleurs = array(
  973.         "1"=>array("borderColor"=>"#0168fa" "backgroundColor"=>"rgba(1,104,250, .15)"),
  974.         "2"=>array("borderColor"=>"#10b759" "backgroundColor"=>"rgba(16,183,89, .25)"),
  975.         "3"=>array("borderColor"=>"#5b47fb" "backgroundColor"=>"rgba(91,71,251,.2)"),
  976.         "4"=>array("borderColor"=>"#00cccc" "backgroundColor"=>"rgba(0,204,204,.25)"),
  977.         "5"=>array("borderColor"=>"#f10075" "backgroundColor"=>"rgba(241,0,117,.25)"),
  978.         "6"=>array("borderColor"=>"#fd7e14" "backgroundColor"=>"rgba(253,126,20,.25)"),
  979.         "7"=>array("borderColor"=>"#607D8B" "backgroundColor"=>"rgba(96, 125, 139, .25)"),
  980.         "8"=>array("borderColor"=>"#ffc107" "backgroundColor"=>"rgba(255, 193, 7, .25)"),
  981.     );
  982.      
  983.     foreach($planifications as $planification){
  984.         $allDay false ;
  985.         if($planification->getAllday() == ){
  986.         $allDay true ;
  987.         }
  988.         $output[] = [
  989.             'id'   => $planification->getId() ,
  990.             'title'   => $planification->getTitle(),
  991.             'id_vanne'   => $planification->getVanne()->getId(),
  992.             'id_device'   => $planification->getVanne()->getDevice()->getId(),
  993.             'start'   => $planification->getStart(),
  994.             'debut'   => $planification->getStart(),
  995.             'end'   => $planification->getEnd(),
  996.             'fin'   => $planification->getEnd(),
  997.             'borderColor' => $couleurs[$planification->getVanne()->getIdx()]['borderColor'],
  998.             'backgroundColor' => $couleurs[$planification->getVanne()->getIdx()]['backgroundColor'],
  999.             'allDay'   => $allDay ,
  1000.             'id_reccurence' => $planification->getReccurence() ,
  1001.             'repeats' => $planification->getRepeats() ,
  1002.             'repeat_freq' => $planification->getRepeatFreq() ,
  1003.             'jour' => $planification->getJour() ,
  1004.             'end_repeat' => $planification->getEndRepeat() ,
  1005.             'type_reccurence' => $planification->getTypeReccurence(),
  1006.             'frequence_jour' => $planification->getFrequenceJour() ,
  1007.             
  1008.         ] ;
  1009.     }
  1010.     $JSON json_encode($output);
  1011.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1012.         return $response;
  1013.     }
  1014.     
  1015.     public function serverVannes(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1016.     {
  1017.         
  1018.         
  1019.             if ($request->hasSession() && ($session $request->getSession())) {
  1020.             $session $request->getSession() ;
  1021.             }
  1022.             else{
  1023.             $session = new session();
  1024.             }
  1025.             
  1026.             if($session->get('user_connected_telma') != null){
  1027.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1028.             }
  1029.         $entityManager $this->getDoctrine()->getManager();
  1030.         
  1031.         $sql_where='';
  1032.         
  1033.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1034.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1035.         }
  1036.         if( ($request->get('searchByDevice')!="") ){
  1037.             $sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
  1038.         }
  1039.         
  1040.         if( ($request->get('searchByAffecter')=="1") ){
  1041.             if($usr_connected->getNiveau()->getId() == ){
  1042.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
  1043.             }
  1044.             else if($usr_connected->getNiveau()->getId() == ){
  1045.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) > 0 ' ;
  1046.             }
  1047.             
  1048.         }
  1049.         else if( ($request->get('searchByAffecter')=="0") ){
  1050.             if($usr_connected->getNiveau()->getId() == ){
  1051.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
  1052.             }
  1053.             else if($usr_connected->getNiveau()->getId() == ){
  1054.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) = 0 ' ;
  1055.             }
  1056.             
  1057.             
  1058.         }
  1059.         
  1060.         
  1061.         
  1062.         
  1063.         $columns = ['p.id','p.nom_graph','p.idx' 'p.seuil_min' 'p.seuil_max'] ;
  1064.         
  1065.         $orders = [] ;
  1066.         
  1067.         
  1068.         for($i=$i<count($request->get('order')) ;$i++ ){
  1069.             
  1070.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1071.             
  1072.         }
  1073.         
  1074.         
  1075.         if( count($orders)>0){
  1076.         $order " ORDER BY ".implode(' , ',$orders) ;
  1077.         }
  1078.         else{
  1079.         $order "" ;  
  1080.         }
  1081.         
  1082.         
  1083.         
  1084.         if($usr_connected->getNiveau()->getId() == ){
  1085.                 $existance $entityManager->createQuery(
  1086.                 'SELECT p.id
  1087.                 FROM App\Entity\Vannes p
  1088.                 JOIN p.device d
  1089.                  WHERE 1=1 '.$sql_where.'
  1090.                  
  1091.                 '
  1092.                 )
  1093.                     
  1094.                     ->getResult()  ;
  1095.         }
  1096.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1097.             $affect_devices $entityManager->createQuery(
  1098.                 'SELECT a
  1099.                 FROM App\Entity\AffectationDevices a
  1100.                 WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().'
  1101.                 
  1102.                 '
  1103.                 )
  1104.                 ->getResult() ;
  1105.                 $idAffects = [] ;
  1106.                 foreach($affect_devices as $affect_device){
  1107.                     $idAffects[] = $affect_device->getDevice()->getId() ;
  1108.                 }
  1109.             $existance $entityManager->createQuery(
  1110.             'SELECT p.id
  1111.             FROM App\Entity\Vannes p
  1112.             JOIN p.device d
  1113.             WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.'
  1114.              
  1115.             '
  1116.             )
  1117.                 
  1118.                 ->getResult()  ;
  1119.         }
  1120.         
  1121.         
  1122.         
  1123.         $I_nbResultatsTotal count$existance ) ;
  1124.         
  1125.         
  1126.         $limit =  $request->get('length') ;
  1127.             
  1128.         $offset $request->get('start') ;
  1129.         
  1130.         $array_search = array();
  1131.         
  1132.         
  1133.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1134.         //p.nom LIKE :nom
  1135.         
  1136.         if($usr_connected->getNiveau()->getId() == ){
  1137.         $vannes $entityManager->createQuery(
  1138.                 'SELECT p
  1139.                 FROM App\Entity\Vannes p
  1140.                 JOIN p.device d
  1141.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1142.                 
  1143.                 
  1144.                 '
  1145.                 )
  1146.                 ->setMaxResults($limit)
  1147.                 ->setFirstResult($offset)
  1148.                 ->getResult() ;
  1149.                 
  1150.         }
  1151.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1152.             
  1153.             
  1154.             $vannes $entityManager->createQuery(
  1155.                     'SELECT p
  1156.                     FROM App\Entity\Vannes p
  1157.                     JOIN p.device d
  1158.                     
  1159.                     WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.' '.$order.'
  1160.                     
  1161.                     '
  1162.                     )
  1163.                     ->setMaxResults($limit)
  1164.                     ->setFirstResult($offset)
  1165.                     ->getResult() ;
  1166.     
  1167.         }
  1168.         
  1169.         
  1170.         $output =[] ;
  1171.         
  1172.         
  1173.         foreach($vannes as $vanne){
  1174.         
  1175.             $output[] = [
  1176.                 'id'=>$vanne->getId() ,
  1177.                 'nom_vanne'=>$vanne->getNomVanne() ,
  1178.                 'categorie'=> !is_null($vanne->getCategorie()) ? $vanne->getCategorie()->getCategorie() :  '' ,
  1179.                 'idx'=>$vanne->getIdx() ,
  1180.                 'seuil_activ'=>$vanne->getSeuilActiv() ,
  1181.                 'seuil_desactiv'=>$vanne->getSeuilDesactiv() ,
  1182.             ];
  1183.             
  1184.             
  1185.         }
  1186.         
  1187.         $JSON json_encode($output);
  1188.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1189.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1190.         return $response;
  1191.         
  1192.         
  1193.        
  1194.         
  1195.     }
  1196.     
  1197.     public function serverHistorique(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1198.     {
  1199.         
  1200.         if ($request->hasSession() && ($session $request->getSession())) {
  1201.             $session $request->getSession() ;
  1202.             }
  1203.             else{
  1204.             $session = new session();
  1205.             }
  1206.             
  1207.             if($session->get('user_connected_telma') != null){
  1208.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1209.             }
  1210.         $entityManager $this->getDoctrine()->getManager();
  1211.         
  1212.         $humidites $entityManager->createQuery(
  1213.             'SELECT p
  1214.             FROM App\Entity\Humidites p
  1215.             JOIN p.device d
  1216.             
  1217.             WHERE d.id = 2 ORDER BY p.id DESC
  1218.              
  1219.             '
  1220.             )
  1221.                 ->setMaxResults(1000)
  1222.                 ->getResult()  ;
  1223.         
  1224.         $dates = [] ;
  1225.         $hum = [] ;
  1226.         $nbr 0;
  1227.         foreach($humidites as $humidite){
  1228.             if(count($humidite->getHumidities())>$nbr){
  1229.                 $nbr count($humidite->getHumidities()) ;
  1230.             }
  1231.             
  1232.             foreach($humidite->getHumidities() as $dataHum){
  1233.                 $hum[strtotime(date_format($humidite->getDateHeureInsertion() , 'Y-m-d H:i:s') )][] = $dataHum['h'] ;
  1234.             }
  1235.             $dates[] = strtotime(date_format($humidite->getDateHeureInsertion() , 'Y-m-d H:i:s') )  ;            
  1236.         }
  1237.         $j=0;
  1238.         $arrVal = [] ;
  1239.         for($i=0;$i<$nbr;$i++){
  1240.             foreach($dates as $date){
  1241.                 $arrVal[$j][] = ['x' => $date 'y'=> $hum[$date][$i] ];
  1242.             }
  1243.             $j++;            
  1244.         }
  1245.         return $this->json($arrVal) ;
  1246.        
  1247.         
  1248.     }
  1249.     
  1250.     public function serverGraph(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1251.     {
  1252.         
  1253.         
  1254.             if ($request->hasSession() && ($session $request->getSession())) {
  1255.             $session $request->getSession() ;
  1256.             }
  1257.             else{
  1258.             $session = new session();
  1259.             }
  1260.             
  1261.             if($session->get('user_connected_telma') != null){
  1262.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1263.             }
  1264.         $entityManager $this->getDoctrine()->getManager();
  1265.         
  1266.         $sql_where='';
  1267.         
  1268.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1269.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1270.         }
  1271.         if( ($request->get('searchByDevice')!="") ){
  1272.             $sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
  1273.         }
  1274.         
  1275.         if( ($request->get('searchByAffecter')=="1") ){
  1276.             if($usr_connected->getNiveau()->getId() == ){
  1277.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
  1278.             }
  1279.             else if($usr_connected->getNiveau()->getId() == ){
  1280.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) > 0 ' ;
  1281.             }
  1282.             
  1283.         }
  1284.         else if( ($request->get('searchByAffecter')=="0") ){
  1285.             if($usr_connected->getNiveau()->getId() == ){
  1286.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
  1287.             }
  1288.             else if($usr_connected->getNiveau()->getId() == ){
  1289.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) = 0 ' ;
  1290.             }
  1291.             
  1292.             
  1293.         }
  1294.         
  1295.         
  1296.         
  1297.         
  1298.         $columns = ['p.id','p.nom_graph','p.idx' 'p.seuil_min' 'p.seuil_max'] ;
  1299.         
  1300.         $orders = [] ;
  1301.         
  1302.         
  1303.         for($i=$i<count($request->get('order')) ;$i++ ){
  1304.             
  1305.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1306.             
  1307.         }
  1308.         
  1309.         
  1310.         if( count($orders)>0){
  1311.         $order " ORDER BY ".implode(' , ',$orders) ;
  1312.         }
  1313.         else{
  1314.         $order "" ;  
  1315.         }
  1316.         
  1317.         
  1318.         
  1319.         if($usr_connected->getNiveau()->getId() == ){
  1320.                 $existance $entityManager->createQuery(
  1321.                 'SELECT p.id
  1322.                 FROM App\Entity\Graph p
  1323.                 JOIN p.device d
  1324.                  WHERE 1=1 '.$sql_where.'
  1325.                  
  1326.                 '
  1327.                 )
  1328.                     
  1329.                     ->getResult()  ;
  1330.         }
  1331.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1332.             $affect_devices $entityManager->createQuery(
  1333.                 'SELECT a
  1334.                 FROM App\Entity\AffectationDevices a
  1335.                 WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().'
  1336.                 
  1337.                 '
  1338.                 )
  1339.                 ->getResult() ;
  1340.                 $idAffects = [] ;
  1341.                 foreach($affect_devices as $affect_device){
  1342.                     $idAffects[] = $affect_device->getDevice()->getId() ;
  1343.                 }
  1344.             $existance $entityManager->createQuery(
  1345.             'SELECT p.id
  1346.             FROM App\Entity\Graph p
  1347.             JOIN p.device d
  1348.             WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.'
  1349.              
  1350.             '
  1351.             )
  1352.                 
  1353.                 ->getResult()  ;
  1354.         }
  1355.         
  1356.         
  1357.         
  1358.         $I_nbResultatsTotal count$existance ) ;
  1359.         
  1360.         
  1361.         $limit =  $request->get('length') ;
  1362.             
  1363.         $offset $request->get('start') ;
  1364.         
  1365.         $array_search = array();
  1366.         
  1367.         
  1368.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1369.         //p.nom LIKE :nom
  1370.         
  1371.         if($usr_connected->getNiveau()->getId() == ){
  1372.         $graphs $entityManager->createQuery(
  1373.                 'SELECT p
  1374.                 FROM App\Entity\Graph p
  1375.                 JOIN p.device d
  1376.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1377.                 
  1378.                 
  1379.                 '
  1380.                 )
  1381.                 ->setMaxResults($limit)
  1382.                 ->setFirstResult($offset)
  1383.                 ->getResult() ;
  1384.                 
  1385.         }
  1386.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1387.             
  1388.             
  1389.             $graphs $entityManager->createQuery(
  1390.                     'SELECT p
  1391.                     FROM App\Entity\Graph p
  1392.                     JOIN p.device d
  1393.                     
  1394.                     WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.' '.$order.'
  1395.                     
  1396.                     '
  1397.                     )
  1398.                     ->setMaxResults($limit)
  1399.                     ->setFirstResult($offset)
  1400.                     ->getResult() ;
  1401.     
  1402.         }
  1403.         
  1404.         
  1405.         $output =[] ;
  1406.         
  1407.         
  1408.         foreach($graphs as $graph){
  1409.         
  1410.             $output[] = [
  1411.                 'id'=>$graph->getId() ,
  1412.                 'nom_graph'=>$graph->getNomGraph() ,
  1413.                 'categorie'=> !is_null($graph->getCategorie()) ? $graph->getCategorie()->getCategorie() :  '' ,
  1414.                 'idx'=>$graph->getIdx() ,
  1415.                 'seuil_min'=>$graph->getSeuilMin() ,
  1416.                 'seuil_max'=>$graph->getSeuilMax() ,
  1417.                 
  1418.                 
  1419.             ];
  1420.             
  1421.             
  1422.         }
  1423.         
  1424.         $JSON json_encode($output);
  1425.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1426.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1427.         return $response;
  1428.         
  1429.         
  1430.        
  1431.         
  1432.     }
  1433.     
  1434.     public function serverCategorieVanne(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1435.     {
  1436.         
  1437.         
  1438.             if ($request->hasSession() && ($session $request->getSession())) {
  1439.             $session $request->getSession() ;
  1440.             }
  1441.             else{
  1442.             $session = new session();
  1443.             }
  1444.             
  1445.             if($session->get('user_connected_telma') != null){
  1446.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1447.             }
  1448.         $entityManager $this->getDoctrine()->getManager();
  1449.         
  1450.         $sql_where='';
  1451.         
  1452.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1453.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1454.         }
  1455.         if( ($request->get('searchByDevice')!="") ){
  1456.             $sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
  1457.         }
  1458.         
  1459.         
  1460.         
  1461.         $columns = ['p.categorie' 'p.id'] ;
  1462.         
  1463.         $orders = [] ;
  1464.         
  1465.         
  1466.         for($i=$i<count($request->get('order')) ;$i++ ){
  1467.             
  1468.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1469.             
  1470.         }
  1471.         
  1472.         
  1473.         if( count($orders)>0){
  1474.         $order " ORDER BY ".implode(' , ',$orders) ;
  1475.         }
  1476.         else{
  1477.         $order "" ;  
  1478.         }
  1479.         
  1480.         
  1481.         
  1482.         $existance $entityManager->createQuery(
  1483.             'SELECT p.id
  1484.             FROM App\Entity\CategorieVannes p
  1485.             JOIN p.device d
  1486.              WHERE 1=1 '.$sql_where.'
  1487.              
  1488.             '
  1489.             )
  1490.                 
  1491.                 ->getResult()  ;
  1492.         
  1493.         
  1494.         $I_nbResultatsTotal count$existance ) ;
  1495.         
  1496.         
  1497.         $limit =  $request->get('length') ;
  1498.             
  1499.         $offset $request->get('start') ;
  1500.         
  1501.         $array_search = array();
  1502.         
  1503.         
  1504.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1505.         //p.nom LIKE :nom
  1506.         
  1507.         $categories $entityManager->createQuery(
  1508.             'SELECT p
  1509.             FROM App\Entity\CategorieVannes p
  1510.             JOIN p.device d
  1511.             
  1512.             WHERE 1=1 '.$sql_where.' '.$order.'
  1513.             
  1514.             
  1515.             '
  1516.             )
  1517.             ->setMaxResults($limit)
  1518.             ->setFirstResult($offset)
  1519.             ->getResult() ;
  1520.         
  1521.         
  1522.         $output =[] ;
  1523.         
  1524.         
  1525.         foreach($categories as $categorie){
  1526.             
  1527.         
  1528.             $output[] = [
  1529.                 'categorie'=>$categorie->getCategorie() ,
  1530.                 'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getNomDevice() : '' ,
  1531.                 'id'=>$categorie->getId(),
  1532.             ];
  1533.             
  1534.             
  1535.         }
  1536.         
  1537.         $JSON json_encode($output);
  1538.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1539.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1540.         return $response;
  1541.         
  1542.         
  1543.        
  1544.         
  1545.     }
  1546.     public function serverCategorieGraph(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1547.     {
  1548.         
  1549.             if ($request->hasSession() && ($session $request->getSession())) {
  1550.             $session $request->getSession() ;
  1551.             }
  1552.             else{
  1553.             $session = new session();
  1554.             }
  1555.             
  1556.             if($session->get('user_connected_telma') != null){
  1557.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1558.             }
  1559.         $entityManager $this->getDoctrine()->getManager();
  1560.         
  1561.         $sql_where='';
  1562.         
  1563.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1564.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1565.         }
  1566.         if( ($request->get('searchByDevice')!="")){
  1567.             $sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
  1568.         }
  1569.         
  1570.         
  1571.         
  1572.         $columns = ['p.categorie' 'p.id'] ;
  1573.         
  1574.         $orders = [] ;
  1575.         
  1576.         
  1577.         for($i=$i<count($request->get('order')) ;$i++ ){
  1578.             
  1579.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1580.             
  1581.         }
  1582.         
  1583.         
  1584.         if( count($orders)>0){
  1585.         $order " ORDER BY ".implode(' , ',$orders) ;
  1586.         }
  1587.         else{
  1588.         $order "" ;  
  1589.         }
  1590.         
  1591.         
  1592.         
  1593.         $existance $entityManager->createQuery(
  1594.             'SELECT p.id
  1595.             FROM App\Entity\CategorieGraph p
  1596.             JOIN p.device d
  1597.              WHERE 1=1 '.$sql_where.'
  1598.              
  1599.             '
  1600.             )
  1601.                 
  1602.                 ->getResult()  ;
  1603.         
  1604.         
  1605.         $I_nbResultatsTotal count$existance ) ;
  1606.         
  1607.         
  1608.         $limit =  $request->get('length') ;
  1609.             
  1610.         $offset $request->get('start') ;
  1611.         
  1612.         $array_search = array();
  1613.         
  1614.         
  1615.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1616.         //p.nom LIKE :nom
  1617.         
  1618.         $categories $entityManager->createQuery(
  1619.             'SELECT p
  1620.             FROM App\Entity\CategorieGraph p
  1621.             JOIN p.device d
  1622.             
  1623.             WHERE 1=1 '.$sql_where.' '.$order.'
  1624.             
  1625.             
  1626.             '
  1627.             )
  1628.             ->setMaxResults($limit)
  1629.             ->setFirstResult($offset)
  1630.             ->getResult() ;
  1631.         
  1632.         
  1633.         $output =[] ;
  1634.         
  1635.         
  1636.         foreach($categories as $categorie){
  1637.         
  1638.             $output[] = [
  1639.                 'categorie'=>$categorie->getCategorie() ,
  1640.                 'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getNomDevice() : '' ,
  1641.                 'id'=>$categorie->getId(),
  1642.             ];
  1643.             
  1644.             
  1645.         }
  1646.         
  1647.         $JSON json_encode($output);
  1648.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1649.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1650.         return $response;
  1651.         
  1652.         
  1653.        
  1654.         
  1655.     }
  1656.     public function serverDevices(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepositoryUtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1657.     {
  1658.         
  1659.         
  1660.             if ($request->hasSession() && ($session $request->getSession())) {
  1661.             $session $request->getSession() ;
  1662.             }
  1663.             else{
  1664.             $session = new session();
  1665.             }
  1666.             
  1667.             if($session->get('user_connected_telma') != null){
  1668.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1669.             }
  1670.         $entityManager $this->getDoctrine()->getManager();
  1671.         
  1672.         $sql_where='';
  1673.         
  1674.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1675.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1676.         }
  1677.         
  1678.         if( ($request->get('searchByAffecter')=="1") ){
  1679.             if($usr_connected->getNiveau()->getId() == ){
  1680.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
  1681.             }
  1682.             else if($usr_connected->getNiveau()->getId() == ){
  1683.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) > 0 ' ;
  1684.             }
  1685.             
  1686.         }
  1687.         else if( ($request->get('searchByAffecter')=="0") ){
  1688.             if($usr_connected->getNiveau()->getId() == ){
  1689.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
  1690.             }
  1691.             else if($usr_connected->getNiveau()->getId() == ){
  1692.                 $sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af JOIN af.utilisateur uaf where p.id = af.device AND uaf.niveau = 3 ) = 0 ' ;
  1693.             }
  1694.             
  1695.             
  1696.         }
  1697.         
  1698.         
  1699.         
  1700.         
  1701.         $columns = ['p.imei','p.nom_device','p.etat' 'p.date_creation' 'p.id'] ;
  1702.         
  1703.         $orders = [] ;
  1704.         
  1705.         
  1706.         for($i=$i<count($request->get('order')) ;$i++ ){
  1707.             
  1708.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1709.             
  1710.         }
  1711.         
  1712.         
  1713.         if( count($orders)>0){
  1714.         $order " ORDER BY ".implode(' , ',$orders) ;
  1715.         }
  1716.         else{
  1717.         $order "" ;  
  1718.         }
  1719.         
  1720.         
  1721.         
  1722.         if($usr_connected->getNiveau()->getId() == ){
  1723.                 $existance $entityManager->createQuery(
  1724.                 'SELECT p.id
  1725.                 FROM App\Entity\Devices p
  1726.                  WHERE 1=1 '.$sql_where.'
  1727.                  
  1728.                 '
  1729.                 )
  1730.                     
  1731.                     ->getResult()  ;
  1732.         }
  1733.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1734.             $existance $entityManager->createQuery(
  1735.             'SELECT a.id
  1736.             FROM App\Entity\AffectationDevices a
  1737.             JOIN a.device p
  1738.             WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().' '.$sql_where.'
  1739.              
  1740.             '
  1741.             )
  1742.                 
  1743.                 ->getResult()  ;
  1744.         }
  1745.         
  1746.         
  1747.         
  1748.         $I_nbResultatsTotal count$existance ) ;
  1749.         
  1750.         
  1751.         $limit =  $request->get('length') ;
  1752.             
  1753.         $offset $request->get('start') ;
  1754.         
  1755.         $array_search = array();
  1756.         
  1757.         
  1758.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1759.         //p.nom LIKE :nom
  1760.         
  1761.         if($usr_connected->getNiveau()->getId() == ){
  1762.         $devices $entityManager->createQuery(
  1763.                 'SELECT p
  1764.                 FROM App\Entity\Devices p
  1765.                 
  1766.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1767.                 
  1768.                 
  1769.                 '
  1770.                 )
  1771.                 ->setMaxResults($limit)
  1772.                 ->setFirstResult($offset)
  1773.                 ->getResult() ;
  1774.                 
  1775.         }
  1776.         else if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1777.             
  1778.             $devices $entityManager->createQuery(
  1779.                     'SELECT p , a
  1780.                     FROM App\Entity\AffectationDevices a
  1781.                     JOIN a.device p
  1782.                     
  1783.                     WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().' '.$sql_where.' '.$order.'
  1784.                     
  1785.                     
  1786.                     '
  1787.                     )
  1788.                     ->setMaxResults($limit)
  1789.                     ->setFirstResult($offset)
  1790.                     ->getResult() ;
  1791.     
  1792.         }
  1793.         
  1794.         
  1795.         $output =[] ;
  1796.         
  1797.         
  1798.         foreach($devices as $device){
  1799.             if( ($usr_connected->getNiveau()->getId() == ) || ($usr_connected->getNiveau()->getId() == ) ){
  1800.                 $device $device->getDevice() ;
  1801.             }
  1802.             
  1803.             $affectation_device null ;
  1804.             if( ($usr_connected->getNiveau()->getId() == ) ){
  1805.                 $affectation_device $entityManager->createQuery(
  1806.                     'SELECT p
  1807.                     FROM App\Entity\AffectationDevices p
  1808.                     JOIN p.utilisateur u
  1809.                      WHERE u.niveau = 2 AND p.device = '.$device->getId().'
  1810.                     '
  1811.                     )
  1812.                     ->setMaxResults(1)
  1813.                     ->getOneOrNullResult()  ;
  1814.             }
  1815.             else if( ($usr_connected->getNiveau()->getId() == ) ){
  1816.                 
  1817.                 $affectation_device $entityManager->createQuery(
  1818.                     'SELECT p
  1819.                     FROM App\Entity\AffectationDevices p
  1820.                     JOIN p.utilisateur u
  1821.                     WHERE u.niveau = 3 AND p.device = '.$device->getId().'
  1822.                     '
  1823.                     )
  1824.                     ->setMaxResults(1)
  1825.                     ->getOneOrNullResult()  ;
  1826.             }
  1827.         
  1828.             $output[] = [
  1829.                 'imei'=>$device->getImei() ,
  1830.                 'nom_device'=>$device->getNomDevice() ,
  1831.                 'date_creation'=>$device->getDateCreation()!='' date('d/m/Y',strtotime($device->getDateCreation())) : '' ,
  1832.                 'etat'=>$device->getEtat() == 'Actif' 'Inactif' ,
  1833.                 'etat_cnx'=>$device->getEtatCnx() == 'OUI' 'NON' ,
  1834.                 'id'=>$device->getId(),
  1835.                 'token'=>$device->getToken(),
  1836.                 'affecter_a'=>$affectation_device!= null $affectation_device->getUtilisateur()->getNom().' '.$affectation_device->getUtilisateur()->getPrenom() : 'Aucune' ,
  1837.                 
  1838.             ];
  1839.             
  1840.             
  1841.         }
  1842.         
  1843.         $JSON json_encode($output);
  1844.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1845.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1846.         return $response;
  1847.         
  1848.         
  1849.        
  1850.         
  1851.     }
  1852.     public function serverActions(Request $request ActionsRepository $actionsRepository DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1853.     {
  1854.         
  1855.         
  1856.         $entityManager $this->getDoctrine()->getManager();
  1857.         
  1858.         $sql_where='';
  1859.         
  1860.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  1861.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  1862.         }
  1863.         if ($request->hasSession() && ($session $request->getSession())) {
  1864.             $session $request->getSession() ;
  1865.             }
  1866.             else{
  1867.             $session = new session();
  1868.             }
  1869.             
  1870.         $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  1871.         
  1872.         if($usr_connected->getNiveau()->getId()==3){
  1873.             $affect_devices $entityManager->createQuery(
  1874.             'SELECT p
  1875.             FROM App\Entity\AffectationDevices p
  1876.              WHERE p.utilisateur = '.$usr_connected->getId().'
  1877.             '
  1878.             )
  1879.                 
  1880.             ->getResult()  ;
  1881.             $ids_devices = [];
  1882.             foreach($affect_devices as $affect_device){
  1883.                 $ids_devices[] = $affect_device->getDevice()->getId() ;
  1884.             }
  1885.             if(count($ids_devices)>0){
  1886.                 $sql_where .= " AND p.id IN (".implode(',',$ids_devices).") " ;
  1887.             }
  1888.             else{
  1889.                 $sql_where .= " AND p.id = 0 " ;
  1890.             }
  1891.             
  1892.         }
  1893.         
  1894.         
  1895.         
  1896.         $columns = ['p.imei','p.nom_device','v.nom_vanne' 'a.type_envoi' 'a.action' 'a.duree' 'a.date_action','a.etat'] ;
  1897.         
  1898.         $orders = [] ;
  1899.         
  1900.         
  1901.         for($i=$i<count($request->get('order')) ;$i++ ){
  1902.             
  1903.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  1904.             
  1905.         }
  1906.         
  1907.         
  1908.         if( count($orders)>0){
  1909.         $order " ORDER BY ".implode(' , ',$orders) ;
  1910.         }
  1911.         else{
  1912.         $order "" ;  
  1913.         }
  1914.         
  1915.         
  1916.         
  1917.                    
  1918.                 $existance $entityManager->createQuery(
  1919.                 'SELECT a
  1920.                 FROM App\Entity\Actions a 
  1921.                 JOIN a.device p
  1922.                 JOIN a.vanne v
  1923.                  WHERE 1=1 '.$sql_where.'
  1924.                  
  1925.                 '
  1926.                 )
  1927.                     
  1928.                     ->getResult()  ;
  1929.         
  1930.         
  1931.         
  1932.         $I_nbResultatsTotal count$existance ) ;
  1933.         
  1934.         
  1935.         $limit =  $request->get('length') ;
  1936.             
  1937.         $offset $request->get('start') ;
  1938.         
  1939.         $array_search = array();
  1940.         
  1941.         
  1942.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  1943.         //p.nom LIKE :nom
  1944.         
  1945.         $actions $entityManager->createQuery(
  1946.                 'SELECT a
  1947.                 FROM App\Entity\Actions a 
  1948.                 JOIN a.device p
  1949.                 JOIN a.vanne v
  1950.                 
  1951.                 WHERE 1=1 '.$sql_where.' '.$order.'
  1952.                 
  1953.                 
  1954.                 '
  1955.                 )
  1956.                 ->setMaxResults($limit)
  1957.                 ->setFirstResult($offset)
  1958.                 ->getResult() ;
  1959.         
  1960.         
  1961.         $output =[] ;
  1962.         
  1963.         
  1964.         foreach($actions as $action){
  1965.             
  1966.         
  1967.             $output[] = [
  1968.                 
  1969.                 'imei'=>$action->getDevice()->getImei() ,
  1970.                 'nom_device'=>$action->getDevice()->getNomDevice() ,
  1971.                 'date_action'=>$action->getDateAction()!='' date('d/m/Y H:i',strtotime($action->getDateAction())) : '' ,
  1972.                 'vanne'=>$action->getVanne()->getNomVanne() ,
  1973.                 'type_envoi'=>$action->getTypeEnvoi() == 'SERVER' 'WEB' : ( $action->getTypeEnvoi() == 'SMS' 'SMS'.($action->getExpediteur()!='' ' ( '.$action->getExpediteur().' )' '' ) : $action->getTypeEnvoi() ) ,
  1974.                 'action'=>$action->getAction()== '1' 'ON' : ( $action->getAction()== '0' 'OFF' $action->getAction() )  ,
  1975.                 'envoi'=>$action->getEtat() ,
  1976.                 'duree'=>$action->getDuree() ,
  1977.                 'id'=>$action->getId(),
  1978.             ];
  1979.             
  1980.             
  1981.         }
  1982.         
  1983.         $JSON json_encode($output);
  1984.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  1985.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  1986.         return $response;
  1987.         
  1988.         
  1989.        
  1990.         
  1991.     }
  1992.     public function serverAlertes(Request $request AlertesRepository $alertesRepository DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  1993.     {
  1994.         
  1995.         
  1996.         $entityManager $this->getDoctrine()->getManager();
  1997.         
  1998.         $sql_where='';
  1999.         
  2000.         if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
  2001.             $sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
  2002.         }
  2003.             if ($request->hasSession() && ($session $request->getSession())) {
  2004.             $session $request->getSession() ;
  2005.             }
  2006.             else{
  2007.             $session = new session();
  2008.             }
  2009.         $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  2010.         
  2011.         if($usr_connected->getNiveau()->getId()==3){
  2012.             
  2013.             $affect_devices $entityManager->createQuery(
  2014.             'SELECT p
  2015.             FROM App\Entity\AffectationDevices p
  2016.              WHERE p.utilisateur = '.$usr_connected->getId().'
  2017.             '
  2018.             )
  2019.                 
  2020.             ->getResult()  ;
  2021.             $ids_devices = [];
  2022.             foreach($affect_devices as $affect_device){
  2023.                 $ids_devices[] = $affect_device->getDevice()->getId() ;
  2024.             }
  2025.             if(count($ids_devices)>0){
  2026.                 $sql_where .= " AND p.id IN (".implode(',',$ids_devices).") " ;
  2027.             }
  2028.             else{
  2029.                 $sql_where .= " AND p.id = 0 " ;
  2030.             }
  2031.             
  2032.         }
  2033.         
  2034.         
  2035.         
  2036.         $columns = ['p.nom_device' 'a.alerte' 'a.date_alerte','a.envoi'] ;
  2037.         
  2038.         $orders = [] ;
  2039.         
  2040.         
  2041.         for($i=$i<count($request->get('order')) ;$i++ ){
  2042.             
  2043.          $orders[] = $columns$request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
  2044.             
  2045.         }
  2046.         
  2047.         
  2048.         if( count($orders)>0){
  2049.         $order " ORDER BY ".implode(' , ',$orders) ;
  2050.         }
  2051.         else{
  2052.         $order "" ;  
  2053.         }
  2054.         
  2055.         
  2056.         
  2057.                    
  2058.                 $existance $entityManager->createQuery(
  2059.                 'SELECT a
  2060.                 FROM App\Entity\Alertes a 
  2061.                 JOIN a.device p
  2062.                  WHERE 1=1 '.$sql_where.'
  2063.                  
  2064.                 '
  2065.                 )
  2066.                     
  2067.                     ->getResult()  ;
  2068.         
  2069.         
  2070.         
  2071.         $I_nbResultatsTotal count$existance ) ;
  2072.         
  2073.         
  2074.         $limit =  $request->get('length') ;
  2075.             
  2076.         $offset $request->get('start') ;
  2077.         
  2078.         $array_search = array();
  2079.         
  2080.         
  2081.         //->setParameter('nom', '%'.$request->get('searchByNom').'%')
  2082.         //p.nom LIKE :nom
  2083.         
  2084.         $alertes $entityManager->createQuery(
  2085.                 'SELECT a
  2086.                 FROM App\Entity\Alertes a 
  2087.                 JOIN a.device p
  2088.                 
  2089.                 WHERE 1=1 '.$sql_where.' '.$order.'
  2090.                 
  2091.                 
  2092.                 '
  2093.                 )
  2094.                 ->setMaxResults($limit)
  2095.                 ->setFirstResult($offset)
  2096.                 ->getResult() ;
  2097.         
  2098.         
  2099.         $output =[] ;
  2100.         
  2101.         
  2102.         foreach($alertes as $alerte){
  2103.             
  2104.         
  2105.             $output[] = [
  2106.                 
  2107.                 'nom_device'=>$alerte->getDevice()->getNomDevice() ,
  2108.                 'alerte'=>$alerte->getAlerte() ,
  2109.                 'envoi'=>$alerte->getEnvoi() ,
  2110.                 'traitement'=>$alerte->getTraitement() ,
  2111.                 'date_alerte'=>$alerte->getDateAlerte()!='' date('d/m/Y H:i:s',strtotime($alerte->getDateAlerte())) : '' ,
  2112.                 'id'=>$alerte->getId(),
  2113.                 
  2114.             ];
  2115.             
  2116.             
  2117.         }
  2118.         
  2119.         $JSON json_encode($output);
  2120.         $JSON '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
  2121.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2122.         return $response;
  2123.         
  2124.         
  2125.        
  2126.         
  2127.     }
  2128.     
  2129.     public function getDosageByDevice(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2130.     {
  2131.         
  2132.         
  2133.         $entityManager $this->getDoctrine()->getManager();
  2134.         $device $entityManager->createQuery(
  2135.                 'SELECT d
  2136.                 FROM App\Entity\Devices d
  2137.                 
  2138.                 WHERE d.imei = \''.$request->get('imei').'\'
  2139.                 
  2140.                 
  2141.                 '
  2142.                 )
  2143.                 ->getOneOrNullResult() ;
  2144.         
  2145.         $output = [];
  2146.         if($device!=null){
  2147.             foreach($device->getConfigDosages() as $config_dosage){
  2148.                 $output[] = [
  2149.                     'label'=>$config_dosage->getLabel() ,
  2150.                 ];
  2151.             }
  2152.         }
  2153.         
  2154.             
  2155.         
  2156.         
  2157.         $JSON json_encode($output);
  2158.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2159.         return $response;
  2160.         
  2161.         
  2162.        
  2163.         
  2164.     }
  2165.     function confirm_config_dosage(Request $request DevicesRepository $devicesRepository ConfigDosageRepository $configDosageRepository ){
  2166.         $entityManager $this->getDoctrine()->getManager();
  2167.             $device $devicesRepository->findOneBy(['id'=>$request->get('device_conf_dosage') , 'token'=> $request->get('token_conf_dosage')]) ;
  2168.             if($device == null){
  2169.                 return new Response('KO') ;
  2170.             }
  2171.             $config_dosages $configDosageRepository->findBy(['device'=> $device]) ;
  2172.             if(count($config_dosages) == 0){
  2173.             
  2174.                 $config_dosage1 = new ConfigDosage() ;
  2175.                 $config_dosage1->setDevice($device) ;
  2176.                 $config_dosage1->setLabel($request->get('label1')) ;
  2177.                 $entityManager->persist($config_dosage1) ;
  2178.                 $config_dosage2 = new ConfigDosage() ;
  2179.                 $config_dosage2->setDevice($device) ;
  2180.                 $config_dosage2->setLabel($request->get('label2')) ;
  2181.                 $entityManager->persist($config_dosage2) ;
  2182.                 $config_dosage3 = new ConfigDosage() ;
  2183.                 $config_dosage3->setDevice($device) ;
  2184.                 $config_dosage3->setLabel($request->get('label3')) ;
  2185.                 $entityManager->persist($config_dosage3) ;
  2186.                 $config_dosage4 = new ConfigDosage() ;
  2187.                 $config_dosage4->setDevice($device) ;
  2188.                 $config_dosage4->setLabel($request->get('label4')) ;
  2189.                 $entityManager->persist($config_dosage4) ;
  2190.                 
  2191.             }
  2192.             else{
  2193.                 $i 1;
  2194.                 foreach($config_dosages as $config_dosage){
  2195.                     
  2196.                     if($i == 1){
  2197.                         $config_dosage->setLabel($request->get('label1')) ;
  2198.                         $entityManager->persist($config_dosage) ;
  2199.                     }
  2200.                     else if($i == 2){
  2201.                         $config_dosage->setLabel($request->get('label2')) ;
  2202.                         $entityManager->persist($config_dosage) ;
  2203.                     }
  2204.                     else if($i == 3){
  2205.                         $config_dosage->setLabel($request->get('label3')) ;
  2206.                         $entityManager->persist($config_dosage) ;
  2207.                     }
  2208.                     else if($i == 4){
  2209.                         $config_dosage->setLabel($request->get('label4')) ;
  2210.                         $entityManager->persist($config_dosage) ;
  2211.                     }
  2212.                     $i++;
  2213.                 }
  2214.             }
  2215.             $entityManager->flush() ;
  2216.         
  2217.         return new Response('OK') ;
  2218.     }
  2219.     
  2220.     public function getVannes(Request $request VannesRepository $vannesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2221.     {
  2222.         
  2223.         
  2224.         $entityManager $this->getDoctrine()->getManager();
  2225.         
  2226.         $vanne $vannesRepository->find($request->get('id')) ;
  2227.                 $output= [
  2228.                     'id'=>$vanne->getId() ,
  2229.                     'nom_vanne'=>$vanne->getNomVanne() ,
  2230.                     'idx'=>$vanne->getIdx() ,
  2231.                     'automatise'=>$vanne->getAutomatise() ,
  2232.                     'seuil_activ'=>$vanne->getSeuilActiv()!='' $vanne->getSeuilActiv() : '' ,
  2233.                     'seuil_desactiv'=>$vanne->getSeuilDesactiv()!='' $vanne->getSeuilDesactiv() : '' ,
  2234.                    
  2235.                 ];
  2236.         
  2237.         $JSON json_encode($output);
  2238.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2239.         return $response;
  2240.         
  2241.         
  2242.        
  2243.         
  2244.     }
  2245.     public function getGraph(Request $request GraphRepository $graphRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2246.     {
  2247.         
  2248.         
  2249.         $entityManager $this->getDoctrine()->getManager();
  2250.         
  2251.         $graph $graphRepository->find($request->get('id')) ;
  2252.                 $output= [
  2253.                     'id'=>$graph->getId() ,
  2254.                     'nom_graph'=>$graph->getNomGraph() ,
  2255.                     'idx'=>$graph->getIdx() ,
  2256.                     'seuil_min'=>$graph->getSeuilMin()!='' $graph->getSeuilMin() : '' ,
  2257.                     'seuil_max'=>$graph->getSeuilMax()!='' $graph->getSeuilMax() : '' ,
  2258.                    
  2259.                 ];
  2260.         
  2261.         $JSON json_encode($output);
  2262.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2263.         return $response;
  2264.         
  2265.         
  2266.        
  2267.         
  2268.     }
  2269.     
  2270.     public function getVanneByDevice(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2271.     {
  2272.         
  2273.         
  2274.         $entityManager $this->getDoctrine()->getManager();
  2275.         
  2276.         
  2277.         
  2278.         $config_vannes $entityManager->createQuery(
  2279.                 'SELECT v
  2280.                 FROM App\Entity\Vannes v
  2281.                 
  2282.                 WHERE v.device = \''.$request->get('id').'\'
  2283.                 
  2284.                 
  2285.                 '
  2286.                 )
  2287.                 ->getResult() ;
  2288.         $conf_device $entityManager->createQuery(
  2289.                 'SELECT c
  2290.                 FROM App\Entity\ConfigDevice c
  2291.                 
  2292.                 WHERE c.device = \''.$request->get('id').'\'
  2293.                 
  2294.                 
  2295.                 '
  2296.                 )
  2297.                 ->getOneOrNullResult() ;
  2298.                 
  2299.         
  2300.         $output = [];
  2301.             foreach($config_vannes as $config_vanne){
  2302.                 $output[] = [
  2303.                     'id_vanne'=>$config_vanne->getId() ,
  2304.                     'nom_vanne'=>$config_vanne->getNomVanne() ,
  2305.                     'idx'=>$config_vanne->getIdx() ,
  2306.                     'etat_vanne'=>$config_vanne->getEtatVanne() ,
  2307.                     'seuil_min'=> ''//$config_vanne->getSeuilMin()!='' ? $config_vanne->getSeuilMin() : '' ,
  2308.                     'seuil_max'=>''//$config_vanne->getSeuilMax()!='' ? $config_vanne->getSeuilMax() : '' ,
  2309.                     'imei'=>$config_vanne->getDevice()->getImei(),
  2310.                     'id_device'=>$config_vanne->getDevice()->getId(),
  2311.                     'nom_device'=>$config_vanne->getDevice()->getNomDevice() ,
  2312.                     'nbr_vanne'=>$conf_device->getNbrVanne(),
  2313.                     'nbr_graph'=>$conf_device->getNbrGraph(),
  2314.                     'auto'=>$config_vanne->getAutomatise(),
  2315.                     'seuil_activ'=>$config_vanne->getSeuilActiv(),
  2316.                     'seuil_desactiv'=>$config_vanne->getSeuilDesactiv(),
  2317.                 ];
  2318.             }
  2319.         
  2320.             
  2321.         
  2322.         
  2323.         $JSON json_encode($output);
  2324.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2325.         return $response;
  2326.         
  2327.         
  2328.        
  2329.         
  2330.     }
  2331.     public function getGraphByDevice(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2332.     {
  2333.         
  2334.         
  2335.         $entityManager $this->getDoctrine()->getManager();
  2336.         
  2337.         
  2338.         $config_graphs $entityManager->createQuery(
  2339.                 'SELECT v
  2340.                 FROM App\Entity\Graph v
  2341.                 
  2342.                 WHERE v.device = \''.$request->get('id').'\'
  2343.                 
  2344.                 
  2345.                 '
  2346.                 )
  2347.                 ->getResult() ;
  2348.         $vannes $entityManager->createQuery(
  2349.                 'SELECT v
  2350.                 FROM App\Entity\Vannes v
  2351.                 
  2352.                 WHERE v.device = \''.$request->get('id').'\'
  2353.                 
  2354.                 
  2355.                 '
  2356.                 )
  2357.                 ->getResult() ;
  2358.         $conf_device $entityManager->createQuery(
  2359.                 'SELECT c
  2360.                 FROM App\Entity\ConfigDevice c
  2361.                 
  2362.                 WHERE c.device = \''.$request->get('id').'\'
  2363.                 
  2364.                 
  2365.                 '
  2366.                 )
  2367.                 ->getOneOrNullResult() ;
  2368.                 
  2369.         
  2370.         $output = [];
  2371.             foreach($config_graphs as $config_graph){
  2372.                 $output['graph'][] = [
  2373.                     'id_vanne'=>$config_graph->getId() ,
  2374.                     'nom_graph'=>$config_graph->getNomGraph() ,
  2375.                     'idx'=>$config_graph->getIdx() ,
  2376.                     'id_device'=>$config_graph->getDevice()->getId(),
  2377.                     'nom_device'=>$config_graph->getDevice()->getNomDevice() ,
  2378.                     'nbr_graph'=>$conf_device->getNbrGraph(),
  2379.                     'curr_vanne'=>$config_graph->getVanne()!=null $config_graph->getVanne()->getId() : ''  ,
  2380.                 ];
  2381.             }
  2382.             
  2383.             foreach($vannes as $vanne){
  2384.                 $output['vanne'][] = [
  2385.                     'id'=>$vanne->getId() ,
  2386.                     'nom_vanne'=>$vanne->getNomVanne() ,
  2387.                     'idx'=>$vanne->getIdx() ,
  2388.                 ];
  2389.             }
  2390.         
  2391.             
  2392.         
  2393.         
  2394.         $JSON json_encode($output);
  2395.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2396.         return $response;
  2397.         
  2398.         
  2399.        
  2400.         
  2401.     }
  2402.     
  2403.     public function getAffectVanne(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2404.     
  2405.     }
  2406.     
  2407.     public function getCategorieVanne(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2408.     {        
  2409.             if ($request->hasSession() && ($session $request->getSession())) {
  2410.             $session $request->getSession() ;
  2411.             }
  2412.             else{
  2413.             $session = new session();
  2414.             }
  2415.             
  2416.             if($session->get('user_connected_telma') != null){
  2417.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  2418.             }
  2419.         $entityManager $this->getDoctrine()->getManager();
  2420.         
  2421.         $categorie $entityManager->createQuery(
  2422.             'SELECT a 
  2423.             FROM App\Entity\CategorieVannes a
  2424.             WHERE 1=1 AND a.id = '.$request->get('id').'
  2425.              
  2426.             '
  2427.             )
  2428.                 
  2429.                 ->getOneOrNullResult()  ;
  2430.                 
  2431.                 $vannes = [] ;
  2432.                 foreach($categorie->getVannes() as $categoryVannes){
  2433.                     $vannes[] =  $categoryVannes->getId() ;
  2434.                 }
  2435.                 $output = [
  2436.                     'nom_categorie'=>$categorie->getCategorie() ,
  2437.                     'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getId() : '' ,
  2438.                     'vannes'=> $vannes ,
  2439.                     'id'=>$categorie->getId(),
  2440.                     
  2441.                 ];
  2442.         
  2443.         $JSON json_encode($output);
  2444.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2445.         return $response;
  2446.         
  2447.         
  2448.        
  2449.         
  2450.     }
  2451.     public function getCategorieGraph(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2452.     {        
  2453.             if ($request->hasSession() && ($session $request->getSession())) {
  2454.             $session $request->getSession() ;
  2455.             }
  2456.             else{
  2457.             $session = new session();
  2458.             }
  2459.             
  2460.             if($session->get('user_connected_telma') != null){
  2461.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  2462.             }
  2463.         $entityManager $this->getDoctrine()->getManager();
  2464.         
  2465.         $categorie $entityManager->createQuery(
  2466.             'SELECT a 
  2467.             FROM App\Entity\CategorieGraph a
  2468.             WHERE 1=1 AND a.id = '.$request->get('id').'
  2469.              
  2470.             '
  2471.             )
  2472.                 
  2473.                 ->getOneOrNullResult()  ;
  2474.                 $output = [
  2475.                     'nom_categorie'=>$categorie->getCategorie() ,
  2476.                     'id'=>$categorie->getId(),
  2477.                     
  2478.                 ];
  2479.         
  2480.         $JSON json_encode($output);
  2481.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2482.         return $response;
  2483.         
  2484.         
  2485.        
  2486.         
  2487.     }
  2488.     public function getDevices(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2489.     {
  2490.         
  2491.         
  2492.         
  2493.             if ($request->hasSession() && ($session $request->getSession())) {
  2494.             $session $request->getSession() ;
  2495.             }
  2496.             else{
  2497.             $session = new session();
  2498.             }
  2499.             
  2500.             if($session->get('user_connected_telma') != null){
  2501.                 $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  2502.             }
  2503.         $entityManager $this->getDoctrine()->getManager();
  2504.         
  2505.         $devices $entityManager->createQuery(
  2506.             'SELECT a 
  2507.             FROM App\Entity\AffectationDevices a
  2508.             JOIN a.device p
  2509.             WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().
  2510.              
  2511.             '
  2512.             )
  2513.                 
  2514.                 ->getResult()  ;
  2515.         
  2516.         
  2517.         
  2518.         
  2519.         
  2520.         
  2521.             $output = [];
  2522.             foreach($devices as $device){
  2523.                 $output[] = [
  2524.                     'nom_device'=>$device->getDevice()->getNomDevice() ,
  2525.                     'imei'=>$device->getDevice()->getImei() ,
  2526.                     'etat'=>$device->getDevice()->getEtat() ,
  2527.                     'etat_cnx'=>$device->getDevice()->getEtatCnx() ,
  2528.                     'id'=>$device->getDevice()->getId(),
  2529.                     'token'=>$device->getDevice()->getToken(),
  2530.                     
  2531.                 ];
  2532.             }
  2533.             
  2534.         
  2535.         
  2536.         $JSON json_encode($output);
  2537.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2538.         return $response;
  2539.         
  2540.         
  2541.        
  2542.         
  2543.     }
  2544.     public function getDevice(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2545.     {
  2546.         
  2547.         
  2548.         $entityManager $this->getDoctrine()->getManager();
  2549.         
  2550.         
  2551.         
  2552.         $device $entityManager->createQuery(
  2553.                 'SELECT p
  2554.                 FROM App\Entity\Devices p
  2555.                 
  2556.                 WHERE p.id = \''.$request->get('id').'\' AND p.token=\''.$request->get('token').'\'
  2557.                 
  2558.                 
  2559.                 '
  2560.                 )
  2561.                 ->getOneOrNullResult() ;
  2562.         
  2563.         
  2564.         
  2565.         
  2566.             $output = [];
  2567.             if($device!=null){
  2568.                 $output = [
  2569.                     'nom_device'=>$device->getNomDevice() ,
  2570.                     'imei'=>$device->getImei() ,
  2571.                     'etat'=>$device->getEtat() ,
  2572.                     'etat_cnx'=>$device->getEtatCnx() ,
  2573.                     'id'=>$device->getId(),
  2574.                     'token'=>$device->getToken(),
  2575.                     
  2576.                 ];
  2577.             }
  2578.             
  2579.         
  2580.         
  2581.         $JSON json_encode($output);
  2582.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2583.         return $response;
  2584.         
  2585.         
  2586.        
  2587.         
  2588.     }
  2589.     public function getConfDevice(Request $request UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2590.     {
  2591.         
  2592.         
  2593.         $entityManager $this->getDoctrine()->getManager();
  2594.         
  2595.         
  2596.         
  2597.         $device $entityManager->createQuery(
  2598.                 'SELECT p
  2599.                 FROM App\Entity\ConfigDevice p
  2600.                 JOIN p.device d
  2601.                 
  2602.                 WHERE d.id = \''.$request->get('id').'\' AND d.token=\''.$request->get('token').'\'
  2603.                 
  2604.                 
  2605.                 '
  2606.                 )
  2607.                 ->getOneOrNullResult() ;
  2608.         
  2609.         
  2610.         
  2611.         
  2612.             $output = [];
  2613.             if($device!=null){
  2614.                 $output = [
  2615.                     'nbr_vanne'=>$device->getNbrVanne() ,
  2616.                     'nbr_graph'=>$device->getNbrGraph() ,
  2617.                     'frequence'=>$device->getFrequence() ,
  2618.                     'email1'=>$device->getEmail1() ,
  2619.                     'email2'=>$device->getEmail2() ,
  2620.                     'email3'=>$device->getEmail3() ,
  2621.                     'email4'=>$device->getEmail4() ,
  2622.                     'email5'=>$device->getEmail5() ,
  2623.                     'tel1'=>$device->getTel1() ,
  2624.                     'tel2'=>$device->getTel2() ,
  2625.                     'tel3'=>$device->getTel3() ,
  2626.                     'tel4'=>$device->getTel4() ,
  2627.                     'altitude'=>$device->getAltitude() ,
  2628.                     'latitude'=>$device->getLatitude() ,
  2629.                     'longitude'=>$device->getLongitude() ,
  2630.                     'imei'=>$device->getDevice()->getImei(),
  2631.                     'id'=>$device->getDevice()->getId(),
  2632.                     'token'=>$device->getDevice()->getToken(),
  2633.                     
  2634.                 ];
  2635.             }
  2636.             
  2637.         
  2638.         
  2639.         $JSON json_encode($output);
  2640.         $response   = new Response($JSON200, ['Content-Type' => 'application/json']);
  2641.         return $response;
  2642.         
  2643.         
  2644.        
  2645.         
  2646.     }
  2647.     
  2648.     public function affect_vanne(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2649.     {
  2650.     }
  2651.     
  2652.     public function affect_graph(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2653.     {
  2654.     }
  2655.     
  2656.     public function affect_device_add(Request $request DevicesRepository $devicesRepository AffectationDevicesRepository $affectationDevicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2657.     {
  2658.         
  2659.         $entityManager $this->getDoctrine()->getManager();
  2660.         $ids explode(',',$request->get('ids')) ;
  2661.         
  2662.         $usr '' ;
  2663.         if($request->get('revendeur')!=''){
  2664.             $usr $request->get('revendeur') ;
  2665.         }
  2666.         else if($request->get('client')!=''){
  2667.             $usr $request->get('client') ;
  2668.         }
  2669.         if ($request->hasSession() && ($session $request->getSession())) {
  2670.             $session $request->getSession() ;
  2671.             }
  2672.             else{
  2673.             $session = new session();
  2674.             }
  2675.         if($session->get('user_connected_telma') != null){
  2676.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  2677.         }
  2678.         else{
  2679.             return new Response('disconnected') ;
  2680.         }
  2681.         
  2682.         foreach($ids as $id){
  2683.             
  2684.             if(($usr_connected->getNiveau()->getId() == )&&($usr == "")){
  2685.                 $stocker_device $entityManager->createQuery(
  2686.                     'SELECT p
  2687.                     FROM App\Entity\AffectationDevices p
  2688.                     JOIN p.utilisateur u
  2689.                      WHERE p.device = '.$id.'
  2690.                     '
  2691.                     )
  2692.                     ->getResult()  ;
  2693.                     if( count($stocker_device)>){
  2694.                         foreach($stocker_device as $stock_device){
  2695.                         $entityManager->remove($stock_device) ;
  2696.                         $entityManager->flush() ;
  2697.                         }
  2698.                     }
  2699.                     return new Response('OK') ;
  2700.             }
  2701.             else if(($usr_connected->getNiveau()->getId() == )&&($usr == "")){
  2702.                 $stocker_device $entityManager->createQuery(
  2703.                     'SELECT p
  2704.                     FROM App\Entity\AffectationDevices p
  2705.                     JOIN p.utilisateur u
  2706.                      WHERE u.niveau = 3 AND p.device = '.$id.'
  2707.                     '
  2708.                     )
  2709.                     ->getOneOrNullResult()  ;
  2710.                     
  2711.                     if($stocker_device != null ){
  2712.         
  2713.                     $entityManager->remove($stocker_device) ;
  2714.                     $entityManager->flush() ;
  2715.                     }
  2716.                     return new Response('OK') ;
  2717.                     
  2718.             }
  2719.             $existance_affect_device $affectationDevicesRepository->findOneBy(['device'=>$id 'utilisateur'=>$usr ]) ;
  2720.             if($existance_affect_device == null){
  2721.                 $utilisateur $utilisateursRepository->find($usr) ;
  2722.                 $device $devicesRepository->find($id) ;
  2723.                 if($utilisateur->getNiveau()->getId() == "2"){//Supprimer affectation revendeur
  2724.                 $affectation_revendeur_a_supprimers $entityManager->createQuery(
  2725.                     'SELECT p
  2726.                     FROM App\Entity\AffectationDevices p
  2727.                     JOIN p.utilisateur u
  2728.                      WHERE u.niveau = 2 AND p.device = '.$id.'
  2729.                     '
  2730.                     )
  2731.                     ->getResult()  ;
  2732.                     foreach($affectation_revendeur_a_supprimers as $affectation_revendeur_a_supprimer){
  2733.         
  2734.                     $entityManager->remove($affectation_revendeur_a_supprimer) ;
  2735.                     $entityManager->flush() ;
  2736.                     }
  2737.                 }
  2738.                 else if($utilisateur->getNiveau()->getId() == "3"){//Supprimer affectation client
  2739.                     $affectation_client_a_supprimers $entityManager->createQuery(
  2740.                         'SELECT p
  2741.                         FROM App\Entity\AffectationDevices p
  2742.                         JOIN p.utilisateur u
  2743.                          WHERE u.niveau = 3 AND p.device = '.$id.'
  2744.                         '
  2745.                         )
  2746.                         ->getResult()  ;
  2747.     
  2748.                         foreach($affectation_client_a_supprimers as $affectation_client_a_supprimer){
  2749.             
  2750.                         $entityManager->remove($affectation_client_a_supprimer) ;
  2751.                         $entityManager->flush() ;
  2752.     
  2753.                         }
  2754.     
  2755.                 }
  2756.                 
  2757.                 $existance_affect_device_autre_utilisateur $entityManager->createQuery(
  2758.                     'SELECT p
  2759.                     FROM App\Entity\AffectationDevices p
  2760.                      WHERE p.device='.$id.' AND p.utilisateur = '.$usr.'
  2761.                     '
  2762.                     )
  2763.                         
  2764.                     ->getOneOrNullResult()  ;
  2765.                 /*if($existance_affect_device_autre_utilisateur != null){
  2766.                 $existance_affect_device_autre_utilisateur->setUtilisateur($utilisateur) ;
  2767.                 $existance_affect_device_autre_utilisateur->setDateAffectation(date('Y-m-d H:i:s')) ;
  2768.                 
  2769.                 $entityManager->persist($existance_affect_device_autre_utilisateur);
  2770.                 $entityManager->flush() ;
  2771.                 
  2772.                 }
  2773.                 else{*/
  2774.                 if($existance_affect_device_autre_utilisateur == null){
  2775.                 
  2776.                 $affectationDevices = new AffectationDevices();
  2777.                 $affectationDevices->setUtilisateur($utilisateur);
  2778.                 $affectationDevices->setDevice($device) ;
  2779.                 $affectationDevices->setDateAffectation(date('Y-m-d H:i:s'));
  2780.                 $entityManager->persist($affectationDevices) ;
  2781.                 $entityManager->flush() ;
  2782.                 
  2783.                 }
  2784.             }
  2785.             
  2786.         }
  2787.         return new Response('OK') ;
  2788.         
  2789.     }
  2790.     public function categorie_graph_add(Request $request CategorieGraphRepository $categorieGraphRepository DevicesRepository $devicesRepository ): Response
  2791.     {
  2792.         
  2793.         
  2794.         $entityManager $this->getDoctrine()->getManager();
  2795.         $existance $categorieGraphRepository->findOneBy(['categorie'=>$request->get('nom_categorie')]) ;
  2796.         if(!is_null($existance)){
  2797.             return new Response('KOO') ;
  2798.         }
  2799.         $device $devicesRepository->find($request->get('device')) ;
  2800.         $categorieGraph = new CategorieGraph() ;
  2801.         $categorieGraph->setCategorie($request->get('nom_categorie')) ;
  2802.         $categorieGraph->setDevice($device) ;
  2803.         $entityManager->persist($categorieGraph) ;
  2804.         $entityManager->flush();
  2805.         return new Response('OK') ;
  2806.     }
  2807.     
  2808.     public function categorie_vanne_add(Request $request CategorieVannesRepository $categorieVannesRepositoryDevicesRepository $devicesRepository ): Response
  2809.     {
  2810.         
  2811.         
  2812.         $entityManager $this->getDoctrine()->getManager();
  2813.         $existance $categorieVannesRepository->findOneBy(['categorie'=>$request->get('nom_categorie')]) ;
  2814.         if(!is_null($existance)){
  2815.             return new Response('KOO') ;
  2816.         }
  2817.         $device $devicesRepository->find($request->get('device')) ;
  2818.         $categorieVannes = new CategorieVannes() ;
  2819.         $categorieVannes->setCategorie($request->get('nom_categorie')) ;
  2820.         $categorieVannes->setDevice($device) ;
  2821.         $entityManager->persist($categorieVannes) ;
  2822.         $entityManager->flush();
  2823.         return new Response('OK') ;
  2824.     }
  2825.     public function device_add(Request $request DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2826.     {
  2827.         
  2828.         
  2829.         $entityManager $this->getDoctrine()->getManager();
  2830.         $existance_device $devicesRepository->findBy(['imei'=>$request->get('imei')]) ;
  2831.         if(count($existance_device) == 0){
  2832.         
  2833.         $device = new Devices() ;
  2834.         $token $this->genererCode(20) ;
  2835.             try{
  2836.                 $device->setNomDevice($request->get('nom_device')) ;
  2837.                 $device->setImei($request->get('imei')) ;
  2838.                 $device->setEtat($request->get('etat')) ;
  2839.                 $device->setEtatCnx(0) ;
  2840.                 $device->setToken($token) ;
  2841.                 $device->setDateCreation(date('Y-m-d')) ;
  2842.                 $entityManager->persist($device) ;
  2843.                 $entityManager->flush() ;
  2844.                 return new Response('OK') ;
  2845.             }
  2846.             catch(Exception $e){
  2847.                 return new Response('KO') ;
  2848.             }
  2849.         }
  2850.         else{
  2851.             return new Response('KOO') ;
  2852.         }
  2853.        
  2854.        
  2855.         
  2856.     }
  2857.     
  2858.     public function notification_edit(Request $request AlertesRepository $alertesRepository DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2859.     {
  2860.         
  2861.         
  2862.         $entityManager $this->getDoctrine()->getManager();
  2863.         $alerte $alertesRepository->find($request->get('id_notif')) ;
  2864.         $alerte->setTraitement($request->get('traitement_notif')) ;
  2865.         $entityManager->persist($alerte);
  2866.         $entityManager->flush();
  2867.         return new Response('OK');
  2868.     }
  2869.     public function vanne_edit(Request $request VannesRepository $vannesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2870.     {
  2871.         
  2872.         
  2873.         $entityManager $this->getDoctrine()->getManager();
  2874.         $vanne $vannesRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
  2875.         if($vanne!=null){
  2876.             try{
  2877.                 if($request->get('nom_vanne_edit') != ''){
  2878.                 $vanne->setNomVanne($request->get('nom_vanne_edit')) ;
  2879.                 
  2880.                 $entityManager->persist($vanne) ;
  2881.                 $entityManager->flush() ;
  2882.                 
  2883.                 }
  2884.                 return new Response('OK') ;
  2885.             }
  2886.             catch(Exception $e){
  2887.                 return new Response('KO') ;
  2888.             }
  2889.         }
  2890.         else{
  2891.             return new Response('KOO') ;
  2892.         }
  2893.                
  2894.     }
  2895.     
  2896.     public function vanne_auto_edit(Request $request VannesRepository $vannesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2897.     {
  2898.         
  2899.         
  2900.         $entityManager $this->getDoctrine()->getManager();
  2901.         $vanne $vannesRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
  2902.         if($vanne!=null){
  2903.                 if($request->get('automatise_edit') != ''){
  2904.                                         
  2905.                     $vanne->setAutomatise($request->get('automatise_edit') =='on' ) ;
  2906.                     $vanne->setSeuilActiv($request->get('seuil_activ_edit'));
  2907.                     $vanne->setSeuilDesactiv($request->get('seuil_desactiv_edit'));
  2908.                     
  2909.                     $entityManager->persist($vanne) ;
  2910.                     $entityManager->flush() ;
  2911.                 
  2912.                 }
  2913.                 else{
  2914.                     $vanne->setAutomatise) ;
  2915.                     $vanne->setSeuilActiv(NULL);
  2916.                     $vanne->setSeuilDesactiv(NULL);
  2917.                     
  2918.                     $entityManager->persist($vanne) ;
  2919.                     $entityManager->flush() ;
  2920.                 }
  2921.                 return new Response('OK') ;
  2922.            
  2923.         }
  2924.         else{
  2925.             return new Response('KOO') ;
  2926.         }
  2927.                
  2928.     }
  2929.     
  2930.     public function graph_edit(Request $request GraphRepository $graphRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  2931.     {
  2932.         
  2933.         
  2934.         $entityManager $this->getDoctrine()->getManager();
  2935.         $graph $graphRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
  2936.         if($graph!=null){
  2937.             try{
  2938.                 if($request->get('nom_graph_edit') != ''){
  2939.                 $graph->setNomGraph($request->get('nom_graph_edit')) ;
  2940.                 
  2941.                 $entityManager->persist($graph) ;
  2942.                 $entityManager->flush() ;
  2943.                 
  2944.                 }
  2945.                 return new Response('OK') ;
  2946.             }
  2947.             catch(Exception $e){
  2948.                 return new Response('KO') ;
  2949.             }
  2950.         }
  2951.         else{
  2952.             return new Response('KOO') ;
  2953.         }
  2954.                
  2955.     }
  2956.     
  2957.     public function categorie_vanne_edit(Request $request VannesRepository $vannesRepository CategorieVannesRepository $categorieVannesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepositoryDevicesRepository $devicesRepository ): Response
  2958.     {
  2959.         
  2960.         
  2961.         $entityManager $this->getDoctrine()->getManager();
  2962.         $categorie $categorieVannesRepository->findOneBy(['id'=>$request->get('id_edit')]) ;
  2963.         if($categorie!=null){
  2964.             try{
  2965.                 foreach($categorie->getVannes() as $vanne){
  2966.                     $vanne->setCategorie(NULL) ;
  2967.                     
  2968.                     $entityManager->persist($vanne) ;
  2969.                     $entityManager->flush() ;
  2970.                 }
  2971.                 $device $devicesRepository->find($request->get('device_edit')) ;
  2972.                 $categorie->setCategorie($request->get('nom_categorie_edit')) ;
  2973.                 $categorie->setDevice($device);
  2974.                 $entityManager->persist($categorie) ;
  2975.                 $entityManager->flush() ;
  2976.                 if($request->get('vanne_edit')){
  2977.                     foreach($request->get('vanne_edit') as $vannesEdit ){
  2978.                         $vanneCat $vannesRepository->find($vannesEdit) ;
  2979.                         $vanneCat->setCategorie($categorie) ;
  2980.                         $entityManager->persist($vanneCat) ;
  2981.                         $entityManager->flush() ;
  2982.                     }
  2983.                 }
  2984.                 return new Response('OK') ;
  2985.             }
  2986.             catch(Exception $e){
  2987.                 return new Response('KO') ;
  2988.             }
  2989.         }
  2990.         else{
  2991.             return new Response('KOO') ;
  2992.         }
  2993.        
  2994.        
  2995.         
  2996.     }
  2997.     public function categorie_graph_edit(Request $request CategorieGraphRepository $categorieGraphRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepositoryDevicesRepository $devicesRepository ): Response
  2998.     {
  2999.         
  3000.         
  3001.         $entityManager $this->getDoctrine()->getManager();
  3002.         $categorie $categorieGraphRepository->findOneBy(['id'=>$request->get('id_edit')]) ;
  3003.         if($categorie!=null){
  3004.             try{
  3005.                 $device $devicesRepository->find($request->get('device_edit')) ;
  3006.                 $categorie->setCategorie($request->get('nom_categorie_edit')) ;
  3007.                 $categorie->setDevice($device) ;
  3008.                 $entityManager->persist($categorie) ;
  3009.                 $entityManager->flush() ;
  3010.                 return new Response('OK') ;
  3011.             }
  3012.             catch(Exception $e){
  3013.                 return new Response('KO') ;
  3014.             }
  3015.         }
  3016.         else{
  3017.             return new Response('KOO') ;
  3018.         }
  3019.        
  3020.        
  3021.         
  3022.     }
  3023.     public function device_edit(Request $request DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3024.     {
  3025.         
  3026.         
  3027.         $entityManager $this->getDoctrine()->getManager();
  3028.         $device $devicesRepository->findOneBy(['id'=>$request->get('id_edit') , 'token'=>$request->get('token_edit') ]) ;
  3029.         if($device!=null){
  3030.             try{
  3031.                 $device->setNomDevice($request->get('nom_device_edit')) ;
  3032.                 if($request->get('imei_edit')!=''){
  3033.                 $device->setImei($request->get('imei_edit')) ;
  3034.                 }
  3035.                 $device->setEtat($request->get('etat_edit')) ;
  3036.                 $entityManager->persist($device) ;
  3037.                 $entityManager->flush() ;
  3038.                 return new Response('OK') ;
  3039.             }
  3040.             catch(Exception $e){
  3041.                 return new Response('KO') ;
  3042.             }
  3043.         }
  3044.         else{
  3045.             return new Response('KOO') ;
  3046.         }
  3047.        
  3048.        
  3049.         
  3050.     }
  3051.     public function device_config(Request $request AlertesRepository $alertesRepository AutoSeuilRepository $autoSeuilRepository ,DevicesRepository $devicesRepository ConfigDeviceRepository $configDevicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3052.     {
  3053.         
  3054.         
  3055.         $entityManager $this->getDoctrine()->getManager();
  3056.         if ($request->hasSession() && ($session $request->getSession())) {
  3057.             $session $request->getSession() ;
  3058.             }
  3059.             else{
  3060.             $session = new session();
  3061.             }
  3062.             
  3063.         if($session->get('user_connected_telma') != null){
  3064.             $usr_connected $utilisateursRepository->find($session->get('user_connected_telma')) ;
  3065.         }
  3066.         $device $entityManager->createQuery(
  3067.             'SELECT p
  3068.             FROM App\Entity\Devices p
  3069.              WHERE p.id = '.$request->get('id_conf').' AND p.token = \''.$request->get('token_conf').'\'
  3070.             '
  3071.             )
  3072.                 ->setMaxResults(1)
  3073.                 ->getOneOrNullResult()  ;
  3074.         $config_device $entityManager->createQuery(
  3075.             'SELECT p
  3076.             FROM App\Entity\ConfigDevice p
  3077.             JOIN p.device d
  3078.              WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
  3079.             '
  3080.             )
  3081.                 ->setMaxResults(1)
  3082.                 ->getOneOrNullResult()  ;
  3083.         $vannes $entityManager->createQuery(
  3084.             'SELECT p
  3085.             FROM App\Entity\Vannes p
  3086.             JOIN p.device d
  3087.              WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
  3088.             '
  3089.             )
  3090.                 ->getResult()  ;
  3091.         $graphs $entityManager->createQuery(
  3092.             'SELECT p
  3093.             FROM App\Entity\Graph p
  3094.             JOIN p.device d
  3095.              WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
  3096.             '
  3097.             )
  3098.                 ->getResult()  ;
  3099.         if($usr_connected->getNiveau()->getId() != ){
  3100.         if(count($vannes) > $request->get('nbr_vanne') ){
  3101.             for($i=$request->get('nbr_vanne') ; $i<count($vannes) ; $i++ ){
  3102.             
  3103.             $vannes_a_supprimer $entityManager->createQuery(
  3104.                 'SELECT p
  3105.                 FROM App\Entity\Vannes p
  3106.                 JOIN p.device d
  3107.                  WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\' AND p.idx = '.($i+1).'
  3108.                 '
  3109.                 )
  3110.                 ->setMaxResults(1)
  3111.                 ->getOneOrNullResult()  ;
  3112.                 
  3113.                 if(!is_null($vannes_a_supprimer)){
  3114.                     $autosSeuil $autoSeuilRepository->findby(['vanne'=>$vannes_a_supprimer->getId() ]) ;
  3115.                     foreach($autosSeuil as $autoSeuil){
  3116.                         $entityManager->remove($autoSeuil) ;
  3117.                         $entityManager->flush() ;
  3118.                     }
  3119.                 
  3120.                     $alertes $alertesRepository->findby(['vanne'=>$vannes_a_supprimer->getId() ]) ;
  3121.                     foreach($alertes as $alerte){
  3122.                         $entityManager->remove($alerte) ;
  3123.                         $entityManager->flush() ;
  3124.                     }
  3125.                     $entityManager->remove($vannes_a_supprimer) ;
  3126.                     $entityManager->flush() ;
  3127.                 }
  3128.             
  3129.             
  3130.             
  3131.             
  3132.             }
  3133.         }
  3134.         else if(count($vannes) < $request->get('nbr_vanne') ){
  3135.             for($i=count($vannes) ; $i<$request->get('nbr_vanne') ; $i++ ){
  3136.                 $vanne = new Vannes() ;
  3137.                 $vanne->setDevice($device) ;
  3138.                 $vanne->setNomVanne('VANNE '.($i+1)) ;
  3139.                 $vanne->setIdx($i+1) ;
  3140.                 $vanne->setEtatVanne(0);
  3141.     
  3142.                 $entityManager->persist($vanne) ;
  3143.                 $entityManager->flush() ;
  3144.                 
  3145.             }
  3146.         }
  3147.         if(count($graphs) > $request->get('nbr_graph') ){
  3148.             for($i=$request->get('nbr_graph') ; $i<count($graphs) ; $i++ ){
  3149.             $graphs_a_supprimer $entityManager->createQuery(
  3150.                 'SELECT p
  3151.                 FROM App\Entity\Graph p
  3152.                 JOIN p.device d
  3153.                  WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\' AND p.idx = '.($i+1).'
  3154.                 '
  3155.                 )
  3156.                 ->setMaxResults(1)
  3157.                 ->getOneOrNullResult()  ;
  3158.             $entityManager->remove($graphs_a_supprimer) ;
  3159.             $entityManager->flush() ;
  3160.             
  3161.             }
  3162.         }
  3163.         else if(count($graphs) < $request->get('nbr_graph') ){
  3164.             for($i=count($graphs) ; $i<$request->get('nbr_graph') ; $i++ ){
  3165.                 $graph = new Graph() ;
  3166.                 $graph->setDevice($device) ;
  3167.                 $graph->setNomGraph('GRAPH '.($i+1)) ;
  3168.                 $graph->setIdx($i+1) ;
  3169.     
  3170.                 $entityManager->persist($graph) ;
  3171.                 $entityManager->flush() ;
  3172.                 
  3173.             }
  3174.         }
  3175.         }
  3176.         
  3177.         if($config_device == null){
  3178.         $config_device = new ConfigDevice() ;
  3179.         }
  3180.         
  3181.         try{
  3182.             
  3183.             if($usr_connected->getNiveau()->getId() != ){
  3184.             
  3185.             
  3186.                 $config_device->setNbrVanne($request->get('nbr_vanne')) ;
  3187.                 $config_device->setNbrGraph($request->get('nbr_graph')) ;
  3188.                 $config_device->setDevice$device ) ;
  3189.             }
  3190.             /*else{
  3191.                 $config_device->setNbrVanne($device->getNbrVanne()) ;
  3192.                 $config_device->setNbrGraph($device->getNbrGraph()) ;
  3193.             }*/
  3194.             $config_device->setFrequence$request->get('frequence') ) ;
  3195.             $config_device->setEmail1($request->get('email1')) ;
  3196.             $config_device->setEmail2($request->get('email2')) ;
  3197.             $config_device->setEmail3($request->get('email3')) ;
  3198.             $config_device->setEmail4($request->get('email4')) ;
  3199.             $config_device->setEmail5($request->get('email5')) ;
  3200.             $config_device->setTel1($request->get('tel1')) ;
  3201.             $config_device->setTel2($request->get('tel2')) ;
  3202.             $config_device->setTel3($request->get('tel3')) ;
  3203.             $config_device->setTel4($request->get('tel4')) ;
  3204.             $config_device->setTel5($request->get('tel5')) ;
  3205.             if($request->get('altitude') != ""){
  3206.             $config_device->setAltitude($request->get('altitude')) ;
  3207.             }
  3208.             if($request->get('latitude')!=""){
  3209.             $config_device->setLatitude($request->get('latitude')) ;
  3210.             }
  3211.             if($request->get('longitude')!=""){
  3212.             $config_device->setLongitude($request->get('longitude')) ;
  3213.             }
  3214.             
  3215.             $entityManager->persist($config_device) ;
  3216.             $entityManager->flush() ;
  3217.             return new Response('OK') ;
  3218.         }
  3219.         catch(Exception $e){
  3220.             return new Response('KO') ;
  3221.         }
  3222.     
  3223.        
  3224.        
  3225.         
  3226.     }
  3227.     
  3228.     public function vanne_config(Request $request VannesRepository $vannesRepository  DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3229.     {
  3230.         
  3231.         
  3232.         $entityManager $this->getDoctrine()->getManager();
  3233.         
  3234.         $vannes $vannesRepository->findBy(['device'=>$request->get('id_device')]) ;
  3235.         
  3236.         foreach($vannes as $vanne){
  3237.             $vanne->setNomVanne($request->get('nom_vanne')[ ($vanne->getIdx()-1) ]) ;
  3238.             $vanne->setSeuilMax($request->get('seuil_max')[($vanne->getIdx()-1)]);
  3239.             $vanne->setSeuilMin($request->get('seuil_min')[($vanne->getIdx()-1)]);
  3240.             $entityManager->persist($vanne);
  3241.             $entityManager->flush() ;
  3242.         }
  3243.         return new Response('OK') ;
  3244.         
  3245.         
  3246.         
  3247.     }
  3248.     public function graph_config(Request $request VannesRepository $vannesRepository GraphRepository $graphRepository  DevicesRepository $devicesRepository UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3249.     {
  3250.         
  3251.         
  3252.         $entityManager $this->getDoctrine()->getManager();
  3253.         
  3254.         $graphs $graphRepository->findBy(['device'=>$request->get('id_device')]) ;
  3255.         
  3256.         foreach($graphs as $graph){
  3257.             
  3258.             $vanne $vannesRepository->find($request->get('vanne_graph')[($graph->getIdx()-1)]) ;
  3259.             $graph->setNomGraph($request->get('nom_graph')[ ($graph->getIdx()-1) ]) ;
  3260.             $graph->setVanne($vanne) ;
  3261.             $entityManager->persist($graph);
  3262.             $entityManager->flush() ;
  3263.         }
  3264.         return new Response('OK') ;
  3265.         
  3266.         
  3267.         
  3268.     }
  3269.     public function categorie_graph_delete(Request $request CategorieGraphRepository $categorieGraphRepository  UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3270.     {
  3271.         
  3272.         
  3273.         $entityManager $this->getDoctrine()->getManager();
  3274.                 
  3275.         
  3276.         $categorie $categorieGraphRepository->findOneBy(['id'=>$request->get('id') ]) ;
  3277.         if($categorie!=null){
  3278.         try{
  3279.             
  3280.             $entityManager->remove($categorie) ;
  3281.             $entityManager->flush() ;
  3282.             return new Response('OK') ;
  3283.         }
  3284.         catch(Exception $e){
  3285.             return new Response('KO') ;
  3286.         }
  3287.         }
  3288.         else{
  3289.             return new Response('KOO') ;
  3290.         }
  3291.        
  3292.         
  3293.     }
  3294.     public function categorie_vanne_delete(Request $request CategorieVannesRepository $categorieVannesRepository  UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3295.     {
  3296.         
  3297.         
  3298.         $entityManager $this->getDoctrine()->getManager();
  3299.                 
  3300.         
  3301.         $categorie $categorieVannesRepository->findOneBy(['id'=>$request->get('id') ]) ;
  3302.         if($categorie!=null){
  3303.         try{
  3304.             
  3305.             $entityManager->remove($categorie) ;
  3306.             $entityManager->flush() ;
  3307.             return new Response('OK') ;
  3308.         }
  3309.         catch(Exception $e){
  3310.             return new Response('KO') ;
  3311.         }
  3312.         }
  3313.         else{
  3314.             return new Response('KOO') ;
  3315.         }
  3316.        
  3317.         
  3318.     }
  3319.     public function device_delete(Request $request DevicesRepository $devicesRepository  UtilisateursRepository $utilisateursRepository NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
  3320.     {
  3321.         
  3322.         
  3323.         $entityManager $this->getDoctrine()->getManager();
  3324.                 
  3325.         
  3326.         $device $devicesRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token')  ]) ;
  3327.         if($device!=null){
  3328.         try{
  3329.             
  3330.             $entityManager->remove($device) ;
  3331.             $entityManager->flush() ;
  3332.             return new Response('OK') ;
  3333.         }
  3334.         catch(Exception $e){
  3335.             return new Response('KO') ;
  3336.         }
  3337.         }
  3338.         else{
  3339.             return new Response('KOO') ;
  3340.         }
  3341.        
  3342.         
  3343.     }
  3344.     function planification_add(Request $request DevicesRepository $devicesRepository VannesRepository $vannesRepository ){
  3345.         $entityManager $this->getDoctrine()->getManager();
  3346.         $heure_debut strtotime($request->get('heure_debut') ) ;
  3347.         $heure_fin strtotime($request->get('heure_fin') ) ;
  3348.         if($heure_debut>$heure_fin){
  3349.             return new Response('KOOO');
  3350.         }
  3351.         if( (null != $request->get('automatise') ) && (null != $request->get('planification') ) ){
  3352.             return new Response("ssssssssssss");
  3353.         }
  3354.         else{
  3355.             
  3356.             if($request->get('type_reccurence_annee') == 1){
  3357.                 $end_repeat date('Y-12-t') ;
  3358.             }
  3359.             else{
  3360.                 $end_repeat date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) ;
  3361.                 
  3362.             }
  3363.             
  3364.             $days = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') ;
  3365.             $repeat_freq $request->get('customRadio') ;
  3366.             if($request->get('repeats')=="on"){//R�ccurence
  3367.             
  3368.             
  3369.                 $startTime strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ) );
  3370.                 $endTime strtotime$end_repeat );
  3371.                 $id_reccurence microtime(true)*10000 ;
  3372.                     if($repeat_freq=="par_jour"){//Par jour
  3373.                         for ( $i $startTime$i <= $endTime$i $i 86400 ) {
  3374.                             foreach($request->get('jours') as $jours){
  3375.                                 
  3376.                                 if(date('l'strtotime(date'Y-m-d'$i ))) == $days[$jours] ) {
  3377.                                 
  3378.                                 
  3379.                                 $planification = new PlanificationVanne() ;
  3380.                                 $device $devicesRepository->find($request->get('device_add')) ; 
  3381.                                 $vanne $vannesRepository->find($request->get('vanne_add')) ;
  3382.                                 $planification->setDevice($device);
  3383.                                 $planification->setVanne($vanne);
  3384.                                 $planification->setEnvoi(0);
  3385.                                 $planification->setTraitement(0);
  3386.                                 $planification->setAnnuler(0);
  3387.                                 $planification->setTitle($request->get('titre_add'));
  3388.                                 if($request->get('allDay') == 'on'){
  3389.                                     $date_debut date'Y-m-d'$i ).' 00:00:00' ;
  3390.                                     $date_fin date'Y-m-d'$i ).' 23:59:59' ;
  3391.                                 }
  3392.                                 else{
  3393.                                     $date_debut date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
  3394.                                     $date_fin date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
  3395.                                 }
  3396.                                 $planification->setStart$date_debut );
  3397.                                 $planification->setEnd$date_fin );
  3398.                                 if($request->get('repeats') == 'on'){
  3399.                                     $planification->setReccurence$id_reccurence ) ;
  3400.                                     $planification->setRepeats('on');
  3401.                                 }
  3402.                                 if($request->get('allDay') == 'on'){
  3403.                                     $planification->setAllday(true) ;
  3404.                                 }
  3405.                                 else{
  3406.                                     $planification->setAllday(false) ;
  3407.                                 }
  3408.                                 $planification->setRepeatFreq($request->get('customRadio'));
  3409.                                 if( ($request->get('jours') ) && (count($request->get('jours') ) >) ){
  3410.                                 $planification->setJourimplode(',',$request->get('jours')) );
  3411.                                 }
  3412.                                 $planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
  3413.                                 if($request->get('jusqua')!=""){
  3414.                                 $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
  3415.                                 }
  3416.                                 $entityManager->persist($planification) ;
  3417.                                 }
  3418.                             }
  3419.                         }
  3420.                     }
  3421.                     else if($repeat_freq=="semaine"){//Par Semaine
  3422.                         
  3423.                         for($i=0;$i<7;$i++){
  3424.                             $planification = new PlanificationVanne() ;
  3425.                                 $device $devicesRepository->find($request->get('device_add')) ; 
  3426.                                 $vanne $vannesRepository->find($request->get('vanne_add')) ;
  3427.                                 $planification->setDevice($device);
  3428.                                 $planification->setVanne($vanne);
  3429.                                 $planification->setEnvoi(0);
  3430.                                 $planification->setTraitement(0);
  3431.                                 $planification->setAnnuler(0);
  3432.                                 $planification->setTitle($request->get('titre_add'));
  3433.                                 $date date('Y-m-d'strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ). ' + '.$i.' days'));
  3434.                                 
  3435.                                     if($request->get('allDay') == 'on'){
  3436.                                     $date_debut $date.' 00:00:00' ;
  3437.                                     $date_fin $date.' 23:59:59' ;
  3438.                                     }
  3439.                                     else{
  3440.                                         $date_debut $date.' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
  3441.                                         $date_fin $date.' '.date('H:i',strtotime($request->get('heure_fin') ) )  ;
  3442.                                     }
  3443.                                 $planification->setStart$date_debut );
  3444.                                 $planification->setEnd$date_fin );
  3445.                                 if($request->get('repeats') == 'on'){
  3446.                                     $planification->setReccurence$id_reccurence ) ;
  3447.                                     $planification->setRepeats('on');
  3448.                                 }
  3449.                                 if($request->get('allDay') == 'on'){
  3450.                                     $planification->setAllday(true) ;
  3451.                                 }
  3452.                                 else{
  3453.                                     $planification->setAllday(false) ;
  3454.                                 }
  3455.                                 $planification->setRepeatFreq($request->get('customRadio'));
  3456.                                 if( ($request->get('jours') ) && (count($request->get('jours') ) >) ){
  3457.                                 $planification->setJourimplode(',',$request->get('jours')) );
  3458.                                 }
  3459.                                 $planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
  3460.                                 if($request->get('jusqua')!=""){
  3461.                                 $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
  3462.                                 }
  3463.                                 $entityManager->persist($planification) ;
  3464.                         }
  3465.                     }
  3466.                     else if($repeat_freq=="annee"){//Par année
  3467.                         for ( $i $startTime$i <= strtotime(date('Y-12-t')) ; $i $i 86400 ) {
  3468.                             $planification = new PlanificationVanne() ;
  3469.                                 $device $devicesRepository->find($request->get('device_add')) ; 
  3470.                                 $vanne $vannesRepository->find($request->get('vanne_add')) ;
  3471.                                 $planification->setDevice($device);
  3472.                                 $planification->setVanne($vanne);
  3473.                                 $planification->setEnvoi(0);
  3474.                                 $planification->setTraitement(0);
  3475.                                 $planification->setAnnuler(0);
  3476.                                 $planification->setTitle($request->get('titre_add'));
  3477.                                 $date date('Y-m-d'strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ). ' + '.$i.' days'));
  3478.                                 
  3479.                                     if($request->get('allDay') == 'on'){
  3480.                                         $date_debut date'Y-m-d'$i ).' 00:00:00' ;
  3481.                                         $date_fin date'Y-m-d'$i ).' 23:59:59' ;
  3482.                                     }
  3483.                                     else{
  3484.                                         $date_debut date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
  3485.                                         $date_fin date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
  3486.                                     }
  3487.                                 $planification->setStart$date_debut );
  3488.                                 $planification->setEnd$date_fin );
  3489.                                 if($request->get('repeats') == 'on'){
  3490.                                     $planification->setReccurence$id_reccurence ) ;
  3491.                                     $planification->setRepeats('on');
  3492.                                 }
  3493.                                 if($request->get('allDay') == 'on'){
  3494.                                     $planification->setAllday(true) ;
  3495.                                 }
  3496.                                 else{
  3497.                                     $planification->setAllday(false) ;
  3498.                                 }
  3499.                                 $planification->setRepeatFreq($request->get('customRadio'));
  3500.                                 if( ($request->get('jours') ) && (count($request->get('jours') ) >) ){
  3501.                                 $planification->setJourimplode(',',$request->get('jours')) );
  3502.                                 }
  3503.                                 $planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
  3504.                                 if($request->get('jusqua')!=""){
  3505.                                 $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
  3506.                                 }
  3507.                                 $entityManager->persist($planification) ;
  3508.                         }
  3509.                     }
  3510.                     else if($repeat_freq=="frequence"){//Chaque nombre de jour
  3511.                         
  3512.                         
  3513.                         for ( $i $startTime$i <= $endTime$i $i+ ($request->get('frequence_jour')*86400) ) {
  3514.                             
  3515.                             $date_debut date('Y-m-d'$i).' '.$request->get('heure_debut') ; 
  3516.                             $date_fin date('Y-m-d'$i).' '.$request->get('heure_fin') ; 
  3517.                             $planification = new PlanificationVanne() ;
  3518.                                 $device $devicesRepository->find($request->get('device_add')) ; 
  3519.                                 $vanne $vannesRepository->find($request->get('vanne_add')) ;
  3520.                                 $planification->setDevice($device);
  3521.                                 $planification->setVanne($vanne);
  3522.                                 $planification->setEnvoi(0);
  3523.                                 $planification->setTraitement(0);
  3524.                                 $planification->setAnnuler(0);
  3525.                                 $planification->setTitle($request->get('titre_add'));
  3526.                                 $planification->setStart$date_debut );
  3527.                                 $planification->setEnd$date_fin );
  3528.                                 if($request->get('repeats') == 'on'){
  3529.                                     $planification->setReccurence$id_reccurence ) ;
  3530.                                     $planification->setRepeats('on');
  3531.                                 }
  3532.                                 if($request->get('allDay') == 'on'){
  3533.                                     $planification->setAllday(true) ;
  3534.                                 }
  3535.                                 else{
  3536.                                     $planification->setAllday(false) ;
  3537.                                 }
  3538.                                 $planification->setRepeatFreq($request->get('customRadio'));
  3539.                                 $planification->setFrequenceJour($request->get('frequence_jour')) ;
  3540.                                 $planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
  3541.                                 if($request->get('jusqua')!=""){
  3542.                                 $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
  3543.                                 }
  3544.                                 $entityManager->persist($planification) ;
  3545.                         }
  3546.                     }
  3547.             }
  3548.             else{
  3549.                     $planification = new PlanificationVanne() ;
  3550.                             $device $devicesRepository->find($request->get('device_add')) ; 
  3551.                             $vanne $vannesRepository->find($request->get('vanne_add')) ;
  3552.                             $planification->setDevice($device);
  3553.                             $planification->setVanne($vanne);
  3554.                             $planification->setEnvoi(0);
  3555.                             $planification->setTraitement(0);
  3556.                             $planification->setAnnuler(0);
  3557.                             $planification->setTitle($request->get('titre_add'));
  3558.                     
  3559.                         
  3560.                         
  3561.                         
  3562.                         
  3563.                         if($request->get('allDay') == 'on'){
  3564.                             $planification->setAllday(true) ;
  3565.                             $date_debut date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' 00:00:00' ;
  3566.                             $date_fin date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' 23:59:59' ;
  3567.                         }
  3568.                         else{
  3569.                             $planification->setAllday(false) ;
  3570.                             $date_debut date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
  3571.                             $date_fin date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
  3572.                             
  3573.                         }
  3574.                         $planification->setStart$date_debut );
  3575.                         $planification->setEnd$date_fin );
  3576.                         
  3577.                         $entityManager->persist($planification) ;
  3578.             }
  3579.         }
  3580.         $entityManager->flush() ;
  3581.         return new Response('OK') ;
  3582.     }
  3583.     
  3584.     function planification_delete(Request $request DevicesRepository $devicesRepository VannesRepository $vannesRepository PlanificationVanneRepository $planificationVanneRepository ){
  3585.         $entityManager $this->getDoctrine()->getManager();
  3586.         $planif $planificationVanneRepository->find($request->get('id') ) ;
  3587.         if($request->get('precision')=="1"){
  3588.             if($request->get('id_reccurence')!=""){
  3589.             
  3590.                 $planif_rec $entityManager->createQuery(
  3591.                     'DELETE
  3592.                     FROM App\Entity\PlanificationVanne p
  3593.                      WHERE p.reccurence='.$request->get('id_reccurence').
  3594.                      
  3595.                     '
  3596.                     )
  3597.                     ->execute()  ;
  3598.                         
  3599.             }
  3600.             else{
  3601.                 $entityManager->remove($planif);
  3602.                 $entityManager->flush() ;
  3603.                 
  3604.             }
  3605.         }
  3606.         else{
  3607.             $entityManager->remove($planif);
  3608.             $entityManager->flush() ;
  3609.         }
  3610.     return new Response('OK');
  3611.     
  3612.     }
  3613.     function planification_edit(Request $request DevicesRepository $devicesRepository VannesRepository $vannesRepository PlanificationVanneRepository $planificationVanneRepository ){
  3614.         $entityManager $this->getDoctrine()->getManager();
  3615.         $planif $planificationVanneRepository->find($request->get('id') ) ;
  3616.         if($request->get('precision')=="1"){
  3617.             if($request->get('id_reccurence')!=""){
  3618.             
  3619.                 $planif_rec $entityManager->createQuery(
  3620.                     'DELETE
  3621.                     FROM App\Entity\PlanificationVanne p
  3622.                      WHERE p.reccurence='.$request->get('id_reccurence').
  3623.                      
  3624.                     '
  3625.                     )
  3626.                     ->execute()  ;
  3627.                         
  3628.             }
  3629.             else{
  3630.                 $entityManager->remove($planif);
  3631.                 $entityManager->flush() ;
  3632.                 
  3633.             }
  3634.         }
  3635.         else if($request->get('precision')=="2"){
  3636.         
  3637.             $entityManager->remove($planif);
  3638.             $entityManager->flush() ;
  3639.         
  3640.         }
  3641.         
  3642.         if($request->get('type_reccurence_annee2') == 1){
  3643.             $end_repeat date('Y-12-t') ;
  3644.         }
  3645.         else{
  3646.             $end_repeat date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) ;
  3647.             
  3648.         }
  3649.         
  3650.         $days = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') ;
  3651.         $repeat_freq $request->get('customRadio') ;
  3652.         if( ($request->get('id_reccurence')!="") && ($request->get('id_reccurence')!="null") ){
  3653.         
  3654.         if($request->get('repeats2')=="on"){//R�ccurence
  3655.         
  3656.         
  3657.         $startTime strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ) );
  3658.         $endTime strtotime$end_repeat );
  3659.         $id_reccurence microtime(true)*10000 ;
  3660.         if($repeat_freq=="par_jour"){//Par jour
  3661.             for ( $i $startTime$i <= $endTime$i $i 86400 ) {
  3662.                 foreach($request->get('jours2') as $jours){
  3663.                     
  3664.                     if(date('l'strtotime(date'Y-m-d'$i ))) == $days[$jours] ) {
  3665.                     
  3666.                     
  3667.                     $planification = new PlanificationVanne() ;
  3668.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3669.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3670.                     $planification->setDevice($device);
  3671.                     $planification->setVanne($vanne);
  3672.                     $planification->setEnvoi(0);
  3673.                     $planification->setTraitement(0);
  3674.                     $planification->setAnnuler(0);
  3675.                     $planification->setTitle($request->get('titre_edit'));
  3676.                     if($request->get('allDay2') == 'on'){
  3677.                         $date_debut date'Y-m-d'$i ).' 00:00:00' ;
  3678.                         $date_fin date'Y-m-d'$i ).' 23:59:59' ;
  3679.                     }
  3680.                     else{
  3681.                         
  3682.                         $date_debut date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
  3683.                         $date_fin date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
  3684.                     }
  3685.                     $planification->setStart$date_debut );
  3686.                     $planification->setEnd$date_fin );
  3687.                     if($request->get('repeats2') == 'on'){
  3688.                         $planification->setReccurence$id_reccurence ) ;
  3689.                         $planification->setRepeats('on');
  3690.                     }
  3691.                     if($request->get('allDay2') == 'on'){
  3692.                         $planification->setAllday(true) ;
  3693.                     }
  3694.                     else{
  3695.                         $planification->setAllday(false) ;
  3696.                     }
  3697.                     $planification->setRepeatFreq($request->get('customRadio'));
  3698.                     if( ($request->get('jours2') ) && (count($request->get('jours2') ) >) ){
  3699.                     $planification->setJourimplode(',',$request->get('jours2')) );
  3700.                     }
  3701.                     $planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
  3702.                     if($request->get('jusqua2')!=""){
  3703.                     $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
  3704.                     }
  3705.                     $entityManager->persist($planification) ;
  3706.                     }
  3707.                 }
  3708.             }
  3709.         }
  3710.         else if($repeat_freq=="semaine"){//Par Semaine
  3711.             
  3712.             for($i=0;$i<7;$i++){
  3713.                 $planification = new PlanificationVanne() ;
  3714.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3715.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3716.                     $planification->setDevice($device);
  3717.                     $planification->setVanne($vanne);
  3718.                     $planification->setEnvoi(0);
  3719.                     $planification->setTraitement(0);
  3720.                     $planification->setAnnuler(0);
  3721.                     $planification->setTitle($request->get('titre_edit'));
  3722.                     $date date('Y-m-d'strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ). ' + '.$i.' days'));
  3723.                     
  3724.                         if($request->get('allDay2') == 'on'){
  3725.                         $date_debut $date.' 00:00:00' ;
  3726.                         $date_fin $date.' 23:59:59' ;
  3727.                         }
  3728.                         else{
  3729.                             $date_debut $date.' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
  3730.                             $date_fin $date.' '.date('H:i',strtotime($request->get('heure_fin_edit') ) )  ;
  3731.                         
  3732.                         }
  3733.                     $planification->setStart$date_debut );
  3734.                     $planification->setEnd$date_fin );
  3735.                     if($request->get('repeats2') == 'on'){
  3736.                         $planification->setReccurence$id_reccurence ) ;
  3737.                         $planification->setRepeats('on');
  3738.                     }
  3739.                     if($request->get('allDay2') == 'on'){
  3740.                         $planification->setAllday(true) ;
  3741.                     }
  3742.                     else{
  3743.                         $planification->setAllday(false) ;
  3744.                     }
  3745.                     $planification->setRepeatFreq($request->get('customRadio'));
  3746.                     if( ($request->get('jours2') ) && (count($request->get('jours2') ) >) ){
  3747.                     $planification->setJourimplode(',',$request->get('jours2')) );
  3748.                     }
  3749.                     $planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
  3750.                     if($request->get('jusqua2')!=""){
  3751.                     $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
  3752.                     }
  3753.                     $entityManager->persist($planification) ;
  3754.             }
  3755.         }
  3756.         else if($repeat_freq=="annee"){//Par année
  3757.             for ( $i $startTime$i <= strtotime(date('Y-12-t')) ; $i $i 86400 ) {
  3758.                 $planification = new PlanificationVanne() ;
  3759.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3760.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3761.                     $planification->setDevice($device);
  3762.                     $planification->setVanne($vanne);
  3763.                     $planification->setEnvoi(0);
  3764.                     $planification->setTraitement(0);
  3765.                     $planification->setAnnuler(0);
  3766.                     $planification->setTitle($request->get('titre_edit'));
  3767.                     $date date('Y-m-d'strtotimedate('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ). ' + '.$i.' days'));
  3768.                     
  3769.                         if($request->get('allDay2') == 'on'){
  3770.                             $date_debut date'Y-m-d'$i ).' 00:00:00' ;
  3771.                             $date_fin date'Y-m-d'$i ).' 23:59:59' ;
  3772.                         }
  3773.                         else{
  3774.                             $date_debut date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
  3775.                             $date_fin date'Y-m-d'$i ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
  3776.                         
  3777.                         }
  3778.                     $planification->setStart$date_debut );
  3779.                     $planification->setEnd$date_fin );
  3780.                     if($request->get('repeats2') == 'on'){
  3781.                         $planification->setReccurence$id_reccurence ) ;
  3782.                         $planification->setRepeats('on');
  3783.                     }
  3784.                     if($request->get('allDay2') == 'on'){
  3785.                         $planification->setAllday(true) ;
  3786.                     }
  3787.                     else{
  3788.                         $planification->setAllday(false) ;
  3789.                     }
  3790.                     $planification->setRepeatFreq($request->get('customRadio'));
  3791.                     if( ($request->get('jours2') ) && (count($request->get('jours2') ) >) ){
  3792.                     $planification->setJourimplode(',',$request->get('jours2')) );
  3793.                     }
  3794.                     $planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
  3795.                     if($request->get('jusqua2')!=""){
  3796.                     $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
  3797.                     }
  3798.                     $entityManager->persist($planification) ;
  3799.             }
  3800.         }
  3801.         else if($repeat_freq=="frequence"){//Chaque nombre de jour
  3802.                         
  3803.                         
  3804.             for ( $i $startTime$i <= $endTime$i $i+ ($request->get('frequence_jour2')*86400) ) {
  3805.                 
  3806.                 $date_debut date('Y-m-d'$i).' '.$request->get('heure_debut_edit') ; 
  3807.                 $date_fin date('Y-m-d'$i).' '.$request->get('heure_fin_edit') ; 
  3808.                 $planification = new PlanificationVanne() ;
  3809.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3810.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3811.                     $planification->setDevice($device);
  3812.                     $planification->setVanne($vanne);
  3813.                     $planification->setEnvoi(0);
  3814.                     $planification->setTraitement(0);
  3815.                     $planification->setAnnuler(0);
  3816.                     $planification->setTitle($request->get('titre_edit'));
  3817.                     $planification->setStart$date_debut );
  3818.                     $planification->setEnd$date_fin );
  3819.                     if($request->get('repeats2') == 'on'){
  3820.                         $planification->setReccurence$id_reccurence ) ;
  3821.                         $planification->setRepeats('on');
  3822.                     }
  3823.                     if($request->get('allDay2') == 'on'){
  3824.                         $planification->setAllday(true) ;
  3825.                     }
  3826.                     else{
  3827.                         $planification->setAllday(false) ;
  3828.                     }
  3829.                     $planification->setRepeatFreq($request->get('customRadio'));
  3830.                     $planification->setFrequenceJour($request->get('frequence_jour2')) ;
  3831.                     $planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
  3832.                     if($request->get('jusqua2')!=""){
  3833.                     $planification->setEndRepeatdate('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
  3834.                     }
  3835.                     $entityManager->persist($planification) ;
  3836.             }
  3837.         }
  3838.         }
  3839.         else{
  3840.             $planification = new PlanificationVanne() ;
  3841.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3842.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3843.                     $planification->setDevice($device);
  3844.                     $planification->setVanne($vanne);
  3845.                     $planification->setEnvoi(0);
  3846.                     $planification->setTraitement(0);
  3847.                     $planification->setAnnuler(0);
  3848.                     $planification->setTitle($request->get('titre_edit'));
  3849.                     if($request->get('allDay2') == 'on'){
  3850.                         $planification->setAllday(true) ;
  3851.                         $date_debut date('Y-m-d 00:00:00',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
  3852.                         $date_fin date('Y-m-d 23:59:59',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
  3853.                     }
  3854.                     else{
  3855.                         $planification->setAllday(false) ;
  3856.                         $date_debut date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_debut_edit')) ) ;
  3857.                         $date_fin date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_fin_edit')) )  ;
  3858.                     }
  3859.                     $planification->setStart$date_debut );
  3860.                     $planification->setEnd$date_fin );
  3861.                     $entityManager->persist($planification) ;
  3862.         }
  3863.         
  3864.     }
  3865.     else{
  3866.                     $device $devicesRepository->find($request->get('device_edit')) ; 
  3867.                     $vanne $vannesRepository->find($request->get('vanne_edit')) ;
  3868.                     $planif->setDevice($device);
  3869.                     $planif->setVanne($vanne);
  3870.                     $planif->setTitle($request->get('titre_edit'));
  3871.                    
  3872.                     
  3873.                     if($request->get('allDay2') == 'on'){
  3874.                         $date_debut date('Y-m-d 00:00:00',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
  3875.                         $date_fin date('Y-m-d 23:59:59',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
  3876.                         $planif->setAllday(true) ;
  3877.                     }
  3878.                     else{
  3879.                         $date_debut date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
  3880.                         $date_fin date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
  3881.                         $planif->setAllday(false) ;
  3882.                     }
  3883.                     
  3884.                     $planif->setStart$date_debut );
  3885.                     $planif->setEnd$date_fin );
  3886.                     $entityManager->persist($planif) ;
  3887.     }
  3888.         $entityManager->flush() ;
  3889.         return new Response('OK') ;
  3890.     }
  3891.     function confirm_auto_seuil(Request $request DevicesRepository $devicesRepository VannesRepository $vannesRepository PlanificationVanneRepository $planificationVanneRepository ){
  3892.         $entityManager $this->getDoctrine()->getManager();
  3893.         foreach($request->get('date') as $id_vanne => $val){
  3894.             
  3895.             $vanne $vannesRepository->find($id_vanne) ;
  3896.             $i 0;
  3897.             foreach($val as $date){
  3898.                 
  3899.                 $date_auto = \DateTime::createFromFormat('Y-m-d'date('Y-m-d',strtotime(str_replace('/','-',$date )  ) ) ) ;
  3900.                 $auto_seuil = new AutoSeuil() ;
  3901.                 $auto_seuil->setVanne($vanne) ;
  3902.                 $auto_seuil->setDateAuto($date_auto) ;
  3903.                 $auto_seuil->setSeuilMin($request->get('seuil_min')[$id_vanne][$i]) ;
  3904.                 $auto_seuil->setSeuilMax($request->get('seuil_max')[$id_vanne][$i]) ;
  3905.                 $auto_seuil->setEtat(0) ;
  3906.                 $entityManager->persist($auto_seuil) ;
  3907.                 $entityManager->flush() ;
  3908.                 $i++ ;
  3909.             }
  3910.         }
  3911.         
  3912.         return new Response('OK') ;
  3913.     }
  3914. }