<?php
include ('../../inc/confNetisse.php');
if(isset($GLOBALS["BORNE_CONF"]["NFC"]) && $GLOBALS["BORNE_CONF"]["NFC"])
	include ("../../inc/nfcConfig.php");
$TYPE = isset($_REQUEST['type']) ? $_REQUEST['type'] : "";
$CODE = isset($_REQUEST['code']) ? $_REQUEST['code'] : "";
$IDA = isset($_REQUEST['id']) ? $_REQUEST['id'] : "";
$DATA = array();
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
function getBorneTranslations($type){
	$languages = isset($GLOBALS["BORNE_CONF"]["LANGUAGES"])?$GLOBALS["BORNE_CONF"]["LANGUAGES"]:array("FR");
	foreach($languages as $lang){
		$lang = strtolower($lang);
		if(file_exists('../../inc/languages/'.$lang.'_type_'.$type.'.po')){
			$file = '../../inc/languages/'.$lang.'_type_'.$type.'.po';
		}
		else{
			$file = '../../inc/languages/'.$lang.'.po';
		}
		$translations[$lang] = array();
		$po = file($file);
		$current = null;
		foreach ($po as $line) {
			if (substr($line,0,5) == 'msgid') {
				$current = trim(substr(trim(substr($line,5)),1,-1));
			}
			if (substr($line,0,6) == 'msgstr') {
				$translations[$lang][$current] = trim(substr(trim(substr($line,6)),1,-1));
			}
		}
	}
	return $translations;
}

function getBorneTemplates($SERVER){
	$dirTpl = "../../assets/templates/borne";
	$return_array = array();
	$templates = array(
	      "footer"     			  => "./templates/includes/footer.html",
	      "accompanying-page"     => "./templates/accompanying-page.html",
	      "conseiller-pagination" => "./templates/conseiller-pagination.html",
	      "languages"             => "./templates/languages.html",
	      "choice-page"           => "./templates/choice-page.html",
	      "conseiller-panel"      => "./templates/conseiller-panel.html",
	      "motif-panel"           => "./templates/motif-panel.html",
	      "civilite-client"       => "./templates/civilite-client.html",
	      "conseiller-tab"        => "./templates/conseiller-tab.html",
	      "error-popins"          => "./templates/error-popins.html",
	      "nfc-page"              => "./templates/nfc-page.html",
	      "conseiller-nav"        => "./templates/conseiller-nav.html",
	      "conseiller-title"      => "./templates/conseiller-title.html",
	      "keyboard-client"       => "./templates/keyboard-client.html",
	      "keyboard-page"         => "./templates/keyboard-page.html",
	      "screensaver-page"      => "./templates/screensaver-page.html",
	      "error-popup"      	  => "./templates/error-popup.html",
	      "cgu-popup"      	      => "./templates/cgu-popup.html",
	      "afa-panel"      	  	  => "./templates/afa-panel.html",
	      "message-page"      	  => "./templates/message-page.html",
	      "recall-page"      	  => "./templates/recall-page.html",
	      "client-page"      	  => "./templates/client-page.html",
	      "waiting-page"      	  => "./templates/waiting-page.html",
	      "covid-popup"      	  => "./templates/covid-popup.html",
	      "rdv-calendar-page"     => "./templates/rdv-calendar-page.html",
	      "affluence-page"        => "./templates/affluence-page.html",
	);
	if ($GLOBALS["BO_CONF"]["AGENCE"]["SIEGE"]["ENABLED"]) {
		$templates["event-page"] = "./templates/event-page.html";
		$templates["event-panel"] = "./templates/event-panel.html";
		$templates["event-nav"] = "./templates/event-nav.html";
		$templates["site-map-page"] = "./templates/site-map-page.html";
		$templates["site-map-panel"] = "./templates/site-map-panel.html";
		$templates["site-map-nav"] = "./templates/site-map-nav.html";
	}
	if(is_dir($dirTpl)){
    if($dh = opendir($dirTpl)){
        while(($file = readdir($dh)) != false){
            if($file == "." or $file == ".."){
            } else {
				// var_dump($SERVER."assets/templates/borne/".$file);
                $templates[str_replace(".html","",$file)] = "../assets/templates/borne/".$file;
            }
        }
    }
	}
	return $templates;
}

function getWaitingNb($agence, $rdv){
	$nb = 0;
	$q = 	"SELECT count(cl.id_client) as nb
				FROM ca_clients cl
				WHERE DATEDIFF(cl.date_arrivee,now())=:datediff
				AND cl.date_priseencharge=:date_priseencharge
				AND cl.id_agence=:id_agence
				AND cl.rdv=:rdv";
        
	$values = array('datediff' => 0,'date_priseencharge' => '0000-00-00 00:00:00', 'id_agence' => $agence, 'rdv' => $rdv);
        $r = excuteQuery($q, $values);
	if($r['status'] && $r['stmt']->rowCount())
		$nb = $r['stmt']->fetchColumn();
        
	return $nb;
}

function getAgencyChoices($type, $label = NULL){
	$defaults = $GLOBALS["BORNE_CONF"]["CHOICES"];
	if($GLOBALS["BO_CONF"]["AGENCE"]["MULTIPLE_TYPES"]){
		if(!$label){
			if($type == 0){
				$defaults["SRDV"] = false;
			}
		}
		else{
			if(!strpos($label,"SRDV")){
				$defaults["SRDV"] = false;
			}
		}
	}
	return $defaults;
}

				
								  
							  
																	 
																		   
																																																												  
					  
																					   
										  
								  
										   
							
												
														  
																				
						  
   
  
 
							   
						  
  
										   
													  
				  
 
							   
																 
																				   
				   
				
				   
					 
								 
							
									
				   
				   
												
												 
   
  
																	 
													 
				
 
														   
				   
										  
												 
							 
														
									  
  
				
 
										 
																 
							
																	
						  
						   
							  
		  
							 
								  
																		   
						   
	
   
										 
  
						 
 

							  
												 
											  
											  
												 
											  
											  
											
 
  
								 
																 
			 
								 
											
					
				
   
  
				
 
function getAgencyNFC($label){
	return strpos($label,"NFC") || (isset($_REQUEST["nfc"]) && $_REQUEST["nfc"] == 1) || (!isset($_REQUEST["nfc"]) && $GLOBALS["BORNE_CONF"]["NFC"]);
}

