<?php
if (!isset($_SESSION['idUtil'])) header("Location:index.php");
if (!isset($_SESSION['statut'])) header("Location:index.php");
if (($_SESSION['statut']!=2) && ($_SESSION['statut']!=4)) header("Location:index.php");
if (!isset($_REQUEST['action']))
	$action = "" ;
else
	$action = $_REQUEST['action'] ;
	
switch ($action)
{
	case "afficher" : { 
            //affiche les commandes du jour
            
            $ladateAMJ = date("Y-m-d") ;
            $ladateJMA = date("d/m/Y") ;
            $_SESSION['laDateCde'] = $ladateAMJ ;
            $lesCommandes = getLesCommandesJour($ladateAMJ) ;
            require "vues/v_commande_liste.php" ; 
            break ;             
        }
        
        case "plus" : { 
            //affiche les commandes d'une date choisie
            $lesDates = getLesDatesMenus() ;
            require "vues/v_dates_commande.php" ; 
            break ;             
        }
        
        case "consulter" : { 
            //affiche les commandes d'une date choisie
            $ladateURL = $_REQUEST['date'] ;
            $ladateAMJ = substr($ladateURL,0,4)."-".substr($ladateURL,4,2)."-".substr($ladateURL,6,2) ;
            $ladateJMA = getDateJMA($ladateAMJ) ;
            $_SESSION['laDateCde'] = $ladateAMJ ;
            $lesCommandes = getLesCommandesJour($ladateAMJ) ;
            require "vues/v_commande_liste.php" ;  
            break ;             
        }
        
        case "compte" : { 
            //affiche les comptes des élèves
            $lesComptes = getLesComptesEleves() ;
            require "vues/v_comptes_eleves.php" ;  
            break ;             
        }
        
        case "menu" : { 
            //affiche la vue de saisie des menus
            $lesDates = getLesDatesMenus() ;
            require "vues/v_dates_menu.php" ; 
            break ;               
            break ;             
        }
        
        case "menusaisir" : { 
            //affiche la vue de saisie des menus
            $ladateURL = $_REQUEST['date'] ;
            $ladateAMJ = substr($ladateURL,0,4)."-".substr($ladateURL,4,2)."-".substr($ladateURL,6,2) ;
            $ladateJMA = getDateJMA($ladateAMJ) ;
            $lesMenus = getLesMenusJour($ladateAMJ) ;
            require "vues/v_saisir_menu.php" ; 
            break ;               
            break ;             
        }
        
        case "menuenregistrer" : { 
            //affiche la vue de saisie des menus
            $ladateAMJ = $_REQUEST['dateMenu'] ;
            $ladateJMA = getDateJMA($ladateAMJ) ;
            $numMenu = $_REQUEST['numMenu'] ;
            $descMenu = $_REQUEST['descMenu'.$numMenu] ;
            majMenu($ladateAMJ, $numMenu, $descMenu) ;
            $lesMenus = getLesMenusJour($ladateAMJ) ;
            require "vues/v_saisir_menu.php" ; 
            break ;               
            break ;             
        }
        
        case "menusupprimer" : { 
            //affiche la vue de saisie des menus
            $ladateURL = $_REQUEST['dateMenu'] ;
            $ladateAMJ = substr($ladateURL,0,4)."-".substr($ladateURL,4,2)."-".substr($ladateURL,6,2) ;
            $ladateJMA = getDateJMA($ladateAMJ) ;
            $numMenu = $_REQUEST['numMenu'] ;
            supMenu($ladateAMJ, $numMenu) ;
            $lesMenus = getLesMenusJour($ladateAMJ) ;
            require "vues/v_saisir_menu.php" ; 
            break ;               
            break ;             
        }
        
        case "menuajouter" : { 
            //affiche la vue de saisie des menus
            $ladateAMJ = $_REQUEST['dateMenu'] ;
            $ladateJMA = getDateJMA($ladateAMJ) ;
            $numMenu = $_REQUEST['numMenu'] ;
            $descMenu = $_REQUEST['descMenu'.$numMenu] ;
            ajoutMenu($ladateAMJ, $numMenu, $descMenu) ;
            $lesMenus = getLesMenusJour($ladateAMJ) ;
            require "vues/v_saisir_menu.php" ; 
            break ;                        
        }
        
        case "param" : { 
            //affiche la vue de saisie des menus
            $params = getParams() ;
            require "vues/v_params_affich.php" ; 
            break ;                        
        }
        
        case "paramenregistrer" : { 
            //affiche la vue de saisie des menus
            $heureDebutCde = $_REQUEST['heureDebutCde'] ;
            $prixRepas = $_REQUEST['prixRepas'] ;
            $nbRepasDecouvert = $_REQUEST['nbRepasDecouvert'] ;
            if ($heureDebutCde!="" && $prixRepas!="")
            {
                majParams($heureDebutCde, $prixRepas, $nbRepasDecouvert) ;
                $params = getParams() ;
                require "vues/v_params_affich.php" ; 
            }
            else 
            { 
                $message = "Veuillez renseigner les paramètres" ;
                require "vues/v_erreur.php" ; 
                require "vues/v_params_affich.php" ; 
            }
            
            break ;                        
        }
        
        case "crediter" : { 
            if (!isset($_REQUEST['role']))
                $role = "choixEleve" ;
            else
                $role = $_REQUEST['role'] ;
            switch($role)
            {
                case "choixEleve" : {
                    
                    //affiche la vue de saisie des crédits des comptes élèves : liste déroulante choix de l'élève
                    $lesEleves = getLesEleves();
                    $messageValid = '' ;
                    $_SESSION['enregistrer'] = false ;
                    require "vues/v_crediter_compte.php" ;
                    break ;                        
                }
        
                case "eleve" : {
                    //affiche le crédit actuel de l'élève et formulaire de saisie du règlement
                    $idEleve = $_REQUEST['id'] ;
                    $leEleve = getUnEtudiant($idEleve) ;
                    $_SESSION['enregistrer'] = false ;
                    require "vues/v_crediter_eleve.php" ;
                    break ;
                }
                
                case "enregistrer" : {
                    $idEleve = $_REQUEST['id'] ;
                    if (isset($_SESSION['enregistrer']) && $_SESSION['enregistrer'] == false)
                    {
                    //affiche le crédit actuel de l'élève et formulaire de saisie du règlement
                        
                        $datePaiement = $_REQUEST['datePaiement'] ;
                        $montant = $_REQUEST['montant'] ;
                        $typeReglement = $_REQUEST['typeReglement'] ;
                        $remarques = $_REQUEST['remarques'] ;
                        $_SESSION['enregistrer'] = true ;
                        //enregistrement du paiement
                        enregistrerPaiement($idEleve, $datePaiement, $montant, $typeReglement, $remarques) ;
                    }
                    
                    $leEleve = getUnEtudiant($idEleve) ;
                    $messageValid = 'Le solde de '.$leEleve['nom'].' '.$leEleve['prenom'].' est maintenant de '.$leEleve['creditRepas'].' €' ;
                    $lesEleves = getLesEleves();
                    require "vues/v_crediter_compte.php" ;
                    break ;
                }
            }
            break ;
        }
        
        case "paiement" : { 
            if (!isset($_REQUEST['role']))
                $role = "afficher" ;
            else
                $role = $_REQUEST['role'] ;
            switch($role)
            {
                case "afficher" : {
                    
                    //affiche la vue de consultation des paiements avec filtres
                    $lesEleves = getLesEleves();
                    $messageValid = '' ;
                    require "vues/v_paiement_filtres.php" ;
                    break ;                        
                }
                case "traiter" : {
                    
                    //récupération des données du filtre d'affichage
                    $dateDebut = $_REQUEST['dateDebut'] ;
                    $dateFin = $_REQUEST['dateFin'] ;
                    $typeReglement = $_REQUEST['typeReglement'] ;
                    $idEleve = $_REQUEST['idEleve'] ;
                    
                    //mise en session des paramètres pour l'export Excel
                    $_SESSION['dateDebut'] = $_REQUEST['dateDebut'] ;
                    $_SESSION['dateFin'] = $_REQUEST['dateFin'] ;
                    $_SESSION['typeReglement']= $_REQUEST['typeReglement'] ;
                    $_SESSION['idEleve'] = $_REQUEST['idEleve'] ;
                    
                    $lesEleves = getLesEleves();
                    $lesPaiements = getLesPaiements($dateDebut, $dateFin, $typeReglement, $idEleve) ;
                    $excel = false ;
                    require "vues/v_paiement_liste.php" ;
                    break ;                        
                }
                
                case "export" : {
                    
                    //récupération des données du filtre d'affichage
                    $dateDebut = $_SESSION['dateDebut'];
                    $dateFin = $_SESSION['dateFin'] ;
                    $typeReglement = $_SESSION['typeReglement'] ;
                    $idEleve = $_SESSION['idEleve'] ;

                    $lesEleves = getLesEleves();
                    $lesPaiements = getLesPaiements($dateDebut, $dateFin, $typeReglement, $idEleve) ;
                    exportPaiements($dateDebut, $dateFin, $typeReglement, $idEleve) ;
                    $excel = true ;
                    require "vues/v_paiement_liste.php" ;
                    break ;                        
                }
                
                case "maj" : {
                    
                    //récupération des données du filtre d'affichage
                    $id = $_REQUEST['id'] ;
                    $lePaiement = getLePaiement($id) ;
                    $lesEleves = getLesEleves();
                    $_SESSION['enregistrer'] = false ;
                    require "vues/v_paiement_maj.php" ;
                    break ;                        
                }
                
                case "modifier" : {
                    
                    if ($_SESSION['enregistrer'] == false)
                    {
                        //récupération des données du filtre d'affichage
                        $id = $_REQUEST['id'] ;
                        $datePaiement = $_REQUEST['datePaiement'] ;
                        $montant = $_REQUEST['montant'] ;
                        $typeReglement = $_REQUEST['typeReglement'] ;
                        $remarques = $_REQUEST['remarques'] ;
                        $idEleve = $_REQUEST['idEleve'] ;

                        //enregistrement du paiement
                        modifierPaiement($idEleve, $datePaiement, $montant, $typeReglement, $remarques, $id) ;
                        $_SESSION['enregistrer'] = true ;
                        $leEleve = getUnEtudiant($idEleve) ;
                    }
                    
                    
                    $lesEleves = getLesEleves();
                    $messageValid = 'Le paiement a bien été modifié' ;
                    require "vues/v_paiement_filtres.php" ;
                    break ;                        
                }
                
                case "suppr" : {
                    
                    //récupération des données du filtre d'affichage
                    $id = $_REQUEST['id'] ;
                    //suppression du paiement
                    supprimerPaiement( $id) ;

                    $lesEleves = getLesEleves();
                    $messageValid = 'Le paiement a bien été supprimé' ;
                    require "vues/v_paiement_filtres.php" ;
                    break ;                        
                }
            }
            break ;
        }
        
        case "listerepas" : { 
            if (!isset($_REQUEST['role']))
                $role = "afficher" ;
            else
                $role = $_REQUEST['role'] ;
            switch($role)
            {
                case "afficher" : {
                    
                    //affiche la vue avec filtres
                    $messageValid = '' ;
                    require "vues/v_listerepas_filtres.php" ;
                    break ;                        
                }
                case "traiter" : {
                    
                    //récupération des données du filtre d'affichage
                    $dateDebut = $_REQUEST['dateDebut'] ;
                    $dateFin = $_REQUEST['dateFin'] ;
                    $typeRepas = $_REQUEST['typeRepas'] ;
                    //mise en session des paramètres pour l'export Excel
                    $_SESSION['dateDebut'] = $_REQUEST['dateDebut'] ;
                    $_SESSION['dateFin'] = $_REQUEST['dateFin'] ;
                    $_SESSION['typeRepas'] = $_REQUEST['typeRepas'] ;
                    
                    if ($typeRepas==2)
                        $lesRepasPris = getLesRepasDetail($dateDebut, $dateFin) ;
                    else 
                        $lesRepasPris = getLesRepasCumul($dateDebut, $dateFin) ;
                    $excel = false ;
                    require "vues/v_listerepas_liste.php" ;
                    break ;                        
                }                
                case "export" : {
                    
                    //récupération des données du filtre d'affichage
                    $dateDebut = $_SESSION['dateDebut'];
                    $dateFin = $_SESSION['dateFin'] ;
                    $typeRepas = $_SESSION['typeRepas'] ;
                    //mise en session des paramètres pour l'e
                    if ($typeRepas==2)
                        $lesRepasPris = getLesRepasDetail($dateDebut, $dateFin) ;
                    else 
                        $lesRepasPris = getLesRepasCumul($dateDebut, $dateFin) ;
                    exportRepas($dateDebut, $dateFin, $typeRepas, $lesRepasPris) ;
                    $excel = true ;
                    require "vues/v_listerepas_liste.php" ;
                    break ;                        
                }               
            }
            break ;
        }
        
        case "mdp" : { 
            //affiche la vue de saisie des menus
            require "vues/v_mdp_saisir.php" ;
            break ;                        
        }
        
        case "mdpenregistrer" : { 
            //affiche la vue de saisie des menus
            $mdp = $_REQUEST['mdp1'] ;
            enrmdp($mdp, $_SESSION['idUtil']);
            $message = "Votre mot de passe a été modifié" ;
            require "vues/v_ok.php" ; 
            break ;                        
        }

        //////////////////////////////////////////////////////////////////////////////////
        //Code rajouté Maéven
        case "operationuser" : {
            //affiche la vue qui permet de réaliser des opérations sur les utilisateurs (Ajout / Modification / Suppression)
            require "vues/v_operations_utilisateur.php" ;
            break ;
        }

        case "operation" : {
            //Dans le cas où le gestionnaire a choisi de saisir un nouvel utilisateur
            if (isset($_POST["saisir"])) {
                require "vues/v_operation_saisir.php";
            }
            
            //Dans le cas où le gestionnaire a choisi de modifier les données d'un utilisateur
            elseif (isset($_POST["modifier"])){
                require "vues/v_operation_modifier.php";
            } 

            //Dans le cas où le gestionnaire a choisi de supprimer un utilisateur
            else {
                require "vues/v_operation_supprimer.php";
            }
            break ;
        }

        case "operation_suppression" : {
            if (isset($_POST['id_suppression']) && existeIdUtilisateur($_POST['id_suppression'])){
                //Récupération de l'id
                $id = $_POST['id_suppression'];
                //Appel de la fonction de suppression
                supprimerUtilisateur($id);
                require "vues/v_operation_suppression_valide.php";
            }
            else {
                require "vues/v_operation_suppression_erreur.php";
            }
            break ;
        }

        case "operation_ajout" : {
            $test = false;
            //Vérification qu'un nom soit entré et qu'il corresponde à une chaîne de caractères en majuscules
            if ( !empty($_POST['nom']) && is_string($_POST['nom']) && ctype_upper($_POST['nom'])){
                //Vérification qu'un prenom existe et qu'il corresponde bien à une chaîne de caractères dont le 1er caractère est en majuscule et le reste en minuscules
                
                if (!empty($_POST['prenom']) && is_string($_POST['prenom']) &&
                    ctype_upper(substr($_POST['prenom'], 0, 1)) && ctype_lower(substr($_POST['prenom'], 1))){
                    //Vérification que l'id de la classe est bien un entier    
                    
                    if (!empty($_POST['idClasse']) && ctype_digit($_POST['idClasse'])){
                        //Vérification que le statut est bien un entier  
                        
                        if (!empty($_POST['statut']) && ctype_digit($_POST['statut'])){
                            //Vérification que le login est bien une chaîne de caractères en majuscules
                            
                            if (!empty($_POST['login']) && is_string($_POST['login']) && ctype_upper($_POST['login'])){
                                //On vérifie qu'un mot de passe a bien été renseigné
                                
                                if (!empty($_POST['mdp'])){
                                    //Si on arrive là, toutes les informations sont bien dans les normes
                                    $test = true;
                                    //Récupération des variables
                                    $nom = $_POST['nom'];
                                    $prenom = $_POST['prenom'];
                                    $idClasse = $_POST['idClasse'];
                                    $statut = $_POST['statut'];
                                    $login = $_POST['login'];
                                    $mdp = MD5($_POST['mdp']);
                                    //Appel de la fonction d'ajout
                                    ajouterUtilisateur($nom, $prenom, $idClasse, $statut, $login, $mdp);
                                    require "vues/v_operation_ajout_valide.php";
                                }
                            }
                        }
                    }
                }
            }
            //Si une seule des vérifications n'a pas été validée, on affiche la page d'erreur
            if (!$test){
                require "vues/v_operation_ajout_erreur.php";
            }
            break ;
        }

        case "operation_modification" : {
            //On vérifie que l'id de l'utilisateur est bien renseigné et qu'il existe, et qu'une information à modifier a bien été selectionnée
            //La récupération de l'id de l'utilisateur dont on souhaite modifier une donnée permet de savoir sur quel utilisateur on va appliquer la modification
            if (!empty($_POST['idUser']) && existeIdUtilisateur($_POST['idUser']) && !empty($_POST['listemodif'])){
                $_SESSION['idAmodifier'] = $_POST['idUser'] ; 
                $valeurModif = $_POST['listemodif'];
                //A ce stade, on sait sur quel utilisateur on veut faire une modification et quelle modification on veut lui faire
                //Maintenant, on va dans la vue correspondant à la modification que l'on souhaite faire
                if ($valeurModif == 'id'){
                    require "vues/v_operation_modif_id.php";
                }
                elseif ($valeurModif == 'nom'){
                    require "vues/v_operation_modif_nom.php";
                }
                elseif ($valeurModif == 'prenom'){
                    require "vues/v_operation_modif_prenom.php";
                }
                elseif ($valeurModif == 'idClasse'){
                    require "vues/v_operation_modif_idClasse.php";
                }
                elseif ($valeurModif == 'login'){
                    require "vues/v_operation_modif_login.php";
                }
                elseif ($valeurModif == 'mdp'){
                    require "vues/v_operation_modif_mdp.php";
                }
                elseif ($valeurModif == 'statut'){
                    require "vues/v_operation_modif_statut.php";
                }
                else{
                    require "vues/v_operation_modif_creditRepas.php";
                }
            }
            else{
                require "vues/v_operation_modification_erreur.php";
            }
            break ;
        }

        case "operation_modif_id" : {
            if (!empty($_POST['idChangement']) && !existeIdUtilisateur($_POST['idChangement'])){
                //On appelle la fonction qui va appliquer la modification
                //1er argument : id à changer / 2e argument : id permettant de savoir sur quel utilisateur appliquer la modification
                modifIdUtilisateur($_POST['idChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_nom" : {
            if (!empty($_POST['nomChangement']) && is_string($_POST['nomChangement']) && ctype_upper($_POST['nomChangement'])){
                //On appelle la fonction qui va appliquer la modification
                modifNomUtilisateur($_POST['nomChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_prenom" : {
            if (!empty($_POST['prenomChangement']) &&  is_string($_POST['prenomChangement']) &&
                    ctype_upper(substr($_POST['prenomChangement'], 0, 1)) && ctype_lower(substr($_POST['prenomChangement'], 1)) ){
                //On appelle la fonction qui va appliquer la modification
                modifPrenomUtilisateur($_POST['prenomChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";

            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_idClasse" : {
            if (!empty($_POST['idClasseChangement']) && ctype_digit($_POST['idClasseChangement'])){
                //On appelle la fonction qui va appliquer la modification
                modifIdClasseUtilisateur($_POST['idClasseChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_login" : {
            if (!empty($_POST['loginChangement']) && is_string($_POST['loginChangement']) && ctype_upper($_POST['loginChangement'])){
                //On appelle la fonction qui va appliquer la modification
                modifLoginUtilisateur($_POST['loginChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }
        case "operation_modif_mdp" : {
            if (!empty($_POST['mdpChangement'])){
                //On appelle la fonction qui va appliquer la modification
                //On pense bien à envoyer le mot de passe crypté
                modifMdpUtilisateur(md5($_POST['mdpChangement']), $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_statut" : {
            if (!empty($_POST['statutChangement']) && ctype_digit($_POST['statutChangement'])){
                //On appelle la fonction qui va appliquer la modification
                modifStatutUtilisateur($_POST['statutChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }

        case "operation_modif_creditRepas" : {
            if (!empty($_POST['creditRepasChangement']) && is_numeric($_POST['creditRepasChangement'])){
                //On appelle la fonction qui va appliquer la modification
                modifCreditRepasUtilisateur($_POST['creditRepasChangement'], $_SESSION['idAmodifier']) ;
                require "vues/v_operation_modif_valide.php";
            }
            else{
                require "vues/v_operation_modif_erreur.php";
            }
            break ;
        }


        //////////////////////////////////////////////////////////////////////////////////
}
?>
