Subversion Repositories Applications.annuaire

Rev

Rev 296 | Rev 336 | 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
 
373
    private function calculerNouvelOrdreRecuPourCotisation() {
374
 
375
    	$cotisation_modele = new CotisationModele();
376
    	$numero_ordre = $cotisation_modele->calculerNouvelOrdreRecuEtIncrementer();
377
 
378
    	return $numero_ordre;
379
    }
380
 
381
    private function mettreAJourDateEnvoiRecuPourCotisation($cotisation) {
382
 
383
    	$cotisation_modele = new CotisationModele();
384
    	$cotisation_modele->mettreAJourDateEnvoiRecu($cotisation['id_cotisation']);
385
 
329 aurelien 386
    	$date_envoi_recu = $this->genererDateCouranteFormatAnnuaire();
296 aurelien 387
 
329 aurelien 388
    	return $date_envoi_recu;
296 aurelien 389
    }
390
 
391
	private function mettreAJourNumeroRecu($id_cotisation, $numero_recu) {
392
 
393
    	$cotisation_modele = new CotisationModele();
329 aurelien 394
    	$maj_cotisation_num_recu = $cotisation_modele->mettreAJourNumeroRecu($id_cotisation, $numero_recu);
296 aurelien 395
 
329 aurelien 396
    	return $maj_cotisation_num_recu;
296 aurelien 397
    }
398
 
399
    private function formaterInformationsCotisationPourEnvoi($cotisation) {
400
 
401
    	$cotisation_modele = new CotisationModele();
402
 
403
    	$cotisation_champs_formates = array(
404
		    	'id_cotisation' => $cotisation['IC_ID'],
405
		    	'id_inscrit' => $cotisation['IC_ANNU_ID'],
329 aurelien 406
    			'annee_cotisation' => $this->formaterAnneeDateCotisationMySql($cotisation['IC_DATE']),
296 aurelien 407
				'date_cotisation' => $this->formaterDateMysqlVersDateAnnuaire($cotisation['IC_DATE']),
408
    			'montant_cotisation' => $cotisation['IC_MONTANT'],
409
				'mode_cotisation' => $cotisation_modele->obtenirModeCotisationParId($cotisation['IC_MC_ID']),
410
				'id_mode_cotisation' => $cotisation['IC_MC_ID'],
411
				'recu_envoye' => $cotisation['IC_RECU'],
412
    			'date_envoi_recu' => $this->formaterDateMysqlVersDateCotisation($cotisation['IC_DATE_ENVOIE_RECU']),
413
    			'url_voir_recu' => $this->getUrlVoirRecuCotisation($cotisation['IC_ID']),
414
    	    	'url_envoyer_recu' => $this->getUrlEnvoiRecuCotisation($cotisation['IC_ID']),
415
    			'url_formulaire_modification' => $this->getUrlFormulaireModificationCotisation($cotisation['IC_ID']),
416
    			'url_suppression' => $this->getUrlSuppressionCotisation($cotisation['IC_ID'])
417
		    );
418
 
419
		return $cotisation_champs_formates;
420
    }
421
 
422
    private function renvoyerSquelette($squelette, $donnees) {
423
 
424
    	$chemin_squelette = Config::get('chemin_appli').'composants'.DS.ANNUAIRE_PLUGIN.DS.'squelettes'.DS.$squelette.'.tpl.html';
425
 
426
    	$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
427
    	//$squelette_dossier = .'squelettes'.DS;
428
    	return $sortie;
429
    }
430
 
431
	private function urlService($params = array()) {
432
 
433
    	$url_service = new Url(Url::getDemande()->getUrl());
434
 
435
    	$variables_requetes = $url_service->getVariablesRequete();
436
 
437
    	$variables_plugins = array(Config::get('plugin_variable_action'), 'id_cotisation', 'id_cotisant');
438
 
439
    	foreach($params as $cle => $valeur) {
440
    		$variables_requetes[$cle] = $valeur;
441
    	}
442
 
443
    	$url_service->setVariablesRequete($variables_requetes);
444
 
445
    	return $url_service->getUrl();
446
    }
