<?php
class GttCtrlActionAdminProjet extends aControlleurAction {

	public function __construct(Registre $Registre)
	{
		$Registre->ajouterEspace('AdminProjet', 'admin_projet');
		$Registre->setTitre('Administrer les projets');
	}

	public function executer()
    {
    	$aso_admin_projet = array();
		
		// Récupération des projet
		$Projet = new Projet();
		
		// Ajout du projet par défaut
		$aso_admin_projet['Projet'] = $Projet;

		// Récupération des catégories
		$ProjetCategorie = new ProjetCategorie();
		$aso_admin_projet['categories'] = $ProjetCategorie->consulter(ProjetCategorie::GPC_TOUS);
			
		// Récupération des projets
    	$tab_p = $Projet->consulter(Projet::GP_TOUS);
    	if (false == $tab_p) {
    		$aso_admin_projet['projets'] = false;
    	} else {
			foreach ($tab_p as $Pr) {
	    			$aso_projet['id'] = $Pr->getIdProjet();
	    			$aso_projet['nom'] = $Pr->getNom();
	    			$aso_admin_projet['projets'][] = $aso_projet;
	    	}
    	}
    	
		// Modification des titres, légendes et bouton
		$aso_admin_projet['form_legend'] = 'Ajouter un projet';
		$aso_admin_projet['form_bouton_value'] = 'Ajouter';
		$aso_admin_projet['form_bouton_id'] = 'btn_projet_ajouter';
		$aso_admin_projet['form_url'] = 'index.php?action=admin-projet_valider-ajouter';
		
    	//echo '<pre>'.print_r($aso_admin_projet, true).'</pre>';
		$this->getRegistre()->ajouterDonnee('admin_projet', $aso_admin_projet);
    }

