///////////////////////////////////////////////// // 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;