447
 
448
	private function getUrlVoirListeCotisations() {
449
 
450
		$params = array('action_cotisation' => 'afficherInformationsCotisationPourInscrit');
451
 
452
    	return $this->urlService($params);
453
    }
454
 
455
	private function getUrlVoirRecuCotisation($id_cotisation) {
456
 
457
		$params = array('action_cotisation' => 'voirRecuCotisation',
458
						'id_cotisation' => $id_cotisation);
459
 
460
    	return $this->urlService($params);
461
    }
462
 
463
    private function getUrlTelechargementRecuPourMail($id_cotisation) {
464
    	return Config::get('base_url_telechargement').'?m=annuaire_afficher_page&page=cotisations&id_annuaire=1&action_cotisation=voirRecuCotisation&id_cotisation='.$id_cotisation;
465
    }
466
 
467
	private function getUrlEnvoiRecuCotisation($id_cotisation) {
468
 
469
		$params = array('action_cotisation' => 'envoyerRecuCotisation',
470
						'id_cotisation' => $id_cotisation);
471
 
472
    	return $this->urlService($params);
473
    }
474
 
475
    private function getUrlFormulaireAjoutCotisation($id_cotisant) {
476
 
477
    	$params = array('action_cotisation' => 'afficherFormulaireAjoutCotisation',
478
						'id_cotisant' => $id_cotisant);
479
 
480
    	return $this->urlService($params);
481
    }
482
 
483
	private function getUrlAjoutCotisation() {
484
 
485
    	$params = array('action_cotisation' => 'ajouterCotisation');
486
 
487
    	return $this->urlService($params);
488
    }
489
 
490
    private function getUrlFormulaireModificationCotisation($id_cotisation) {
491
 
492
    	$params = array('action_cotisation' => 'afficherFormulaireModificationCotisation',
493
						'id_cotisation' => $id_cotisation);
494
 
495
    	return $this->urlService($params);
496
    }
497
 
498
   	private function getUrlModificationCotisation($id_cotisation) {
499
 
500
   		$params = array('action_cotisation' => 'mettreAjourCotisation',
501
					'id_cotisation' => $id_cotisation);
502
 
503
   		return $this->urlService($params);
504
   	}
505
 
506
	private function getUrlSuppressionCotisation($id_cotisation) {
507
 
508
		$params = array('action_cotisation' => 'supprimerCotisation',
509
					'id_cotisation' => $id_cotisation);
510
 
511
    	return $this->urlService($params);
512
    }
513
 
514
    private function controleAccesAdmin($fonction) {
515
 
516
    	$fonction_admins = array(
517
    		'ajouterCotisation',
518
    		'mettreAJourCotisation',
519
    		'supprimerCotisation',
520
    		'afficherFormulaireAjoutCotisation',
521
    		'envoyerRecuCotisation'
522
    	);
523
 
524
    	if(in_array($fonction, $fonction_admins) && !Registre::getInstance()->get('est_admin')) {
525
    		return false;
526
    	}
527
 
528
    	return true;
529
    }
530
 
329 aurelien 531
    private function formaterAnneeDateCotisationMySql($date_cotisation) {
532
 
533
    	$annee_cotisation = '0';
534
 
535
    	if($date_cotisation != '0') {
536
    		$annee_cotisation = date('Y',strtotime($date_cotisation));
537
    	}
538
 
539
    	return $annee_cotisation;
540
    }
541
 
296 aurelien 542
    private function formaterDateMysqlVersDateCotisation($date) {
543
    	if($date == '0000-00-00') {
544
    		return 0;
545
    	}
546
    	return $this->formaterDateMysqlVersDateAnnuaire($date);
547
    }
548
}
549
?>