Subversion Repositories Applications.annuaire

Rev

Rev 329 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
296 aurelien 1
<?php
2
class Cotisation extends AppControleur {
3
 
4
	public function Cotisation() {
5
 
6
		parent::__construct();
7
	}
8
 
9
    /**
10
     * Initialisation du controleur principal en fonction des paramètres de l'url.
11
     */
12
    public function executerPlugin() {
13
 
14
    	$plugin_action = Config::get('plugin_variable_action');
15
 
16
        if (isset($_GET[$plugin_action])) {
17
            $action = $_GET[$plugin_action];
18
        } else {
19
        	$action = Config::get('plugin_action_defaut');
20
        }
21
 
22
        if(!$this->controleAccesAdmin($action)) {
23
        	return;
24
        }
25
 
26
        unset($_GET[$plugin_action]);
27
 
28
        $resultat_action_plugin = $this->$action($_GET);
29
 
30
        return $resultat_action_plugin ;
31
    }
32
 
33
    /**
34
     * Méthode appelée pour ajouter un élément.
35
     */
36
    public function ajouterCotisation() {
37
 
38
    	$params = $_POST;
39
 
40
    	$elements_requis = array('id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');
41
    	$erreurs = array();
42
 
43
    	foreach($elements_requis as $requis) {
44
    		if(!isset($params[$requis])) {
45
    			//$erreurs[$requis] = 'erreur ';
46
    		}
47
    	}
48
 
49
    	if(!empty($erreurs)) {
50
    		$this->envoyer($erreurs);
51
    	}
52
 
53
    	$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);
54
 
55
    	$cotisation_modele = new CotisationModele();
56
    	$ajout_cotisation = $cotisation_modele->ajouterCotisation($params);
57
 
58
		if(!$ajout_cotisation) {
59
    		$retour['erreurs'] = 'erreur d\'insertion';
60
    	}
61
 
62
    	$retour['id_utilisateur'] = $params['id_cotisant'];
63
 
64
    	return $this->afficherInformationsCotisationPourInscrit($retour);
65
 
66
    }
67
 
68
    /**
69
     * Méthode appelée pour mettre à jour une cotisation
70
     */
71
    public function mettreAJourCotisation()    {
72
 
73
    	$params = $_POST;
74
 
75
    	$id_cotisation = $params['id_cotisation'];
76
 
77
    	$elements_requis = array('id_cotisation','id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');
78
    	$erreurs = array();
79
 
80
    	foreach($elements_requis as $requis) {
81
    		if(!isset($params[$requis])) {
82
    			//$erreurs[$requis] = 'erreur ';
83
    		}
84
    	}
85
 
86
    	if(!empty($erreurs)) {
87
    		$this->envoyer($erreurs);
88
    	}
89
 
90
    	$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);
91
 
92
    	$cotisation_modele = new CotisationModele();
93
    	$modification_cotisation = $cotisation_modele->mettreAJourCotisation($id_cotisation, $params);
94
 
95
		if(!$modification_cotisation) {
96
    		$retour['erreurs'] = 'erreur d\'insertion';
97
    	}
98
 
99
    	$retour['id_utilisateur'] = $params['id_cotisant'];
100
 
101
    	return $this->afficherInformationsCotisationPourInscrit($retour);
102
    }
103
 
104
    /**
105
     * Méthode appelée pour supprimer un élément
106
     */
107
    public function supprimerCotisation() {
108
 
109
    	$id_cotisation = $_GET['id_cotisation'];
110
 
111
    	$cotisation_modele = new CotisationModele();
112
    	$suppression_cotisation = $cotisation_modele->supprimerCotisation($id_cotisation);
113
 
114
    	if(!$suppression_cotisation) {
115
    		// TODO: comment gère t'on les erreurs ?
116
    	}
117
 
118
    	$param['id_utilisateur'] = $_GET['id_utilisateur'];
119
 
120
    	return $this->afficherInformationsCotisationPourInscrit($param);
121
 
122
    }
123
 
