Rev 492 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
class Cotisation extends AppControleur {
public function Cotisation() {
parent::__construct();
}
/**
* Initialisation du controleur principal en fonction des paramètres de l'url.
*/
public function executerPlugin() {
$plugin_action = Config::get('plugin_variable_action');
if (isset($_GET[$plugin_action])) {
$action = $_GET[$plugin_action];
} else {
$action = Config::get('plugin_action_defaut');
}
if(!$this->controleAccesAdmin($action)) {
return;
}
unset($_GET[$plugin_action]);
$resultat_action_plugin = $this->$action($_GET);
return $resultat_action_plugin ;
}
/**
* Méthode appelée pour ajouter un élément.
*/
public function ajouterCotisation() {
$params = $_POST;
$elements_requis = array('id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');
$erreurs = array();
foreach($elements_requis as $requis) {
if(!isset($params[$requis])) {
//$erreurs[$requis] = 'erreur ';
}
}
if(!empty($erreurs)) {
$this->envoyer($erreurs);
}
$annuaire_modele = $this->getModele('AnnuaireModele');
$params['infos_utilisateur'] = $annuaire_modele->obtenirInfosUtilisateurParId($elements_requis['id_cotisant']);
$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);
$cotisation_modele = new CotisationModele();
$ajout_cotisation = $cotisation_modele->ajouterCotisation($params);
if(!$ajout_cotisation) {
$retour['erreurs'] = 'erreur d\'insertion';
}
$retour['id_utilisateur'] = $params['id_cotisant'];
return $this->afficherInformationsCotisationPourInscrit($retour);
}
/**
* Méthode appelée pour mettre à jour une cotisation
*/
public function mettreAJourCotisation() {
$params = $_POST;
$id_cotisation = $params['id_cotisation'];
$elements_requis = array('id_cotisation','id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');
$erreurs = array();
foreach($elements_requis as $requis) {
if(!isset($params[$requis])) {
//$erreurs[$requis] = 'erreur ';
}
}
if(!empty($erreurs)) {
$this->envoyer($erreurs);
}
$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);
$cotisation_modele = new CotisationModele();
$modification_cotisation = $cotisation_modele->mettreAJourCotisation($id_cotisation, $params);
if(!$modification_cotisation) {
$retour['erreurs'] = 'erreur d\'insertion';
}
$retour['id_utilisateur'] = $params['id_cotisant'];
return $this->afficherInformationsCotisationPourInscrit($retour);
}
/**
* Méthode appelée pour supprimer un élément
*/
public function supprimerCotisation() {
$id_cotisation = $_GET['id_cotisation'];
$cotisation_modele = new CotisationModele();
$suppression_cotisation = $cotisation_modele->supprimerCotisation($id_cotisation);
if(!$suppression_cotisation) {
// TODO: comment gère t'on les erreurs ?
}
$param['id_utilisateur'] = $_GET['id_utilisateur'];
return $this->afficherInformationsCotisationPourInscrit($param);
}
/**
*
* Affiche un tableau récapitulant les informations de l'historique des cotisations pour un membre donné
*/
private function afficherInformationsCotisationPourInscrit($param) {
$id_inscrit = $param['id_utilisateur'];
if(!Registre::getInstance()->get('est_admin')) {
$id_inscrit = Registre::getInstance()->get('identification_id');
}
$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
$donnees['infos_utilisateur'] = $this->getInformationsUtilisateur($id_inscrit);
$donnees['url_formulaire_ajout_cotisation'] = $this->getUrlFormulaireAjoutCotisation($id_inscrit);
if(isset($param['message'])) {
$donnees['message'] = $param['message'];
}
if(Registre::getInstance()->get('est_admin')) {
$squelette = 'liste_cotisations_admin';
} else {
$squelette = 'liste_cotisations_inscrit';
}
$liste_cotisations_html = $this->renvoyerSquelette($squelette, $donnees);
return $liste_cotisations_html;
}
/**
*
* Renvoie les informations de cotisation pour un membre donné
*/
private function obtenirInformationsCotisationPourInscrit($param) {
$id_inscrit = $param['id_utilisateur'];
if(!Registre::getInstance()->get('est_admin')) {
$id_inscrit = Registre::getInstance()->get('identification_id');
}
$cotisation_modele = new CotisationModele();
$infos_cotisation_inscrit = $cotisation_modele->obtenirInformationsCotisationsPourInscrit($id_inscrit);
$infos_cotisation_inscrit_formatees = array();
foreach($infos_cotisation_inscrit as $cotisation_inscrit) {
$infos_cotisation_inscrit_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation_inscrit);
}
return $infos_cotisation_inscrit_formatees;
}
private function afficherFormulaireAjoutCotisation($param) {
$donnees['id_cotisant'] = $param['id_cotisant'];
$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
$cotisation_modele = new CotisationModele();
$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();
$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();
$donnees['url_ajout_cotisation'] = $this->getUrlAjoutCotisation();
$donnees['url_retour'] = $this->urlService();
$donnees['infos_utilisateur'] = $this->getInformationsUtilisateur($donnees['id_cotisant']);
$liste_cotisations_html = $this->renvoyerSquelette('formulaire_ajout_cotisation', $donnees);
return $liste_cotisations_html;
}
private function afficherFormulaireModificationCotisation() {
$param = $_GET;
$donnees['id_utilisateur'] = $param['id_utilisateur'];
$donnees['id_cotisation_a_modifer'] = $param['id_cotisation'];
$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);
$cotisation_modele = new CotisationModele();
$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();
$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();
$donnees['url_modification_cotisation'] = $this->getUrlModificationCotisation($donnees['id_cotisation_a_modifer']);
$donnees['url_retour'] = $this->urlService();
$donnees['infos_utilisateur'] = $this->getInformationsUtilisateur($donnees['id_utilisateur']);
$liste_cotisations_html = $this->renvoyerSquelette('formulaire_modification_cotisation', $donnees);
return $liste_cotisations_html;
}
private function getInformationsUtilisateur($id_utilisateur) {
$id_annuaire = !empty($_GET['id_annuaire']) ? $_GET['id_annuaire'] : Config::get('annuaire_defaut');
$annuaire_modele = $this->getModele('AnnuaireModele');
return $annuaire_modele->obtenirInfosUtilisateurParId($id_annuaire, $id_utilisateur);
}
// +---------------------------------------------------------------------------------------------------------------+
// METHODES D'ACCES A LA BASE DE DONNEES
private function getInformationsHistoriqueCotisation() {
$requete_infos_historique_cotisation = 'SELECT * FROM annuaire_COTISATION';
$infos_historique_cotisation = $this->executerRequete($requete_infos_historique_cotisation);
$infos_historique_cotisation_formatees = array();
foreach($infos_historique_cotisation as $cotisation) {
$infos_historique_cotisation_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation);
}
return $infos_historique_cotisation_formatees;
}
private function obtenirNumeroRecuCotisation($param) {
$id_cotisation = $param['id_cotisation'];
$id_utilisateur = $param['id_utilisateur'];
if(!Registre::getInstance()->get('est_admin')) {
$id_utilisateur = Registre::getInstance()->get('identification_id');
}
$id_annuaire = Config::get('annuaire_defaut');
if(isset($_GET['id_annuaire'])) {
$id_annuaire = $_GET['id_annuaire'];
}
$utilisateur = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
if(!isset($id_cotisation)) {
return;
}
$cotisation_modele = new CotisationModele();
$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($id_cotisation, $id_utilisateur);
if(empty($infos_cotisation)) {
return;
}
$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
if(!$this->recuEstGenere($infos_cotisation_formatees)) {
$numero_nouveau_recu = $this->calculerNouvelOrdreRecuPourCotisation($infos_cotisation_formatees);
$infos_cotisation_formatees['recu_envoye'] = $numero_nouveau_recu;
$this->mettreAJourNumeroRecu($infos_cotisation_formatees['id_cotisation'],$numero_nouveau_recu);
}
return $infos_cotisation_formatees;
}
private function initialiserInformationsAnnuaireUtilisateur($param) {
$id_cotisation = $param['id_cotisation'];
$id_utilisateur = $param['id_utilisateur'];
if(!Registre::getInstance()->get('est_admin')) {
$param['id_utilisateur'] = Registre::getInstance()->get('identification_id');
}
$id_annuaire = Config::get('annuaire_defaut');
if(isset($_GET['id_annuaire'])) {
$param['id_annuaire'] = $_GET['id_annuaire'];
}
$param['utilisateur'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);
return $param;
}
private function envoyerRecuCotisation($param) {
$param = $this->initialiserInformationsAnnuaireUtilisateur($param);
$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);
if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {
$infos_cotisation_formatees['date_envoi_recu'] = $this->mettreAJourDateEnvoiRecuPourCotisation($infos_cotisation_formatees);
}
$recu = new Recu();
$recu_pdf = $recu->renvoyerRecuPdf($param['utilisateur'], $infos_cotisation_formatees);
$messagerie = new MessageControleur();
$donnees['url_voir_recu'] = $this->getUrlTelechargementRecuPourMail($param['id_cotisation']);
$contenu_message = $this->renvoyerSquelette('message_recu_cotisation', $donnees);
$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');
$param['message'] = 'Votre reçu a bien été envoyé à l\'adresse '.$param['utilisateur']['mail']['amv_valeur'];
return $this->afficherInformationsCotisationPourInscrit($param);
}
private function voirRecuCotisation($param) {
$param = $this->initialiserInformationsAnnuaireUtilisateur($param);
if(!isset($param['id_cotisation'])) {
return;
}
$cotisation_modele = new CotisationModele();
$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($param['id_cotisation'], $param['id_utilisateur']);
if(empty($infos_cotisation)) {
return;
}
$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);
$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);
// tant que le recu n'est pas envoyé sa date est celle du jour courant
if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {
$infos_cotisation_formatees['date_envoi_recu'] = date('d/m/Y');
}
$recu = new Recu();
$recu->afficherRecuPdf($param['utilisateur'], $infos_cotisation_formatees);
return true;
}
private function recuEstGenere($cotisation) {
if($cotisation['recu_envoye'] != null && $cotisation['recu_envoye'] != 0) {
return true;
}
return false;
}
private function recuEstEnvoye($cotisation) {
if($cotisation['date_envoi_recu'] != null && $cotisation['date_envoi_recu'] != 0) {
return true;
}
return false;
}
private function calculerNouvelOrdreRecuPourCotisation($cotisation) {
$cotisation_modele = new CotisationModele();
$annee_recu = $cotisation['annee_cotisation'];
$numero_ordre = $cotisation_modele->calculerNouvelOrdreRecuEtIncrementer($annee_recu);
return $numero_ordre;
}
private function mettreAJourDateEnvoiRecuPourCotisation($cotisation) {
$cotisation_modele = new CotisationModele();
$cotisation_modele->mettreAJourDateEnvoiRecu($cotisation['id_cotisation']);
$date_envoi_recu = $this->genererDateCouranteFormatAnnuaire();
return $date_envoi_recu;
}
private function mettreAJourNumeroRecu($id_cotisation, $numero_recu) {
$cotisation_modele = new CotisationModele();
$maj_cotisation_num_recu = $cotisation_modele->mettreAJourNumeroRecu($id_cotisation, $numero_recu);
return $maj_cotisation_num_recu;
}
private function formaterInformationsCotisationPourEnvoi($cotisation) {
$cotisation_modele = new CotisationModele();
$cotisation_champs_formates = array(
'id_cotisation' => $cotisation['IC_ID'],
'id_inscrit' => $cotisation['IC_ANNU_ID'],
'annee_cotisation' => $this->formaterAnneeDateCotisationMySql($cotisation['IC_DATE']),
'date_cotisation' => $this->formaterDateMysqlVersDateAnnuaire($cotisation['IC_DATE']),
'montant_cotisation' => $cotisation['IC_MONTANT'],
'mode_cotisation' => $cotisation_modele->obtenirModeCotisationParId($cotisation['IC_MC_ID']),
'id_mode_cotisation' => $cotisation['IC_MC_ID'],
'recu_envoye' => $cotisation['IC_RECU'],
'date_envoi_recu' => $this->formaterDateMysqlVersDateCotisation($cotisation['IC_DATE_ENVOIE_RECU']),
'url_voir_recu' => $this->getUrlVoirRecuCotisation($cotisation['IC_ID']),
'url_envoyer_recu' => $this->getUrlEnvoiRecuCotisation($cotisation['IC_ID']),
'url_formulaire_modification' => $this->getUrlFormulaireModificationCotisation($cotisation['IC_ID']),
'url_suppression' => $this->getUrlSuppressionCotisation($cotisation['IC_ID'])
);
return $cotisation_champs_formates;
}
private function renvoyerSquelette($squelette, $donnees) {
$chemin_squelette = Config::get('chemin_appli').'composants'.DS.ANNUAIRE_PLUGIN.DS.'squelettes'.DS.$squelette.'.tpl.html';
$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
//$squelette_dossier = .'squelettes'.DS;
return $sortie;
}
private function urlService($params = array()) {
$url_service = new Url(Url::getDemande()->getUrl());
$variables_requetes = $url_service->getVariablesRequete();
$variables_plugins = array(Config::get('plugin_variable_action'), 'id_cotisation', 'id_cotisant');
foreach($params as $cle => $valeur) {
$variables_requetes[$cle] = $valeur;
}
$url_service->setVariablesRequete($variables_requetes);
return $url_service->getUrl();
}
private function getUrlVoirListeCotisations() {
$params = array('action_cotisation' => 'afficherInformationsCotisationPourInscrit');
return $this->urlService($params);
}
private function getUrlVoirRecuCotisation($id_cotisation) {
$params = array('action_cotisation' => 'voirRecuCotisation',
'id_cotisation' => $id_cotisation);
return $this->urlService($params);
}
private function getUrlTelechargementRecuPourMail($id_cotisation) {
return Config::get('base_url_telechargement').'?m=annuaire_afficher_page&page=cotisations&id_annuaire=1&action_cotisation=voirRecuCotisation&id_cotisation='.$id_cotisation;
}
private function getUrlEnvoiRecuCotisation($id_cotisation) {
$params = array('action_cotisation' => 'envoyerRecuCotisation',
'id_cotisation' => $id_cotisation);
return $this->urlService($params);
}
private function getUrlFormulaireAjoutCotisation($id_cotisant) {
$params = array('action_cotisation' => 'afficherFormulaireAjoutCotisation',
'id_cotisant' => $id_cotisant);
return $this->urlService($params);
}
private function getUrlAjoutCotisation() {
$params = array('action_cotisation' => 'ajouterCotisation');
return $this->urlService($params);
}
private function getUrlFormulaireModificationCotisation($id_cotisation) {
$params = array('action_cotisation' => 'afficherFormulaireModificationCotisation',
'id_cotisation' => $id_cotisation);
return $this->urlService($params);
}
private function getUrlModificationCotisation($id_cotisation) {
$params = array('action_cotisation' => 'mettreAjourCotisation',
'id_cotisation' => $id_cotisation);
return $this->urlService($params);
}
private function getUrlSuppressionCotisation($id_cotisation) {
$params = array('action_cotisation' => 'supprimerCotisation',
'id_cotisation' => $id_cotisation);
return $this->urlService($params);
}
private function controleAccesAdmin($fonction) {
$fonction_admins = array(
'ajouterCotisation',
'mettreAJourCotisation',
'supprimerCotisation',
'afficherFormulaireAjoutCotisation',
'envoyerRecuCotisation'
);
if(in_array($fonction, $fonction_admins) && !Registre::getInstance()->get('est_admin')) {
return false;
}
return true;
}
private function formaterAnneeDateCotisationMySql($date_cotisation) {
$annee_cotisation = '0';
if($date_cotisation != '0') {
$annee_cotisation = date('Y',strtotime($date_cotisation));
}
return $annee_cotisation;
}
private function formaterDateMysqlVersDateCotisation($date) {
if($date == '0000-00-00') {
return 0;
}
return $this->formaterDateMysqlVersDateAnnuaire($date);
}
}
?>