<?php 

	include("connexion_db.php");

	$resultat = '';
	$flag = 'nok';
	$log = '';

	// Verification de la persistance des données
	if ($_SERVER['REQUEST_METHOD'] === 'POST' &&
		isset($_POST['id_Etablissement']) &&
		isset($_POST['docteur']) &&
		isset($_POST['donnees_Clinimetre_Valeur']) &&
		isset($_POST['donnees_Clinimetre_Objectifs']) &&
		isset($_POST['date_Objectifs']) &&
		isset($_POST['id_Fonctions'])) {
		

		$log .= 'Verification de la persistance des données : ok. ';



		// Initialisation des variables
		$docteur = json_decode($_POST["docteur"], true);

		$idEtablissement = $_POST['id_Etablissement'];
		$idDocteur = $docteur["id"];
		$idPatient = $docteur["idLastPatient"];
		$idGrille = $docteur["idLastGrille"];
		$donneesClinimetreValeur = $_POST['donnees_Clinimetre_Valeur'];
		$currentDate = date('Y-m-d');
		$donneesClinimetreObj = $_POST['donnees_Clinimetre_Objectifs'];
		$dateObj = dateJStoSQL($_POST['date_Objectifs']);
		$idFonctions = $_POST['id_Fonctions'];


		$log .= 'Initialisation des variables : ok. ';
		$log .= 'Début enregistrement aujourd\'hui. ';

		// AVANT : $idFonctions[$i]


		// On boucle sur le nombre de données clinimetre d'aujourd'hui à enregistrer
		for ($i = 0; $i < count($donneesClinimetreValeur); $i++) {

			if($donneesClinimetreValeur[$i]!=0 || $donneesClinimetreValeur[$i]!="0")
			{
			
				// Etat du traitement
				$flag = 'nok';

				// On détermine si l'enregistrement est un insert ou un update
				$sql1 = "SELECT * FROM donnees_grilles WHERE id_grille = '" . $idGrille . "' AND id_champ = '" . $i . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date = '" . $currentDate . "'";
				$req1 = cleanPDOQuery($sql1);
				$nbRes1 = $req1->rowCount();

			
				
				// Si aucun enregistrement n'existe
				if ($nbRes1 == 0) {
					
					$log .= 'Itération n° ' . $i . ' : aucun enregistrement n\'existe. ';
					
					// On insère les nouvelles valeurs
					$sql2 = "INSERT INTO donnees_grilles ( id_grille, id_champ, valeur, id_patient, id_docteur, id_etablissement, date) VALUES('" . $idGrille . "', '". $i ."', '" . $donneesClinimetreValeur[$i] . "', '" . $idPatient . "', '" . $idDocteur . "', '" . $idEtablissement . "', '" . $currentDate . "')";
					$req2 = cleanPDOQuery($sql2);

					$log .= 'Itération n° ' . $i . ' : INSERT ok. ';
				}

				// Sinon     
				else {

					$log .= 'Itération n° ' . $i . ' : un enregistrement existe. ';

					

					// On met à jour l'enregistrement
					$sql2 = "UPDATE donnees_grilles SET valeur = '" . $donneesClinimetreValeur[$i] . "' WHERE id_grille = '" . $idGrille . "' AND id_champ = '" . $i . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date = '" . $currentDate . "'";
					$req2 = cleanPDOQuery($sql2);

					$log .= 'Itération n° ' . $i . ' : UPDATE ok. ';
				}

				// Etat du traitement
				$flag = 'ok';
			}
		}


		$log .= 'Fin enregistrement aujourd\'hui. ';
		$log .= 'Début enregistrement analyse/objectif. ';


		// Etat du traitement
		$flag = 'nok';

		// On récupère la date de l'ancien enregistrement analyses/objectifs
		$sql3 = "SELECT * FROM donnees_grilles WHERE id_grille = '" . $idGrille . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date > '" . $currentDate . "'";
		$req3 = cleanPDOQuery($sql3);
		$nbRes3 = $req3->rowCount();
		
		// Si des données existent déjà en BDD
		if($nbRes3 != 0) {
			
			$log .= 'L\'analyse/objectif existe déjà dans la BDD. ';

			$res3 = $req3->fetch();
			$dateLastObj = $res3['date'];
		}
		// Sinon (première mise à jour)
		else {
			
			$log .= 'L\'analyse/objectif n\'existe pas dans la BDD. ';

			$dateLastObj = $dateObj;
		}

		$log .= 'Date du dernier upload : ' . $dateLastObj;

		// Etat du traitement
		$flag = 'ok';

		// On boucle sur le nombre de données clinimetre analyses/objectifs à enregistrer
		for ($i = 0; $i < count($donneesClinimetreObj); $i++) {
			
			// Etat du traitement
			$flag = 'nok';

			// On détermine si l'enregistrement est un insert ou un update
			$sql4 = "SELECT * FROM donnees_grilles WHERE id_grille = '" . $idGrille . "' AND id_champ = '" . $idFonctions[$i] . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date = '" . $dateObj . "'";
			$req4 = cleanPDOQuery($sql4);
			$nbRes4 = $req4->rowCount();
			
			// Si aucun enregistrement n'existe
			if ($nbRes4 == 0) {

				$log .= 'Itération n° ' . $i . ' : aucun enregistrement n\'existe. ';

				// On insère la nouvelle valeur
				$sql5 = "INSERT INTO donnees_grilles (id_grille, id_champ, valeur, id_patient, id_docteur, id_etablissement, donnees_grilles.date) VALUES('" . $idGrille . "', '". $idFonctions[$i] ."', '" . $donneesClinimetreObj[$i] . "', '" . $idPatient . "', '" . $idDocteur . "', '" . $idEtablissement . "', '" . $dateObj . "')";
				$req5 = cleanPDOQuery($sql5);

				$log .= 'Itération n° ' . $i . ' : INSERT ok. ';

				if($dateLastObj != $dateObj) {

					// On supprime l'ancienne valeur
					$sql6 = "DELETE FROM donnees_grilles WHERE id_grille = '" . $idGrille . "' AND id_champ = '" . $idFonctions[$i] . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date = '" . $dateLastObj . "'";
					$req6 = cleanPDOQuery($sql3);

					$log .= 'Itération n° ' . $i . ' : DELETE ok. ';
				}
			}

			// Sinon
			else {

				$log .= 'Itération n° ' . $i . ' : un enregistrement existe. ';

				// On met à jour l'enregistrement
				$sql5 = "UPDATE donnees_grilles SET valeur = '" . $donneesClinimetreObj[$i] . "' WHERE id_grille = '" . $idGrille . "' AND id_champ = '" . $idFonctions[$i] . "' AND id_patient = '" . $idPatient . "' AND id_docteur = '" . $idDocteur . "' AND id_etablissement = '" . $idEtablissement . "' AND donnees_grilles.date = '" . $dateObj . "'";
				$req5 = cleanPDOQuery($sql5);

				$log .= 'Itération n° ' . $i . ' : UPDATE ok. ';
			}

			// Etat du traitement
			$flag = 'ok';
		}

		$log .= 'Fin enregistrement analyse/objectif. ';
	}

	// Préparation des données
	$resultat['flag'] = $flag;
	$resultat['log'] = $log;
	$resultat['sql1'] = $sql1;
	$resultat['sql2'] = $sql2;
	$resultat['sql3'] = $sql3;
	$resultat['sql4'] = $sql4;
	$resultat['sql5'] = $sql5;
	
	// Envoie des données
	header('Content-Type: application/json');
 	echo json_encode($resultat);
?>