124
     /**
125
     *
126
	 * Affiche un tableau récapitulant les informations de l'historique des cotisations pour un membre donné
127
     */
128
    private function afficherInformationsCotisationPourInscrit($param) {
129
 
130
    	$id_inscrit = $param['id_utilisateur'];
131
 
132
    	if(!Registre::getInstance()->get('est_admin')) {
133
    		$id_inscrit = Registre::getInstance()->get('identification_id');
134
    	}
135
 
136
    	$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
137
 
138
    	$donnees['url_formulaire_ajout_cotisation'] = $this->getUrlFormulaireAjoutCotisation($id_inscrit);
139
 
140
    	if(isset($param['message'])) {
141
    		$donnees['message'] = $param['message'];
142
    	}
143
 
144
    	if(Registre::getInstance()->get('est_admin')) {
145
    		$squelette = 'liste_cotisations_admin';
146
    	} else {
147
    		$squelette = 'liste_cotisations_inscrit';
148
    	}
149
 
150
    	$liste_cotisations_html = $this->renvoyerSquelette($squelette, $donnees);
151
 
152
    	return $liste_cotisations_html;
153
    }
154
 
155
    /**
156
     *
157
	 *  Renvoie les informations de cotisation pour un membre donné
158
     */
159
	private function obtenirInformationsCotisationPourInscrit($param) {
160
 
161
		$id_inscrit = $param['id_utilisateur'];
162
 
163
		if(!Registre::getInstance()->get('est_admin')) {
164
    		$id_inscrit = Registre::getInstance()->get('identification_id');
165
    	}
166
 
167
		$cotisation_modele = new CotisationModele();
168
		$infos_cotisation_inscrit = $cotisation_modele->obtenirInformationsCotisationsPourInscrit($id_inscrit);
169
 
170
    	$infos_cotisation_inscrit_formatees = array();
171
 
172
    	foreach($infos_cotisation_inscrit as $cotisation_inscrit) {
173
    		$infos_cotisation_inscrit_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation_inscrit);
174
    	}
175
 
176
    	return $infos_cotisation_inscrit_formatees;
177
	}
178
 
179
 
180
	private function afficherFormulaireAjoutCotisation($param) {
181
 
182
		$donnees['id_cotisant'] = $param['id_cotisant'];
183
 
184
    	$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
185
 
186
    	$cotisation_modele = new CotisationModele();
187
    	$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();
188
 
189
    	$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();
190
 
191
    	$donnees['url_ajout_cotisation'] = $this->getUrlAjoutCotisation();
192
 
193
    	$donnees['url_retour'] = $this->urlService();
194
 
195
    	$liste_cotisations_html = $this->renvoyerSquelette('formulaire_ajout_cotisation', $donnees);
196
 
197
    	return $liste_cotisations_html;
198
    }
199
 
200
    private function afficherFormulaireModificationCotisation() {
201
 
202
    	$param = $_GET;
203
 
204
    	$donnees['id_utilisateur'] = $param['id_utilisateur'];
205
    	$donnees['id_cotisation_a_modifer'] = $param['id_cotisation'];
206
 
207
    	$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
208
 
209
    	$cotisation_modele = new CotisationModele();
210
    	$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();
211
 
212
    	$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();
213
 
214
    	$donnees['url_modification_cotisation'] = $this->getUrlModificationCotisation($donnees['id_cotisation_a_modifer']);
215
 
216
    	$donnees['url_retour'] = $this->urlService();
217
 
218
    	$liste_cotisations_html = $this->renvoyerSquelette('formulaire_modification_cotisation', $donnees);
219
 
220
    	return $liste_cotisations_html;
221
    }
222
 
223
    // +---------------------------------------------------------------------------------------------------------------+
224
    // METHODES D'ACCES A LA BASE DE DONNEES
225
 
226
    private function getInformationsHistoriqueCotisation() {
227
 
228
    	$requete_infos_historique_cotisation = 'SELECT * FROM annuaire_COTISATION';
229
 
230
    	$infos_historique_cotisation = $this->executerRequete($requete_infos_historique_cotisation);
231
 
232
    	$infos_historique_cotisation_formatees = array();
233
 
234
    	foreach($infos_historique_cotisation as $cotisation) {
235
    		$infos_historique_cotisation_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation);
236
    	}