function getEvents($id){
	$events = array();
	$q = "SELECT * FROM ca_siege_events WHERE supp IS NULL AND is_active = 1 AND event_start <= now() AND event_end >= now() AND id_agence = ".$id;
	$r =excuteQuery($q);
	if($r['status']){
		while($row = $r['stmt']->fetch(PDO::FETCH_OBJ)){
            $events[] = $row;
		}
	}
	return $events;
}

function getSiteMap($id){
	$events = array();
	$q = "SELECT id_orientation as id, label as title, salle, icon_site_map as icon FROM ca_orientations WHERE orientation = 4 AND id_agence = ".$id." AND supp = 0 ORDER BY id_orientation ASC LIMIT 6";
	$r =excuteQuery($q);
	if($r['status']){
		while($row = $r['stmt']->fetch(PDO::FETCH_OBJ)){
            $events[] = $row;
		}
	}
	return $events;
}

function getWaitingAvg($agence){
	$q = "SELECT
		count(id_client) as nbVisits,
		AVG(TIME_TO_SEC(case when rdv=  0 then (case when date_priseencharge and date_priseencharge >= date_arrivee then SEC_TO_TIME(TIMESTAMPDIFF(SECOND, date_arrivee, date_priseencharge)) else null end) else null end)) as srdv,
    	AVG(TIME_TO_SEC(case when rdv=  1 then (case when date_priseencharge and date_priseencharge >= date_arrivee then SEC_TO_TIME(TIMESTAMPDIFF(SECOND, date_arrivee, date_priseencharge)) else null end) else null end)) as rdv
		FROM ca_clients
		WHERE id_agence=".$agence." AND date_priseencharge AND date_priseencharge >= date_arrivee AND DATE(date_arrivee) = DATE(now())
	";
	$r =excuteQuery($q);
	if($r['status']){
		$row = $r['stmt']->fetch(PDO::FETCH_OBJ);
		if($row->nbVisits){
		    $rdv = (float) $row->rdv;
		    $srdv = (float) $row->srdv;
		    $row->rdv = ($rdv > 3600 ? floor($row->rdv/3600) : floor($row->rdv/60));
		    $row->rdv_suffix = $rdv > 3600 ? 'H' : 'MIN';
		    $row->srdv = ($srdv > 3600 ? floor($row->srdv/3600) : floor($row->srdv/60));//toTime($row->srdv);
			$row->srdv_suffix = $srdv > 3600 ? 'H' : 'MIN';
			$row->rdv = $row->rdv ? $row->rdv : 1;
			$row->srdv = $row->srdv ? $row->srdv : 1;
		    return $row;
		}
	}
	return array('nbVisits' => 0, 'rdv' => '5', 'rdv_suffix' => 'MIN', 'srdv' => '5', 'srdv_suffix' => 'MIN');
}

function toTime($value){
    if($value){
        $totalSeconds = $value * 60;
        $hours = (int) floor($totalSeconds / 3600);
        $hours = $hours ? (str_pad($hours,2,"0",STR_PAD_LEFT).":") : "";
        $minutes = (int) floor(($totalSeconds - ($hours*3600))/60);
        $minutes = str_pad($minutes,2,"0",STR_PAD_LEFT);
        $seconds = (int) $totalSeconds - ($hours*3600 + $minutes*60);
        $seconds = str_pad($seconds,2,"0",STR_PAD_LEFT);
        return $hours.$minutes.":".$seconds;
    }
    return "00:00";
}

function getNfcConfig($SQLSERVER_DATABASE, $SQLSERVER_DATASOURCE, $SQLSERVER_ID, $SQLSERVER_PASSWORD, $NFC_SERVER_CONNECTION_STRING, $NFC_SERVER_CARD_QUERY){
	$config = null;
	if(isset($SQLSERVER_DATABASE)){
		$config = array(
			"SQLSERVER_DATABASE" => $SQLSERVER_DATABASE,
			"SQLSERVER_DATASOURCE" => $SQLSERVER_DATASOURCE,
			"SQLSERVER_ID" => $SQLSERVER_ID,
			"SQLSERVER_PASSWORD" => $SQLSERVER_PASSWORD,
			"NFC_SERVER_CONNECTION_STRING" => $NFC_SERVER_CONNECTION_STRING,
			"NFC_SERVER_CARD_QUERY" => $NFC_SERVER_CARD_QUERY,
		);
	}	
	return $config;
}

function getBorneDelays(){
	$delays = array('backhomedelay' => null,'screensaverdelay' => null,'nfcwaitdelay' => null);
	$q = "SELECT `option`, `value` FROM `ca_options` WHERE `option` IN ('backhome_delay','screensaver_delay','nfcwait_delay', 'rdv_delay', 'rdv_check_delay', 'rdv_alert_enabled')";
        $result = excuteQuery($q);
	while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)){
            if(in_array($row->option,array('backhome_delay','screensaver_delay','nfcwait_delay', 'rdv_delay', 'rdv_check_delay', 'rdv_alert_enabled'))){
                $delays[$row->option] = $row->value;
            }
	}
	$delays["backhomedelay"] = isset($delays['backhome_delay']) ? ($delays['backhome_delay']*1000) : (isset($GLOBALS["BORNE_CONF"]["BACKHOMEDELAY"])?$GLOBALS["BORNE_CONF"]["BACKHOMEDELAY"]:"10000"); // Default to 10 secondes
	$delays["screensaverdelay"] =  isset($delays['screensaver_delay']) ? ($delays['screensaver_delay']*1000) : (isset($GLOBALS["BORNE_CONF"]["SCREENSAVERDELAY"])?$GLOBALS["BORNE_CONF"]["SCREENSAVERDELAY"]:"180000"); // Default to 3 minutes
	$delays["nfcwaitdelay"] =  isset($delays['nfcwait_delay']) ? ($delays['nfcwait_delay']*1000) : (isset($GLOBALS["BORNE_CONF"]["NFCWAITDELAY"])?$GLOBALS["BORNE_CONF"]["NFCWAITDELAY"]:"10000"); // Default to 10 seconds
	$delays["rdvdelay"] =  isset($delays['rdv_delay']) ? $delays['rdv_delay'] : 60; // Default to 60 minutes
	$delays["rdvcheckdelay"] =  isset($delays['rdv_check_delay']) ? $delays['rdv_check_delay'] : 30; // Default to 30 minutes
	$delays["rdvalertenabled"] =  isset($delays['rdv_alert_enabled']) ? $delays['rdv_alert_enabled'] : 1; // Default to 30 minutes
	
	return $delays;
}

