Subversion Repositories Applications.annuaire

Rev

Rev 329 | Go to most recent revision | Details | Compare with Previous | 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
    }
329 aurelien 240
 
241
    private function obtenirNumeroRecuCotisation($param) {
242
 
296 aurelien 243
    	$id_cotisation = $param['id_cotisation'];
244
    	$id_utilisateur = $param['id_utilisateur'];
245
 
246
		if(!Registre::getInstance()->get('est_admin')) {
247
    		$id_utilisateur = Registre::getInstance()->get('identification_id');
248
    	}
249
 
250
    	$id_annuaire = Config::get('annuaire_defaut');
251
 
252
    	if(isset($_GET['id_annuaire'])) {
253
    		$id_annuaire = $_GET['id_annuaire'];
254
    	}
255
 
256
    	$utilisateur = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
257
 
258
	    if(!isset($id_cotisation)) {
259
    		return;
260
    	}
261
 
262
    	$cotisation_modele = new CotisationModele();
263
    	$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($id_cotisation, $id_utilisateur);
264
 
265
    	if(empty($infos_cotisation)) {
266
    		return;
267
    	}
268
 
269
    	$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
329 aurelien 270
 
296 aurelien 271
	    if(!$this->recuEstGenere($infos_cotisation_formatees)) {
272
 
273
    		$numero_nouveau_recu = $this->calculerNouvelOrdreRecuPourCotisation($infos_cotisation_formatees);
274
    		$infos_cotisation_formatees['recu_envoye'] = $numero_nouveau_recu;
329 aurelien 275
    		$this->mettreAJourNumeroRecu($infos_cotisation_formatees['id_cotisation'],$numero_nouveau_recu);
296 aurelien 276
 
329 aurelien 277
	    }
278
 
279
	    return $infos_cotisation_formatees;
296 aurelien 280
    }
281
 
329 aurelien 282
    private function initialiserInformationsAnnuaireUtilisateur($param) {
296 aurelien 283
 
284
    	$id_cotisation = $param['id_cotisation'];
285
    	$id_utilisateur = $param['id_utilisateur'];
286
 
329 aurelien 287
		if(!Registre::getInstance()->get('est_admin')) {
288
    		$param['id_utilisateur'] = Registre::getInstance()->get('identification_id');
296 aurelien 289
    	}
290
 
291
    	$id_annuaire = Config::get('annuaire_defaut');
292
 
293
    	if(isset($_GET['id_annuaire'])) {
329 aurelien 294
    		$param['id_annuaire'] = $_GET['id_annuaire'];
296 aurelien 295
    	}
296
 
329 aurelien 297
    	$param['utilisateur'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
296 aurelien 298
 
329 aurelien 299
    	return $param;
300
    }
301
 
302
	private function envoyerRecuCotisation($param) {
303
 
304
		$param = $this->initialiserInformationsAnnuaireUtilisateur($param);
305
 
306
		$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);
307
 
308
		if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {
309
	    	$infos_cotisation_formatees['date_envoi_recu'] = $this->mettreAJourDateEnvoiRecuPourCotisation($infos_cotisation_formatees);
310
	    }
311
 
312
    	$recu = new Recu();
313
    	$recu_pdf = $recu->renvoyerRecuPdf($param['utilisateur'], $infos_cotisation_formatees);
314
 
315
    	$messagerie = new MessageControleur();
316
    	$donnees['url_voir_recu'] = $this->getUrlTelechargementRecuPourMail($param['id_cotisation']);
317
    	$contenu_message = $this->renvoyerSquelette('message_recu_cotisation', $donnees);
318
    	$envoi = $messagerie->envoyerMailAvecPieceJointe(Config::get('adresse_mail_cotisation'), $param['utilisateur']['mail']['amv_valeur'], 'Recu pour votre don à tela botanica', $contenu_message, $recu_pdf, 'Recu.pdf', 'application/pdf');
319
 
320
    	$param['message'] = 'Votre reçu a bien été envoyé à l\'adresse '.$param['utilisateur']['mail']['amv_valeur'];
321
 
322
    	return $this->afficherInformationsCotisationPourInscrit($param);
323
    }
324
 
325
    private function voirRecuCotisation($param) {
326
 
327
		$param = $this->initialiserInformationsAnnuaireUtilisateur($param);
328
 
329
	    if(!isset($param['id_cotisation'])) {
296 aurelien 330
    		return;
331
    	}
332
 
333
    	$cotisation_modele = new CotisationModele();
329 aurelien 334
    	$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($param['id_cotisation'], $param['id_utilisateur']);
296 aurelien 335
 
336
    	if(empty($infos_cotisation)) {
337
    		return;
338
    	}
339
 
329 aurelien 340
    	$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
341
    	$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);
