Files
aduzuki/routes/adhesionRouter.js
2026-07-20 16:33:04 +02:00

431 lines
18 KiB
JavaScript

/////////////////////////////////////////////////
// ADHÉSION
// [DOMAIN]/inscription
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../public/js/app/logger_adhesion");
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const express = require('express');
const router = express.Router();
// CALCUL DE DATE
const moment = require('moment');
moment.locale('fr');
let now = moment().format("YYYY-MM-DD HH:mm:ss");
/////////////////////////////////////////////////
// APPELS DES FONCTIONS
/////////////////////////////////////////////////
const {
checkMail,
post_form_adhesion,
post_form_montant_total,
post_paiement_cheque_save,
post_paiement_virement_save,
post_req_bank,
get_res_bank,
get_res_bank_annul,
post_cartemanuelle_verifmail_envoicarte,
post_cartes_manuelles_envoi,
maj_googlesheet,
maj_googlesheet_auto,
maj_statut_paiement_manuel,
suppr_adherent,
import_ass_loacles
} = require("../controllers/adhesionController");
const {
import_ass_locales_v2
} = require("../controllers/adhesion_imp_ass_locController");
const {
adhesion_envoi_carte
} = require("../controllers/adhesion_envoi_carteController.js");
const {
generer_codes
} = require("../controllers/codesController");
const { runSync_prof_strapi } = require("../controllers/sync_prof_strapiController");
/////////////////////////////////////////////////
// ROUTES
/////////////////////////////////////////////////
// Saisie de l'identifiant
router.get('/', function(req, res) {
logger.info("on est dans la page web /adhesion (adhesionrouter.js)", { numsession: req.session.id });
// AFFICHER LES VARIABLES CONTENANT LES ERREURS
if (req.session.err_mail_form_adhesion_1) {
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
res.locals.err_mail_form_adhesion_4 = req.session.err_mail_form_adhesion_4;
// on supprime le contenu après affichage
req.session.err_mail_form_adhesion = undefined;
req.session.err_mail_form_adhesion_1 = undefined;
req.session.err_mail_form_adhesion_2 = undefined;
req.session.err_mail_form_adhesion_3 = undefined;
req.session.err_mail_form_adhesion_4 = undefined;
}
// AFFICHER LE MAIL IDENTIFIANT SI DÉJA SAISIE ET GARDÉ EN VARIABLE DE SESSION
// EN CAS DE RECHARGEMENT DE LA PAGE
if (req.session.identifiant) {
res.locals.identifiant = req.session.identifiant;
}
res.locals.dirname = __dirname;
// DATE LIMITE D'INSCRIPTION POUR LA SAISON
// SI DATE DÉPASSÉE on affiche une page de fin
if (now > (process.env.ad_date_limite + 1)) {
// DATE DÉPASSÉE, on affiche la page de fin
logger.info(`La date limmite d'inscription ${process.env.ad_date_limite} est dépassée`, { numsession: req.session.id });
res.render('adhesion/page_templates/inscription_terminee');
} else {
// DATE NON DÉPASSÉE, on affiche la page d'inscription
logger.info(`La date limmite d'inscription ${process.env.ad_date_limite} n'est pas encore dépassée`, { numsession: req.session.id });
res.render('adhesion/page_templates/formulaire_adhesion_mail');
}
});
/////////////////////////////////////////////////
// VERIFICATION DU MAILcheckMail
// METHODE HTTP POST
/////////////////////////////////////////////////
router.post('/', checkMail);
/////////////////////////////////////////////////
// OUVRIR LA PAGE DE SAISIE DES INFORMATIONS
// APRÈS VALIDATION DU MAIL
/////////////////////////////////////////////////
router.get('/adhesion_famille', function(req, res) {
logger.info("req.session.identifiant DANS router.get '/adhesion_famille', = " + req.session.identifiant, { numsession: req.session.id });
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_nom = req.session.adherent_nom;
res.locals.famille = "Responsable de la famille :";
req.session.adherent_type = "famille";
if (now > (process.env.ad_date_limite + 1)) {
res.render('adhesion/page_templates/inscription_terminee');
} else {
res.render('adhesion/page_templates/formulaire_adhesion_famille');
}
});
router.get('/adhesion_prof', function(req, res) {
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_nom = req.session.adherent_nom;
req.session.adherent_type = "";
if (now > (process.env.ad_date_limite + 1)) {
res.render('adhesion/page_templates/inscription_terminee');
} else {
res.render('adhesion/page_templates/formulaire_adhesion_prof');
}
});
router.get('/adhesion_choix', function(req, res) {
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_nom = req.session.adherent_nom;
req.session.adherent_type = "";
if (now > (process.env.ad_date_limite + 1)) {
res.render('adhesion/page_templates/inscription_terminee');
} else {
res.render('adhesion/page_templates/formulaire_adhesion_choix');
}
});
router.get('/adhesion_observateur', function(req, res) {
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_nom = req.session.adherent_nom;
res.locals.famille = "Inscription observateur :";
req.session.adherent_type = "observateur";
if (now > (process.env.ad_date_limite + 1)) {
res.render('adhesion/page_templates/inscription_terminee');
} else {
res.render('adhesion/page_templates/formulaire_adhesion_observateur');
}
});
/////////////////////////////////////////////////
// POST ENREGISTRER INFOS DANS BD
/////////////////////////////////////////////////
router.post('/adhesion_prof', post_form_adhesion);
router.post('/adhesion_observateur', post_form_adhesion);
router.post('/adhesion_famille', post_form_adhesion);
/////////////////////////////////////////////////
// PAGE DE PAIEMENT
/////////////////////////////////////////////////
router.get('/adhesion_paiement_total', function(req, res) {
logger.info("on est dans la ROUTE /adhesion page_templates/adhesion_paiement_total.ejs", { numsession: req.session.id });
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_paiement_montant_adhesion = req.session.adherent_paiement_montant_adhesion;
res.render('adhesion/page_templates/adhesion_paiement_total.ejs');
});
router.post('/calcul_total', post_form_montant_total);
router.get('/adhesion_paiement_mode_paiement', function(req, res) {
logger.info("on est dans la ROUTE /adhesion page_templates/adhesion_paiement/mode_paiement.ejs", { numsession: req.session.id });
res.locals.identifiant = req.session.identifiant;
res.locals.adherent_paiement_montant_adhesion = req.session.adherent_paiement_montant_adhesion;
res.locals.montant_apayer = req.session.montant_apayer;
res.locals.montant_apayer_cent = req.session.montant_apayer_cent;
res.locals.adherent_paiement_montant_don = req.session.adherent_paiement_montant_don;
logger.info("ROUTER req.session.montant_apayer: " + req.session.montant_apayer, { numsession: req.session.id });
res.render('adhesion/page_templates/adhesion_paiement_mode_paiement.ejs');
});
router.post('/goto_bank', post_req_bank);
// CLIC SUR LE BOUTON VALIDER DU FORMULAIRE
// form action="paiement_cheque_save"
// DU FICHIER views/page_templates/adhesion_paiement_mode_paiement.ejs
router.post('/paiement_cheque_save', post_paiement_cheque_save);
router.post('/paiement_virement_save', post_paiement_virement_save);
router.get('/adhesion_paiement/attente', function(req, res) {
logger.info("on est dans la ROUTE /adhesion_paiement/attente", { numsession: req.session.id });
moment().format();
moment.locale('fr');
var date_formattee = moment().format('L');
res.locals.today = date_formattee;
res.locals.identifiant = req.session.identifiant;
res.locals.profil1 = req.session.profil1;
logger.info("req.session.profil1; : " + req.session.profil1, { numsession: req.session.id });
res.locals.profil2 = req.session.profil2;
res.locals.profil3 = req.session.profil3;
res.locals.adherent_paiement_mode = req.session.adherent_paiement_mode;
res.locals.adherent_paiement_montant_adhesion = req.session.adherent_paiement_montant_adhesion;
res.locals.adherent_paiement_montant_don = req.session.adherent_paiement_montant_don;
res.locals.adherent_paiement_montant_total = req.session.montant_apayer;
res.render('adhesion/page_templates/adhesion_paiement_attente.ejs');
logger.info("res.sendFile", { numsession: req.session.id });
});
router.get('/adhesion_paiement/reussi', get_res_bank);
router.get('/adhesion_paiement/annule', get_res_bank_annul);
/////////////////////////////////////////////////
// B) GÉNÉRER CARTE D'ADHÉRENT
// et justificatif de don
/////////////////////////////////////////////////
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// ENVOI MANUEL CARTE ADHÉSION ET JUSTIFICATIF DE DON (SI DON)
// en saisissant l'identifiant dans un formulaire (1 identifiant à la fois)
// GET URL https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion/carte_manuelle
/////////////////////////////////////////////////
router.get('/carte_manuelle', function(req, res) {
logger.info("ON EST DANS ROUTE carte_manuelle", { numsession: req.session.id });
// AFFICHER LES VARIABLES CONTENANT LES ERREURS
// LE CONTENU DE CES VARIABLES ERREURS EST MIS DANS LE PROGRAMME ET AFFICHÉ AU RECHARGEMENT DE LA PAGE
if (req.session.err_mail_form_adhesion_1) {
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
res.locals.err_mail_form_adhesion_4 = req.session.err_mail_form_adhesion_4;
// on supprime le contenu après affichage
req.session.err_mail_form_adhesion = undefined;
}
// AFFICHER LE MAIL IDENTIIFANT SI DÉJ0 SAISIE ET GARDÉ EN VARIABLE DE SESSION
// EN CAS DE RECHARGEMENT DE LA PAGE
if (req.session.identifiant) {
res.locals.identifiant = req.session.identifiant;
}
res.locals.dirname = __dirname;
res.render('adhesion/page_templates/formulaire_cartemanuelle_mail');
});
// CLIC SUR LE BOUTON ENVOYER CARTE ADHÉRENT DU FORMULAIRE
// form action="cartemanuelle_verifmail_envoicarte"
// DU FICHIER /views/page_templates/formulaire_cartemanuelle_mail.ejs
router.post('/cartemanuelle_verifmail_envoicarte', post_cartemanuelle_verifmail_envoicarte);
/////////////////////////////////////////////////
// ENVOI MANUEL CARTE ADHÉSION ET JUSTIFICATIF DE DON (SI DON)
// Si "x" dans la colonne "filtre" de la Google Sheet
// GET URL https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion/carte_manuelle
/////////////////////////////////////////////////
router.get('/cartes_manuelles', function(req, res) {
logger.info("ON EST DANS ROUTE cartes_manuelles", { numsession: req.session.id });
// AFFICHER LES VARIABLES CONTENANT LES ERREURS
// LE CONTENU DE CES VARIABLES ERREURS EST MIS DANS LE PROGRAMME ET AFFICHÉ AU RECHARGEMENT DE LA PAGE
if (req.session.err_mail_form_adhesion_1) {
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
res.locals.err_mail_form_adhesion_4 = req.session.err_mail_form_adhesion_4;
// on supprime le contenu après affichage
req.session.err_mail_form_adhesion_1 = undefined;
req.session.err_mail_form_adhesion_2 = undefined;
req.session.err_mail_form_adhesion_3 = undefined;
req.session.err_mail_form_adhesion_4 = undefined;
}
// AFFICHER LE MAIL IDENTIIFANT SI DÉJ0 SAISIE ET GARDÉ EN VARIABLE DE SESSION
// EN CAS DE RECHARGEMENT DE LA PAGE
if (req.session.identifiant) {
res.locals.identifiant = req.session.identifiant;
}
res.locals.dirname = __dirname;
res.render('adhesion/page_templates/adhesion_cartes_manuelles');
});
// CLIC SUR LE BOUTON ENVOYER CARTES ADHÉRENTS
// form action="cartes_manuelles_envoi"
// DU FICHIER /views/page_templates/adhesion_cartes_manuelles.ejs
router.post('/cartes_manuelles_envoi', post_cartes_manuelles_envoi);
/////////////////////////////////////////////////
// GOOGLE SHEET
// DÉCHARGEMENT DES DONNÉES DANS GOOGLE SHEET
// AUTO LA NUIT AVEC WEB HOOK
/////////////////////////////////////////////////
router.get('/maj_googlesheet_auto', async function(req, res) {
logger.info("on est dans la page web maj_googlesheet_auto (adhesionRouter.js)", { numsession: req.session.id });
try {
// Appelle la fonction maj_googlesheet_auto du contrôleur
const result = await maj_googlesheet_auto(req, res);
res.status(200).json({
success: true,
message: "router - Mise à jour Google Sheet réussie maj_googlesheet_auto",
nb_onglet_adherent: result.nb_onglet_adherent,
nb_onglet_prof: result.nb_onglet_prof,
nb_onglet_stagiaires: result.nb_onglet_stagiaires,
nb_onglet_eleves: result.nb_onglet_eleves,
nb_onglet_adh_att: result.nb_onglet_adh_att,
nb_onglet_finance: result.nb_onglet_finance,
data: result,
});
} catch (error) {
res.status(500).json({
success: false,
message: "router - Mise à jour Google Sheet ECHEC maj_googlesheet_auto",
data: result,
});
}
});
/////////////////////////////////////////////////
// GOOGLE SHEET
// DÉCHARGEMENT DES DONNÉES DANS GOOGLE SHEET
// ‼️‼️‼️ N'est plus utilisé
/////////////////////////////////////////////////
router.get('/maj_googlesheet', function(req, res) {
logger.info("on est dans la page web maj_googlesheet (adhesionRouter.js)", { numsession: req.session.id });
// Pour afficher le résultats des requêtes de récupérations
res.locals.message = req.session.message;
res.locals.message2 = req.session.message2;
res.locals.message3 = req.session.message3;
res.locals.message4 = req.session.message4;
res.locals.message5 = req.session.message5;
res.locals.nb_adherent_maj = req.session.nb_adherent_maj;
res.locals.nb_prof_maj = req.session.nb_prof_maj;
res.locals.nb_prof_form_maj = req.session.nb_prof_form_maj;
res.locals.nb_eleve_maj = req.session.nb_eleve_maj;
res.locals.nb_finance_maj = req.session.nb_finance_maj;
res.locals.nb_adherent_en_attente_maj = req.session.nb_adherent_en_attente_maj;
// il faut initialiser les variables après les avoir copiées dans la variable d'affichage pour ne pas laisser un chiffre
req.session.message = undefined;
req.session.message2 = undefined;
req.session.message3 = undefined;
req.session.message4 = undefined;
req.session.message5 = undefined;
req.session.nb_adherent_maj = undefined;
req.session.nb_prof_maj = undefined;
req.session.nb_prof_form_maj = undefined;
req.session.nb_eleve_maj = undefined;
req.session.nb_finance_maj = undefined;
req.session.nb_adherent_en_attente_maj = undefined;
res.render('adhesion/page_templates/maj_googlesheet.ejs');
});
// CLIC SUR LE BOUTON "Mettre à jour GSheet"
router.post('/form_maj_googlesheet', maj_googlesheet);
/////////////////////////////////////////////////
// METTRE À JOUR LE STATUS DE PAIEMENT
// MANUELLEMENT
// DANS LA BD
/////////////////////////////////////////////////
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
router.post('/form_maj_statut_paiement_manuel', maj_statut_paiement_manuel);
/////////////////////////////////////////////////
// SUPPRIMER UN ADHERENT
// METTRE "supprime" à la place de son identifiant
/////////////////////////////////////////////////
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
router.post('/form_maj_suppr_adherent', suppr_adherent);
/////////////////////////////////////////////////
// ASSOCIATIONS LOCACLES
// IMPORTS ADHÉRENTS DANS DB
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
/////////////////////////////////////////////////
//router.post('/form_import_ass_locales', import_ass_loacles);
router.post('/form_import_ass_locales', import_ass_locales_v2);
/////////////////////////////////////////////////
// ENVOI DE CARTE ADHERENT
/////////////////////////////////////////////////
router.get('/adhesion_envoi_carte/:identifiant_afps', adhesion_envoi_carte);
/////////////////////////////////////////////////
// GÉNÉRATION DE CODE
// CLIC SUR LE BOUTON "Générer" de la page /maj_googlesheet
/////////////////////////////////////////////////
router.post('/form_generation_codes', generer_codes);
/////////////////////////////////////////////////
// EXPORT DES PROFESSEURS POUR STRAPI ET ANNUAIRE SITE AFPS
/////////////////////////////////////////////////
// déclenche manuellement la synchro en visitant /admin/sync
router.get("/sync_prof_strapi", async (req, res, next) => {
try {
const result = await runSync_prof_strapi(req, res);
//res.json({ ok: true, ...result });
} catch (e) {
next(e);
}
});
/////////////////////////////////////////////////
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
/////////////////////////////////////////////////
module.exports = router;