// AFFLUENCE
function getAffluenceCalendar($aid){
	
	$calendar = array();
	$totalCreneaux = $totalVisites = 0;
	$weekDays = array("Lundi","Mardi","Mercredi", "Jeudi","Vendredi","Samedi");
	$creneaux = $GLOBALS["BORNE_CONF"]["AFFLUENCE"]["creneaux"];
	$firstCreneau = $lastCreneau = false;
	$q = "SELECT HOUR(date_arrivee) heure, COUNT(id_client) nb FROM ca_statistiques WHERE rdv=0 AND date_arrivee BETWEEN NOW() - INTERVAL 60 DAY AND NOW() AND id_agence = :id_agence
	AND (HOUR(date_arrivee) = 8 OR HOUR(date_arrivee) = 18) GROUP BY HOUR(date_arrivee) ORDER BY heure";
	$values = array("id_agence" => $aid);
	$r = excuteQuery($q, $values);
	if($r && $r['stmt']->rowCount()){
		while($row = $r['stmt']->fetchObject()) {
			if($row->heure == 8 && $row->nb){
				$firstCreneau = true;
			}
			else if($row->heure == 18 && $row->nb){
				$lastCreneau = true;
			}
		}
	}
	if(!$firstCreneau) {
		array_shift($creneaux);
	}
	if(!$lastCreneau) {
		array_pop($creneaux); 
	}

	$endTime = time();
	$startTime = strtotime('-61 day', $endTime);
	foreach($creneaux as $creneau){
		foreach($weekDays as $name){
			$day = english_dow($name);
			$nbCreneaux = periodcount("next ".$day,$startTime,$endTime, 0);
			$calendar[$creneau][$name] = array("nbVisites"=>0, "nbCreneaux"=>$nbCreneaux, "moyenne"=> 0);
			// $totalCreneaux += $nbCreneaux;
		}
	}
	
	$q = "SELECT WEEKDAY(date_arrivee) semaine, HOUR(date_arrivee) heure, COUNT(id_client) nb FROM ca_statistiques WHERE rdv=0 AND (date_arrivee BETWEEN '".date('Y-m-d', $startTime)." 00:00:00' AND '".date('Y-m-d')." 23:59:59') AND id_agence = :id_agence GROUP BY semaine, heure ORDER BY semaine";
	$values = array("id_agence" => $aid);
	$r = excuteQuery($q, $values);
	if($r && $r['stmt']->rowCount()){
		while($row = $r['stmt']->fetchObject()) {
			$heure = (int)$row->heure;
			$creneau = $heure.'h - '.($heure+1).'h';
			$semaine = $weekDays[$row->semaine];
			$nbCreneaux = $calendar[$creneau][$semaine]["nbCreneaux"];
			$moyenne = $nbCreneaux ? $row->nb / $nbCreneaux : 0;
			if($row->nb > 0){
				$totalCreneaux +=$nbCreneaux;
			}
			else{
				$nbCreneaux = 0;
			}
			$calendar[$creneau][$semaine] = array("nbVisites"=>$row->nb, "nbCreneaux"=>$nbCreneaux, "moyenne" => $moyenne);
			$totalVisites += $row->nb;
		}
	}
	// var_dump($totalVisites); // 3417
	// var_dump($totalCreneaux); //409
	$moyenneGlobale = $totalVisites ? $totalVisites/$totalCreneaux : 0;
	// var_dump($calendar);
	return array("calendar" => $calendar, "moyenneGlobale" => $moyenneGlobale, "weekDays"=>$weekDays, "creneaux" => $creneaux);
}
function english_dow($day){
	$days = array("", "Dimanche" => "Sunday", "Lundi" => "Monday", "Mardi" => "Tuesday", "Mercredi" => "Wednesday", "Jeudi" => "Thursday", "Vendredi" => "Friday", "Samedi" => "Saturday");

	return $days[$day];
}
function periodcount($relativedate, $startdate, $enddate, $counter)
{
    if(strtotime($relativedate, $startdate) > $enddate)
    {
        return $counter;
    }
    else
    {
        return periodcount($relativedate, strtotime($relativedate, $startdate), $enddate, ++$counter);
    }
}