342
 
343
    	// tant que le recu n'est pas envoyé sa date est celle du jour courant
344
    	if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {
345
    		$infos_cotisation_formatees['date_envoi_recu'] = date('d/m/Y');
296 aurelien 346
    	}
347
 
348
    	$recu = new Recu();
349
 
329 aurelien 350
    	$recu->afficherRecuPdf($param['utilisateur'], $infos_cotisation_formatees);
296 aurelien 351
 
352
    	return true;
353
    }
354
 
355
    private function recuEstGenere($cotisation) {
356
 
357
    	if($cotisation['recu_envoye'] != null && $cotisation['recu_envoye'] != 0) {
358
    		return true;
359
    	}
360
 
361
    	return false;
362
    }
363
 
364
	private function recuEstEnvoye($cotisation) {
365
 
366
    	if($cotisation['date_envoi_recu'] != null && $cotisation['date_envoi_recu'] != 0) {
367
    		return true;
368
    	}
369
 
370
    	return false;
371
    }
372
 
336 aurelien 373
    private function calculerNouvelOrdreRecuPourCotisation($cotisation) {
296 aurelien 374
 
375
    	$cotisation_modele = new CotisationModele();
376
 
336 aurelien 377
    	$annee_recu = $cotisation['annee_cotisation'];
378
    	$numero_ordre = $cotisation_modele->calculerNouvelOrdreRecuEtIncrementer($annee_recu);
379
 
296 aurelien 380
    	return $numero_ordre;
381
    }
382
 
383
    private function mettreAJourDateEnvoiRecuPourCotisation($cotisation) {
384
 
385
    	$cotisation_modele = new CotisationModele();
386
    	$cotisation_modele->mettreAJourDateEnvoiRecu($cotisation['id_cotisation']);
387
 
329 aurelien 388
    	$date_envoi_recu = $this->genererDateCouranteFormatAnnuaire();
296 aurelien 389
 
329 aurelien 390
    	return $date_envoi_recu;
296 aurelien 391
    }
392
 
393
	private function mettreAJourNumeroRecu($id_cotisation, $numero_recu) {
394
 
395
    	$cotisation_modele = new CotisationModele();
329 aurelien 396
    	$maj_cotisation_num_recu = $cotisation_modele->mettreAJourNumeroRecu($id_cotisation, $numero_recu);
296 aurelien 397
 
329 aurelien 398
    	return $maj_cotisation_num_recu;
296 aurelien 399
    }
400
 
401
    private function formaterInformationsCotisationPourEnvoi($cotisation) {
402
 
403
    	$cotisation_modele = new CotisationModele();
404
 
405
    	$cotisation_champs_formates = array(
406
		    	'id_cotisation' => $cotisation['IC_ID'],
407
		    	'id_inscrit' => $cotisation['IC_ANNU_ID'],
329 aurelien 408
    			'annee_cotisation' => $this->formaterAnneeDateCotisationMySql($cotisation['IC_DATE']),
296 aurelien 409
				'date_cotisation' => $this->formaterDateMysqlVersDateAnnuaire($cotisation['IC_DATE']),
410
    			'montant_cotisation' => $cotisation['IC_MONTANT'],
411
				'mode_cotisation' => $cotisation_modele->obtenirModeCotisationParId($cotisation['IC_MC_ID']),
412
				'id_mode_cotisation' => $cotisation['IC_MC_ID'],
413
				'recu_envoye' => $cotisation['IC_RECU'],
414
    			'date_envoi_recu' => $this->formaterDateMysqlVersDateCotisation($cotisation['IC_DATE_ENVOIE_RECU']),
415
    			'url_voir_recu' => $this->getUrlVoirRecuCotisation($cotisation['IC_ID']),
416
    	    	'url_envoyer_recu' => $this->getUrlEnvoiRecuCotisation($cotisation['IC_ID']),
417
    			'url_formulaire_modification' => $this->getUrlFormulaireModificationCotisation($cotisation['IC_ID']),
418
    			'url_suppression' => $this->getUrlSuppressionCotisation($cotisation['IC_ID'])
419
		    );
420
 
421
		return $cotisation_champs_formates;
422
    }
423
 
