<?php
class GttCtrlActionAdminAbsenceMotif extends aControlleurAction {

	public function __construct(Registre $Registre)
	{
		$Registre->ajouterEspace('AdminAbsenceMotif', 'admin_absence_motif');
		$Registre->setTitre("Administrer les motifs d'absence");
	}

	public function executer()
    {
    	$aso_admin_absence_motif = array();

		// Récupération des catégories
		$AbsenceMotif = new AbsenceMotif();

		// Utilisateur vide par défaut
		$aso_admin_absence_motif['AbsenceMotif'] = clone $AbsenceMotif;
    	
    	$tab_am = $AbsenceMotif->consulter(AbsenceMotif::GAM_TOUS);
    	if ($tab_am) {
	    	if ($tab_am instanceof AbsenceMotif) {
	    		$tab_am = array($tab_am);
	    	}
	    	foreach ($tab_am as $am) {
	    		if ($am->getIdAbsenceMotif() != 0) {
	    			$aso_motif['id'] = $am->getIdAbsenceMotif();
	    			$aso_motif['libelle'] = $am->getLibelle();
	    			$aso_admin_absence_motif['motifs'][] = $aso_motif;
	    		}
	    	}
    	}
    	
		// Modification des titres, légendes et bouton
		$aso_admin_absence_motif['form_legend'] = "Ajouter un motif d'abscence";
		$aso_admin_absence_motif['form_bouton_value'] = 'Ajouter';
		$aso_admin_absence_motif['form_bouton_id'] = 'btn_absence_motif_ajouter';
		$aso_admin_absence_motif['form_url'] = 'index.php?action=admin-absence-motif_valider-ajouter';
		
    	//echo '<pre>'.print_r($aso_admin_absence_motif, true).'</pre>';
		$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_absence_motif);
    }
	
	public function executerEditer()
    {
		// Initialisation de variable
		$aso_admin_absence_motif = array();

		// Récupération d'info en fonction du bouton selectionné
		if (isset($_POST['btn_absence_motif_modifier'])) {
			// Récupération des données du motif à modifier
			$AbsenceMotif = new AbsenceMotif();
			$AbsenceMotif ->consulter(AbsenceMotif::GAM_ID, $_POST['amsu_id'], true);
			$aso_admin_absence_motif['AbsenceMotif'] = $AbsenceMotif;

			// Modification des titres, légendes et bouton
			$aso_admin_absence_motif['form_legend'] = "Modifier un motif d'absence";
			$aso_admin_absence_motif['form_bouton_value'] = 'Modifier';
			$aso_admin_absence_motif['form_bouton_id'] = 'btn_absence_motif_modifier';
			$aso_admin_absence_motif['form_url'] = 'index.php?action=admin-absence-motif_valider-modifier';

			$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_absence_motif);
		} else if (isset($_POST['btn_absence_motif_supprimer'])) {
			// Action suivante
    		$this->setSuivant('ValiderSupprimer');
		}
    }
    
    public function executerValiderAjouter()
    {
		if (isset($_POST['btn_absence_motif_annuler'])) {
			// Action suivante
    		$this->setSuivant('__defaut__');
    	} else if (isset($_POST['btn_absence_motif_ajouter'])) {
			// Vérification du motif à ajouter
			$bool_modifier = true;
			$AbsenceMotif = new AbsenceMotif();
			$AmLibelle = $AbsenceMotif->consulter(AbsenceMotif::GAM_LIBELLE, array($_POST['amaj_libelle']));
			if ((is_array($AmLibelle) && count($AmLibelle) > 1) || ($AmLibelle instanceof AbsenceMotif && $AmLibelle->getIdAbsenceMotif() != $_POST['amaj_id_absence_motif'])) {
				$aso_admin_absence_motif['messages'][] = "Un motif d'absence avec le même libellé existe déjà !";
				$bool_modifier = false;
			}
			
			//$this->verifierChampsCommuns(&$aso_admin_absence_motif, &$bool_modifier);
			if ($bool_modifier) {
				// Action suivante
		    	$this->setSuivant('ajouter');
			} else {
				// Action suivante
		    	$this->setSuivant('__defaut__');
				$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_absence_motif);
			}
		}
    }

	public function executerAjouter()
	{
		// Initialisation de variable
		$aso_admin_motif = array();
		
		// Création de l'objet AbsenceMotif à ajouter
		$AbsenceMotif = new AbsenceMotif();
		$AbsenceMotif->setLibelle($_POST['amaj_libelle']);
		if (!isset($_POST['amaj_mark_cp_diminuer'])) {
			$_POST['amaj_mark_cp_diminuer'] = 0;
		}
		$AbsenceMotif->setMarkCpDiminuer($_POST['amaj_mark_cp_diminuer']);
		if (!isset($_POST['amaj_mark_hs_diminuer'])) {
			$_POST['amaj_mark_hs_diminuer'] = 0;
		}
		$AbsenceMotif->setMarkHsDiminuer($_POST['amaj_mark_hs_diminuer']);
    	if ($AbsenceMotif->ajouter()) {
	    	$aso_admin_motif['messages'][] = "Le motif d'absence ${_POST['amaj_libelle']} a été ajouté.";
	    }
	    
	    // Ajout du message d'information
		$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_motif);
	    
		// Action suivante
    	$this->setSuivant('__defaut__');
	}

	public function executerValiderModifier()
    {
    	if (isset($_POST['btn_absence_motif_annuler'])) {
			// Action suivante
    		$this->setSuivant('__defaut__');
    	} else if (isset($_POST['btn_absence_motif_modifier'])) {
			// Initialisation de variable
			$aso_admin_motif = array();
		
			// Vérification du motif à modifier
			$bool_modifier = true;
			$AbsenceMotif = new AbsenceMotif();
			$AmLibelle = $AbsenceMotif->consulter(AbsenceMotif::GAM_LIBELLE, array($_POST['amaj_libelle']));
			if ((is_array($AmLibelle) && count($AmLibelle) > 1) || ($AmLibelle instanceof AbsenceMotif && $AmLibelle->getIdAbsenceMotif() != $_POST['amaj_id_absence_motif'])) {
				$aso_admin_motif['messages'][] = "Un motif d'absence avec le même libellé existe déjà !";
				$bool_modifier = false;
			}
			//$this->verifierChampsCommuns(&$aso_admin_absence_motif, &$bool_modifier);
			if ($bool_modifier) {
				// Action suivante
		    	$this->setSuivant('modifier');
			} else {
				// Action suivante
				$_POST['btn_motif_absence_modifier'] = 'btn_absence_motif_modifier';
				$_POST['amsu_id'] = $_POST['amaj_id_absence_motif'];
		    	$this->setSuivant('editer');
				$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_motif);
			}
		}
    }

	public function executerModifier()
	{
		// Initialisation de variable
		$aso_admin_motif = array();
		
		// Création de l'objet AbsenceMotif à modifier
		$AbsenceMotif = new AbsenceMotif();
		$AbsenceMotif->setIdAbsenceMotif($_POST['amaj_id_absence_motif']);
		$AbsenceMotif->setLibelle($_POST['amaj_libelle']);
		if (!isset($_POST['amaj_mark_cp_diminuer'])) {
			$_POST['amaj_mark_cp_diminuer'] = 0;
		}
		$AbsenceMotif->setMarkCpDiminuer($_POST['amaj_mark_cp_diminuer']);
		if (!isset($_POST['amaj_mark_hs_diminuer'])) {
			$_POST['amaj_mark_hs_diminuer'] = 0;
		}
		$AbsenceMotif->setMarkHsDiminuer($_POST['amaj_mark_hs_diminuer']);

		if ($AbsenceMotif->modifier()) {
	    	$aso_admin_motif['messages'][] = "Le motif d'absence ${_POST['amaj_libelle']} a été modifié.";
	    }
	    
	    // Ajout du message d'information
		$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_motif);
	    
		// Action suivante
    	$this->setSuivant('__defaut__');
	}

    public function executerValiderSupprimer()
    {
		// Initialisation des variables
		$aso_admin_motif = array();

		// Vérif des absences
		$Absence = new Absence();
		$bool_existe = $Absence->consulter(Absence::GA_ID_ABSENCE_MOTIF, array($_POST['amsu_id']));
		if ($bool_existe == false) {
			trigger_error('Absence -> OK', E_USER_NOTICE);
			// Suppression du motif d'absence
			$AbsenceMotif = new AbsenceMotif();
			$AbsenceMotif->setIdAbsenceMotif($_POST['amsu_id']);
	    	if ($AbsenceMotif->supprimer()) {
	    		$aso_admin_motif['messages'][] = "Le motif d'absence a été supprimé.";
	    	}
		}
		// Message d'erreur si le motif d'absence est utilisé
		if ($bool_existe != false) {
			$aso_admin_motif['messages'][	] = "Il n'est pas possible de supprimer un motif d'absence contenant des données!";
		}

		// Enregistrement du message
		$this->getRegistre()->ajouterDonnee('admin_absence_motif', $aso_admin_motif);
		
		// Action suivante
    	$this->setSuivant('__defaut__');
    }
    
    
}
?>