Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 320 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de test des Controleurs.
5
 *
6
 * @package     Collection
7
 * @category    Php 5.2
8
 * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Individu extends aControleur {
320 aurelien 15
 
31 aurelien 16
	private $id_individu_en_cours = null;
320 aurelien 17
 
31 aurelien 18
    public function __construct()  {
320 aurelien 19
 
31 aurelien 20
		parent::__construct();
21
        $this->initialiser();
22
    }
320 aurelien 23
 
31 aurelien 24
    public function initialiser() {
320 aurelien 25
 
70 aurelien 26
    	if(isset($_GET['id_individu'])) {
27
    		$this->id_individu_en_cours = $_GET['id_individu'];
28
    	}
31 aurelien 29
    	$this->setNavigation();
30
    }
320 aurelien 31
 
31 aurelien 32
    public function executerActionParDefaut() {
35 aurelien 33
    	return $this->afficherFormulaireSaisieIndividu();
31 aurelien 34
    }
320 aurelien 35
 
35 aurelien 36
    public function afficherFormulaireSaisieIndividu($donnees = array()) {
320 aurelien 37
 
35 aurelien 38
    	$formulaire = $this->getFormulaireSaisieIndividu($donnees);
320 aurelien 39
    	$this->setSortie(self::RENDU_CORPS, $formulaire);
31 aurelien 40
    }
320 aurelien 41
 
35 aurelien 42
    public function getFormulaireSaisieIndividu($donnees = array()) {
320 aurelien 43
 
324 aurelien 44
      if($donnees == array()) {
210 aurelien 45
		    $donnees['individu_nom'] = '';
46
    	}
320 aurelien 47
 
44 aurelien 48
    	$donnees['id_station'] = $_GET['id_station'];
320 aurelien 49
 
44 aurelien 50
    	if(!isset($donnees['id_espece'])) {
51
    		$donnees['id_espece'] = $_GET['id_espece'];
52
    	}
320 aurelien 53
 
44 aurelien 54
    	$espece_dao = new EspeceDao();
320 aurelien 55
 
44 aurelien 56
    	$donnees['informations_espece'] = $espece_dao->getInformationsEspece($donnees['id_espece']);
35 aurelien 57
    	return $this->getVue('formulaires/individu_saisie',$donnees);
58
    }
320 aurelien 59
 
324 aurelien 60
		public function afficherFormulaireModificationIndividu($donnees = array()) {
320 aurelien 61
 
210 aurelien 62
    	$individu_dao = new IndividuDao();
320 aurelien 63
 
210 aurelien 64
    	$id_individu = $_GET['id_individu'];
324 aurelien 65
			$donnees['infos_individu'] = $individu_dao->getInformationsIndividu($id_individu);
210 aurelien 66
    	$donnees['id_station'] = $_GET['id_station'];
67
    	$donnees['id_espece'] = $_GET['id_espece'];
320 aurelien 68
 
210 aurelien 69
    	$espece_dao = new EspeceDao();
70
    	$donnees['informations_espece'] = $espece_dao->getInformationsEspece($donnees['id_espece']);
320 aurelien 71
 
210 aurelien 72
    	$this->setSortie(self::RENDU_CORPS,$this->getVue('formulaires/individu_modification',$donnees));
324 aurelien 73
  	}
210 aurelien 74
 
44 aurelien 75
    public function afficherListeIndividu() {
320 aurelien 76
 
44 aurelien 77
    	$this->setSortie(self::RENDU_CORPS, $this->getListeIndividu());
78
    }
320 aurelien 79
 
80
    public function getListeIndividu() {
81
 
31 aurelien 82
    	$id_utilisateur = AppControleur::getUtilisateur()->getIdentifiantNumerique();
320 aurelien 83
 
35 aurelien 84
    	$id_station = $_GET['id_station'];
85
    	$id_espece = $_GET['id_espece'];
320 aurelien 86
 
44 aurelien 87
        if(isset($_GET['annee'])) {
88
    		$donnees['annee'] = $_GET['annee'];
89
    	} else {
90
    		$donnees['annee'] = date('Y');
91
    	}
320 aurelien 92
 
31 aurelien 93
    	$espece = new Espece();
94
    	$evenements = $espece->getListeEvenementPourEspece($id_espece);
320 aurelien 95
 
35 aurelien 96
    	$individus = $this->getListeIndividus($id_station, $id_espece);
320 aurelien 97
 
31 aurelien 98
    	foreach($individus as &$individu) {
320 aurelien 99
 
31 aurelien 100
    		$observation = new Observation();
320 aurelien 101
 
210 aurelien 102
    		if(trim($individu['nom']) == '') {
103
    			$individu['nom'] = 'Individu sans nom';
104
    		}
320 aurelien 105
 
106
    		$individu['observations'] = $observation->getListeObservationsPourIndividu($individu['id_individu']);
70 aurelien 107
    		$individu['url'] = Liens::getUrlConsultationFicheIndividu($id_station, $id_espece, $individu['id_individu']);
31 aurelien 108
    	}
109
 
110
    	$donnees['evenements'] = $evenements;
111
    	$donnees['individus'] = $individus;
112
    	$donnees['id_station'] = $_GET['id_station'];
113
    	$donnees['id_espece'] = $_GET['id_espece'];
114
 
44 aurelien 115
        return $this->getVue('listes/evenement_liste', $donnees);
31 aurelien 116
    }
320 aurelien 117
 
210 aurelien 118
    public function afficherInformationsIndividu($donnees = array()) {
320 aurelien 119
 
43 aurelien 120
    	$id_individu = $_GET['id_individu'];
121
    	$id_espece = $_GET['id_espece'];
320 aurelien 122
 
31 aurelien 123
    	$donnees['infos_individu'] = $this->getInformationsIndividu($id_individu);
44 aurelien 124
    	$donnees['annees_observations'] = $this->getObservationsPourIndividu($id_individu);
320 aurelien 125
 
31 aurelien 126
		$espece_dao = new EspeceDao();
320 aurelien 127
    	$donnees['infos_espece'] = $espece_dao->getInformationsEspece($id_espece);
128
 
31 aurelien 129
    	$this->setSortie(self::RENDU_CORPS, $this->getVue('fiches/individu_fiche', $donnees));
320 aurelien 130
 
31 aurelien 131
    }
320 aurelien 132
 
31 aurelien 133
    // +---------------------------------------------------------------------------------------------------------------+
320 aurelien 134
    // METHODES DE VALIDATION DE FORMULAIRE
35 aurelien 135
	public function validerFormulaireSaisieIndividu() {
320 aurelien 136
 
210 aurelien 137
    	$valeurs_collectees = $this->collecterValeursFormulaireSaisieIndividu();
320 aurelien 138
 
210 aurelien 139
	    $verification_ou_erreurs = $this->verifierValeursIndividu($valeurs_collectees);
320 aurelien 140
 
210 aurelien 141
    	if($verification_ou_erreurs !== true) {
320 aurelien 142
 
210 aurelien 143
    		$donnees = $valeurs_collectees;
320 aurelien 144
 
210 aurelien 145
    		$donnees['erreurs'] = $verification_ou_erreurs;
146
    		$this->afficherFormulaireSaisieIndividu($donnees);
147
    		return;
148
    	}
320 aurelien 149
 
210 aurelien 150
    	$valeurs_verifiees = $valeurs_collectees;
320 aurelien 151
 
44 aurelien 152
    	$individu_dao = new IndividuDao();
153
    	$retour_ajout_individu = $individu_dao->ajouterIndividu($valeurs_verifiees);
320 aurelien 154
 
44 aurelien 155
    	if($id_nouvel_individu = $this->renvoyerIdSiAjoutIndividuEffectue($retour_ajout_individu)) {
156
    		$this->afficherListeIndividu();
157
    		$this->setNavigation();
320 aurelien 158
    	} else {
210 aurelien 159
    		$this->afficherFormulaireSaisieIndividu($donnees);
44 aurelien 160
    	}
35 aurelien 161
    }
320 aurelien 162
 
44 aurelien 163
	private function renvoyerIdSiAjoutIndividuEffectue($donnees_retour_dao) {
320 aurelien 164
 
44 aurelien 165
    	if(isset($donnees_retour_dao['id_nouvel_individu'])) {
166
    		return $donnees_retour_dao['id_nouvel_individu'];
167
    	}
320 aurelien 168
 
44 aurelien 169
    	return false;
170
    }
320 aurelien 171
 
35 aurelien 172
    private function collecterValeursFormulaireSaisieIndividu() {
320 aurelien 173
 
35 aurelien 174
    	$valeurs_verifiees['id_station'] = $_POST['station'];
175
	    $valeurs_verifiees['id_espece'] =  $_POST['espece'];
176
	    $valeurs_verifiees['individu_nom'] = $_POST['individu_nom'];
324 aurelien 177
			$valeurs_verifiees['individu_commentaire'] = $_POST['individu_commentaire'];
320 aurelien 178
 
35 aurelien 179
	    return $valeurs_verifiees;
320 aurelien 180
 
35 aurelien 181
    }
320 aurelien 182
 
210 aurelien 183
    private function collecterValeursFormulaireModificationIndividu() {
320 aurelien 184
 
210 aurelien 185
    	$valeurs_verifiees['id_station'] = $_POST['id_station'];
186
	    $valeurs_verifiees['id_espece'] =  $_POST['id_espece'];
187
	    $valeurs_verifiees['individu_nom'] = $_POST['individu_nom'];
188
	    $valeurs_verifiees['id_individu'] = $_POST['id_individu'];
324 aurelien 189
			$valeurs_verifiees['individu_commentaire'] = $_POST['individu_commentaire'];
320 aurelien 190
 
210 aurelien 191
	    return $valeurs_verifiees;
320 aurelien 192
 
210 aurelien 193
    }
320 aurelien 194
 
210 aurelien 195
    private function verifierValeursIndividu($valeurs_a_verifier) {
320 aurelien 196
 
210 aurelien 197
    	$erreurs = array();
320 aurelien 198
 
210 aurelien 199
    	foreach($valeurs_a_verifier as $champ => $valeur) {
324 aurelien 200
    		if(trim($valeur) == '' && $champ != 'individu_commentaire') {
320 aurelien 201
    			$erreurs[$champ] .= ' Ce champ ne peut pas être vide';
210 aurelien 202
    		}
203
    	}
320 aurelien 204
 
210 aurelien 205
    	if(!empty($erreurs)) {
206
    		return $erreurs;
207
    	}
320 aurelien 208
 
210 aurelien 209
    	return true;
210
    }
320 aurelien 211
 
210 aurelien 212
	public function validerFormulaireModificationIndividu() {
320 aurelien 213
 
210 aurelien 214
    	$valeurs_collectees = $this->collecterValeursFormulaireModificationIndividu();
215
	    $verification_ou_erreurs = $this->verifierValeursIndividu($valeurs_collectees);
320 aurelien 216
 
210 aurelien 217
    	if($verification_ou_erreurs !== true) {
218
    		$donnees = $valeurs_collectees;
320 aurelien 219
 
210 aurelien 220
    		$donnees['erreurs'] = $verification_ou_erreurs;
221
    		$this->afficherFormulaireModificationIndividu($donnees);
222
    		return;
223
    	}
320 aurelien 224
 
210 aurelien 225
    	$valeurs_verifiees = $valeurs_collectees;
226
    	$id_individu = $valeurs_collectees['id_individu'];
320 aurelien 227
 
210 aurelien 228
    	$individu_dao = new IndividuDao();
229
    	$retour_modification_individu = $individu_dao->modifierIndividu($id_individu, $valeurs_verifiees);
320 aurelien 230
 
210 aurelien 231
    	$this->afficherInformationsIndividu();
232
    }
320 aurelien 233
 
210 aurelien 234
	public function supprimerIndividu() {
320 aurelien 235
 
210 aurelien 236
    	$id_individu_a_supprimer = $_POST['id_individu_a_supprimer'];
320 aurelien 237
 
210 aurelien 238
    	$observations_individu = $this->getObservationsPourIndividu($id_individu_a_supprimer);
320 aurelien 239
 
210 aurelien 240
    	if(count($observations_individu) > 0) {
241
    		$donnees = array();
242
    		$donnees['erreurs'] = 'Impossible de supprimer un individu pour lequel on a saisi des données';
320 aurelien 243
 
210 aurelien 244
    		$this->id_individu_en_cours = $id_individu_a_supprimer;
320 aurelien 245
    		$this->afficherInformationsIndividu($donnees);
246
 
210 aurelien 247
    	} else {
320 aurelien 248
 
210 aurelien 249
    		$individu_dao = new IndividuDao();
250
    		$individu_dao->supprimerIndividu($id_individu_a_supprimer);
320 aurelien 251
 
210 aurelien 252
    		$gestion_station = new Station();
253
    		$_GET['id_station'] = $_POST['id_station'];
320 aurelien 254
 
210 aurelien 255
    		$this->setSortie(self::RENDU_CORPS, $gestion_station->getFicheInformationsStation());
256
    	}
320 aurelien 257
 
210 aurelien 258
    }
320 aurelien 259
 
35 aurelien 260
    // +---------------------------------------------------------------------------------------------------------------+
320 aurelien 261
    // METHODES POUR FABRIQUER LE MENU
31 aurelien 262
    public function setNavigation() {
320 aurelien 263
 
31 aurelien 264
    	$station = new Station();
265
    	$this->setSortie(self::RENDU_NAVIGATION, $station->construireMenuNavigation());
266
    }
320 aurelien 267
 
35 aurelien 268
    protected function getListeIndividus($id_station, $id_espece) {
320 aurelien 269
 
31 aurelien 270
    	$individu_dao = new IndividuDao();
35 aurelien 271
    	return $individu_dao->getListeIndividusPourStationPourEspece($id_station,$id_espece);
320 aurelien 272
 
31 aurelien 273
    }
320 aurelien 274
 
31 aurelien 275
    private function getInformationsIndividu($id_individu) {
320 aurelien 276
 
31 aurelien 277
    	$individu_dao = new IndividuDao();
278
    	$infos_individu = $individu_dao->getInformationsIndividu($id_individu);
320 aurelien 279
 
31 aurelien 280
    	return $infos_individu;
281
    }
320 aurelien 282
 
44 aurelien 283
    private function getObservationsPourIndividu($id_individu) {
284
    	$observation_dao = new ObservationDao();
285
    	$liste_observation_pour_individu = $observation_dao->getListeObservationsPourIndividu($id_individu);
320 aurelien 286
 
44 aurelien 287
    	return $liste_observation_pour_individu;
288
    }
70 aurelien 289
}
320 aurelien 290
?>