237
 
238
    	return $infos_historique_cotisation_formatees;
239
    }
240
 
241
	private function envoyerRecuCotisation($param) {
242
 
243
    	$id_cotisation = $param['id_cotisation'];
244
 
245
    	$id_utilisateur = $param['id_utilisateur'];
246
 
247
		if(!Registre::getInstance()->get('est_admin')) {
248
    		$id_utilisateur = Registre::getInstance()->get('identification_id');
249
    	}
250
 
251
    	$id_annuaire = Config::get('annuaire_defaut');
252
 
253
    	if(isset($_GET['id_annuaire'])) {
254
    		$id_annuaire = $_GET['id_annuaire'];
255
    	}
256
 
257
    	$utilisateur = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
258
 
259
	    if(!isset($id_cotisation)) {
260
    		return;
261
    	}
262
 
263
    	$cotisation_modele = new CotisationModele();
264
    	$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($id_cotisation, $id_utilisateur);
265
 
266
    	if(empty($infos_cotisation)) {
267
    		return;
268
    	}
269
 
270
    	$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
271
 
272
	    if(!$this->recuEstGenere($infos_cotisation_formatees)) {
273
 
274
    		$numero_nouveau_recu = $this->calculerNouvelOrdreRecuPourCotisation($infos_cotisation_formatees);
275
    		$infos_cotisation_formatees['recu_envoye'] = $numero_nouveau_recu;
276
    		$infos_cotisation_formatees = $this->mettreAJourNumeroRecu($infos_cotisation_formatees['id_cotisation'],$numero_nouveau_recu);
277
 
278
	    }
279
 
280
	    if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {
281
	    	$infos_cotisation_formatees = $this->mettreAJourDateEnvoiRecuPourCotisation($infos_cotisation_formatees);
282
	    }
283
 
284
    	$recu = new Recu();
285
 
286
    	$recu_pdf = $recu->renvoyerRecuPdf($utilisateur, $infos_cotisation_formatees);
287
 
288
    	$messagerie = new MessageControleur();
289
 
290
    	$donnees['url_voir_recu'] = $this->getUrlTelechargementRecuPourMail($id_cotisation);
291
 
292
    	$contenu_message = $this->renvoyerSquelette('message_recu_cotisation', $donnees);
293
 
294
    	$envoi = $messagerie->envoyerMailAvecPieceJointe(Config::get('adresse_mail_cotisation'), 'aurelienperonnet@gmail.com', 'Recu pour votre don à tela botanica', $contenu_message, $recu_pdf, 'Recu.pdf', 'application/pdf');
295
 
296
    	$param['message'] = 'Votre reçu a bien été envoyé à l\'adresse '.$utilisateur['mail']['amv_valeur'];
297
 
298
    	return $this->afficherInformationsCotisationPourInscrit($param);
299
    }
300
 
301
    private function voirRecuCotisation($param) {
302
 
303
    	$id_cotisation = $param['id_cotisation'];
304
 
305
    	$id_utilisateur = $param['id_utilisateur'];
306
 
307
    	if(!Registre::getInstance()->get('est_admin')) {
308
    		$id_utilisateur = Registre::getInstance()->get('identification_id');
309
    	}
310
 
311
    	$id_annuaire = Config::get('annuaire_defaut');
312
 
313
    	if(isset($_GET['id_annuaire'])) {
314
    		$id_annuaire = $_GET['id_annuaire'];
315
    	}
316
 
317
    	$utilisateur = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
318
 
319
	    if(!isset($id_cotisation)) {
320
    		return;
321
    	}
322
 
323
    	$cotisation_modele = new CotisationModele();
324
    	$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($id_cotisation, $id_utilisateur);
325
 
326
    	if(empty($infos_cotisation)) {
327
    		return;
328
    	}
329
 
330
    	$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
331
 
332
    	if(!$this->recuEstGenere($infos_cotisation_formatees)) {
333
    		$numero_nouveau_recu = $this->calculerNouvelOrdreRecuPourCotisation($infos_cotisation_formatees);
334
    		$infos_cotisation_formatees['recu_envoye'] = $numero_nouveau_recu;
335
    		$infos_cotisation_formatees = $this->mettreAJourNumeroRecu($infos_cotisation_formatees['id_cotisation'],$numero_nouveau_recu);
336
    	}
337
 
338
    	$recu = new Recu();
339
 
340
    	$recu->afficherRecuPdf($utilisateur, $infos_cotisation_formatees);
341
 
342
    	return true;
343
    }
