Subversion Repositories Applications.gtt

Rev

Rev 122 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?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__');
    }
}
?>