switch($TYPE){
	case 'agence':
		$DATA = array('config'=>array(),'params'=>array(),'fonctions'=>array(),'entites'=>array(),'motifs'=>array(),'orientations'=>array());
		$TJOIN = $LJOIN = $TSELECT = $ASELECT = $LSELECT = $PSELECT = $MSELECT = "";
		if(isset($GLOBALS["BO_CONF"]["AGENCE"]["TYPES_TABLE"]) && $GLOBALS["BO_CONF"]["AGENCE"]["TYPES_TABLE"]) {
			$TJOIN = " LEFT JOIN ca_types t ON t.type = type_agence";
			$TSELECT = ", t.nom as type_label";
		}
		if(isset($GLOBALS["BO_CONF"]["AFA"]) && $GLOBALS["BO_CONF"]["AFA"]){
			$ASELECT = ", is_afa";
		}
		if(isset($GLOBALS["BO_CONF"]["TOGGLE_SHOW_PHOTOS"]) && $GLOBALS["BO_CONF"]["TOGGLE_SHOW_PHOTOS"]){
			$PSELECT = ", show_photos";
		}
		if(isset($GLOBALS["BO_CONF"]["AGENCE"]["MERGING_NFC_BY_AGENCY"]) && $GLOBALS["BO_CONF"]["AGENCE"]["MERGING_NFC_BY_AGENCY"]){		
			$MSELECT = ', merged_nfc';
		}
		$agcLang = "";
		if(in_array('AR',$GLOBALS["BORNE_CONF"]["LANGUAGES"])){
			$LSELECT = ", l.nom_agence as nom_ar";
			$LJOIN .= " LEFT JOIN ca_agences_lang l ON l.id_agence = a.id_agence ";
		}
		$NSELECT = "";
		if(isset($GLOBALS["BO_CONF"]["NFCBYAGENCY"]) && $GLOBALS["BO_CONF"]["NFCBYAGENCY"]){
			$NSELECT = ", nfc";
		}
		$query = "SELECT a.id_agence as 'id', eds, type_agence as 'type'".$TSELECT.$ASELECT.$PSELECT.$LSELECT.$MSELECT.$NSELECT.", code_agence as 'code', a.nom_agence as 'nom', logo, header, meeting, salle, borne_agents_legend as 'legend' FROM ca_agences a ".$TJOIN.$LJOIN." WHERE code_agence = :code_agence";
		
                $values = array('code_agence' => $CODE);
                $result = excuteQuery($query, $values);
                if (!$result['status']) 
                        wts_die (var_dump($result['stmt']->errorInfo()));
                
		$DATA["params"] = new stdClass();
		while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) {
			$IDA = $row->id;
			$DATA["params"] = $row;
			if(isset($GLOBALS["BO_CONF"]["NFCBYAGENCY"]) && $GLOBALS["BO_CONF"]["NFCBYAGENCY"]){
				$agency_nfc = $row->nfc ? true : false;
			}
		}
		$DATA["params"]->primaryColor = isset($GLOBALS["BORNE_CONF"]["COLORS"]["PRIMARYCOLOR"])?$GLOBALS["BORNE_CONF"]["COLORS"]["PRIMARYCOLOR"]:"#81C600";
		$DATA["params"]->errorPopinColor = isset($GLOBALS["BORNE_CONF"]["COLORS"]["ERRORPOPINCOLOR"])?$GLOBALS["BORNE_CONF"]["COLORS"]["ERRORPOPINCOLOR"]:"#E2447F";
		$DATA["params"]->afa_motifs = isset($GLOBALS["BO_CONF"]["AFA_MOTIFS"]) && $GLOBALS["BO_CONF"]["AFA_MOTIFS"] && $ASELECT != "";
		$DATA["params"]->subfolder = isset($GLOBALS["SUBFOLDER"]) && $GLOBALS["SUBFOLDER"] ? $SERVER : '/';
		$DATA["realtime"]["status"] = new StdClass();
		$DATA["realtime"]["status"]->waiting_nb[0] = $GLOBALS["BORNE_CONF"]["WAITINGNB"][0]?getWaitingNb($IDA,0):0;
		$DATA["realtime"]["status"]->waiting_nb[1] = $GLOBALS["BORNE_CONF"]["WAITINGNB"][1]?getWaitingNb($IDA,1):0;

		$langJoin = $visibilityCol = "";
		if(isset($BORNE_CONF["LANGUAGES"]) && count($BORNE_CONF["LANGUAGES"])>1){
			$langCol = ", fl.id_lang as 'lang'";
			$libelleCol = ", fl.libelle as 'nom'";
			$langJoin = " LEFT JOIN ca_fonctions_lang fl ON fl.id_fonction = f.id_fonction";
		}
		else{
			$langCol = ", 'fr' as 'lang'";
			$libelleCol = ", f.libelle as 'nom'";
		}
		if(isset($GLOBALS["BO_CONF"]["CONSEILLER"]["fonction"]["manage_visibility"]) && $GLOBALS["BO_CONF"]["CONSEILLER"]["fonction"]["manage_visibility"]){
			$visibilityCol = ", f.is_visible as visible";
		}
		$query = "SELECT f.id_fonction as 'id'".$langCol.$libelleCol.$visibilityCol." FROM ca_fonctions f".$langJoin." WHERE f.supp=0";
                
                $result = excuteQuery($query);
                if (!$result['status']) 
                        wts_die (var_dump($result['stmt']->errorInfo()));
                                
		while($row = $result['stmt']->fetch(PDO::FETCH_OBJ))  {
			$DATA["fonctions"][] = $row;
		}
		$labelTri = (isset($GLOBALS["BORNE_CONF"]["ENTITY_CHOICE_LINK"]) && $GLOBALS["BORNE_CONF"]["ENTITY_CHOICE_LINK"] == true)?' libelle ASC, ':'';
		$query = "SELECT id_entite as 'id', libelle as 'nom', enabled as 'is_active', picto as 'picto', borne_color, pile_color FROM ca_entites WHERE id_agence = ".$IDA." AND supp=0 AND enabled=1 ORDER BY id ASC";
                $values = array('libelle' => $DATA["params"]->nom);
                $result = excuteQuery($query, $values);
                if (!$result['status']) 
                        wts_die (var_dump($result['stmt']->errorInfo()));
                
		while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) {
			$row->title_without_tags = strip_tags($row->nom);
			$DATA["entites"][] = $row;
		}
		// PCZ : 2017/10/41 :  JE TRIE PAR ORDRE D' "idtri" CROISSANT POUR CHOISIR L'ORDRE D'AFFICHAGE DES MOTIFS SUR LA BORNE EN FONCTION DES CHOIX DE L'AGENCE
		// MAI : Tri par me.id désactivé, le tri est désormais selon le id_motif dans la table ca_motifs
		if($GLOBALS["BO_CONF"]["MOTIFS"]){
			$maxmotifs = (isset($BORNE_CONF["LANGUAGES"]) && count($BORNE_CONF["LANGUAGES"])>1) ? ($GLOBALS["BO_CONF"]["MAXMOTIFS"] * count($BORNE_CONF["LANGUAGES"])) : $GLOBALS["BO_CONF"]["MAXMOTIFS"];
			$limit = (isset($BORNE_CONF["PAGINATION"]["MOTIF"]) && $BORNE_CONF["PAGINATION"]["MOTIF"]["ENABLED"]) ? "" : (" LIMIT ".$maxmotifs);
			$langJoin = "";
			if(isset($BORNE_CONF["LANGUAGES"]) && count($BORNE_CONF["LANGUAGES"])>1){
				$langCol = ", ml.id_lang as 'lang'";
				$titleCol = ", ml.titre as 'firstline'";
				$langJoin = "LEFT JOIN ca_motifs_lang ml ON ml.id_motif = ma.id_motif";
			}
			else{
				$langCol = ", 'fr' as 'lang'";
				$titleCol = ", m.titre as 'firstline'";
			}
			$query = "
				SELECT ma.sort as 'idtri', ma.id_motif as 'id'".$titleCol.", ma.id_orientation as 'orientation', ma.id_agence as 'agence', '' as 'secondline', m.picto as 'picto'".$langCol."
				FROM ca_motif_agence ma
				LEFT JOIN ca_motifs m  ON m.id_motif = ma.id_motif
				".$langJoin."
				LEFT JOIN ca_agences a ON a.id_agence = ma.id_agence
				WHERE ma.id_agence = ".$IDA." AND (ma.supp IS NULL OR ma.supp = 0) AND m.enabled=1 AND a.supp = 0 ORDER BY idtri ASC ".$limit;
			$result = excuteQuery($query);
                        if (!$result['status']) 
                                wts_die (var_dump($result['stmt']->errorInfo()));
                        
			while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) {
				$row->title_without_tags = strip_tags($row->firstline);
				$DATA["motifs"][] = $row;
			}
		}

		$actions = array();
		if(isset($GLOBALS["BO_CONF"]["AFA"]) && $GLOBALS["BO_CONF"]["AFA"]){
			$q = "SELECT titre, code_action as code, id_action as id, is_motif, picto FROM ca_actions";
			$r = excuteQuery($q);
			while($row = $r['stmt']->fetch(PDO::FETCH_OBJ)) {
				$DATA["actions"][] = $row;
			}
		
			$q = "SELECT s.id_scenario as id,s.label, sa.titre, sa.informations, sa.id_motif, sa.switch_time, sa.is_active, GROUP_CONCAT(sa.titre) AS titre_actions, GROUP_CONCAT(cas.id_action) AS id_actions, GROUP_CONCAT(cas.id_orientation) AS orientations
			FROM ca_scenarios s 
			LEFT JOIN ca_agence_scenarios sa ON s.id_scenario = sa.id_scenario AND sa.id_agence = ".$IDA."
			LEFT JOIN ca_agence_scenarios_actions cas ON s.id_scenario = cas.id_scenario AND cas.id_agence = ".$IDA."
			LEFT JOIN ca_actions a ON a.id_action = cas.id_action 
			WHERE sa.is_active = 1
			GROUP BY s.id_scenario";
			$r = excuteQuery($q);
			while($row = $r['stmt']->fetch(PDO::FETCH_OBJ)) {
				$id_actions = explode(',',$row->id_actions);
				$id_orientations = explode(',',$row->orientations);
				$row->actions = array();
				foreach($DATA["actions"] as $key => $action){
					$actionKey = array_search($action->id, $id_actions);
					if($actionKey !== false){
						$action->id_orientation = $id_orientations[$actionKey];
						$row->actions[] = $action;
					}
				}
				unset($row->titre_actions);
				unset($row->id_actions);
				unset($row->orientations);
				$DATA["scenarios"][] = $row;
			}
													   
									 
																	   
																								 
	
		}

		if(isset($BORNE_CONF["LANGUAGES"]) && count($BORNE_CONF["LANGUAGES"])>1){
			$query = "SELECT GROUP_CONCAT(DISTINCT(id_orientation)) orientations FROM ca_conseiller_agence WHERE id_agence = ".$IDA." AND id_entite IN (SELECT id_entite FROM ca_entites WHERE supp =0) ";
			$result = excuteQuery($query);
            if (!$result['status']) 
                    wts_die (var_dump($result['stmt']->errorInfo()));
            $orientations = $result ? $result['stmt']->fetch(PDO::FETCH_OBJ)->orientations : "";

			if($GLOBALS["BORNE_CONF"]["RDV_CALENDAR"]){
				$query = "SELECT GROUP_CONCAT(DISTINCT(id_orientation)) orientations FROM ca_conseiller_agence ca  
				LEFT JOIN ca_conseillers c ON ca.id_conseiller = c.id_conseiller
				INNER JOIN ca_rdv_calendar r ON r.matricule = c.id_agent 
				INNER JOIN ca_agences a ON a.eds = r.eds  
				WHERE r.date_debut >= CURRENT_DATE() AND r.date_fin >= CURRENT_DATE() AND a.id_agence =".$IDA;
				$result = excuteQuery($query);
				if (!$result['status']) 
						wts_die (var_dump($result['stmt']->errorInfo()));
				$oq = $result['stmt']->rowCount() > 0 ? $result['stmt']->fetch(PDO::FETCH_OBJ)->orientations : "";
				$orientations .= $oq ? (','.$oq) : "";
			}

			$orientationsQ = $orientations ? (" OR o.id_orientation IN (".$orientations.")") : "";

			$query = "SELECT o.id_orientation as 'id', id_entite as 'entite', ol.texte as 'message', id_lang as 'lang', orientation as 'type', salle FROM ca_orientations o LEFT JOIN ca_orientations_lang ol ON ol.id_orientation = o.id_orientation	WHERE supp=0 AND ((id_agence = ".$IDA." AND id_entite IN (SELECT id_entite FROM ca_entites WHERE supp =0))".$orientationsQ.") ORDER BY o.id_orientation ASC";
            $result = excuteQuery($query);
            if (!$result['status']) 
                    wts_die (var_dump($result['stmt']->errorInfo()));
		}
		else{
			$query = "SELECT GROUP_CONCAT(DISTINCT(id_orientation)) orientations FROM ca_conseiller_agence WHERE id_agence = ".$IDA." AND id_entite IN (SELECT id_entite FROM ca_entites WHERE supp =0) ";
			$result = excuteQuery($query);
            if (!$result['status']) 
                    wts_die (var_dump($result['stmt']->errorInfo()));
   
            $orientations = $result ? $result['stmt']->fetch(PDO::FETCH_OBJ)->orientations : "";

			if($GLOBALS["BORNE_CONF"]["RDV_CALENDAR"]){
				$query = "SELECT GROUP_CONCAT(DISTINCT(id_orientation)) orientations FROM ca_conseiller_agence ca  
				LEFT JOIN ca_conseillers c ON ca.id_conseiller = c.id_conseiller
				INNER JOIN ca_rdv_calendar r ON r.matricule = c.id_agent 
				INNER JOIN ca_agences a ON a.eds = r.eds  
				WHERE r.date_debut >= CURRENT_DATE() AND r.date_fin >= CURRENT_DATE() AND a.id_agence =".$IDA;
				$result = excuteQuery($query);
				if (!$result['status']) 
						wts_die (var_dump($result['stmt']->errorInfo()));
				$orientations .= $result ? (','.$result['stmt']->fetch(PDO::FETCH_OBJ)->orientations) : "";
			}

			$orientationsQ = $orientations ? (" OR id_orientation IN (".$orientations.")") : "";

			$query = "SELECT id_orientation as 'id', id_entite as 'entite', texte as 'message', 'fr' as 'lang', orientation as 'type', salle FROM ca_orientations WHERE supp=0 AND (id_agence = ".$IDA."".$orientationsQ.") ORDER BY id_orientation ASC";
			$result = excuteQuery($query);
                        if (!$result['status']) 
                                wts_die (var_dump($result['stmt']->errorInfo()));
		}
		while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) {
			$DATA["orientations"][] = $row;
		}
		$DATA["config"] = new StdClass();
		$DATA["config"]->borne = $GLOBALS["BORNE_CONF"];
		$DATA["config"]->backoffice = $GLOBALS["BO_CONF"];
		$DATA["config"]->pile = $GLOBALS["PILE_CONF"];
		$DATA["config"]->screensaver = isset($GLOBALS["BO_CONF"]["SCREENSAVER"])?$GLOBALS["BO_CONF"]["SCREENSAVER"]:false;
		$DATA["config"]->accompanying = isset($GLOBALS["BO_CONF"]["ACCOMPANYING"])?$GLOBALS["BO_CONF"]["ACCOMPANYING"]:false;
		$DATA["config"]->multiplemotifs = isset($GLOBALS["BORNE_CONF"]["MULTIPLEMOTIFS"])?$GLOBALS["BORNE_CONF"]["MULTIPLEMOTIFS"]:false;
		$DATA["config"]->mergeentities = isset($GLOBALS["BORNE_CONF"]["MERGEENTITIES"])?$GLOBALS["BORNE_CONF"]["MERGEENTITIES"]:false;
		$DATA["config"]->hasentities = isset($GLOBALS["BO_CONF"]["ENTITIES"])?$GLOBALS["BO_CONF"]["ENTITIES"]:false;
		$DATA["config"]->colorbyentity = isset($GLOBALS["BO_CONF"]["COLORBYENTITY"])?$GLOBALS["BO_CONF"]["COLORBYENTITY"]:false;
		$DATA["config"]->motifsorientations = isset($GLOBALS["BO_CONF"]["MOTIF"]["ORIENTATIONS"])?$GLOBALS["BO_CONF"]["MOTIF"]["ORIENTATIONS"]:false;
		$DATA["config"]->titles = isset($GLOBALS["BORNE_CONF"]["TITLES"])?$GLOBALS["BORNE_CONF"]["TITLES"]:false;
		$DATA["config"]->titles["SCREENSAVER_TEXT"] = ($DATA["config"]->titles["SCREENSAVER_TEXT"])?$DATA["config"]->titles["SCREENSAVER_TEXT"]:"Touchez l'écran pour vous annoncer";
		$DATA["config"]->titles["MOTIF_VALIDATE"] = isset($DATA["config"]->titles["MOTIF_VALIDATE"])?$DATA["config"]->titles["MOTIF_VALIDATE"]:"Valider mon / mes choix";
		$DATA["config"]->languages = getBorneTranslations($DATA["params"]->type);
		$DATA["config"]->nfctimeup = isset($GLOBALS["BORNE_CONF"]["NFCTIMEUP"])?$GLOBALS["BORNE_CONF"]["NFCTIMEUP"]:"60"; // Default to 1 minute
		if(isset($GLOBALS["BORNE_CONF"]["NFC"]) && $GLOBALS["BORNE_CONF"]["NFC"])
                $DATA["config"]->nfconfig = getNfcConfig($SQLSERVER_DATABASE, $SQLSERVER_DATASOURCE, $SQLSERVER_ID, $SQLSERVER_PASSWORD, $NFC_SERVER_CONNECTION_STRING, $NFC_SERVER_CARD_QUERY);
		
                $DATA["config"]->clientcivilite = isset($GLOBALS["BO_CONF"]["CLIENT"]["civilite"])?$GLOBALS["BO_CONF"]["CLIENT"]["civilite"]:true;
		$DATA["config"]->clientcompany = isset($GLOBALS["BO_CONF"]["CLIENT"]["company"])?$GLOBALS["BO_CONF"]["CLIENT"]["company"]:false;
		$DATA["config"]->clientaccomp = isset($GLOBALS["BO_CONF"]["ACCOMPANYING"])?$GLOBALS["BO_CONF"]["ACCOMPANYING"]:false;
		$DATA["config"]->fields = isset($GLOBALS["BORNE_CONF"]["FIELDS"])?$GLOBALS["BORNE_CONF"]["FIELDS"]:array("COMPANY" => array("REQUIRED" => true), "FIRSTNAME" => array("REQUIRED" => false), "LASTNAME" => array("REQUIRED" => true), "GENDER" => array("REQUIRED" => true));
		$DATA["config"]->waitimg = isset($GLOBALS["BO_CONF"]["WAITIMG"])?$GLOBALS["BO_CONF"]["WAITIMG"]:true;
                $typeLabel = "";
                if($TSELECT !="")
                    $typeLabel = $DATA["params"]->type_label ;
                $DATA["config"]->choices = getAgencyChoices($DATA["params"]->type, $typeLabel);
               
                    
		$DATA["config"]->screens = isset($GLOBALS["BORNE_CONF"]["SCREENS"])?$GLOBALS["BORNE_CONF"]["SCREENS"]:array(0 => array("choice-page","srdv-page","keyboard-page","wait-page"), 1 => array("choice-page","rdv-page","keyboard-page","wait-page"));
		$DATA["config"]->fields["FIRSTNAME"]["ENABLED"] = isset($GLOBALS["BORNE_CONF"]["FIELDS"]["FIRSTNAME"]["ENABLED"])?$GLOBALS["BORNE_CONF"]["FIELDS"]["FIRSTNAME"]["ENABLED"]:true;
		$DATA["config"]->fields["LASTNAME"]["ENABLED"] = isset($GLOBALS["BORNE_CONF"]["FIELDS"]["LASTNAME"]["ENABLED"])?$GLOBALS["BORNE_CONF"]["FIELDS"]["LASTNAME"]["ENABLED"]:true;
		$DATA["config"]->fields["GENDER"]["ENABLED"] = isset($GLOBALS["BORNE_CONF"]["FIELDS"]["GENDER"]["ENABLED"])?$GLOBALS["BORNE_CONF"]["FIELDS"]["GENDER"]["ENABLED"]:true;
		$DATA["config"]->waitingnb[0] = isset($GLOBALS["BORNE_CONF"]["WAITINGNB"][0])?$GLOBALS["BORNE_CONF"]["WAITINGNB"][0]:false;
		$DATA["config"]->waitingnb[1] = isset($GLOBALS["BORNE_CONF"]["WAITINGNB"][1])?$GLOBALS["BORNE_CONF"]["WAITINGNB"][1]:false;
		$DATA["config"]->borne["GLOBAL_NAV_ICONS_PATH"] = isset($DATA["config"]->borne["GLOBAL_NAV_ICONS_PATH"])?$DATA["config"]->borne["GLOBAL_NAV_ICONS_PATH"]:"./assets/img";
		$DATA["config"]->borne["templates"] = getBorneTemplates($SERVER);		
		$delays = getBorneDelays();
		$DATA["config"]->backhomedelay = $delays["backhomedelay"];
		$DATA["config"]->screensaverdelay = $delays["screensaverdelay"];
		$DATA["config"]->nfcwaitdelay = $delays["nfcwaitdelay"];
		$DATA["config"]->rdvdelay = $delays["rdvdelay"];
		$DATA["config"]->rdvcheckdelay = $delays["rdvcheckdelay"];
		$DATA["config"]->rdvalertenabled = $delays["rdvalertenabled"];
		
		if(!empty($GLOBALS["BORNE_CONF"]["AFFLUENCE"])){
			$DATA["AFFLUENCE"] = getAffluenceCalendar($IDA);
		}

		if(isset($GLOBALS["BORNE_CONF"]["SHOW_DMA"]) && $GLOBALS["BORNE_CONF"]["SHOW_DMA"]){
			$DATA["config"]->borne["DMA"] = getWaitingAvg($IDA);
		}
		if(isset($GLOBALS["BO_CONF"]["AGENCE"]["MULTIPLE_TYPES"]) && $GLOBALS["BO_CONF"]["AGENCE"]["MULTIPLE_TYPES"] && isset($GLOBALS["BORNE_CONF"]["NFCBYAGENCY"]) && $GLOBALS["BORNE_CONF"]["NFCBYAGENCY"]){
			$DATA["config"]->borne["NFC"] = getAgencyNFC($DATA["params"]->type_label);
		}
		if(isset($_REQUEST["nfc"])){
			$DATA["config"]->borne["NFC"] = !!$_REQUEST["nfc"];
		}
		
		if(isset($GLOBALS["BO_CONF"]["AGENCE"]["MERGING_NFC_BY_AGENCY"]) && $GLOBALS["BO_CONF"]["AGENCE"]["MERGING_NFC_BY_AGENCY"]){	
			if($DATA["params"]->merged_nfc == 1){
				$DATA["config"]->borne["MERGEKEYBOARDNFC"] = $DATA["params"]->merged_nfc;				
				$DATA["config"]->borne["templates"]["nfc-page"] = "../../assets/templates/borne/nfc-merged-page.html";
			}
		}
		if(isset($GLOBALS["BO_CONF"]["NFCBYAGENCY"]) && $GLOBALS["BO_CONF"]["NFCBYAGENCY"]){
			$DATA["config"]->borne["NFC"] = $agency_nfc;
		}
		
		// If NFC is active but no configs
		$DATA["config"]->borne["NFC_CONFIG_ERROR"] = false;
		if((empty($NFC_SERVER_CONNECTION_STRING) || empty($NFC_SERVER_CARD_QUERY)) && $GLOBALS["BORNE_CONF"]["NFC"]) {
			// $DATA["config"]->borne["NFC"] = false;
			$DATA["config"]->borne["NFC_CONFIG_ERROR"] = true;
		}
		if($GLOBALS["BO_CONF"]["AGENCE"]["SIEGE"]["ENABLED"] && in_array('events', $GLOBALS["BO_CONF"]["AGENCE"]["SIEGE"]["CHOICES"])){
			$DATA["events"] = getEvents($IDA);
		}
		if($GLOBALS["BO_CONF"]["AGENCE"]["SIEGE"]["ENABLED"] && in_array('site-map', $GLOBALS["BO_CONF"]["AGENCE"]["SIEGE"]["CHOICES"])){
			$DATA["siteMap"] = getSiteMap($IDA);
		}
		$q_ship = "SELECT id_livraison, id_agence, texte, salle FROM ca_livraisons WHERE id_agence = ".$IDA." LIMIT 1";
		$stmt_ship = excuteQuery($q_ship);
		$res_ship = $stmt_ship['stmt'];
		$o_ship = $res_ship->fetchObject();
		$DATA["ship"] = $o_ship;
		$BORNEIP = $_SERVER['REMOTE_ADDR'];
		$BORNEJOUR = date('Y-m-d');

		$qx = 'INSERT INTO ca_bornes (id_agence, nom_agence, ip, jour) '
                    . 'VALUES (:id_agence, :nom_agence, :ip, :jour)';
                
                $values = array('id_agence' => $IDA,'nom_agence' => $DATA["params"]->nom,'ip' => $BORNEIP,'jour' => $BORNEJOUR);
                $rx = excuteQuery($qx, $values);
	break;
	case 'conseillers':
		$leftjoin = "";//$GLOBALS["BO_CONF"]["ENTITELINKBYID"] ? "" : "LEFT JOIN ca_entites e ON c.groupe = e.entite AND c.id_agence = e.id_agence";
		$entiteCol = "IF(ca.id_entite AND c.id_agence != ca.id_agence, ca.id_entite, groupe) as 'entite'";//$GLOBALS["BO_CONF"]["ENTITELINKBYID"] ? "groupe as 'entite'" : "e.id_entite as 'entite'";
		// $query = "SELECT id_conseiller as 'id', id_agent as 'mat', civ, nom, prenom, '0' as 'myst', photo, orientation, pro as 'mobile', inactif, IF(fonction<3, fonction, 3) as fonction, label_fonction, ".$entiteCol."
		// FROM ca_conseillers c
		// ".$leftjoin."
		// WHERE c.id_agence = (SELECT id_agence FROM ca_agences WHERE code_agence = '".$CODE."') AND c.supp=0 AND c.inactif=0 GROUP BY c.id_conseiller ORDER BY fonction ASC, nom ASC";
                $values = array('id_agence'=>$IDA);
                $filterMobility = "AND c.id_agence=:id_agence";
                if($GLOBALS["BO_CONF"]["MOBILITY"]){
					$dla = date('Y-m-d');
                   $filterMobility = "AND (
                            ((c.id_agence=:id_agence OR ca.id_agence=:id_agence) AND status = 0) OR
							(
                                    (temporaire = 1 OR status = -1) ";
                                    // (last_agency = :id_agence OR c.id_agence=:id_agence) AND
                    /*$filterMobility .= " 
									TIMESTAMPDIFF(SECOND,ca.last_active,now())<=:last_active
                            )
                    )" ;  */
					$filterMobility .= " AND ca.last_active LIKE '".$dla."%')) ";
                  $values['last_active'] = $GLOBALS["PILE_CONF"]["KEEPALIVE"];
                }
		
		// $orientationMobility = $GLOBALS["BO_CONF"]["MOBILITY"] ? ", IF(c.id_agence='".$IDA."', orientation, (SELECT o.id_orientation FROM ca_orientations o WHERE o.id_entite = ca.id_entite AND orientation = '2' ORDER BY o.id_orientation ASC LIMIT 1)) orientation" : ", orientation";
		$orientationMobility = ", IF(ca.id_orientation, ca.id_orientation, (SELECT o.id_orientation FROM ca_orientations o WHERE o.id_entite = ca.id_entite AND orientation = '2' ORDER BY o.id_orientation ASC LIMIT 1)) orientation";
		$function_tri = $GLOBALS["BORNE_CONF"]["FUNCTION_TRI"] ? $GLOBALS["BORNE_CONF"]["FUNCTION_TRI"] : '';
		$functionTri = (isset($GLOBALS["BORNE_CONF"]["NO_STICKED_DIRECTOR"]) && $GLOBALS["BORNE_CONF"]["NO_STICKED_DIRECTOR"]) ? $function_tri : "fonction_tri ASC, ";
		$cnsLang = "";
		$entite_tri = isset($GLOBALS["BORNE_CONF"]["ORDER_BY_ENTITE"]) && !empty($GLOBALS["BORNE_CONF"]["ORDER_BY_ENTITE"]) ? $GLOBALS["BORNE_CONF"]["ORDER_BY_ENTITE"] :"";
		if(in_array('AR',$GLOBALS["BORNE_CONF"]["LANGUAGES"])){
			$cnsLang = ", l.nom as nom_ar, l.prenom as prenom_ar";
			$leftjoin .= "LEFT JOIN ca_conseillers_lang l ON l.id_conseiller = c.id_conseiller ";
		}
		$sort_function = (isset($CAISSENAME) && $CAISSENAME == "cabp") ? ", IF(fonction='1', 1, 0) directeur, IF(ca.id_fonction='4', 2, IF(ca.id_fonction='1', 1, 0)) AS sort_function" : "";
		$functionTri = (isset($CAISSENAME) && $CAISSENAME == "cabp") ? "sort_function ASC, " : $functionTri;
		$query = "SELECT c.id_conseiller as 'id', id_agent as 'mat', civ, c.nom, c.prenom, '0' as 'myst', photo".$orientationMobility.$cnsLang.", pro as 'mobile', inactif, COALESCE(ca.id_fonction, fonction) as fonction, IF(COALESCE(ca.id_fonction, fonction)<3, COALESCE(ca.id_fonction, fonction), 3) as fonction_tri, label_fonction , ".$entiteCol.$sort_function."
			FROM ca_conseillers c
			LEFT OUTER JOIN ca_conseiller_agence ca ON ca.id_agence = :id_agence AND ca.id_conseiller = c.id_conseiller
			".$leftjoin."
			WHERE c.supp=0 AND c.inactif = 0
			".$filterMobility."
			GROUP BY c.id_conseiller
			ORDER BY ".$entite_tri.$functionTri."c.nom ASC";
		$result = excuteQuery($query,$values);


                        if (!$result['status']) 
                                wts_die (var_dump($result['stmt']->errorInfo()));
                        
		while($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) {
			$DATA[] = $row;
		}
	break;
}
//var_dump($DATA);
echo json_encode($DATA);
?>