<?php
namespace App\Controller;
use App\Entity\Devices ;
use App\Entity\AffectationDevices ;
use App\Entity\ConfigDevice ;
use App\Entity\Vannes ;
use App\Entity\PlanificationVanne ;
use App\Entity\Graph ;
use App\Entity\AutoSeuil ;
use App\Entity\ConfigDosage ;
use App\Entity\CategorieVannes ;
use App\Entity\CategorieGraph ;
use App\Repository\UtilisateursRepository;
use App\Repository\NiveauUtilisateurRepository;
use App\Repository\DevicesRepository;
use App\Repository\AffectationDevicesRepository;
use App\Repository\ConfigDeviceRepository;
use App\Repository\VannesRepository;
use App\Repository\GraphRepository;
use App\Repository\PlanificationVanneRepository;
use App\Repository\ActionsRepository;
use App\Repository\AlertesRepository;
use App\Repository\ConfigDosageRepository;
use App\Repository\CategorieVannesRepository;
use App\Repository\CategorieGraphRepository;
use App\Repository\AutoSeuilRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Intl\Timezones;
use Symfony\Contracts\HttpClient\HttpClientInterface;
class DevicesController extends AbstractController
{
private $client;
public function __construct(HttpClientInterface $client)
{
$this->client = $client;
}
function genererCode($length){
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
for($i=0; $i<$length; $i++){
$string .= $chars[rand(0, strlen($chars)-1)];
}
return $string;
}
public function vannes(Request $request , DevicesRepository $devicesRepository, CategorieGraphRepository $categorieGraphRepository): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
$entityManager = $this->getDoctrine()->getManager();
if($request->get('id')!=''){
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
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').'\'
'
)
->getOneOrNullResult() ;
}
else{
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getOneOrNullResult() ;
}
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getResult() ;
return $this->render('devices/vannes.html.twig',[
'devices'=>$devices,
'device'=>$device,
'categories'=>$device->getDevice()->getCategorieVannes()
]);
}
public function graph(Request $request , DevicesRepository $devicesRepository, CategorieGraphRepository $categorieGraphRepository): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
$entityManager = $this->getDoctrine()->getManager();
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
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').'\'
'
)
->getOneOrNullResult() ;
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getResult() ;
return $this->render('devices/graph.html.twig',[
'devices'=>$devices,
'device'=>$device,
'categories'=>$device->getDevice()->getCategorieGraphs()
]);
}
public function sensors(Request $request , DevicesRepository $devicesRepository, CategorieGraphRepository $categorieGraphRepository): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
$entityManager = $this->getDoctrine()->getManager();
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getOneOrNullResult() ;
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getResult() ;
return $this->render('devices/graph.html.twig',[
'devices'=>$devices,
'device'=>$device,
'categories'=>!is_null($device) ? $device->getDevice()->getCategorieGraphs() : null
]);
}
public function getAffectCategorieVanne(Request $request , UtilisateursRepository $utilisateursRepository, VannesRepository $vannesRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return $this->redirectToRoute('connexion') ;
}
$vanne = $vannesRepository->find($request->get('id')) ;
return new JsonResponse(['id'=> !is_null($vanne->getCategorie()) ? $vanne->getCategorie()->getId() : '' ]) ;
}
public function getAffectCategorieGraph(Request $request , UtilisateursRepository $utilisateursRepository, GraphRepository $graphRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return $this->redirectToRoute('connexion') ;
}
$graph = $graphRepository->find($request->get('id')) ;
return new JsonResponse(['id'=> !is_null($graph->getCategorie()) ? $graph->getCategorie()->getId() : '' ]) ;
}
public function affect_categorie_graph(Request $request , UtilisateursRepository $utilisateursRepository, GraphRepository $graphRepository, CategorieGraphRepository $categorieGraphRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return $this->redirectToRoute('connexion') ;
}
$graph = $graphRepository->find($request->get('graph_affect'));
$categorie = $categorieGraphRepository->find($request->get('categorie')) ;
$graph->setCategorie($categorie) ;
$entityManager->persist($graph) ;
$entityManager->flush() ;
return new Response('OK') ;
}
public function affect_categorie_vanne(Request $request , UtilisateursRepository $utilisateursRepository, VannesRepository $vannesRepository, CategorieVannesRepository $categorieVannesRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return $this->redirectToRoute('connexion') ;
}
$vanne = $vannesRepository->find($request->get('vanne_affect'));
$categorie = $categorieVannesRepository->find($request->get('categorie')) ;
$vanne->setCategorie($categorie) ;
$entityManager->persist($vanne) ;
$entityManager->flush() ;
return new Response('OK') ;
}
public function categorie_vannes(Request $request): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getOneOrNullResult() ;
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getResult() ;
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->getResult() ;
return $this->render('devices/categorie_vannes.html.twig',[
'device'=>$device,
'devices'=>$devices,
'vannes'=>$vannes
]);
}
public function categorie_graph(Request $request): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getOneOrNullResult() ;
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
JOIN p.utilisateur u
WHERE 1=1 AND u.id = '.$request->getSession()->get('user_connected_telma')->getId().'
'
)
->getResult() ;
return $this->render('devices/categorie_graph.html.twig',[
'device'=>$device,
'devices'=>$devices
]);
}
public function index(Request $request): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
return $this->render('devices/index.html.twig', [
'controller_name' => 'DevicesController',
]);
}
public function actions(Request $request): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
return $this->render('devices/actions.html.twig');
}
public function alertes(Request $request): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
return $this->render('devices/alertes.html.twig');
}
public function affectation_devices(Request $request , UtilisateursRepository $utilisateursRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return $this->redirectToRoute('connexion') ;
}
$clients = [] ;
if($usr_connected->getNiveau()->getId() == 2 ){
$clients = $entityManager->createQuery(
'SELECT a , p
FROM App\Entity\AffectationUtililisateur a
JOIN a.utilisateur p
WHERE 1=1 AND a.affecter_a = '.$usr_connected->getId().'
'
)
->getResult() ;
}
$revendeurs = $utilisateursRepository->findBy(['niveau'=>2 , 'etat'=>1]);
return $this->render('devices/affectation_devices.html.twig', [
'revendeurs' => $revendeurs ,
'clients'=>$clients
]);
}
public function planification(Request $request , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$sql_where = '' ;
$sql_where2 = '' ;
if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
$session = $request->getSession() ;
$utilisateur = $utilisateursRepository->find($session->get('user_connected_telma') ) ;
if($utilisateur->getNiveau()->getId() == 3 ){
$sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
$sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
}
}
else{
return $this->redirectToRoute('connexion') ;
}
if( null != $request->get('device_filter') && ($request->get('device_filter')) ){
$sql_where .= ' AND d.id = '.$request->get('device_filter').' ' ;
}
else if($session->get('default_device')!=''){
$sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
}
$all_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where2.'
'
)
->getResult() ;
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$config = null ;
$vannes = [] ;
if($device != null){
$config = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->getResult() ;
}
$vannearr = [] ;
foreach($vannes as $vanne){
$vannearr[] = $vanne->getId() ;
}
return $this->render('devices/planification.html.twig',[
'devices'=> $all_device ,
'device_filter'=>$request->get('device_filter')!='' ? $request->get('device_filter') : ( $device!= null ? $device->getDevice()->getId() : '' ),
'vannes_filter'=>$request->get('vannes_filter')!='' ? $request->get('vannes_filter') : '',
'vannearr'=>$vannearr ,
'default_device'=>$device,
]);
}
public function historique(Request $request, CategorieGraphRepository $categorieGraphRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
{
date_default_timezone_set( 'Africa/Tunis' );
$entityManager = $this->getDoctrine()->getManager();
$sql_where = '' ;
$sql_where2 = '' ;
if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
$session = $request->getSession() ;
$utilisateur = $utilisateursRepository->find($session->get('user_connected_telma') ) ;
if($utilisateur->getNiveau()->getId() == 3 ){
$sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
$sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
}
}
else{
return $this->redirectToRoute('connexion') ;
}
if($request->get('device')!=''){
$sql_where .= ' AND d.id = '.$request->get('device').' ' ;
}
$all_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where2.'
'
)
->getResult() ;
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = [] ;
$config = [] ;
$graphs = [] ;
if($device != null){
$config = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->getResult() ;
$graphIds = [] ;
if($request->get('categorie_graph')!=''){
$categorieGraph = $categorieGraphRepository->find($request->get('categorie_graph')) ;
$graphs = $categorieGraph->getGraphs() ;
foreach($graphs as $graph){
$graphIds[] = $graph->getId() ;
}
}
else{
foreach($device->getDevice()->getcategorieGraphs()[0]->getGraphs() as $graph){
$graphIds[] = $graph->getId() ;
}
}
if(count($graphIds)>0){
$graphs = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
WHERE p.device = '.$device->getDevice()->getId().' AND p.id IN ('.implode(',',$graphIds).')
'
)
->getResult() ;
}
else{
$graphs = [] ;
}
}
$action = [] ;
foreach($vannes as $vanne){
$actions = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Actions p
WHERE p.vanne='.$vanne->getId().' AND p.action = 1 ORDER BY p.id DESC
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
if($actions != null){
$durees = explode(':',$actions->getDuree()) ;
$sec_duree = $durees[0]*3600 + $durees[1]*60 + $durees[2][0] ;
//echo date("Y-m-d H:i:s") ;
$now = strtotime(date("Y-m-d H:i:s"));
//$date2 = strtotime($actions->getDateAction()) + ( $sec_duree * 1000 ) ;
//echo date("Y-m-d H:i:s").' - '.date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)).' ' ;
$date2 = strtotime( date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)) ) ;
$duration = ($date2 - $now) ;
$hours = floor($duration / 3600);
$minutes = floor(($duration / 60) % 60);
$seconds = $duration % 60;
$duree = "$hours:$minutes:$seconds";
$action[$vanne->getId()] = [
'duree' => $duree ,
] ;
}
}
return $this->render('devices/historique.html.twig', [
'device' => $device,
'config' => $config ,
'vannes' => $vannes ,
'graphs' => $graphs ,
'devices' => $all_device ,
'action' => $action ,
]);
}
public function live2(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
{
return $this->render('devices/live2.html.twig');
}
public function live(Request $request , CategorieVannesRepository $categorieVannesRepository, CategorieGraphRepository $categorieGraphRepository ,UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository): Response
{
date_default_timezone_set( 'Africa/Tunis' );
$entityManager = $this->getDoctrine()->getManager();
$sql_where = '' ;
$sql_where2 = '' ;
if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
$session = $request->getSession() ;
$utilisateur = $utilisateursRepository->find($session->get('user_connected_telma') ) ;
if($utilisateur->getNiveau()->getId() == 3 ){
$sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
$sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
}
}
else{
return $this->redirectToRoute('connexion') ;
}
if($request->get('device')!=''){
$sql_where .= ' AND d.id = '.$request->get('device').' ' ;
}
else if( $session->get('default_device')!=null ){
$sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
}
$all_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where2.'
'
)
->getResult() ;
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = [] ;
$config = [] ;
$graphs = [] ;
if($device != null){
$config = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
if($request->get('categorie_vanne')){
$categorieVannes = $categorieVannesRepository->find($request->get('categorie_vanne')) ;
$vannes = $categorieVannes->getVannes() ;
}
else if($device->getDevice()->getCategorieVannes() != null ){
$vannes = $device->getDevice()->getCategorieVannes()[0]->getVannes() ;
}
else{
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->getResult() ;
}
if($request->get('categorie_graph')!=''){
$categorieGraph = $categorieGraphRepository->find($request->get('categorie_graph')) ;
$graphs = $categorieGraph->getGraphs() ;
}
else if($device->getDevice()->getCategorieVannes() != null ){
$graphs = $device->getDevice()->getCategorieGraphs()[0]->getGraphs() ;
}
else{
$graphs = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->getResult() ;
}
}
$action = [] ;
foreach($vannes as $vanne){
$actions = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Actions p
WHERE p.vanne='.$vanne->getId().' AND p.action = 1 ORDER BY p.id DESC
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
if($actions != null){
$durees = explode(':',$actions->getDuree()) ;
$sec_duree = $durees[0]*3600 + $durees[1]*60 + ($durees[2][0]+ $durees[2][1]) ;
//echo date("Y-m-d H:i:s") ;
$now = strtotime(date("Y-m-d H:i:s"));
//$date2 = strtotime($actions->getDateAction()) + ( $sec_duree * 1000 ) ;
//echo date("Y-m-d H:i:s").' - '.date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)).' ' ;
$date2 = strtotime( date("Y-m-d H:i:s", (strtotime(date($actions->getDateAction() )) + $sec_duree)) ) ;
$duration = ($date2 - $now) ;
$hours = floor($duration / 3600);
$minutes = floor(($duration / 60) % 60);
$seconds = $duration % 60;
$duree = "$hours:$minutes:$seconds";
$action[$vanne->getId()] = [
'duree' => $duree ,
] ;
}
}
if($device!=null ){
$session->set('default_device',$device->getDevice()->getImei());
}
$meteo = null ;
//Client ID
//cf09688d-ef50-4161-a305-5e25e6aeef7a
//client Secret
//1cb50ab8-25a8-4476-8b73-9155b761c470
if(($config!=null) &&($config->getLatitude() != "")&&($config->getLongitude()!="")){
$response = $this->client->request(
'GET',
'https://api.met.no/weatherapi/locationforecast/2.0/compact.json?lat='.$config->getLatitude().'&lon='.$config->getLongitude().''
);
$reponses = $response->toArray() ;
//dd($meteo = $reponses['properties']['timeseries']) ;
$meteo = $reponses['properties']['timeseries'][0]["data"] ;
}
return $this->render('devices/live.html.twig', [
'device' => $device,
'config' => $config ,
'vannes' => $vannes ,
'graphs' => $graphs ,
'devices' => $all_device ,
'action' => $action ,
'meteo' => $meteo
]);
}
public function previsions(Request $request , PlanificationVanneRepository $planificationVanneRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->getSession()->get('user_connected_telma') == null ){
return $this->redirectToRoute('connexion') ;
}
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where = '' ;
$sql_where2 = '' ;
if ( ($request->hasSession()) && ($request->getSession()->get('user_connected_telma')!=null) ) {
$session = $request->getSession() ;
$utilisateur = $utilisateursRepository->find($session->get('user_connected_telma') ) ;
if($utilisateur->getNiveau()->getId() == 3 ){
$sql_where .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
$sql_where2 .= ' AND p.utilisateur = '.$utilisateur->getId().' ' ;
}
}
else{
return $this->redirectToRoute('connexion') ;
}
if($request->get('device')!=''){
$sql_where .= ' AND d.id = '.$request->get('device').' ' ;
}
else if( $session->get('default_device')!=null ){
$sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
}
$all_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where2.'
'
)
->getResult() ;
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = [] ;
$config = [] ;
$graphs = [] ;
if($device != null){
$config = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
WHERE p.device = '.$device->getDevice()->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
}
$meteos = '';
if( ($config!=null) && ($config->getLatitude() != "")&&($config->getLongitude()!="")){
date_default_timezone_set( 'Africa/Tunis' );
$responsemeteo = $this->client->request(
'GET',
'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'
);
$reponsesmeteo = $responsemeteo->toArray() ;
$response = $this->client->request(
'GET',
'https://api.met.no/weatherapi/locationforecast/2.0/compact.json?lat='.$config->getLatitude().'&lon='.$config->getLongitude().''
);
$reponses = $response->toArray() ;
/*$response = $this->client->request(
'POST',
'https://api-connect.eos.com/weather/v1/meteomatics/2024-01-15T00:00:00ZP2D:PT1H', [
'headers' => [
'Content-Type' => 'text/plain',
'x-api-key' => 'apk.ea5d5f72d59812a1207567a7cee535583701be3c50acb58940ed69f4f4c39954',
],
'extra'=>[
'parameters'=>"evaporation_1h:mm/".$config->getLatitude().",".$config->getLongitude()."/html"
]
]
);
$reponses = $response->toArray() ;
dd($reponses) ;*/
$meteos = $reponses['properties']['timeseries'];
//dd($meteos);
//$meteo = $reponses['properties']['timeseries'][0]["data"] ;
}
return $this->render('devices/previsions.html.twig', [
'meteos' => $meteos ,
'devices'=>$all_device,
'device' => $device,
]);
}
public function serverEvents(Request $request , PlanificationVanneRepository $planificationVanneRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
$sql_where = "" ;
if($request->get('device')!=''){
$sql_where .= ' AND p.device = '.$request->get('device').' ' ;
}
else{
$sql_where .= ' AND d.imei = '.$session->get('default_device').' ' ;
}
date_default_timezone_set( 'Africa/Tunis' );
if($request->get('start')!=''){
$sql_where .= ' AND p.start >= \''.date('Y-m-d H:i',strtotime($request->get('start'))).'\' ' ;
}
if($request->get('end')!=''){
$sql_where .= ' AND p.end <= \''.date('Y-m-d H:i',strtotime($request->get('end'))).'\' ' ;
}
if(($request->get('vannes'))&&( count(explode(',',$request->get('vannes')) )>0)){
$sql_where .= ' AND p.vanne IN ('.$request->get('vannes').') ' ;
}
$planifications = $entityManager->createQuery(
'SELECT p
FROM App\Entity\PlanificationVanne p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$output= [];
$couleurs = array(
"1"=>array("borderColor"=>"#0168fa" , "backgroundColor"=>"rgba(1,104,250, .15)"),
"2"=>array("borderColor"=>"#10b759" , "backgroundColor"=>"rgba(16,183,89, .25)"),
"3"=>array("borderColor"=>"#5b47fb" , "backgroundColor"=>"rgba(91,71,251,.2)"),
"4"=>array("borderColor"=>"#00cccc" , "backgroundColor"=>"rgba(0,204,204,.25)"),
"5"=>array("borderColor"=>"#f10075" , "backgroundColor"=>"rgba(241,0,117,.25)"),
"6"=>array("borderColor"=>"#fd7e14" , "backgroundColor"=>"rgba(253,126,20,.25)"),
"7"=>array("borderColor"=>"#607D8B" , "backgroundColor"=>"rgba(96, 125, 139, .25)"),
"8"=>array("borderColor"=>"#ffc107" , "backgroundColor"=>"rgba(255, 193, 7, .25)"),
);
foreach($planifications as $planification){
$allDay = false ;
if($planification->getAllday() == 1 ){
$allDay = true ;
}
$output[] = [
'id' => $planification->getId() ,
'title' => $planification->getTitle(),
'id_vanne' => $planification->getVanne()->getId(),
'id_device' => $planification->getVanne()->getDevice()->getId(),
'start' => $planification->getStart(),
'debut' => $planification->getStart(),
'end' => $planification->getEnd(),
'fin' => $planification->getEnd(),
'borderColor' => $couleurs[$planification->getVanne()->getIdx()]['borderColor'],
'backgroundColor' => $couleurs[$planification->getVanne()->getIdx()]['backgroundColor'],
'allDay' => $allDay ,
'id_reccurence' => $planification->getReccurence() ,
'repeats' => $planification->getRepeats() ,
'repeat_freq' => $planification->getRepeatFreq() ,
'jour' => $planification->getJour() ,
'end_repeat' => $planification->getEndRepeat() ,
'type_reccurence' => $planification->getTypeReccurence(),
'frequence_jour' => $planification->getFrequenceJour() ,
] ;
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverVannes(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if( ($request->get('searchByDevice')!="") ){
$sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
}
if( ($request->get('searchByAffecter')=="1") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
else if( ($request->get('searchByAffecter')=="0") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
$columns = ['p.id','p.nom_graph','p.idx' , 'p.seuil_min' , 'p.seuil_max'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
if($usr_connected->getNiveau()->getId() == 1 ){
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\Vannes p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$affect_devices = $entityManager->createQuery(
'SELECT a
FROM App\Entity\AffectationDevices a
WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().'
'
)
->getResult() ;
$idAffects = [] ;
foreach($affect_devices as $affect_device){
$idAffects[] = $affect_device->getDevice()->getId() ;
}
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\Vannes p
JOIN p.device d
WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.'
'
)
->getResult() ;
}
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
if($usr_connected->getNiveau()->getId() == 1 ){
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
JOIN p.device d
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
JOIN p.device d
WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
$output =[] ;
foreach($vannes as $vanne){
$output[] = [
'id'=>$vanne->getId() ,
'nom_vanne'=>$vanne->getNomVanne() ,
'categorie'=> !is_null($vanne->getCategorie()) ? $vanne->getCategorie()->getCategorie() : '' ,
'idx'=>$vanne->getIdx() ,
'seuil_activ'=>$vanne->getSeuilActiv() ,
'seuil_desactiv'=>$vanne->getSeuilDesactiv() ,
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverHistorique(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$humidites = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Humidites p
JOIN p.device d
WHERE d.id = 2 ORDER BY p.id DESC
'
)
->setMaxResults(1000)
->getResult() ;
$dates = [] ;
$hum = [] ;
$nbr = 0;
foreach($humidites as $humidite){
if(count($humidite->getHumidities())>$nbr){
$nbr = count($humidite->getHumidities()) ;
}
foreach($humidite->getHumidities() as $dataHum){
$hum[strtotime(date_format($humidite->getDateHeureInsertion() , 'Y-m-d H:i:s') )][] = $dataHum['h'] ;
}
$dates[] = strtotime(date_format($humidite->getDateHeureInsertion() , 'Y-m-d H:i:s') ) ;
}
$j=0;
$arrVal = [] ;
for($i=0;$i<$nbr;$i++){
foreach($dates as $date){
$arrVal[$j][] = ['x' => $date , 'y'=> $hum[$date][$i] ];
}
$j++;
}
return $this->json($arrVal) ;
}
public function serverGraph(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if( ($request->get('searchByDevice')!="") ){
$sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
}
if( ($request->get('searchByAffecter')=="1") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
else if( ($request->get('searchByAffecter')=="0") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
$columns = ['p.id','p.nom_graph','p.idx' , 'p.seuil_min' , 'p.seuil_max'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
if($usr_connected->getNiveau()->getId() == 1 ){
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\Graph p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$affect_devices = $entityManager->createQuery(
'SELECT a
FROM App\Entity\AffectationDevices a
WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().'
'
)
->getResult() ;
$idAffects = [] ;
foreach($affect_devices as $affect_device){
$idAffects[] = $affect_device->getDevice()->getId() ;
}
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\Graph p
JOIN p.device d
WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.'
'
)
->getResult() ;
}
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
if($usr_connected->getNiveau()->getId() == 1 ){
$graphs = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
JOIN p.device d
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$graphs = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
JOIN p.device d
WHERE 1=1 AND d.id IN ('.implode(',',$idAffects).') '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
$output =[] ;
foreach($graphs as $graph){
$output[] = [
'id'=>$graph->getId() ,
'nom_graph'=>$graph->getNomGraph() ,
'categorie'=> !is_null($graph->getCategorie()) ? $graph->getCategorie()->getCategorie() : '' ,
'idx'=>$graph->getIdx() ,
'seuil_min'=>$graph->getSeuilMin() ,
'seuil_max'=>$graph->getSeuilMax() ,
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverCategorieVanne(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if( ($request->get('searchByDevice')!="") ){
$sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
}
$columns = ['p.categorie' , 'p.id'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\CategorieVannes p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
$categories = $entityManager->createQuery(
'SELECT p
FROM App\Entity\CategorieVannes p
JOIN p.device d
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output =[] ;
foreach($categories as $categorie){
$output[] = [
'categorie'=>$categorie->getCategorie() ,
'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getNomDevice() : '' ,
'id'=>$categorie->getId(),
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverCategorieGraph(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if( ($request->get('searchByDevice')!="")){
$sql_where .= ' AND d.id = '.$request->get('searchByDevice') ;
}
$columns = ['p.categorie' , 'p.id'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\CategorieGraph p
JOIN p.device d
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
$categories = $entityManager->createQuery(
'SELECT p
FROM App\Entity\CategorieGraph p
JOIN p.device d
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output =[] ;
foreach($categories as $categorie){
$output[] = [
'categorie'=>$categorie->getCategorie() ,
'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getNomDevice() : '' ,
'id'=>$categorie->getId(),
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverDevices(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository, UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if( ($request->get('searchByAffecter')=="1") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) > 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
else if( ($request->get('searchByAffecter')=="0") ){
if($usr_connected->getNiveau()->getId() == 1 ){
$sql_where .= ' AND ( SELECT count(af) FROM App\Entity\AffectationDevices af where p.id = af.device ) = 0 ' ;
}
else if($usr_connected->getNiveau()->getId() == 2 ){
$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 ' ;
}
}
$columns = ['p.imei','p.nom_device','p.etat' , 'p.date_creation' , 'p.id'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
if($usr_connected->getNiveau()->getId() == 1 ){
$existance = $entityManager->createQuery(
'SELECT p.id
FROM App\Entity\Devices p
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$existance = $entityManager->createQuery(
'SELECT a.id
FROM App\Entity\AffectationDevices a
JOIN a.device p
WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().' '.$sql_where.'
'
)
->getResult() ;
}
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
if($usr_connected->getNiveau()->getId() == 1 ){
$devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Devices p
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$devices = $entityManager->createQuery(
'SELECT p , a
FROM App\Entity\AffectationDevices a
JOIN a.device p
WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().' '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
}
$output =[] ;
foreach($devices as $device){
if( ($usr_connected->getNiveau()->getId() == 2 ) || ($usr_connected->getNiveau()->getId() == 3 ) ){
$device = $device->getDevice() ;
}
$affectation_device = null ;
if( ($usr_connected->getNiveau()->getId() == 1 ) ){
$affectation_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE u.niveau = 2 AND p.device = '.$device->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
}
else if( ($usr_connected->getNiveau()->getId() == 2 ) ){
$affectation_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE u.niveau = 3 AND p.device = '.$device->getId().'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
}
$output[] = [
'imei'=>$device->getImei() ,
'nom_device'=>$device->getNomDevice() ,
'date_creation'=>$device->getDateCreation()!='' ? date('d/m/Y',strtotime($device->getDateCreation())) : '' ,
'etat'=>$device->getEtat() == 1 ? 'Actif' : 'Inactif' ,
'etat_cnx'=>$device->getEtatCnx() == 1 ? 'OUI' : 'NON' ,
'id'=>$device->getId(),
'token'=>$device->getToken(),
'affecter_a'=>$affectation_device!= null ? $affectation_device->getUtilisateur()->getNom().' '.$affectation_device->getUtilisateur()->getPrenom() : 'Aucune' ,
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverActions(Request $request , ActionsRepository $actionsRepository , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
if($usr_connected->getNiveau()->getId()==3){
$affect_devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
WHERE p.utilisateur = '.$usr_connected->getId().'
'
)
->getResult() ;
$ids_devices = [];
foreach($affect_devices as $affect_device){
$ids_devices[] = $affect_device->getDevice()->getId() ;
}
if(count($ids_devices)>0){
$sql_where .= " AND p.id IN (".implode(',',$ids_devices).") " ;
}
else{
$sql_where .= " AND p.id = 0 " ;
}
}
$columns = ['p.imei','p.nom_device','v.nom_vanne' , 'a.type_envoi' , 'a.action' , 'a.duree' , 'a.date_action','a.etat'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$existance = $entityManager->createQuery(
'SELECT a
FROM App\Entity\Actions a
JOIN a.device p
JOIN a.vanne v
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
$actions = $entityManager->createQuery(
'SELECT a
FROM App\Entity\Actions a
JOIN a.device p
JOIN a.vanne v
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output =[] ;
foreach($actions as $action){
$output[] = [
'imei'=>$action->getDevice()->getImei() ,
'nom_device'=>$action->getDevice()->getNomDevice() ,
'date_action'=>$action->getDateAction()!='' ? date('d/m/Y H:i',strtotime($action->getDateAction())) : '' ,
'vanne'=>$action->getVanne()->getNomVanne() ,
'type_envoi'=>$action->getTypeEnvoi() == 'SERVER' ? 'WEB' : ( $action->getTypeEnvoi() == 'SMS' ? 'SMS'.($action->getExpediteur()!='' ? ' ( '.$action->getExpediteur().' )' : '' ) : $action->getTypeEnvoi() ) ,
'action'=>$action->getAction()== '1' ? 'ON' : ( $action->getAction()== '0' ? 'OFF' : $action->getAction() ) ,
'envoi'=>$action->getEtat() ,
'duree'=>$action->getDuree() ,
'id'=>$action->getId(),
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function serverAlertes(Request $request , AlertesRepository $alertesRepository , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$sql_where='';
if( ($request->get('searchByEtat')!="all") && ($request->get('searchByEtat')!="") ){
$sql_where .= ' AND p.etat = '.$request->get('searchByEtat') ;
}
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
if($usr_connected->getNiveau()->getId()==3){
$affect_devices = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
WHERE p.utilisateur = '.$usr_connected->getId().'
'
)
->getResult() ;
$ids_devices = [];
foreach($affect_devices as $affect_device){
$ids_devices[] = $affect_device->getDevice()->getId() ;
}
if(count($ids_devices)>0){
$sql_where .= " AND p.id IN (".implode(',',$ids_devices).") " ;
}
else{
$sql_where .= " AND p.id = 0 " ;
}
}
$columns = ['p.nom_device' , 'a.alerte' , 'a.date_alerte','a.envoi'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$existance = $entityManager->createQuery(
'SELECT a
FROM App\Entity\Alertes a
JOIN a.device p
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $existance ) ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
//->setParameter('nom', '%'.$request->get('searchByNom').'%')
//p.nom LIKE :nom
$alertes = $entityManager->createQuery(
'SELECT a
FROM App\Entity\Alertes a
JOIN a.device p
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output =[] ;
foreach($alertes as $alerte){
$output[] = [
'nom_device'=>$alerte->getDevice()->getNomDevice() ,
'alerte'=>$alerte->getAlerte() ,
'envoi'=>$alerte->getEnvoi() ,
'traitement'=>$alerte->getTraitement() ,
'date_alerte'=>$alerte->getDateAlerte()!='' ? date('d/m/Y H:i:s',strtotime($alerte->getDateAlerte())) : '' ,
'id'=>$alerte->getId(),
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getDosageByDevice(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$device = $entityManager->createQuery(
'SELECT d
FROM App\Entity\Devices d
WHERE d.imei = \''.$request->get('imei').'\'
'
)
->getOneOrNullResult() ;
$output = [];
if($device!=null){
foreach($device->getConfigDosages() as $config_dosage){
$output[] = [
'label'=>$config_dosage->getLabel() ,
];
}
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
function confirm_config_dosage(Request $request , DevicesRepository $devicesRepository , ConfigDosageRepository $configDosageRepository ){
$entityManager = $this->getDoctrine()->getManager();
$device = $devicesRepository->findOneBy(['id'=>$request->get('device_conf_dosage') , 'token'=> $request->get('token_conf_dosage')]) ;
if($device == null){
return new Response('KO') ;
}
$config_dosages = $configDosageRepository->findBy(['device'=> $device]) ;
if(count($config_dosages) == 0){
$config_dosage1 = new ConfigDosage() ;
$config_dosage1->setDevice($device) ;
$config_dosage1->setLabel($request->get('label1')) ;
$entityManager->persist($config_dosage1) ;
$config_dosage2 = new ConfigDosage() ;
$config_dosage2->setDevice($device) ;
$config_dosage2->setLabel($request->get('label2')) ;
$entityManager->persist($config_dosage2) ;
$config_dosage3 = new ConfigDosage() ;
$config_dosage3->setDevice($device) ;
$config_dosage3->setLabel($request->get('label3')) ;
$entityManager->persist($config_dosage3) ;
$config_dosage4 = new ConfigDosage() ;
$config_dosage4->setDevice($device) ;
$config_dosage4->setLabel($request->get('label4')) ;
$entityManager->persist($config_dosage4) ;
}
else{
$i = 1;
foreach($config_dosages as $config_dosage){
if($i == 1){
$config_dosage->setLabel($request->get('label1')) ;
$entityManager->persist($config_dosage) ;
}
else if($i == 2){
$config_dosage->setLabel($request->get('label2')) ;
$entityManager->persist($config_dosage) ;
}
else if($i == 3){
$config_dosage->setLabel($request->get('label3')) ;
$entityManager->persist($config_dosage) ;
}
else if($i == 4){
$config_dosage->setLabel($request->get('label4')) ;
$entityManager->persist($config_dosage) ;
}
$i++;
}
}
$entityManager->flush() ;
return new Response('OK') ;
}
public function getVannes(Request $request , VannesRepository $vannesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$vanne = $vannesRepository->find($request->get('id')) ;
$output= [
'id'=>$vanne->getId() ,
'nom_vanne'=>$vanne->getNomVanne() ,
'idx'=>$vanne->getIdx() ,
'automatise'=>$vanne->getAutomatise() ,
'seuil_activ'=>$vanne->getSeuilActiv()!='' ? $vanne->getSeuilActiv() : '' ,
'seuil_desactiv'=>$vanne->getSeuilDesactiv()!='' ? $vanne->getSeuilDesactiv() : '' ,
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getGraph(Request $request , GraphRepository $graphRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$graph = $graphRepository->find($request->get('id')) ;
$output= [
'id'=>$graph->getId() ,
'nom_graph'=>$graph->getNomGraph() ,
'idx'=>$graph->getIdx() ,
'seuil_min'=>$graph->getSeuilMin()!='' ? $graph->getSeuilMin() : '' ,
'seuil_max'=>$graph->getSeuilMax()!='' ? $graph->getSeuilMax() : '' ,
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getVanneByDevice(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$config_vannes = $entityManager->createQuery(
'SELECT v
FROM App\Entity\Vannes v
WHERE v.device = \''.$request->get('id').'\'
'
)
->getResult() ;
$conf_device = $entityManager->createQuery(
'SELECT c
FROM App\Entity\ConfigDevice c
WHERE c.device = \''.$request->get('id').'\'
'
)
->getOneOrNullResult() ;
$output = [];
foreach($config_vannes as $config_vanne){
$output[] = [
'id_vanne'=>$config_vanne->getId() ,
'nom_vanne'=>$config_vanne->getNomVanne() ,
'idx'=>$config_vanne->getIdx() ,
'etat_vanne'=>$config_vanne->getEtatVanne() ,
'seuil_min'=> '', //$config_vanne->getSeuilMin()!='' ? $config_vanne->getSeuilMin() : '' ,
'seuil_max'=>'', //$config_vanne->getSeuilMax()!='' ? $config_vanne->getSeuilMax() : '' ,
'imei'=>$config_vanne->getDevice()->getImei(),
'id_device'=>$config_vanne->getDevice()->getId(),
'nom_device'=>$config_vanne->getDevice()->getNomDevice() ,
'nbr_vanne'=>$conf_device->getNbrVanne(),
'nbr_graph'=>$conf_device->getNbrGraph(),
'auto'=>$config_vanne->getAutomatise(),
'seuil_activ'=>$config_vanne->getSeuilActiv(),
'seuil_desactiv'=>$config_vanne->getSeuilDesactiv(),
];
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getGraphByDevice(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$config_graphs = $entityManager->createQuery(
'SELECT v
FROM App\Entity\Graph v
WHERE v.device = \''.$request->get('id').'\'
'
)
->getResult() ;
$vannes = $entityManager->createQuery(
'SELECT v
FROM App\Entity\Vannes v
WHERE v.device = \''.$request->get('id').'\'
'
)
->getResult() ;
$conf_device = $entityManager->createQuery(
'SELECT c
FROM App\Entity\ConfigDevice c
WHERE c.device = \''.$request->get('id').'\'
'
)
->getOneOrNullResult() ;
$output = [];
foreach($config_graphs as $config_graph){
$output['graph'][] = [
'id_vanne'=>$config_graph->getId() ,
'nom_graph'=>$config_graph->getNomGraph() ,
'idx'=>$config_graph->getIdx() ,
'id_device'=>$config_graph->getDevice()->getId(),
'nom_device'=>$config_graph->getDevice()->getNomDevice() ,
'nbr_graph'=>$conf_device->getNbrGraph(),
'curr_vanne'=>$config_graph->getVanne()!=null ? $config_graph->getVanne()->getId() : '' ,
];
}
foreach($vannes as $vanne){
$output['vanne'][] = [
'id'=>$vanne->getId() ,
'nom_vanne'=>$vanne->getNomVanne() ,
'idx'=>$vanne->getIdx() ,
];
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getAffectVanne(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
}
public function getCategorieVanne(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$categorie = $entityManager->createQuery(
'SELECT a
FROM App\Entity\CategorieVannes a
WHERE 1=1 AND a.id = '.$request->get('id').'
'
)
->getOneOrNullResult() ;
$vannes = [] ;
foreach($categorie->getVannes() as $categoryVannes){
$vannes[] = $categoryVannes->getId() ;
}
$output = [
'nom_categorie'=>$categorie->getCategorie() ,
'device'=>!is_null($categorie->getDevice()) ? $categorie->getDevice()->getId() : '' ,
'vannes'=> $vannes ,
'id'=>$categorie->getId(),
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getCategorieGraph(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$categorie = $entityManager->createQuery(
'SELECT a
FROM App\Entity\CategorieGraph a
WHERE 1=1 AND a.id = '.$request->get('id').'
'
)
->getOneOrNullResult() ;
$output = [
'nom_categorie'=>$categorie->getCategorie() ,
'id'=>$categorie->getId(),
];
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getDevices(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$entityManager = $this->getDoctrine()->getManager();
$devices = $entityManager->createQuery(
'SELECT a
FROM App\Entity\AffectationDevices a
JOIN a.device p
WHERE 1=1 AND a.utilisateur = '.$usr_connected->getId().'
'
)
->getResult() ;
$output = [];
foreach($devices as $device){
$output[] = [
'nom_device'=>$device->getDevice()->getNomDevice() ,
'imei'=>$device->getDevice()->getImei() ,
'etat'=>$device->getDevice()->getEtat() ,
'etat_cnx'=>$device->getDevice()->getEtatCnx() ,
'id'=>$device->getDevice()->getId(),
'token'=>$device->getDevice()->getToken(),
];
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getDevice(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Devices p
WHERE p.id = \''.$request->get('id').'\' AND p.token=\''.$request->get('token').'\'
'
)
->getOneOrNullResult() ;
$output = [];
if($device!=null){
$output = [
'nom_device'=>$device->getNomDevice() ,
'imei'=>$device->getImei() ,
'etat'=>$device->getEtat() ,
'etat_cnx'=>$device->getEtatCnx() ,
'id'=>$device->getId(),
'token'=>$device->getToken(),
];
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function getConfDevice(Request $request , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
JOIN p.device d
WHERE d.id = \''.$request->get('id').'\' AND d.token=\''.$request->get('token').'\'
'
)
->getOneOrNullResult() ;
$output = [];
if($device!=null){
$output = [
'nbr_vanne'=>$device->getNbrVanne() ,
'nbr_graph'=>$device->getNbrGraph() ,
'frequence'=>$device->getFrequence() ,
'email1'=>$device->getEmail1() ,
'email2'=>$device->getEmail2() ,
'email3'=>$device->getEmail3() ,
'email4'=>$device->getEmail4() ,
'email5'=>$device->getEmail5() ,
'tel1'=>$device->getTel1() ,
'tel2'=>$device->getTel2() ,
'tel3'=>$device->getTel3() ,
'tel4'=>$device->getTel4() ,
'altitude'=>$device->getAltitude() ,
'latitude'=>$device->getLatitude() ,
'longitude'=>$device->getLongitude() ,
'imei'=>$device->getDevice()->getImei(),
'id'=>$device->getDevice()->getId(),
'token'=>$device->getDevice()->getToken(),
];
}
$JSON = json_encode($output);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
public function affect_vanne(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
}
public function affect_graph(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
}
public function affect_device_add(Request $request , DevicesRepository $devicesRepository , AffectationDevicesRepository $affectationDevicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$ids = explode(',',$request->get('ids')) ;
$usr = '' ;
if($request->get('revendeur')!=''){
$usr = $request->get('revendeur') ;
}
else if($request->get('client')!=''){
$usr = $request->get('client') ;
}
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
else{
return new Response('disconnected') ;
}
foreach($ids as $id){
if(($usr_connected->getNiveau()->getId() == 1 )&&($usr == "")){
$stocker_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE p.device = '.$id.'
'
)
->getResult() ;
if( count($stocker_device)>0 ){
foreach($stocker_device as $stock_device){
$entityManager->remove($stock_device) ;
$entityManager->flush() ;
}
}
return new Response('OK') ;
}
else if(($usr_connected->getNiveau()->getId() == 2 )&&($usr == "")){
$stocker_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE u.niveau = 3 AND p.device = '.$id.'
'
)
->getOneOrNullResult() ;
if($stocker_device != null ){
$entityManager->remove($stocker_device) ;
$entityManager->flush() ;
}
return new Response('OK') ;
}
$existance_affect_device = $affectationDevicesRepository->findOneBy(['device'=>$id , 'utilisateur'=>$usr ]) ;
if($existance_affect_device == null){
$utilisateur = $utilisateursRepository->find($usr) ;
$device = $devicesRepository->find($id) ;
if($utilisateur->getNiveau()->getId() == "2"){//Supprimer affectation revendeur
$affectation_revendeur_a_supprimers = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE u.niveau = 2 AND p.device = '.$id.'
'
)
->getResult() ;
foreach($affectation_revendeur_a_supprimers as $affectation_revendeur_a_supprimer){
$entityManager->remove($affectation_revendeur_a_supprimer) ;
$entityManager->flush() ;
}
}
else if($utilisateur->getNiveau()->getId() == "3"){//Supprimer affectation client
$affectation_client_a_supprimers = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
JOIN p.utilisateur u
WHERE u.niveau = 3 AND p.device = '.$id.'
'
)
->getResult() ;
foreach($affectation_client_a_supprimers as $affectation_client_a_supprimer){
$entityManager->remove($affectation_client_a_supprimer) ;
$entityManager->flush() ;
}
}
$existance_affect_device_autre_utilisateur = $entityManager->createQuery(
'SELECT p
FROM App\Entity\AffectationDevices p
WHERE p.device='.$id.' AND p.utilisateur = '.$usr.'
'
)
->getOneOrNullResult() ;
/*if($existance_affect_device_autre_utilisateur != null){
$existance_affect_device_autre_utilisateur->setUtilisateur($utilisateur) ;
$existance_affect_device_autre_utilisateur->setDateAffectation(date('Y-m-d H:i:s')) ;
$entityManager->persist($existance_affect_device_autre_utilisateur);
$entityManager->flush() ;
}
else{*/
if($existance_affect_device_autre_utilisateur == null){
$affectationDevices = new AffectationDevices();
$affectationDevices->setUtilisateur($utilisateur);
$affectationDevices->setDevice($device) ;
$affectationDevices->setDateAffectation(date('Y-m-d H:i:s'));
$entityManager->persist($affectationDevices) ;
$entityManager->flush() ;
}
}
}
return new Response('OK') ;
}
public function categorie_graph_add(Request $request , CategorieGraphRepository $categorieGraphRepository , DevicesRepository $devicesRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$existance = $categorieGraphRepository->findOneBy(['categorie'=>$request->get('nom_categorie')]) ;
if(!is_null($existance)){
return new Response('KOO') ;
}
$device = $devicesRepository->find($request->get('device')) ;
$categorieGraph = new CategorieGraph() ;
$categorieGraph->setCategorie($request->get('nom_categorie')) ;
$categorieGraph->setDevice($device) ;
$entityManager->persist($categorieGraph) ;
$entityManager->flush();
return new Response('OK') ;
}
public function categorie_vanne_add(Request $request , CategorieVannesRepository $categorieVannesRepository, DevicesRepository $devicesRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$existance = $categorieVannesRepository->findOneBy(['categorie'=>$request->get('nom_categorie')]) ;
if(!is_null($existance)){
return new Response('KOO') ;
}
$device = $devicesRepository->find($request->get('device')) ;
$categorieVannes = new CategorieVannes() ;
$categorieVannes->setCategorie($request->get('nom_categorie')) ;
$categorieVannes->setDevice($device) ;
$entityManager->persist($categorieVannes) ;
$entityManager->flush();
return new Response('OK') ;
}
public function device_add(Request $request , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$existance_device = $devicesRepository->findBy(['imei'=>$request->get('imei')]) ;
if(count($existance_device) == 0){
$device = new Devices() ;
$token = $this->genererCode(20) ;
try{
$device->setNomDevice($request->get('nom_device')) ;
$device->setImei($request->get('imei')) ;
$device->setEtat($request->get('etat')) ;
$device->setEtatCnx(0) ;
$device->setToken($token) ;
$device->setDateCreation(date('Y-m-d')) ;
$entityManager->persist($device) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function notification_edit(Request $request , AlertesRepository $alertesRepository , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$alerte = $alertesRepository->find($request->get('id_notif')) ;
$alerte->setTraitement($request->get('traitement_notif')) ;
$entityManager->persist($alerte);
$entityManager->flush();
return new Response('OK');
}
public function vanne_edit(Request $request , VannesRepository $vannesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$vanne = $vannesRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
if($vanne!=null){
try{
if($request->get('nom_vanne_edit') != ''){
$vanne->setNomVanne($request->get('nom_vanne_edit')) ;
$entityManager->persist($vanne) ;
$entityManager->flush() ;
}
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function vanne_auto_edit(Request $request , VannesRepository $vannesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$vanne = $vannesRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
if($vanne!=null){
if($request->get('automatise_edit') != ''){
$vanne->setAutomatise($request->get('automatise_edit') =='on' ? 1 : 0 ) ;
$vanne->setSeuilActiv($request->get('seuil_activ_edit'));
$vanne->setSeuilDesactiv($request->get('seuil_desactiv_edit'));
$entityManager->persist($vanne) ;
$entityManager->flush() ;
}
else{
$vanne->setAutomatise( 0 ) ;
$vanne->setSeuilActiv(NULL);
$vanne->setSeuilDesactiv(NULL);
$entityManager->persist($vanne) ;
$entityManager->flush() ;
}
return new Response('OK') ;
}
else{
return new Response('KOO') ;
}
}
public function graph_edit(Request $request , GraphRepository $graphRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$graph = $graphRepository->findOneBy(['id'=>$request->get('id_edit') ]) ;
if($graph!=null){
try{
if($request->get('nom_graph_edit') != ''){
$graph->setNomGraph($request->get('nom_graph_edit')) ;
$entityManager->persist($graph) ;
$entityManager->flush() ;
}
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function categorie_vanne_edit(Request $request , VannesRepository $vannesRepository , CategorieVannesRepository $categorieVannesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository, DevicesRepository $devicesRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$categorie = $categorieVannesRepository->findOneBy(['id'=>$request->get('id_edit')]) ;
if($categorie!=null){
try{
foreach($categorie->getVannes() as $vanne){
$vanne->setCategorie(NULL) ;
$entityManager->persist($vanne) ;
$entityManager->flush() ;
}
$device = $devicesRepository->find($request->get('device_edit')) ;
$categorie->setCategorie($request->get('nom_categorie_edit')) ;
$categorie->setDevice($device);
$entityManager->persist($categorie) ;
$entityManager->flush() ;
if($request->get('vanne_edit')){
foreach($request->get('vanne_edit') as $vannesEdit ){
$vanneCat = $vannesRepository->find($vannesEdit) ;
$vanneCat->setCategorie($categorie) ;
$entityManager->persist($vanneCat) ;
$entityManager->flush() ;
}
}
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function categorie_graph_edit(Request $request , CategorieGraphRepository $categorieGraphRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository, DevicesRepository $devicesRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$categorie = $categorieGraphRepository->findOneBy(['id'=>$request->get('id_edit')]) ;
if($categorie!=null){
try{
$device = $devicesRepository->find($request->get('device_edit')) ;
$categorie->setCategorie($request->get('nom_categorie_edit')) ;
$categorie->setDevice($device) ;
$entityManager->persist($categorie) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function device_edit(Request $request , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$device = $devicesRepository->findOneBy(['id'=>$request->get('id_edit') , 'token'=>$request->get('token_edit') ]) ;
if($device!=null){
try{
$device->setNomDevice($request->get('nom_device_edit')) ;
if($request->get('imei_edit')!=''){
$device->setImei($request->get('imei_edit')) ;
}
$device->setEtat($request->get('etat_edit')) ;
$entityManager->persist($device) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function device_config(Request $request , AlertesRepository $alertesRepository , AutoSeuilRepository $autoSeuilRepository ,DevicesRepository $devicesRepository , ConfigDeviceRepository $configDevicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
if ($request->hasSession() && ($session = $request->getSession())) {
$session = $request->getSession() ;
}
else{
$session = new session();
}
if($session->get('user_connected_telma') != null){
$usr_connected = $utilisateursRepository->find($session->get('user_connected_telma')) ;
}
$device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Devices p
WHERE p.id = '.$request->get('id_conf').' AND p.token = \''.$request->get('token_conf').'\'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$config_device = $entityManager->createQuery(
'SELECT p
FROM App\Entity\ConfigDevice p
JOIN p.device d
WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$vannes = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
JOIN p.device d
WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
'
)
->getResult() ;
$graphs = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
JOIN p.device d
WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\'
'
)
->getResult() ;
if($usr_connected->getNiveau()->getId() != 3 ){
if(count($vannes) > $request->get('nbr_vanne') ){
for($i=$request->get('nbr_vanne') ; $i<count($vannes) ; $i++ ){
$vannes_a_supprimer = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Vannes p
JOIN p.device d
WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\' AND p.idx = '.($i+1).'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
if(!is_null($vannes_a_supprimer)){
$autosSeuil = $autoSeuilRepository->findby(['vanne'=>$vannes_a_supprimer->getId() ]) ;
foreach($autosSeuil as $autoSeuil){
$entityManager->remove($autoSeuil) ;
$entityManager->flush() ;
}
$alertes = $alertesRepository->findby(['vanne'=>$vannes_a_supprimer->getId() ]) ;
foreach($alertes as $alerte){
$entityManager->remove($alerte) ;
$entityManager->flush() ;
}
$entityManager->remove($vannes_a_supprimer) ;
$entityManager->flush() ;
}
}
}
else if(count($vannes) < $request->get('nbr_vanne') ){
for($i=count($vannes) ; $i<$request->get('nbr_vanne') ; $i++ ){
$vanne = new Vannes() ;
$vanne->setDevice($device) ;
$vanne->setNomVanne('VANNE '.($i+1)) ;
$vanne->setIdx($i+1) ;
$vanne->setEtatVanne(0);
$entityManager->persist($vanne) ;
$entityManager->flush() ;
}
}
if(count($graphs) > $request->get('nbr_graph') ){
for($i=$request->get('nbr_graph') ; $i<count($graphs) ; $i++ ){
$graphs_a_supprimer = $entityManager->createQuery(
'SELECT p
FROM App\Entity\Graph p
JOIN p.device d
WHERE d.id = '.$request->get('id_conf').' AND d.token = \''.$request->get('token_conf').'\' AND p.idx = '.($i+1).'
'
)
->setMaxResults(1)
->getOneOrNullResult() ;
$entityManager->remove($graphs_a_supprimer) ;
$entityManager->flush() ;
}
}
else if(count($graphs) < $request->get('nbr_graph') ){
for($i=count($graphs) ; $i<$request->get('nbr_graph') ; $i++ ){
$graph = new Graph() ;
$graph->setDevice($device) ;
$graph->setNomGraph('GRAPH '.($i+1)) ;
$graph->setIdx($i+1) ;
$entityManager->persist($graph) ;
$entityManager->flush() ;
}
}
}
if($config_device == null){
$config_device = new ConfigDevice() ;
}
try{
if($usr_connected->getNiveau()->getId() != 3 ){
$config_device->setNbrVanne($request->get('nbr_vanne')) ;
$config_device->setNbrGraph($request->get('nbr_graph')) ;
$config_device->setDevice( $device ) ;
}
/*else{
$config_device->setNbrVanne($device->getNbrVanne()) ;
$config_device->setNbrGraph($device->getNbrGraph()) ;
}*/
$config_device->setFrequence( $request->get('frequence') ) ;
$config_device->setEmail1($request->get('email1')) ;
$config_device->setEmail2($request->get('email2')) ;
$config_device->setEmail3($request->get('email3')) ;
$config_device->setEmail4($request->get('email4')) ;
$config_device->setEmail5($request->get('email5')) ;
$config_device->setTel1($request->get('tel1')) ;
$config_device->setTel2($request->get('tel2')) ;
$config_device->setTel3($request->get('tel3')) ;
$config_device->setTel4($request->get('tel4')) ;
$config_device->setTel5($request->get('tel5')) ;
if($request->get('altitude') != ""){
$config_device->setAltitude($request->get('altitude')) ;
}
if($request->get('latitude')!=""){
$config_device->setLatitude($request->get('latitude')) ;
}
if($request->get('longitude')!=""){
$config_device->setLongitude($request->get('longitude')) ;
}
$entityManager->persist($config_device) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
public function vanne_config(Request $request , VannesRepository $vannesRepository , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$vannes = $vannesRepository->findBy(['device'=>$request->get('id_device')]) ;
foreach($vannes as $vanne){
$vanne->setNomVanne($request->get('nom_vanne')[ ($vanne->getIdx()-1) ]) ;
$vanne->setSeuilMax($request->get('seuil_max')[($vanne->getIdx()-1)]);
$vanne->setSeuilMin($request->get('seuil_min')[($vanne->getIdx()-1)]);
$entityManager->persist($vanne);
$entityManager->flush() ;
}
return new Response('OK') ;
}
public function graph_config(Request $request , VannesRepository $vannesRepository , GraphRepository $graphRepository , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$graphs = $graphRepository->findBy(['device'=>$request->get('id_device')]) ;
foreach($graphs as $graph){
$vanne = $vannesRepository->find($request->get('vanne_graph')[($graph->getIdx()-1)]) ;
$graph->setNomGraph($request->get('nom_graph')[ ($graph->getIdx()-1) ]) ;
$graph->setVanne($vanne) ;
$entityManager->persist($graph);
$entityManager->flush() ;
}
return new Response('OK') ;
}
public function categorie_graph_delete(Request $request , CategorieGraphRepository $categorieGraphRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$categorie = $categorieGraphRepository->findOneBy(['id'=>$request->get('id') ]) ;
if($categorie!=null){
try{
$entityManager->remove($categorie) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function categorie_vanne_delete(Request $request , CategorieVannesRepository $categorieVannesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$categorie = $categorieVannesRepository->findOneBy(['id'=>$request->get('id') ]) ;
if($categorie!=null){
try{
$entityManager->remove($categorie) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
public function device_delete(Request $request , DevicesRepository $devicesRepository , UtilisateursRepository $utilisateursRepository , NiveauUtilisateurRepository $niveauUtilisateurRepository ): Response
{
$entityManager = $this->getDoctrine()->getManager();
$device = $devicesRepository->findOneBy(['id'=>$request->get('id') , 'token'=>$request->get('token') ]) ;
if($device!=null){
try{
$entityManager->remove($device) ;
$entityManager->flush() ;
return new Response('OK') ;
}
catch(Exception $e){
return new Response('KO') ;
}
}
else{
return new Response('KOO') ;
}
}
function planification_add(Request $request , DevicesRepository $devicesRepository , VannesRepository $vannesRepository ){
$entityManager = $this->getDoctrine()->getManager();
$heure_debut = strtotime($request->get('heure_debut') ) ;
$heure_fin = strtotime($request->get('heure_fin') ) ;
if($heure_debut>$heure_fin){
return new Response('KOOO');
}
if( (null != $request->get('automatise') ) && (null != $request->get('planification') ) ){
return new Response("ssssssssssss");
}
else{
if($request->get('type_reccurence_annee') == 1){
$end_repeat = date('Y-12-t') ;
}
else{
$end_repeat = date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) ;
}
$days = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') ;
$repeat_freq = $request->get('customRadio') ;
if($request->get('repeats')=="on"){//R�ccurence
$startTime = strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ) );
$endTime = strtotime( $end_repeat );
$id_reccurence = microtime(true)*10000 ;
if($repeat_freq=="par_jour"){//Par jour
for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {
foreach($request->get('jours') as $jours){
if(date('l', strtotime(date( 'Y-m-d', $i ))) == $days[$jours] ) {
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_add')) ;
$vanne = $vannesRepository->find($request->get('vanne_add')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_add'));
if($request->get('allDay') == 'on'){
$date_debut = date( 'Y-m-d', $i ).' 00:00:00' ;
$date_fin = date( 'Y-m-d', $i ).' 23:59:59' ;
}
else{
$date_debut = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
$date_fin = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours') ) && (count($request->get('jours') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
if($request->get('jusqua')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
}
}
else if($repeat_freq=="semaine"){//Par Semaine
for($i=0;$i<7;$i++){
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_add')) ;
$vanne = $vannesRepository->find($request->get('vanne_add')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_add'));
$date = date('Y-m-d', strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ). ' + '.$i.' days'));
if($request->get('allDay') == 'on'){
$date_debut = $date.' 00:00:00' ;
$date_fin = $date.' 23:59:59' ;
}
else{
$date_debut = $date.' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
$date_fin = $date.' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours') ) && (count($request->get('jours') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
if($request->get('jusqua')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
else if($repeat_freq=="annee"){//Par année
for ( $i = $startTime; $i <= strtotime(date('Y-12-t')) ; $i = $i + 86400 ) {
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_add')) ;
$vanne = $vannesRepository->find($request->get('vanne_add')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_add'));
$date = date('Y-m-d', strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ). ' + '.$i.' days'));
if($request->get('allDay') == 'on'){
$date_debut = date( 'Y-m-d', $i ).' 00:00:00' ;
$date_fin = date( 'Y-m-d', $i ).' 23:59:59' ;
}
else{
$date_debut = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
$date_fin = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours') ) && (count($request->get('jours') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
if($request->get('jusqua')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
else if($repeat_freq=="frequence"){//Chaque nombre de jour
for ( $i = $startTime; $i <= $endTime; $i = $i+ ($request->get('frequence_jour')*86400) ) {
$date_debut = date('Y-m-d', $i).' '.$request->get('heure_debut') ;
$date_fin = date('Y-m-d', $i).' '.$request->get('heure_fin') ;
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_add')) ;
$vanne = $vannesRepository->find($request->get('vanne_add')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_add'));
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
$planification->setFrequenceJour($request->get('frequence_jour')) ;
$planification->setTypeReccurence($request->get('type_reccurence_annee')) ;
if($request->get('jusqua')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
}
else{
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_add')) ;
$vanne = $vannesRepository->find($request->get('vanne_add')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_add'));
if($request->get('allDay') == 'on'){
$planification->setAllday(true) ;
$date_debut = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' 00:00:00' ;
$date_fin = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' 23:59:59' ;
}
else{
$planification->setAllday(false) ;
$date_debut = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' '.date('H:i',strtotime($request->get('heure_debut') ) ) ;
$date_fin = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure')) ) ).' '.date('H:i',strtotime($request->get('heure_fin') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
$entityManager->persist($planification) ;
}
}
$entityManager->flush() ;
return new Response('OK') ;
}
function planification_delete(Request $request , DevicesRepository $devicesRepository , VannesRepository $vannesRepository , PlanificationVanneRepository $planificationVanneRepository ){
$entityManager = $this->getDoctrine()->getManager();
$planif = $planificationVanneRepository->find($request->get('id') ) ;
if($request->get('precision')=="1"){
if($request->get('id_reccurence')!=""){
$planif_rec = $entityManager->createQuery(
'DELETE
FROM App\Entity\PlanificationVanne p
WHERE p.reccurence='.$request->get('id_reccurence').'
'
)
->execute() ;
}
else{
$entityManager->remove($planif);
$entityManager->flush() ;
}
}
else{
$entityManager->remove($planif);
$entityManager->flush() ;
}
return new Response('OK');
}
function planification_edit(Request $request , DevicesRepository $devicesRepository , VannesRepository $vannesRepository , PlanificationVanneRepository $planificationVanneRepository ){
$entityManager = $this->getDoctrine()->getManager();
$planif = $planificationVanneRepository->find($request->get('id') ) ;
if($request->get('precision')=="1"){
if($request->get('id_reccurence')!=""){
$planif_rec = $entityManager->createQuery(
'DELETE
FROM App\Entity\PlanificationVanne p
WHERE p.reccurence='.$request->get('id_reccurence').'
'
)
->execute() ;
}
else{
$entityManager->remove($planif);
$entityManager->flush() ;
}
}
else if($request->get('precision')=="2"){
$entityManager->remove($planif);
$entityManager->flush() ;
}
if($request->get('type_reccurence_annee2') == 1){
$end_repeat = date('Y-12-t') ;
}
else{
$end_repeat = date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) ;
}
$days = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') ;
$repeat_freq = $request->get('customRadio') ;
if( ($request->get('id_reccurence')!="") && ($request->get('id_reccurence')!="null") ){
if($request->get('repeats2')=="on"){//R�ccurence
$startTime = strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ) );
$endTime = strtotime( $end_repeat );
$id_reccurence = microtime(true)*10000 ;
if($repeat_freq=="par_jour"){//Par jour
for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {
foreach($request->get('jours2') as $jours){
if(date('l', strtotime(date( 'Y-m-d', $i ))) == $days[$jours] ) {
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_edit'));
if($request->get('allDay2') == 'on'){
$date_debut = date( 'Y-m-d', $i ).' 00:00:00' ;
$date_fin = date( 'Y-m-d', $i ).' 23:59:59' ;
}
else{
$date_debut = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
$date_fin = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats2') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay2') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours2') ) && (count($request->get('jours2') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours2')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
if($request->get('jusqua2')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
}
}
else if($repeat_freq=="semaine"){//Par Semaine
for($i=0;$i<7;$i++){
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_edit'));
$date = date('Y-m-d', strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ). ' + '.$i.' days'));
if($request->get('allDay2') == 'on'){
$date_debut = $date.' 00:00:00' ;
$date_fin = $date.' 23:59:59' ;
}
else{
$date_debut = $date.' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
$date_fin = $date.' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats2') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay2') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours2') ) && (count($request->get('jours2') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours2')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
if($request->get('jusqua2')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
else if($repeat_freq=="annee"){//Par année
for ( $i = $startTime; $i <= strtotime(date('Y-12-t')) ; $i = $i + 86400 ) {
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_edit'));
$date = date('Y-m-d', strtotime( date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ). ' + '.$i.' days'));
if($request->get('allDay2') == 'on'){
$date_debut = date( 'Y-m-d', $i ).' 00:00:00' ;
$date_fin = date( 'Y-m-d', $i ).' 23:59:59' ;
}
else{
$date_debut = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
$date_fin = date( 'Y-m-d', $i ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats2') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay2') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
if( ($request->get('jours2') ) && (count($request->get('jours2') ) >0 ) ){
$planification->setJour( implode(',',$request->get('jours2')) );
}
$planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
if($request->get('jusqua2')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
else if($repeat_freq=="frequence"){//Chaque nombre de jour
for ( $i = $startTime; $i <= $endTime; $i = $i+ ($request->get('frequence_jour2')*86400) ) {
$date_debut = date('Y-m-d', $i).' '.$request->get('heure_debut_edit') ;
$date_fin = date('Y-m-d', $i).' '.$request->get('heure_fin_edit') ;
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_edit'));
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
if($request->get('repeats2') == 'on'){
$planification->setReccurence( $id_reccurence ) ;
$planification->setRepeats('on');
}
if($request->get('allDay2') == 'on'){
$planification->setAllday(true) ;
}
else{
$planification->setAllday(false) ;
}
$planification->setRepeatFreq($request->get('customRadio'));
$planification->setFrequenceJour($request->get('frequence_jour2')) ;
$planification->setTypeReccurence($request->get('type_reccurence_annee2')) ;
if($request->get('jusqua2')!=""){
$planification->setEndRepeat( date('Y-m-d',strtotime(str_replace('/','-',$request->get('jusqua2') ) ) ) );
}
$entityManager->persist($planification) ;
}
}
}
else{
$planification = new PlanificationVanne() ;
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planification->setDevice($device);
$planification->setVanne($vanne);
$planification->setEnvoi(0);
$planification->setTraitement(0);
$planification->setAnnuler(0);
$planification->setTitle($request->get('titre_edit'));
if($request->get('allDay2') == 'on'){
$planification->setAllday(true) ;
$date_debut = date('Y-m-d 00:00:00',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
$date_fin = date('Y-m-d 23:59:59',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
}
else{
$planification->setAllday(false) ;
$date_debut = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_debut_edit')) ) ;
$date_fin = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_fin_edit')) ) ;
}
$planification->setStart( $date_debut );
$planification->setEnd( $date_fin );
$entityManager->persist($planification) ;
}
}
else{
$device = $devicesRepository->find($request->get('device_edit')) ;
$vanne = $vannesRepository->find($request->get('vanne_edit')) ;
$planif->setDevice($device);
$planif->setVanne($vanne);
$planif->setTitle($request->get('titre_edit'));
if($request->get('allDay2') == 'on'){
$date_debut = date('Y-m-d 00:00:00',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
$date_fin = date('Y-m-d 23:59:59',strtotime(str_replace('/','-',$request->get('date_edit')) ) ) ;
$planif->setAllday(true) ;
}
else{
$date_debut = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_debut_edit') ) ) ;
$date_fin = date('Y-m-d',strtotime(str_replace('/','-',$request->get('date_heure_edit')) ) ).' '.date('H:i',strtotime($request->get('heure_fin_edit') ) ) ;
$planif->setAllday(false) ;
}
$planif->setStart( $date_debut );
$planif->setEnd( $date_fin );
$entityManager->persist($planif) ;
}
$entityManager->flush() ;
return new Response('OK') ;
}
function confirm_auto_seuil(Request $request , DevicesRepository $devicesRepository , VannesRepository $vannesRepository , PlanificationVanneRepository $planificationVanneRepository ){
$entityManager = $this->getDoctrine()->getManager();
foreach($request->get('date') as $id_vanne => $val){
$vanne = $vannesRepository->find($id_vanne) ;
$i = 0;
foreach($val as $date){
$date_auto = \DateTime::createFromFormat('Y-m-d', date('Y-m-d',strtotime(str_replace('/','-',$date ) ) ) ) ;
$auto_seuil = new AutoSeuil() ;
$auto_seuil->setVanne($vanne) ;
$auto_seuil->setDateAuto($date_auto) ;
$auto_seuil->setSeuilMin($request->get('seuil_min')[$id_vanne][$i]) ;
$auto_seuil->setSeuilMax($request->get('seuil_max')[$id_vanne][$i]) ;
$auto_seuil->setEtat(0) ;
$entityManager->persist($auto_seuil) ;
$entityManager->flush() ;
$i++ ;
}
}
return new Response('OK') ;
}
}