	public function executerEditer()
    {
		if (isset($_POST['btn_projet_modifier'])) {
			// Récupération des données du projet à modifier
			$Projet = new Projet();
			$Projet->consulter(Projet::GP_ID, $_POST['prsu_id'], true);
			$aso_admin_projet['Projet'] = $Projet;
			// Récupération des catégories
			$ProjetCategorie = new ProjetCategorie();
			$aso_admin_projet['categories'] = $ProjetCategorie->consulter(ProjetCategorie::GPC_TOUS);

			// Ajout de la catégorie par défaut
			$ProjetCategorie->consulter(ProjetCategorie::GPC_ID, $Projet->getCeCategorie(), true);
			$aso_admin_projet['CategorieDefaut'] = $ProjetCategorie; 
			//echo '<hr>'.print_r($aso_admin_projet['CategorieDefaut'],true);
			// Modification des titres, légendes et bouton
			$aso_admin_projet['form_legend'] = 'Modifier une projet';
			$aso_admin_projet['form_bouton_value'] = 'Modifier';
			$aso_admin_projet['form_bouton_id'] = 'btn_projet_modifier';
			$aso_admin_projet['form_url'] = 'index.php?action=admin-projet_valider-modifier';

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

	public function executerValiderModifier()
	{
		if (isset($_POST['btn_utilisateur_annuler'])) {
			// Action suivante
    		$this->setSuivant('__defaut__');
    	} else if (isset($_POST['btn_projet_modifier'])) {
			$aso_admin_projet = array();
			$bool_modifier = true;
			$this->verifierChampsCommuns($aso_admin_projet, $bool_modifier);
			if ($bool_modifier) {
				// Action suivante
		    	$this->setSuivant('modifier');
			} else {
				$this->getRegistre()->ajouterDonnee('admin_projet', $aso_admin_projet);
				// Action suivante
		    	$this->setSuivant('__defaut__');
			}
		}
	}
	
	public function executerModifier()
	{
		$Projet = new Projet();
		//$Projet->setIdCategorie($_POST['caaj_id_categorie']);
		$Projet->setIdProjet($_POST['praj_id_projet']);
		$Projet->setCeCategorie($_POST['praj_ce_categorie']);
		$Projet->setNom($_POST['praj_nom']);
		$Projet->setDescription($_POST['praj_description']);
		$Projet->setDateDebut($_POST['praj_date_debut']);
		$Projet->setDateFin($_POST['praj_date_fin']);
		$Projet->setDureePrevue($_POST['praj_duree_prevue']);
		$Projet->setDureeFinance($_POST['praj_duree_finance']);
		$Projet->setAvancement($_POST['praj_avancement']);
    	if ($Projet->modifier()) {
    		$aso_admin_projet['messages'][] = "Le projet ${_POST['praj_nom']} a été modifié.";
    	}
    	// Ajout du message d'information
		$this->getRegistre()->ajouterDonnee('admin_projet', $aso_admin_projet);
		
		// Action suivante
    	$this->setSuivant('__defaut__');
	}
	
    public function executerValiderAjouter()
    {
		$aso_admin_projet = array();
		if (isset($_POST['btn_projet_annuler'])) {
			// Action suivante
    		$this->setSuivant('__defaut__');
    	} else if (isset($_POST['btn_projet_ajouter'])) {
			$bool_ajouter = true;
			// Vérification de l'existance d'un projet avec le même nom
			$Projet = new Projet();
			$bool_existe = $Projet->consulter(Projet::GP_NOM, array($_POST['praj_nom']));
			if (true == $bool_existe) {
				$aso_admin_projet['messages'][] = "Un projet avec un nom identique existe déjà !";
				$bool_ajouter = false;
			}
			$this->verifierChampsCommuns($aso_admin_projet, $bool_ajouter);
			$this->getRegistre()->ajouterDonnee('admin_projet', $aso_admin_projet);
			if ($bool_ajouter) {
				// Action suivante
		    	$this->setSuivant('ajouter');
			} else {
				// Action suivante
		    	$this->setSuivant('__defaut__');
			}
		}
    }
	
	public function executerAjouter()
	{
		$aso_admin_projet = array();
		$Projet = new Projet();
		$Projet->setCeCategorie($_POST['praj_ce_categorie']);
		$Projet->setNom($_POST['praj_nom']);
		$Projet->setDescription($_POST['praj_description']);
		$Projet->setDateDebut($_POST['praj_date_debut']);
		$Projet->setDateFin($_POST['praj_date_fin']);
		$Projet->setDureePrevue($_POST['praj_duree_prevue']);
		$Projet->setDureeFinance($_POST['praj_duree_finance']);
		$Projet->setAvancement($_POST['praj_avancement']);
		if ($Projet->ajouter()) {
			$aso_admin_projet['messages'][] = "Le projet ${_POST['praj_nom']} a été ajouté.";
		}
		
		// Ajout du message d'information
		$this->getRegistre()->ajouterDonnee('admin_projet', $aso_admin_projet);
		
		// Action suivante
    	$this->setSuivant('__defaut__');
	}
	
	public function verifierChampsCommuns(&$aso_admin_projet, &$bool)
	{
		if (empty($_POST['praj_nom'])) {
			$aso_admin_projet['messages'][] = 'Le nom du projet ne doit pas être vide !';
			$bool = false;
		}
	}

    public function executerValiderSupprimer()
    {
		$aso_admin_projet = array();
		// Vérif des utilisateur_a_projets
		$UtilisateurAProjet = new UtilisateurAProjet();
		$bool_existe = $UtilisateurAProjet->consulter(UtilisateurAProjet::GUAP_PROJET, array($_POST['prsu_id']));
		if ($bool_existe == false) {
			trigger_error('UtilisateurAProjet -> OK', E_USER_NOTICE);
			// Vérif des travail_projets
			$TravailProjet = new TravailProjet();
			$bool_existe = $TravailProjet->consulter(TravailProjet::GTP_PROJET, array($_POST['prsu_id']));
			if ($bool_existe == false) {
				trigger_error('TravailProjet -> OK', E_USER_NOTICE);
				// Suppression du projet
				$Projet = new Projet();
				$Projet->setIdProjet($_POST['prsu_id']);
		    	if ($Projet->supprimer()) {
		    		$aso_admin_projet['messages'][] = "Le projet a été supprimé.";
		    	}
			}
		}
		// Message d'erreur si le projet contient des données
		if ($bool_existe != false) {
			$aso_admin_projet['messages'][] = "Il n'est pas possible de supprimer un projet contenant des données!";
		}

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