344
 
345
    private function recuEstGenere($cotisation) {
346
 
347
    	if($cotisation['recu_envoye'] != null && $cotisation['recu_envoye'] != 0) {
348
    		return true;
349
    	}
350
 
351
    	return false;
352
    }
353
 
354
	private function recuEstEnvoye($cotisation) {
355
 
356
    	if($cotisation['date_envoi_recu'] != null && $cotisation['date_envoi_recu'] != 0) {
357
    		return true;
358
    	}
359
 
360
    	return false;
361
    }
362
 
363
    private function calculerNouvelOrdreRecuPourCotisation() {
364
 
365
    	$cotisation_modele = new CotisationModele();
366
    	$numero_ordre = $cotisation_modele->calculerNouvelOrdreRecuEtIncrementer();
367
 
368
    	return $numero_ordre;
369
    }
370
 
371
    private function mettreAJourDateEnvoiRecuPourCotisation($cotisation) {
372
 
373
    	$cotisation_modele = new CotisationModele();
374
    	$cotisation_modele->mettreAJourDateEnvoiRecu($cotisation['id_cotisation']);
375
 
376
    	$cotisation['date_envoi_recu'] = $this->genererDateCouranteFormatMySql();
377
 
378
    	return $cotisation;
379
    }
380
 
381
	private function mettreAJourNumeroRecu($id_cotisation, $numero_recu) {
382
 
383
    	$cotisation_modele = new CotisationModele();
384
    	$cotisation_modele->mettreAJourNumeroRecu($id_cotisation, $numero_recu);
385
 
386
    	return $cotisation;
387
    }
388
 
389
    private function formaterInformationsCotisationPourEnvoi($cotisation) {
390
 
391
    	$cotisation_modele = new CotisationModele();
392
 
393
    	$cotisation_champs_formates = array(
394
		    	'id_cotisation' => $cotisation['IC_ID'],
395
		    	'id_inscrit' => $cotisation['IC_ANNU_ID'],
396
				'date_cotisation' => $this->formaterDateMysqlVersDateAnnuaire($cotisation['IC_DATE']),
397
    			'montant_cotisation' => $cotisation['IC_MONTANT'],
398
				'mode_cotisation' => $cotisation_modele->obtenirModeCotisationParId($cotisation['IC_MC_ID']),
399
				'id_mode_cotisation' => $cotisation['IC_MC_ID'],
400
				'recu_envoye' => $cotisation['IC_RECU'],
401
    			'date_envoi_recu' => $this->formaterDateMysqlVersDateCotisation($cotisation['IC_DATE_ENVOIE_RECU']),
402
    			'url_voir_recu' => $this->getUrlVoirRecuCotisation($cotisation['IC_ID']),
403
    	    	'url_envoyer_recu' => $this->getUrlEnvoiRecuCotisation($cotisation['IC_ID']),
404
    			'url_formulaire_modification' => $this->getUrlFormulaireModificationCotisation($cotisation['IC_ID']),
405
    			'url_suppression' => $this->getUrlSuppressionCotisation($cotisation['IC_ID'])
406
		    );
407
 
408
		return $cotisation_champs_formates;
409
    }
410
 
411
    private function renvoyerSquelette($squelette, $donnees) {
412
 
413
    	$chemin_squelette = Config::get('chemin_appli').'composants'.DS.ANNUAIRE_PLUGIN.DS.'squelettes'.DS.$squelette.'.tpl.html';
414
 
415
    	$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
416
    	//$squelette_dossier = .'squelettes'.DS;
417
    	return $sortie;
418
    }
