<?php
class GttCtrlActionAdminCategorie extends aControlleurAction {

	public function __construct(Registre $Registre)
	{
		$Registre->ajouterEspace('AdminCategorie', 'admin_categorie');
		$Registre->setTitre('Administrer les catégories des projets');
	}

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

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

		// Ajout de la catégorie par défaut
		$aso_admin_categ['ProjetCategorie'] = $ProjetCategorie;
		
		// Récupération des infos sur les categories existantes 
    	$tab_pc = $ProjetCategorie->consulter(ProjetCategorie::GPC_TOUS);
    	if (false == $tab_pc) {
    		$aso_admin_categ['categories'] = false;
    	} else {
	    	foreach ($tab_pc as $pc) {
	    		if ($pc->getIdCategorie() != 0) {
	    			$aso_categ['id'] = $pc->getIdCategorie();
	    			$aso_categ['libelle'] = $pc->getLibelle();
	    			$aso_admin_categ['categories'][] = $aso_categ;
	    		}
	    	}
    	}
		// Modification des titres, légendes et bouton
		$aso_admin_categ['form_legend'] = 'Ajouter une categorie';
		$aso_admin_categ['form_bouton_value'] = 'Ajouter';
		$aso_admin_categ['form_bouton_id'] = 'btn_categorie_ajouter';
		$aso_admin_categ['form_url'] = 'index.php?action=admin-categorie_valider-ajouter';
		
    	//echo '<pre>'.print_r($aso_admin_categ, true).'</pre>';
		$this->getRegistre()->ajouterDonnee('admin_categorie', $aso_admin_categ);
    }

	public function executerEditer()
    {
		// Ajout du statut d'utilisateur
		if (isset($_POST['btn_categorie_modifier'])) {
			// Récupération des données de la categorie à modifier
			$ProjetCategorie = new ProjetCategorie();
			$ProjetCategorie->consulter(ProjetCategorie::GPC_ID, $_POST['casu_id'], true);
			$aso_admin_categ['ProjetCategorie'] = $ProjetCategorie;

			// Modification des titres, légendes et bouton
			$aso_admin_categ['form_legend'] = 'Modifier une categorie';
			$aso_admin_categ['form_bouton_value'] = 'Modifier';
			$aso_admin_categ['form_bouton_id'] = 'btn_categorie_modifier';
			$aso_admin_categ['form_url'] = 'index.php?action=admin-categorie_valider-modifier';

			$this->getRegistre()->ajouterDonnee('admin_categorie', $aso_admin_categ);
		} else if (isset($_POST['btn_categorie_supprimer'])) {
			// Action suivante
    		$this->setSuivant('ValiderSupprimer');
		}
    }

	public function executerValiderModifier()
	{
		if (isset($_POST['btn_categorie_annuler'])) {
			// Action suivante
    		$this->setSuivant('__defaut__');
    	} else if (isset($_POST['btn_categorie_modifier'])) {
			$ProjetCategorie = new ProjetCategorie();
			$ProjetCategorie->setIdCategorie($_POST['caaj_id_categorie']);
			$ProjetCategorie->setLibelle($_POST['caaj_libelle']);
			$ProjetCategorie->setAbreviation($_POST['caaj_abreviation']);
	    	$ProjetCategorie->modifier();
		}
	}
	
    public function executerValiderAjouter()
    {
		// Ajout de la catégorie
		$ProjetCategorie = new ProjetCategorie();
		$bool_existe = $ProjetCategorie->consulter(ProjetCategorie::GPC_LIBELLE, array($_POST['caaj_libelle']));
		if ($bool_existe == false) {
			$ProjetCategorie->setLibelle($_POST['caaj_libelle']);
			$ProjetCategorie->setAbreviation($_POST['caaj_abreviation']);
    		$ProjetCategorie->ajouter();
		} else {
			$aso_admin_categ['message'] = 'Cette catégorie existe déjà !';
			$this->getRegistre()->ajouterDonnee('admin_categorie', $aso_admin_categ);
		}

		// Action suivante
    	$this->setSuivant('__defaut__');
    }

    public function executerValiderSupprimer()
    {
		// Suppression de la catégorie
		$ProjetCategorie = new ProjetCategorie();
		$ProjetCategorie->setIdCategorie($_POST['casu_id']);
    	$ProjetCategorie->supprimer();

		// Mise à jour des projets appartenant à la catégorie
		$Projet = new Projet();
		$tab_p = $Projet->consulter(Projet::GP_CE_CATEGORIE, $_POST['casu_id']);
		if ($tab_p != false) {
			foreach ($tab_p as $p) {
	    		$Ancien = clone $p;
	    		$p->setCeCategorie(0);
	    		$p->modifier($Ancien);
	    	}
		}

		// Action suivante
    	$this->setSuivant('__defaut__');
    }
}
?>