<?php
	include("connexion_db.php");
	
	$resultat = '';
	$date = date('Y-m-d');
	$flag = 'nok';
	
	$__ETABLISSEMENT__ = '';
	$__DOCTEUR__ = '';
	$__PATIENTS__ = '';
	$__DONNEESCLINIMETRE__ = '';
	$__GRILLES__ = '';
	$__PARAMETRES__ = '';
	$__REPONSEPATIENT__ = '';		
	
	// Si le docteur est bien identifié
	if(isset($_GET['login']) && $_GET['login'] != '' &&
	isset($_GET['passwd']) && $_GET['passwd'] != '')
	{

		// On cherche dans la base si cet utilisateur existe
		$sql = "SELECT * FROM docteur WHERE login = '" . $_GET['login'] . "' AND pwd = '" . $_GET['passwd'] . "'";
		$req = cleanPDOQuery($sql);
		$num = $req->rowCount();
		$resultat['sql'] = $sql;
		
		// Si l'utilisateur est reconnu...
		if($num == 1) {
			$res = $req->fetch();

			// On récupère des infos générales (etablissement, docteur, patient, grille)
			$__IDETABLISSEMENT__ = $res['id_etablissement'];		// Etablissement fréquenté
			$__IDDOCTEUR__ = $res['id'];
			$__IDPATIENT__ = $res['id_patient'];					// Dernier patient suivi
			$__IDGRILLE__ = $res['id_grille'];						// Dernière grille utilisée
			
			
			// On récuère des infos sur l'etablissement dans lequel le docteur travail
			$sql10 = "SELECT * FROM etablissement WHERE id = '" . $__IDETABLISSEMENT__ . "'";
			$req10 = cleanPDOQuery($sql10);
			$res10 = $req10->fetch();
			$resultat['sql'] = $sql10;
			
			$__ETABLISSEMENT__ = array(
				"id" => $__IDETABLISSEMENT__,
				"libelle" => $res10['libelle'],
				"codeconfi" => $res10['codeconfi'],
				"nb_cnx_max" => $res10['nb_cnx_max']
			);
			
			
			// On récupère des infos sur le docteur
			$__DOCTEUR__ = array(
				"id" => $__IDDOCTEUR__,
				"login" => $_GET['login'],
				"passwd" => $_GET['passwd'],
				"idLastPatient" => $__IDPATIENT__,
				"idLastGrille" => $__IDGRILLE__,
				"nb_cnx" => $res['nb_cnx']
			);
	
			
			// On récupère des infos sur les patients que le docteur suit
			$sql0 = "SELECT * FROM patient WHERE id_docteur = '" . $__IDDOCTEUR__ . "'";
			$req0 = cleanPDOQuery($sql0);
			$resultat['sql'] = $sql0;
			$__PATIENTS__['length'] = $req0->rowCount();
			
			while($res0 = $req0->fetch()) {
				
				// Serialisation du patient courant
				$patient = array(
					"nom" => $res0['nom'],
					"prenom" => $res0['prenom'],
					"sexe" => $res0['sexe'],
					"date_naissance" => dateSQLtoJS($res0['date_naissance']),
					"adresse" => $res0['adresse'],
					"ville" => $res0['ville'],
					"num_dossier" => $res0['num_dossier'],
					"num_chambre" => $res0['chambre']
				);
				
				// Ajout a la collecion de patients
				$__PATIENTS__[$res0['id']] = $patient;		
			}
				

			// On récupèe des infos sur les grilles disponibles
			$sql2 = "SELECT * FROM liste_grilles";
			$req2 = cleanPDOQuery($sql2);
			$resultat['sql'] = $sql2;
			$__GRILLES__['length'] = $req2->rowCount();
			
			while($res2 = $req2->fetch()) {
			
				// On récupère les informations sur les fonctions de la grille courante
				$sql5 = "SELECT * FROM grillesfonctions WHERE id_grille = '" . $res2['id'] . "' ORDER BY ordre ASC, id_fonction ASC";
				$req5 = cleanPDOQuery($sql5);
				$fonction = '';
				$resultat['sql'] = $sql5;
					
				while($res5 = $req5->fetch()) {
					$fonction[] = $res5['id_fonction'];
				}
				
				// On récupère les informations sur les champs de la grille courante
				$sql3 = "SELECT * FROM libdesc_grille WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req3 = cleanPDOQuery($sql3);
				$champs = '';
				$resultat['sql'] = $sql3;
				
				while($res3 = $req3->fetch()) {
					$champs[] = $res3['description_champ'];
				}
				
				
				/*		à changer		*/
				
				
				// On récupère les informations sur la description de la grille courante
				$sql6 = "SELECT * FROM libdesc_grille WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req6 = cleanPDOQuery($sql6);
				$descfonct = '';
				$resultat['sql'] = $sql6;
					
				while($res6 = $req6->fetch()) {
					$descfonct[] = $res6['descr_fonct'];
				}
				
				// On récupère les valeurs de la grille courante
				$sql7 = "SELECT * FROM trad_grilles WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req7 = cleanPDOQuery($sql7);
				$valeurfonct = '';
				$resultat['sql'] = $sql7;
					
				while($res7 = $req7->fetch()) {
					$valeurfonct[] = $res7['valeur_grille'];
				}
				
				// On récupère les informations sur la subgrille de la grille courante
				$sql4 = "SELECT * FROM trad_grilles WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req4 = cleanPDOQuery($sql4);
				$desc = '';
				$resultat['sql'] = $sql4;
					
				while($res4 = $req4->fetch()) {
					$desc[] = $res4['description_champ'];
				}
				
				// On récupère les informations sur la description des champs de la grille courante
				$sql8 = "SELECT * FROM champ_descr WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req8 = cleanPDOQuery($sql8);
				$champdesc = '';
				$resultat['sql'] = $sql8;
				
				$i=0;
				while($res8 = $req8->fetch()) {
					$champdesc[$i][0] = $res8['descr_champ'];
					$champdesc[$i][1] = $res8['nom_champ'];
					$i++;
				}
				
				// On récupère les informations sur les questions des champs de la grille courante
				$sql9 = "SELECT * FROM questionnaireid WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req9 = cleanPDOQuery($sql9);
				$question = '';
				$resultat['sql'] = $sql9;
				
				$i=0;
				while($res9 = $req9->fetch()) {
					$question[$i][0] = $res9['question'];
					$question[$i][1] = $res9['nom_champ'];
					$question[$i][2] = $res9['id_question'];
					$i++;
				}
				
				// On récupère les informations sur les réponses des champs de la grille courante
				$sql11 = "SELECT * FROM reponse WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req11 = cleanPDOQuery($sql11);
				$reponse = '';
				$resultat['sql'] = $sql11;
				
				$i=0;
				while($res11 = $req11->fetch()) {
					$reponse[$i][0] = $res11['reponse'];
					$reponse[$i][1] = $res11['nom_champ'];
					$reponse[$i][2] = $res11['id_question'];
					$i++;
				}
				
				// On récupère les informations sur les poids de la grille courante
				$sql16 = "SELECT * FROM libdesc_grille WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req16 = cleanPDOQuery($sql16);
				$poids = '';
				$resultat['sql'] = $sql16;
				
				while($res16 = $req16->fetch()) {
				$poids[] = $res16['poids'];
				}
				
				// On récupère les informations sur l'utilisation max de la grille courante
				$sql17 = "SELECT * FROM liste_grilles WHERE id_grille = '" . $res2['id'] . "' ORDER BY id_grille ASC, id ASC";
				$req17 = cleanPDOQuery($sql17);
				$utiMax = '';
				$nbUti ='';
				$resultat['sql'] = $sql17;
				
				while($res17 = $req17->fetch()) {
				$utiMax[] = $res17['utiMax'];
				$nbUti[] = $res17['nbUti'];
				}
				
				
				// Serialisation de la grille courante
				$grille = array(
					"libelle" => $res2['libelle'],
					"nivGrilleMin" => $res2['lvlgrillemin'],
					"nivGrilleMax" => $res2['lvlgrillemax'],
					"seuil" => $res2['seuil'],
					"idFonctions" => $fonction,
					"libelleFonctions" => $champs,
					"descriptionFonctions" => $descfonct,
					"valeurFonctions"=>$valeurfonct,
					"listeDescValeursGrille" => $desc,
					"nombreDeColonne" => $res2['colonne'],
					"descriptionGrille" => $res2['descr_grille'],
					"questionLoupe"=> $question,
					"reponseLoupe"=> $reponse,
					"descriptionChamp"=> $champdesc,
					"utiMax"=> $utiMax,
					"nbUti"=> $nbUti,
					"poids" => $poids
				);
				
				// Ajout a la collecion de grilles
				$__GRILLES__[$res2['id']] = $grille;	
			}
		
			
			
			$sql1 = "SELECT * FROM donnees_grilles WHERE id_docteur = '" . $__IDDOCTEUR__ . "' ORDER BY id_patient ASC, id_champ ASC, donnees_grilles.date DESC";
			$req1 = cleanPDOQuery($sql1);
			$resultat['sql'] = $sql1;
				
			// On met en forme la variable __DONNEESCLINIMETRE__
			while($res1 = $req1->fetch()) {
				
				// Iterations suivantes : on créé les branches du noeud 'id_patient'
				if(isset($__DONNEESCLINIMETRE__[$res1['id_patient']])) {
									
					// Iterations suivantes : on créé les branches du noeud 'id_champ'	
					if(isset($__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_champ']])) {
						
						// Iterations suivantes : on créé les branches du noeud 'date'	
						/*if(isset($__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_champ']][dateSQLtoJS($res1['date'])])) {	
							
							$__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_champ']][dateSQLtoJS($res1['date'])][] = array(
								'id' => $res1['id'],
								'valeur' => $res1['valeur']);
						}
										
						// Troisième jet : on créé le noeud au rang 'date'	
						else {	*/
							$__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_champ']][dateSQLtoJS($res1['date'])] = array(
								'id' => $res1['id'],
								'valeur' => $res1['valeur']);
							
						//}
					}
						
					// Deuxième jet : on créé le noeud au rang 'id_champ'
					else {
						$__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_champ']] = array(
							dateSQLtoJS($res1['date']) => array(
								'id' => $res1['id'],
								'valeur' => $res1['valeur']));
					}
				}
								
				// Premier jet : on créé le noeud au rang 'id_patient'
				else { 
					$__DONNEESCLINIMETRE__[$res1['id_patient']] = array(
						$res1['id_champ'] => array(		
							dateSQLtoJS($res1['date']) => array(
								'id' => $res1['id'],
								'valeur' => $res1['valeur'])));
				}
			}
			
			
			//On prend les réponses à la loupe des patients
			$sql12 = "SELECT * FROM reponse_patient WHERE id_docteur = '" . $__IDDOCTEUR__ . "' ORDER BY id_patient ASC";
			$req12 = cleanPDOQuery($sql12);
			$checked='';
			$resultat['sql'] = $sql12;
			
			// On met en forme la variable __REPONSEPATIENT__
			while($res12 = $req12->fetch()) 
			{
				// Iterations suivantes : on créé les branches du noeud 'id_patient'
				if(isset($__REPONSEPATIENT__[$res12['id_patient']])) 
				{								
					// Iterations suivantes : on créé les branches du noeud 'id_grille'	
					if(isset($__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']])) 
					{
						// Iterations suivantes : on créé les branches du noeud 'nom_champ'	
						if(isset($__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][$res12['id_question']])) 
						{
							if(isset($__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][$res12['id_question']][strtoupper($res12['nom_champ'])]))
							{
								$__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][$res12['id_question']][strtoupper($res12['nom_champ'])][strtoupper($res12['reponse'])] = array(
									'checked' => $res12['checked']);
							}
							else
							{
								$__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][$res12['id_question']][strtoupper($res12['nom_champ'])] = array(
									strtoupper($res12['reponse']) => array(
										'checked' => $res12['checked']));
							}
						}
						else
						{
							$__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][$res12['id_question']] = array(
								strtoupper($res12['nom_champ']) => array(
									strtoupper($res12['reponse']) => array(
										'checked' => $res12['checked'])));
						}
					}
					// Deuxième jet : on créé le noeud au rang 'id_grille'
					else 
					{
						$__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']] = array(
							$res12['id_question'] => array(
								strtoupper($res12['nom_champ']) => array(
									strtoupper($res12['reponse'])  => array(
										'checked' => $res12['checked']))));
					}
				}				
				// Premier jet : on créé le noeud au rang 'id_patient'
				else 
				{ 
					$__REPONSEPATIENT__[$res12['id_patient']] = array(
						$res12['id_grille'] => array(
							$res12['id_question'] => array(
								strtoupper($res12['nom_champ']) => array(
									strtoupper($res12['reponse'])  => array(
										'checked' => $res12['checked'])))));
				}
				
				
				/*$checked[] = $res12['checked'];	

				$__REPONSEPATIENT__[$res12['id_patient']][$res12['id_grille']][strtoupper($res12['nom_champ'])][$res12['id_question']][strtoupper($res12['reponse'])] = array(
				'checked' => $checked);*/		
			}
					 
			
			
			// On récupère des informations sur globales sur l'application
			$sql5 = "SELECT * FROM parametre WHERE id_etablissement = '" . $__IDETABLISSEMENT__ . "'";
			$req5 = cleanPDOQuery($sql5);
			$res5 = $req5->fetch();
			$resultat['sql'] = $sql5;
			
			$__PARAMETRES__['thermoPicture'] = $res5['thermo'];
			$__PARAMETRES__['thermoTaille'] = $res5['taille'];
			$__PARAMETRES__['dateLastSync'] = dateSQLtoJS(date('Y-m-d'));
			
			// Tout s'est bien déroulé !
			$flag = 'ok';
		}
	}
	
	// Préparation des données
	$resultat['flag'] = $flag;
	
	$resultat['etablissement'] = $__ETABLISSEMENT__;
	$resultat['docteur'] = $__DOCTEUR__;
	$resultat['patients'] = $__PATIENTS__;
	$resultat['grilles'] = $__GRILLES__;
	$resultat['donneesclinimetre'] = $__DONNEESCLINIMETRE__;
	$resultat['parametres'] = $__PARAMETRES__;
	$resultat['reponsepatient'] = $__REPONSEPATIENT__;
	
	$resultat['date'] = $date;
	
	// Envoie des données
	header('Content-Type: application/json');
 	echo json_encode($resultat);
	
?>