424
    private function renvoyerSquelette($squelette, $donnees) {
425
 
426
    	$chemin_squelette = Config::get('chemin_appli').'composants'.DS.ANNUAIRE_PLUGIN.DS.'squelettes'.DS.$squelette.'.tpl.html';
427
 
428
    	$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
429
    	//$squelette_dossier = .'squelettes'.DS;
430
    	return $sortie;
431
    }
432
 
433
	private function urlService($params = array()) {
434
 
435
    	$url_service = new Url(Url::getDemande()->getUrl());
436
 
437
    	$variables_requetes = $url_service->getVariablesRequete();
438
 
439
    	$variables_plugins = array(Config::get('plugin_variable_action'), 'id_cotisation', 'id_cotisant');
440
 
441
    	foreach($params as $cle => $valeur) {
442
    		$variables_requetes[$cle] = $valeur;
443
    	}
444
 
445
    	$url_service->setVariablesRequete($variables_requetes);
446
 
447
    	return $url_service->getUrl();
448
    }
449
 
450
	private function getUrlVoirListeCotisations() {
451
 
452
		$params = array('action_cotisation' => 'afficherInformationsCotisationPourInscrit');
453
 
454
    	return $this->urlService($params);
455
    }
456
 
457
	private function getUrlVoirRecuCotisation($id_cotisation) {
458
 
459
		$params = array('action_cotisation' => 'voirRecuCotisation',
460
						'id_cotisation' => $id_cotisation);
461
 
462
    	return $this->urlService($params);
463
    }
464
 
465
    private function getUrlTelechargementRecuPourMail($id_cotisation) {
466
    	return Config::get('base_url_telechargement').'?m=annuaire_afficher_page&page=cotisations&id_annuaire=1&action_cotisation=voirRecuCotisation&id_cotisation='.$id_cotisation;
467
    }
468
 
469
	private function getUrlEnvoiRecuCotisation($id_cotisation) {
470
 
471
		$params = array('action_cotisation' => 'envoyerRecuCotisation',
472
						'id_cotisation' => $id_cotisation);
473
 
474
    	return $this->urlService($params);
475
    }
476
 
477
    private function getUrlFormulaireAjoutCotisation($id_cotisant) {
478
 
479
    	$params = array('action_cotisation' => 'afficherFormulaireAjoutCotisation',
480
						'id_cotisant' => $id_cotisant);
481
 
482
    	return $this->urlService($params);
483
    }
484
 
485
	private function getUrlAjoutCotisation() {
486
 
487
    	$params = array('action_cotisation' => 'ajouterCotisation');
488
 
489
    	return $this->urlService($params);
490
    }
491
 
492
    private function getUrlFormulaireModificationCotisation($id_cotisation) {
493
 
494
    	$params = array('action_cotisation' => 'afficherFormulaireModificationCotisation',
495
						'id_cotisation' => $id_cotisation);
496
 
497
    	return $this->urlService($params);
498
    }
499
 
500
   	private function getUrlModificationCotisation($id_cotisation) {
501
 
502
   		$params = array('action_cotisation' => 'mettreAjourCotisation',
503
					'id_cotisation' => $id_cotisation);
504
 
505
   		return $this->urlService($params);
506
   	}
507
 
508
	private function getUrlSuppressionCotisation($id_cotisation) {
509
 
510
		$params = array('action_cotisation' => 'supprimerCotisation',
511
					'id_cotisation' => $id_cotisation);
512
 
513
    	return $this->urlService($params);
514
    }
515
 
516
    private function controleAccesAdmin($fonction) {
517
 
518
    	$fonction_admins = array(
519
    		'ajouterCotisation',
520
    		'mettreAJourCotisation',
521
    		'supprimerCotisation',
522
    		'afficherFormulaireAjoutCotisation',
523
    		'envoyerRecuCotisation'
524
    	);
525
 
526
    	if(in_array($fonction, $fonction_admins) && !Registre::getInstance()->get('est_admin')) {
527
    		return false;
528
    	}
529
 
530
    	return true;
531
    }
532
 
329 aurelien 533
    private function formaterAnneeDateCotisationMySql($date_cotisation) {
534
 
535
    	$annee_cotisation = '0';
536
 
537
    	if($date_cotisation != '0') {
538
    		$annee_cotisation = date('Y',strtotime($date_cotisation));
539
    	}
540
 
541
    	return $annee_cotisation;
542
    }
543
 
296 aurelien 544
    private function formaterDateMysqlVersDateCotisation($date) {
545
    	if($date == '0000-00-00') {
546
    		return 0;
547
    	}
548
    	return $this->formaterDateMysqlVersDateAnnuaire($date);
549
    }
550
}
551
?>