Subversion Repositories Sites.obs-saisons.fr

Rev

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

<?php
// declare(encoding='UTF-8');
/**
 * Classe de test des Controleurs.
 *
 * @package     Collection
 * @category    Php 5.2
 * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright   2010 Tela-Botanica
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
 * @version     SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $
 */
class Station extends aControleur {

        private $id_station_en_cours = null;
   
    public function __construct()  {
        
                parent::__construct();
        $this->initialiser();
    }
    
    public function initialiser() {
        
        if(isset($_GET['id_station'])) {
                $this->id_station_en_cours = $_GET['id_station'];
        }
        $this->setNavigation();
        
    }
    
    public function executerActionParDefaut() {
        return $this->afficherFormulaireSaisieStation();
    }
    
        // +---------------------------------------------------------------------------------------------------------------+
    // METHODES D'AFFICHAGE DE FORMULAIRE 
    public function afficherFormulaireSaisieStation($donnees = array()) {
        
        if($donnees == array()) {               
                $donnees['station_commune'] = '';
                    $donnees['station_milieu'] = '';
                    $donnees['station_nom'] = '';
                    $donnees['station_lat'] = '';
                    $donnees['station_lon'] = '';
                        $donnees['station_alt'] = '';
                        $donnees['station_code_insee'] = '';
        }
        
        $donnees['milieux'] = $this->getListeMilieux();
        $donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees);
        $formulaire = $this->getVue('formulaires/station_saisie',$donnees);
        $this->setSortie(self::RENDU_CORPS, $formulaire);     
    }
    
        public function afficherFormulaireModificationStation($donnees = array()) {
        
                $id_station = $this->id_station_en_cours;
                if(empty($donnees)) {
                        $infos_station = $this->getInformationsStation($id_station);
                        $donnees['station_commune'] = $infos_station['commune'];
                        $donnees['station_milieu'] = $infos_station['milieu'];
                        $donnees['station_nom'] = $infos_station['nom'];
                        $donnees['station_lat'] = $infos_station['latitude'];
                        $donnees['station_lon'] = $infos_station['longitude'];
                        $donnees['station_alt'] = $infos_station['altitude'];
                        $donnees['station_code_insee'] = $infos_station['code_insee'];
                }
                $donnees['id_station'] = $id_station;
        $donnees['milieux'] = $this->getListeMilieux();
        $donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees);
        
        $formulaire = $this->getVue('formulaires/station_modification',$donnees);
        $this->setSortie(self::RENDU_CORPS, $formulaire);     
    }
    
    // +---------------------------------------------------------------------------------------------------------------+
    // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE
    public function validerFormulaireSaisieStation() {
        
        $valeurs_collectees = $this->collecterValeursFormulaireSaisieStation();
        $verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees);
        
        if($verification_ou_erreurs !== true) {                 
                $donnees = $valeurs_collectees; 
                $donnees['erreurs'] = $verification_ou_erreurs;
                $this->afficherFormulaireSaisieStation($donnees);
                return;
        }
        
        $valeurs_verifiees = $valeurs_collectees;
                
        $station_dao = new StationDao();
        $retour_ajout_station = $station_dao->ajouterStation($valeurs_verifiees);
        
        if($id_nouvelle_station = $this->renvoyerIdSiAjoutStationEffectue($retour_ajout_station)) {
                $this->id_station_en_cours = $id_nouvelle_station;
                $this->afficherInformationsStation();  
                $this->setNavigation();
        }
    }
    
    private function renvoyerIdSiAjoutStationEffectue($donnees_retour_dao) {
        
        if(isset($donnees_retour_dao['id_nouvelle_station'])) {
                return $donnees_retour_dao['id_nouvelle_station'];
        }
        
        return false;
    }
    
    private function collecterValeursFormulaireSaisieStation() {
        
        $valeurs_collectees['station_commune'] = $_POST['station_commune'];
            $valeurs_collectees['station_milieu'] =  $_POST['station_milieu'];
            $valeurs_collectees['station_nom'] = $_POST['station_nom'];
            $valeurs_collectees['station_lat'] =  $_POST['station_lat']; 
            $valeurs_collectees['station_lon'] = $_POST['station_lon'];
                $valeurs_collectees['station_alt'] = $_POST['station_alt'];
                // à voir de ce que l'on fait de ce champs qui avait été prévu mais jamais utilisé
                //$valeurs_collectees['station_description'] = $_POST['station_description'];
                $valeurs_collectees['station_code_insee'] = $_POST['station_code_insee'];
            
            return $valeurs_collectees;
        
    }
    
        private function collecterValeursFormulaireModificationStation() {
                $valeurs_collectees = $this->collecterValeursFormulaireSaisieStation();
            $valeurs_collectees['id_station'] = $_POST['id_station'];
            
            return $valeurs_collectees;
        
    }
    
    private function verifierValeursStation($valeurs_a_verifier) {
        
        $erreurs = array();
        
        foreach($valeurs_a_verifier as $champ => $valeur) {
                if(trim($valeur) == '') {
                        $erreurs[$champ] .= ' Ce champ ne peut pas être vide.'; 
                }
                
                if($champ == 'station_code_insee' && !$this->estUnCodeInseeOuUnNumDpt($valeur)) {
                        $erreurs[$champ] .= ' La valeur de ce champ doit être un numéro de département sur 2 chiffres '.
                                            'ou un code INSEE sur 5 chiffres';
                }
                
        }
        
        if(!empty($erreurs)) {
                return $erreurs;
        }
        
        return true;
    }
    
    private function estUnCodeInseeOuUnNumDpt($code) {
        $lg = strlen($code);  
        return trim($code) != '' && is_numeric($code) && ($lg == 2 || $lg == 5);
    }
    
    public function validerFormulaireModificationStation() {
        
        $valeurs_collectees = $this->collecterValeursFormulaireModificationStation();
        $verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees);
        
        if($verification_ou_erreurs !== true) {
        
                $donnees = $valeurs_collectees;
                $donnees['erreurs'] = $verification_ou_erreurs;
                $this->afficherFormulaireModificationStation($donnees);
                return;
        }
        
        $station_dao = new StationDao();
        $retour_modification = $station_dao->modifierStation($valeurs_collectees['id_station'], $valeurs_collectees);
        
        if($retour_modification) {
                $this->afficherInformationsStation();  
                $this->setNavigation();
        }
        
    }
    
    public function supprimerStation() {
        
        $id_station_a_supprimer = $_POST['id_station_a_supprimer'];
        
        $individus_station = $this->getIndividusStation($id_station_a_supprimer);
        
        if(count($individus_station) > 0) {
                $donnees = array();
                $donnees['erreurs'] = 'Impossible de supprimer une station qui contient des données';
                
                $this->id_station_en_cours = $id_station_a_supprimer;
                $this->afficherInformationsStation($donnees); 
        } else {
                $station_dao = new StationDao();
                $retour_suppression = $station_dao->supprimerStation($id_station_a_supprimer);
                
                $this->setNavigation();
                $this->executerActionParDefaut();
        }
        
    }
        
        // +---------------------------------------------------------------------------------------------------------------+
    // METHODES D'AFFICHAGES D'INFORMATION
    public function afficherlisteStation($param = null) {       
        
        $id_utilisateur = AppControleur::getIdUtilisateur();
        
        $donnees['stations'] = $this->getListeStations($id_utilisateur);
        $this->setSortie(self::RENDU_CORPS, $this->getVue('listes/station_liste', $donnees));
    }
    
        public function getFicheInformationsStation($donnees = array()) {
        
        $id_station = $this->id_station_en_cours;
        
        $donnees['id_station'] = $id_station;
        $donnees['infos_station'] = $this->getInformationsStation($id_station);
        
        $donnees['milieux'] = $this->getListeMilieux();
        
        return $this->getVue('fiches/station_fiche', $donnees);
        
    }
    
    public function afficherInformationsStation($donnees = array()) {
        
        $infos_station = $this->getFicheInformationsStation($donnees);
        
        $this->setSortie(self::RENDU_CORPS, $infos_station);
        
    }
   
    // +---------------------------------------------------------------------------------------------------------------+
    // METHODES POUR FABRIQUER LE MENU
    public function construireMenuNavigation($id_espece_en_cours = null) {
                        
        $id_station_en_cours = $this->id_station_en_cours;
        
        if(isset($_GET['id_espece'])) {
                $id_espece_en_cours = $_GET['id_espece'];
        }

        
        $stations = $this->getListeStations();
                
        foreach($stations as &$station) {  
                                
                $station['url'] = Liens::getUrlConsultationFicheStation($station['id']);
        }
        
        if($id_station_en_cours != null && $id_station_en_cours != 'saisie') {
                $especes_station_en_cours = $this->getEspecesStation($id_station_en_cours);
                
            foreach($especes_station_en_cours as &$espece) {            
                        $espece['url'] = Liens::getUrlConsultationEspeceStation($id_station_en_cours, $espece['id_espece']);
            }
                $stations[$id_station_en_cours]['especes'] = $especes_station_en_cours;
        }
        
        $donnees['stations'] = $stations;
        $donnees['id_station_en_cours'] = $id_station_en_cours;

        $donnees['id_espece_en_cours'] = $id_espece_en_cours;
        
        $menu_navigation = $this->getVue('navigation/menu', $donnees);
        
        return $menu_navigation;
        
    }
    
    public function setNavigation() {
        $this->setSortie(self::RENDU_NAVIGATION, $this->construireMenuNavigation());
    }
    
    // +---------------------------------------------------------------------------------------------------------------+
    // METHODE D'APPELS AUX DAOS
    protected function getListeStations() { 
                
        $station_dao = new StationDao();
        return $station_dao->getListeStations();
    }
    
    private function getInformationsStation($id_station) {
        
        $station_dao = new StationDao();
        $infos_station = $station_dao->getInformationsStation($id_station);
        
        $infos_station['individus'] = $this->getIndividusStation($id_station);
        
        return $infos_station;
    }
    
    private function getEspecesStation($id_station) {
        
        $espece_dao = new EspeceDao();
        $liste_especes = $espece_dao->getListeEspecesPourStation($id_station);
        
        return $liste_especes;
    }
    
    public function getIndividusStation($id_station) {
        
        $individu_dao = new IndividuDao();
        $liste_individus = $individu_dao->getListeIndividusPourStation($id_station);
        
        return $liste_individus;
    }
    
        public function getIndividusStationPourEspece($id_station,$id_espece) {
        
        $individu_dao = new IndividuDao();
        $liste_individus = $individu_dao->getListeIndividusPourStationPourEspece($id_station, $id_espece);
        
        return $liste_individus;
    }
    
    public function getListeMilieux() {
        
        $triple_dao = new TripleDao();
        $liste_milieux = $triple_dao->getListeMilieux();
        
        return $liste_milieux;
    }
}
?>