<?php 
include("connexion_db.php");

$resultat = '';
$date = date('Y-m-d');
$flag = 'nok';

$__ETABLISSEMENT__ = '';
$__DOCTEUR__ = '';
$__PATIENTS__ = '';
$__DONNEESCLINIMETRE__ = '';
$__GRILLES__ = '';
$__PARAMETRES__ = '';
$__REPONSEPATIENT__ = '';

$__QUESTIONS_GRILLE__ = '';

// 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 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 a.nom_fonction from grillesfonctions g join clini_all a on g.id_fonction = a.id_clini where g.id_grille='".$res2['id']."'";
            $req3 = cleanPDOQuery($sql3);
            $champs = '';
            $resultat['sql'] = $sql3;

            while ($res3 = $req3->fetch()) {
                $champs[] = $res3['nom_fonction'];
            }

            /*		à changer		*/


            // On récupère les informations sur la description de la grille courante
            $sql6 = "SELECT a.nom_fonction from grillesfonctions g join clini_all a on g.id_fonction = a.id_clini where g.id_grille='".$res2['id']."'";
            $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++;
            }

            $sql_question = "SELECT * FROM question_grille q join question_all a on q.id_question = a.id where q.id_grille = '".$res2[id]."' ORDER BY q.id ASC";
            $req_ques = cleanPDOQuery($sql_question);

            $questionGrille = '';

            $i = 0;
            while ($res_ques = $req_ques->fetch()) {
                $questionGrille[$i][0] = $res_ques['question'];
                $questionGrille[$i][1] = $res_ques['type'];
                $questionGrille[$i][2] = $res_ques['id'];
                $i++;
            }

            $sql_questionFonction = "SELECT * FROM question_fonction q join question_all a on q.id_question = a.id ORDER BY q.id ASC";#$sql_questionFonction = "SELECT * FROM question_fonction q join question_all a on q.id_question = a.id where q.id_grille = '".$res2[id]."' ORDER BY q.id ASC";
            $req_quesFon = cleanPDOQuery($sql_questionFonction);

            $questionFonction = '';

            $i = 0;
            while ($res_quesFon = $req_quesFon->fetch()) {
                $questionFonction[$i][$res_quesFon['id_fonction']][0] = $res_quesFon['question'];
                $questionFonction[$i][$res_quesFon['id_fonction']][1] = $res_quesFon['type'];
                $questionFonction[$i][$res_quesFon['id_fonction']][2] = $res_quesFon['id'];
                $i++;
            }



            $sql_reponseGrille = "SELECT * FROM reponse_all r join question_all q on r.id_question = q.id ORDER BY r.date ASC";//where r.id_grille = '".$res2[id]."'"
            $req_repGrille = cleanPDOQuery($sql_reponseGrille);
            
            $reponseAll ='';
            
            while ($res_rG = $req_repGrille->fetch()) {
                $reponseAll[] = array(
                'id_patient' => $res_rG['id_patient'],
                'id_question' => $res_rG['id_question'],
                'reponse' => $res_rG['reponse'],
                'date' => $res_rG['date'],
                'type' => $res_rG['type']);
            }
            
            // $sql_reponseFonction = "SELECT * FROM reponse_fonction r join question_all q on r.id_question = q.id ORDER BY r.date ASC";
            // $req_repF = cleanPDOQuery($sql_reponseFonction);
            
            // $reponseFonction ='';
            
            // while ($res_rF = $req_repF->fetch()) {
            //     //[$res_rG['id_grille']]
            //     $reponseFonction[$res_rF['id_fonction']][] = array(
            //     'id_patient' => $res_rF['id_patient'],
            //     'id_question' => $res_rF['id_question'],
            //     'reponse' => $res_rF['reponse'],
            //     'date' => $res_rF['date'],
            //     'type' => $res_rF['type']);
            // }

            // On récupère les informations sur les poids de la grille courante
            $sql16 = "SELECT * FROM clini_all";
            $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 = '".$res2['id']."'";
            $req17 = cleanPDOQuery($sql17);
            $utiMax = '';
            $nbUti = '';
            $resultat['sql'] = $sql17;

            while ($res17 = $req17->fetch()) {
                $utiMax[] = $res17['utiMax'];
                $nbUti[] = $res17['nbUti'];
            }

            /////////////////////////////////////////////////
            // Naoufal est passé par ici .... Naoufal EST LE MEILLEUR

            // 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, "questionGrille" => $questionGrille,'repAll' => $reponseAll/*,'repFonction' => $reponseFonction*/, "questionFonction" => $questionFonction, "reponseLoupe" => $reponse, "descriptionChamp" => $champdesc, "utiMax" => $utiMax, "nbUti" => $nbUti, "poids" => $poids);

            // Ajout a la collecion de grilles
            $__GRILLES__[$res2['id']] = $grille;
        }


        $sql1 = "SELECT * FROM caca WHERE id_docteur = ".$__IDDOCTEUR__;
        $req1 = cleanPDOQuery($sql1);
        $resultat['sql'] = $sql1;

        // On met en forme la variable __DONNEESCLINIMETRE__
        foreach($req1 as $res1) {


            // 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_grille']])) {
                    if (isset($__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_grille']][$res1['id_champ']])) {

                        // Troisième jet : on créé le noeud au rang 'date'
                        $__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_grille']][$res1['id_champ']][dateSQLtoJS($res1['date'])] = array('id_champs' => $res1['id_champ'],

                        'valeur' => $res1['valeur']);

                        //}
                    }
                    $__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_grille']][$res1['id_champ']] = array(
                    dateSQLtoJS($res1['date']) => array('id_champs' => $res1['id_champ'],

                    'valeur' => $res1['valeur']));


                } // Deuxième jet : on créé le noeud au rang 'id_champ'
                else {
                    $__DONNEESCLINIMETRE__[$res1['id_patient']][$res1['id_grille']] = array(
                    $res1['id_champ'] => array(
                    dateSQLtoJS($res1['date']) => array('id_champs' => $res1['id_champ'],

                    'valeur' => $res1['valeur'])));

                }
            } // Premier jet : on créé le noeud au rang 'id_patient'
            else {
                $__DONNEESCLINIMETRE__[$res1['id_patient']] = array(
                [$res1['id_grille']] => array(
                $res1['id_champ'] => array(
                dateSQLtoJS($res1['date']) => array('id_champs' => $res1['id_champ'],

                'valeur' => '0'))));
            }
        }


        //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 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'));


        // $sql_question= "SELECT * from question_grille ORDER BY id_grille DESC";
        // $req_ques= cleanPDOQuery($sql_question);
        // $une_question='';
        // // $res_ques = $req_ques->fetch();

        // foreach ($req_ques as $res_ques) {




        //         $__QUESTIONS_GRILLE__[$res_ques['id']] = array(
        //             $res_ques['id_grille'] => array(
        //                         'question' => $res_ques['question'],

        //                         'type' => $res_ques['type'])) ;
        // }


        // 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['questions_grille']=$__QUESTIONS_GRILLE__;

$resultat['date'] = $date;

// Envoie des données
header('Content-Type: application/json');
echo json_encode($resultat,JSON_UNESCAPED_SLASHES);

?>