419
 
420
	private function urlService($params = array()) {
421
 
422
    	$url_service = new Url(Url::getDemande()->getUrl());
423
 
424
    	$variables_requetes = $url_service->getVariablesRequete();
425
 
426
    	$variables_plugins = array(Config::get('plugin_variable_action'), 'id_cotisation', 'id_cotisant');
427
 
428
    	foreach($params as $cle => $valeur) {
429
    		$variables_requetes[$cle] = $valeur;
430
    	}
431
 
432
    	$url_service->setVariablesRequete($variables_requetes);
433
 
434
    	return $url_service->getUrl();
435
    }
436
 
437
	private function getUrlVoirListeCotisations() {
438
 
439
		$params = array('action_cotisation' => 'afficherInformationsCotisationPourInscrit');
440
 
441
    	return $this->urlService($params);
442
    }
443
 
444
	private function getUrlVoirRecuCotisation($id_cotisation) {
445
 
446
		$params = array('action_cotisation' => 'voirRecuCotisation',
447
						'id_cotisation' => $id_cotisation);
448
 
449
    	return $this->urlService($params);
450
    }
451
 
452
    private function getUrlTelechargementRecuPourMail($id_cotisation) {
453
    	return Config::get('base_url_telechargement').'?m=annuaire_afficher_page&page=cotisations&id_annuaire=1&action_cotisation=voirRecuCotisation&id_cotisation='.$id_cotisation;
454
    }
455
 
456
	private function getUrlEnvoiRecuCotisation($id_cotisation) {
457
 
458
		$params = array('action_cotisation' => 'envoyerRecuCotisation',
459
						'id_cotisation' => $id_cotisation);
460
 
461
    	return $this->urlService($params);
462
    }
463
 
464
    private function getUrlFormulaireAjoutCotisation($id_cotisant) {
465
 
466
    	$params = array('action_cotisation' => 'afficherFormulaireAjoutCotisation',
467
						'id_cotisant' => $id_cotisant);
468
 
469
    	return $this->urlService($params);
470
    }
471
 
472
	private function getUrlAjoutCotisation() {
473
 
474
    	$params = array('action_cotisation' => 'ajouterCotisation');
475
 
476
    	return $this->urlService($params);
477
    }
478
 
479
    private function getUrlFormulaireModificationCotisation($id_cotisation) {
480
 
481
    	$params = array('action_cotisation' => 'afficherFormulaireModificationCotisation',
482
						'id_cotisation' => $id_cotisation);
483
 
484
    	return $this->urlService($params);
485
    }
486
 
487
   	private function getUrlModificationCotisation($id_cotisation) {
488
 
489
   		$params = array('action_cotisation' => 'mettreAjourCotisation',
490
					'id_cotisation' => $id_cotisation);
491
 
492
   		return $this->urlService($params);
493
   	}
494
 
495
	private function getUrlSuppressionCotisation($id_cotisation) {
496
 
497
		$params = array('action_cotisation' => 'supprimerCotisation',
498
					'id_cotisation' => $id_cotisation);
499
 
500
    	return $this->urlService($params);
501
    }
502
 
503
    private function controleAccesAdmin($fonction) {
504
 
505
    	$fonction_admins = array(
506
    		'ajouterCotisation',
507
    		'mettreAJourCotisation',
508
    		'supprimerCotisation',
509
    		'afficherFormulaireAjoutCotisation',
510
    		'envoyerRecuCotisation'
511
    	);
512
 
513
    	if(in_array($fonction, $fonction_admins) && !Registre::getInstance()->get('est_admin')) {
514
    		return false;
515
    	}
516
 
517
    	return true;
518
    }
519
 
520
    private function formaterDateMysqlVersDateCotisation($date) {
521
    	if($date == '0000-00-00') {
522
    		return 0;
523
    	}
524
    	return $this->formaterDateMysqlVersDateAnnuaire($date);
525
    }
526
}
527
?>