1272 lines
72 KiB
JavaScript
1272 lines
72 KiB
JavaScript
/////////////////////////////////////////////////
|
||
// APPELS DES MODULES
|
||
/////////////////////////////////////////////////
|
||
const path = require("path");
|
||
// CALCUL DE DATE
|
||
const moment = require('moment');
|
||
// STRIPE Ecole de Musique Suzuki de l'Est Lyonnais
|
||
const stripe = require('stripe')(process.env.STRIPE_RA_PRIVATE_KEY);
|
||
// STRIPE AFPS
|
||
//const stripe = require('stripe')(process.env.STRIPE_PRIVATE_KEY);
|
||
|
||
/////////////////////////////////////////////////
|
||
// APPELS DES MODULES PERSOS
|
||
/////////////////////////////////////////////////
|
||
// loggings
|
||
const logger = require("../public/js/app/logger_rassemblement");
|
||
// DB
|
||
const { connect_DB_promise } = require('../modules/db/databaseconnect');
|
||
// recherche si identifiant saisie est bien dans la base de données des adhérents
|
||
const { checkAdherent } = require('../modules/db/checkAdherent');
|
||
// Envoie mail
|
||
const envoie_mail = require("../modules/envoie_mail");
|
||
|
||
////////////////////////////////////////////////////
|
||
// FILE NAME
|
||
////////////////////////////////////////////////////
|
||
const filename = path.parse(__filename).base;
|
||
|
||
// GOOGLE SHEET PARAMETERS
|
||
/////////////////////////////////////////////////
|
||
const { GoogleSpreadsheet } = require('google-spreadsheet');
|
||
const GS_creds_rassemblementra = require('../inscriptionsafps-53b60452f63d.json');
|
||
const GS_rassemblementra = new GoogleSpreadsheet('1oj4kEJA-2tKcyBvGmLKi6Z2I63lp7BwymO47LdHtor8');
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// FONCTIONS
|
||
/////////////////////////////////////////////////
|
||
|
||
const checkidentifiant = async function(req, res) {
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION checkidentifiant ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
|
||
|
||
// un tag pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
|
||
req.session.participant_ajoute = "non";
|
||
|
||
/////////////////////////////////////////////////
|
||
// ON RÉCUPÈRE L'IDENTIFIANT SAISIE DANS LE FORMULAIRE
|
||
req.session.identifiant = req.body.identifiant;
|
||
logger.info("identifiant saisi : " + req.body.identifiant, { numsession: req.session.id, label: filename});
|
||
|
||
// ON REGARDE S'il à bien rempli l'identifiant et s'il a coché la case "je ne suis pas adhérent"
|
||
if (req.body.identifiant && req.body.check_nonadherent) {
|
||
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au rassemblement, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
||
req.session.err_mail_form_adhesion_2 = 'Si vous faites partie d\'une association non française veulliez cocher la case "Je suis adhérent à une Association Suzuki dans un autre pays en renseignant votre identifiant ou votre mail.';
|
||
req.session.err_mail_form_adhesion_3 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
if (!req.body.identifiant && req.body.check_nonadherent) {
|
||
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au rassemblement, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
||
req.session.err_mail_form_adhesion_2 = 'Si vous faites partie d\'une association non française veulliez cocher la case "Je suis adhérent à une Association Suzuki dans un autre pays en renseignant votre identifiant ou votre mail.';
|
||
req.session.err_mail_form_adhesion_3 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
if (!req.body.identifiant && !req.body.check_nonadherent) {
|
||
req.session.err_mail_form_adhesion_1 = "Veuillez entrer votre identifiant AFPS<br>(Association Française pour la Pédagogie Suzuki),<br><br>ou l'identifiant d'adhésion à votre Association Nationale Suzuki.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'êtes pas encore adhérent, vous pouvez adhérer en";
|
||
req.session.err_mail_form_adhesion_3 = '<a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
|
||
// SAISIE OK ON PEUT CONTINUER
|
||
if (req.body.identifiant && !req.body.check_nonadherent) {
|
||
|
||
// EST-CE QUE L'IDENTIFIANT SAISI EST DÉJA INSCRIT AU RASSEMBLEMENT TABLE ras_adherent
|
||
// CONNECTION DB PROMISE
|
||
// TRY 2
|
||
try {
|
||
//Connexion
|
||
const db_connection_promise = await connect_DB_promise();
|
||
//Query
|
||
let sql = 'select identifiant, association_suzuki, adherent_mail from ras_adherent where identifiant = "' + req.session.identifiant + '" AND lieu = "CHAPONNAY" AND saison = "' + process.env.SAISON + '" AND statut_suppression = 0';
|
||
|
||
logger.info("sql ras_adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
const [results_checkinscrit, fields] = await db_connection_promise.execute(sql);
|
||
await db_connection_promise.end();
|
||
logger.info("TABLE ras_adherent nombre de row avec identifiant saisie : " + results_checkinscrit.length, { numsession: req.session.id, label: filename});
|
||
|
||
if (results_checkinscrit.length) {
|
||
// DÉJA INSCRIT AU RASSEMBLEMENT
|
||
logger.info("Identifant déjà inscrit au RASSEMBLEMENT : " + req.session.identifiant, { numsession: req.session.id, label: filename});
|
||
// ON AFFICHE LA PAGE DE SAISIE DE L'IDENTIFIANT AVEC ERREUR "déjà inscrit"
|
||
req.session.err_mail_form_adhesion_1 = "L'identifiant <strong>" + req.session.identifiant + "</strong> est déjà inscrit au rassemblement.";
|
||
res.redirect('/rassemblementra/identifier');
|
||
} else {
|
||
// NON INSCRIT AU RASSEMBLEMENT
|
||
logger.info("Identifant non inscrit au rassemblement : "+req.session.identifiant, { numsession: req.session.id, label: filename});
|
||
|
||
// IDENTIFIANT SAISIE ET CASE AUTRE PAYS COCHÉ
|
||
// ON AFFICHE LA PAGE DU FORMULAIRE DE SAISIE DES INFORMATIONS DE L'INSCRIPTION
|
||
if (req.body.identifiant && !req.body.check_nonadherent && req.body.check_autrepays) {
|
||
req.session.association_suzuki = "autre pays";
|
||
res.redirect('/rassemblementra/formulaire');
|
||
} else {
|
||
/////////////////////////////////////////////////
|
||
// RECHERCHE SI PERSONNE EST ADHÉRENTE À L'AFPS
|
||
// DANS BD ADHESION adherent
|
||
sql = 'select identifiant,association_suzuki from adherent where identifiant = "' + req.session.identifiant + '" AND saison = "' + process.env.SAISON + '"';
|
||
logger.info("sql adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
const retour_checkAdherent = await checkAdherent(sql);
|
||
if (retour_checkAdherent.error) {
|
||
logger.info("Il y a un problème avec la connection à la base de données adherent ! : " + retour_checkAdherent.error, { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système connexion base de données, veuillez recommencer." + retour_checkAdherent.error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
} else if (retour_checkAdherent.found) {
|
||
// LA PERSONNE EST BIEN ADHÉRENTE
|
||
req.session.association_suzuki = retour_checkAdherent.results_checkAdherent.association_suzuki;
|
||
logger.info("req.session.association_suzuki : " + retour_checkAdherent.results_checkAdherent.association_suzuki, { numsession: req.session.id, label: filename});
|
||
// ON AFFICHE LA PAGE DU FORMULAIRE DE SAISIE DES INFORMATIONS DE L'INSCRIPTION
|
||
res.redirect('/rassemblementra/formulaire');
|
||
} else {
|
||
// LA PERSONNE N'EST PAS ADHÉRENTE
|
||
logger.info("Identifant NON adhérent : " + req.session.identifiant, { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "L'identifiant saisi n'est pas reconnu comme adhérent de l'Association Française pour la Pédagogie Suzuki (AFPS) pour 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = 'Vous devez adhérer avant de vous inscrire au rassemblement. <br>Si vous êtes membre d\'une association Suzuki non française, veuillez cocher la case "Je suis adhérent à une Association Suzuki dans un autre pays" et renseigner votre identifiant ou votre adresse e-mail.';
|
||
req.session.err_mail_form_adhesion_3 = 'Pour adhérer à l\'Association Française pour la Pédagogie Suzuki, <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">cliquez ici</span></a>';
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
}
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la BD
|
||
logger.error("Il y a un problème avec la connection à la base de données ras_adherent (TRY 2) : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système connexion base de données, veuillez recommencer.";
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
const RA_checkinfos = async function(req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RA_checkinfos ==========");
|
||
logger.info("======================================");
|
||
|
||
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DANS LA SESSION EN COURS
|
||
if (req.body.association) {req.session.association_suzuki = req.body.association;};
|
||
if (req.body.adherent_nom) {req.session.adherent_nom = req.body.adherent_nom;};
|
||
logger.info("req.session.adherent_nom : " + req.session.adherent_nom, { numsession: req.session.id, label: filename });
|
||
if (req.body.adherent_prenom) {req.session.adherent_prenom = req.body.adherent_prenom;};
|
||
if (req.body.adherent_adresse_rue) {req.session.adherent_adresse_rue = req.body.adherent_adresse_rue;};
|
||
if (req.body.adherent_adresse_complement) {req.session.adherent_adresse_complement = req.body.adherent_adresse_complement;};
|
||
logger.info("req.body.adherent_adresse_complement : " + req.body.adherent_adresse_complement, { numsession: req.session.id, label: filename });
|
||
logger.info("req.session.adherent_adresse_complement : " + req.session.adherent_adresse_complement, { numsession: req.session.id, label: filename });
|
||
if (req.body.adherent_adresse_codepostal) {req.session.adherent_adresse_codepostal = req.body.adherent_adresse_codepostal;};
|
||
if (req.body.adherent_adresse_ville) {req.session.adherent_adresse_ville = req.body.adherent_adresse_ville;};
|
||
if (req.body.adherent_adresse_pays) {req.session.adherent_adresse_pays = req.body.adherent_adresse_pays;};
|
||
if (req.body.adherent_telephone_mobile) {req.session.adherent_telephone_mobile = req.body.adherent_telephone_mobile;};
|
||
if (req.body.adherent_telephone_fixe) {req.session.adherent_telephone_fixe = req.body.adherent_telephone_fixe;};
|
||
if (req.body.adherent_mail) {req.session.adherent_mail = req.body.adherent_mail;};
|
||
if (req.body.commentaire_adherent) {req.session.commentaire_adherent = req.body.commentaire_adherent;};
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
if (req.body["personne_" + toto + "_nom"]) { req.session["personne_" + toto + "_nom"] = req.body["personne_" + toto + "_nom"]; }
|
||
if (req.body["personne_" + toto + "_prenom"]) { req.session["personne_" + toto + "_prenom"] = req.body["personne_" + toto + "_prenom"]; }
|
||
if (req.body["personne_" + toto + "_datenaissance"]) { req.session["personne_" + toto + "_datenaissance"] = req.body["personne_" + toto + "_datenaissance"]; }
|
||
if (req.body["personne_" + toto + "_role"]) { req.session["personne_" + toto + "_role"] = req.body["personne_" + toto + "_role"]; }
|
||
if (req.body["personne_" + toto + "_instrument"]) { req.session["personne_" + toto + "_instrument"] = req.body["personne_" + toto + "_instrument"]; }
|
||
if (req.body["personne_" + toto + "_cahier"]) { req.session["personne_" + toto + "_cahier"] = req.body["personne_" + toto + "_cahier"]; }
|
||
if (req.body["personne_" + toto + "_piece"]) { req.session["personne_" + toto + "_piece"] = req.body["personne_" + toto + "_piece"]; }
|
||
if (req.body["personne_" + toto + "_prof"]) { req.session["personne_" + toto + "_prof"] = req.body["personne_" + toto + "_prof"]; }
|
||
}
|
||
|
||
|
||
// INITIALISATION DES MONTANTS PAR FAMILLE
|
||
req.session.cout_rassemblement = 0;
|
||
var nbr_eleve = 0;
|
||
|
||
// ON COMPTE LES PARTICIPANTS
|
||
// ON récupère L'ÂGE DU PARTICIPANTS à partir de la date de naissance
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
|
||
logger.info('======= Personne N° ' + toto, { numsession: req.session.id, label: filename });
|
||
|
||
logger.info('req.session_prenom = ' + req.session["personne_"+toto+"_prenom"], { numsession: req.session.id, label: filename });
|
||
logger.info('req.body_cahier = ' + req.body["personne_"+toto+"_cahier"], { numsession: req.session.id, label: filename });
|
||
|
||
// CALCUL ÂGE PERSONNE
|
||
if (req.session["personne_"+toto+"_datenaissance"]) {
|
||
let datenaissance_concat = req.session["personne_"+toto+"_datenaissance"];
|
||
|
||
var an=datenaissance_concat.substr(6,4); // l'année (les quatre premiers caractères de la chaîne à partir de 6)
|
||
var mois=datenaissance_concat.substr(3,2);// On selectionne le mois de la date de naissance
|
||
var day= datenaissance_concat.substr(0,2); // On selectionne la jour de la date de naissance
|
||
var birthDate = new Date(an + "-" + mois + "-" + day);
|
||
var debutrassemblement = new Date('2026-03-29');
|
||
var age = debutrassemblement.getFullYear() - birthDate.getFullYear();
|
||
var m = debutrassemblement.getMonth() - birthDate.getMonth();
|
||
if (m < 0 || (m === 0 && debutrassemblement.getDate() < birthDate.getDate())) {
|
||
age--;
|
||
}
|
||
req.session["personne_"+toto+"_age"] = age;
|
||
logger.info('req.session_age = ' + req.session["personne_"+toto+"_age"], { numsession: req.session.id, label: filename });
|
||
|
||
//// +1 au nombre d'élèves instrumentistes
|
||
if (req.session["personne_"+toto+"_role"] === "instrumentiste") {
|
||
nbr_eleve++;
|
||
}
|
||
}
|
||
}
|
||
|
||
///// CALCUL COUT TOTAL
|
||
logger.info('nbr_eleve TOTAL : ' + nbr_eleve, { numsession: req.session.id, label: filename });
|
||
if (nbr_eleve == 1){
|
||
req.session.cout_rassemblement = 25;
|
||
};
|
||
if (nbr_eleve > 1){
|
||
req.session.cout_rassemblement = 40;
|
||
}
|
||
req.session.cout_total = req.session.cout_rassemblement;
|
||
logger.info('req.session.cout_rassemblement : ' + req.session.cout_rassemblement, { numsession: req.session.id, label: filename });
|
||
logger.info('req.session.cout_total : ' + req.session.cout_total, { numsession: req.session.id, label: filename });
|
||
|
||
res.redirect('/rassemblementra/recap');
|
||
|
||
}
|
||
|
||
const post_recap_modifier = async function(req, res) {
|
||
req.session.identifiant = "";
|
||
req.session.association_suzuki = "";
|
||
req.session.adherent_nom = "";
|
||
req.session.adherent_prenom = "";
|
||
req.session.adherent_adresse_rue = "";
|
||
req.session.adherent_adresse_complement = "";
|
||
req.session.adherent_adresse_codepostal = "";
|
||
req.session.adherent_adresse_ville = "";
|
||
req.session.adherent_adresse_pays = "";
|
||
req.session.adherent_telephone_mobile = "";
|
||
req.session.adherent_telephone_fixe = "";
|
||
req.session.adherent_mail = "";
|
||
req.session.commentaire_adherent = "";
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
req.session["personne_" + toto + "_nom"] = "";
|
||
req.session["personne_" + toto + "_prenom"] = "";
|
||
req.session["personne_" + toto + "_datenaissance"] = "";
|
||
req.session["personne_" + toto + "_role"] = "";
|
||
req.session["personne_" + toto + "_instrument"] = "";
|
||
req.session["personne_" + toto + "_cahier"] = "";
|
||
req.session["personne_" + toto + "_piece"] = "";
|
||
req.session["personne_" + toto + "_prof"] = "";
|
||
}
|
||
req.session.cout_rassemblement = 0;
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
|
||
const post_payer_ra = async function(req, res) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_payer_ra ==========");
|
||
logger.info("======================================");
|
||
|
||
// VARIABLES
|
||
/////////////////////////////////////////////////
|
||
moment.locale('fr');
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let sql;
|
||
let table;
|
||
let champs;
|
||
let values;
|
||
|
||
/////////////////////////////////////////////////
|
||
// SI IDENTIFIANT PERDU
|
||
/////////////////////////////////////////////////
|
||
logger.info("req.session.identifiant : " + req.session.identifiant , { numsession: req.session.id, label: filename});
|
||
if (req.session.identifiant === undefined) {
|
||
logger.info("IDENTIFIANT PERDU", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Session expirée, veuillez recommencer";
|
||
res.redirect('/rassemblementra/identifier');
|
||
} else {
|
||
|
||
/////////////////////////////////////////////////
|
||
// RÉCUPÉRATION ACCOMPAGNANT
|
||
if (req.body.accompagnant_nom) {req.session.accompagnant_nom = req.body.accompagnant_nom;};
|
||
if (req.body.accompagnant_prenom) {req.session.accompagnant_prenom = req.body.accompagnant_prenom;};
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DANS LA BASE DE DONNÉES
|
||
|
||
// TRY 3
|
||
try {
|
||
//Connexion
|
||
let db_connection_promise = await connect_DB_promise();
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT PARTICIPANTS
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
if (req.session["personne_"+toto+"_nom"]) {
|
||
// QUERY ADD ras_participant
|
||
await db_ajout_participants(req, res, db_connection_promise, toto, now, sql, table, champs, values);
|
||
}
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
await db_ajout_adherent(req, res, db_connection_promise, sql, table, champs, values);
|
||
|
||
await db_connection_promise.end();
|
||
|
||
if (req.session.cout_total > 1) {
|
||
/////////////////////////////////////////////////
|
||
// STRIPE - ETAPE 1 - CREER l'INTENTION DE PAIEMENT
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== ENVOIE VERS STRIPE ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
const session = await stripe.checkout.sessions.create({
|
||
metadata: {identifiant: req.session.identifiant, cout_rassemblement: req.session.cout_rassemblement},
|
||
customer_email: req.session.adherent_mail,
|
||
|
||
submit_type: 'pay',
|
||
|
||
success_url: process.env.STRIPE_RA_SUCCESSURL,
|
||
cancel_url: process.env.STRIPE_RA_CANCELURL,
|
||
|
||
payment_method_types: ['card'],
|
||
line_items: [{
|
||
price_data: {
|
||
currency: 'eur',
|
||
product_data: {
|
||
name: 'Rassemblement Rhône-Alpes',
|
||
},
|
||
unit_amount: req.session.cout_total * 100,
|
||
},
|
||
quantity: 1,
|
||
},],
|
||
//Checkout has three modes: payment, subscription, or setup.
|
||
mode: 'payment'
|
||
|
||
});
|
||
res.redirect(session.url)
|
||
}
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la BD
|
||
logger.error("Il y a un problème avec la connection à la base de données (TRY 3) : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système connexion base de données, veuillez recommencer, "' + error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
const RA_accompte_reussi = async function(req, res) {
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION RA_accompte_reussi ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
// VARIABLES
|
||
let CB_retour;
|
||
let stripe_retour;
|
||
|
||
// DATE
|
||
moment().format();
|
||
moment.locale('fr');
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// RETOUR STRIPE
|
||
let id = req.query.id;
|
||
const session_stripe = await stripe.checkout.sessions.retrieve(id);
|
||
let customer_email = session_stripe.customer_email;
|
||
req.session.adherent_mail = customer_email;
|
||
let payment_status = session_stripe.payment_status;
|
||
let amount_total = session_stripe.amount_total/100;
|
||
let stripe_customer = session_stripe.customer;
|
||
let stripe_payment_intent = session_stripe.payment_intent;
|
||
let payment_method_types = session_stripe.payment_method_types;
|
||
let stripe_status = session_stripe.status;
|
||
let identifiant = session_stripe.metadata.identifiant;
|
||
req.session.identifiant = identifiant;
|
||
CB_retour = payment_status + ", " + stripe_customer + ", " + stripe_payment_intent + ", " + session_stripe.id + ", " + payment_method_types + ", " + stripe_status;
|
||
stripe_retour = session_stripe.id;
|
||
logger.info("customer_email : " + customer_email, { numsession: req.session.id, label: filename});
|
||
logger.info("payment_status : " + payment_status, { numsession: req.session.id, label: filename});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MAJ infos paiements DB
|
||
/////////////////////////////////////////////////
|
||
|
||
// une vérification pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
|
||
logger.info("req.session.participant_ajoute : " + req.session.participant_ajoute, { numsession: req.session.id, label: filename});
|
||
|
||
if (req.session.participant_ajoute === "oui") {
|
||
req.session.err_mail_form_adhesion_1 = "Votre session est terminée, les participants ont déjà été ajoutés.";
|
||
res.redirect('/rassemblementra/identifier');
|
||
return;
|
||
} else {
|
||
|
||
// Query MAJ infos paiements DB
|
||
// TRY 1
|
||
try {
|
||
let db_connection_promise = await connect_DB_promise();
|
||
let sql = `
|
||
UPDATE ras_adherent
|
||
SET
|
||
stripe_retour = ?,
|
||
statut_paiement = ?
|
||
WHERE identifiant = ?
|
||
AND lieu = ?
|
||
AND saison = ?
|
||
AND statut_suppression = 0
|
||
`;
|
||
let values = [
|
||
CB_retour, // stripe_retour
|
||
"paye", // statut_paiement
|
||
identifiant, // identifiant pour la clause WHERE
|
||
"CHAPONNAY", // lieu
|
||
process.env.SAISON // saison
|
||
];
|
||
|
||
|
||
|
||
logger.info("sql UPDATE ras_adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
logger.info("Valeurs : " + JSON.stringify(values));
|
||
const [results, fields] = await db_connection_promise.execute(sql, values);
|
||
logger.info("Row ras_adherent UPDATE payé: " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// Query Récupération des infos pour copie dans Google Sheet + envoie du mail
|
||
// adhérent
|
||
let sql2 = 'select * from ';
|
||
sql2 += 'ras_adherent';
|
||
sql2 += ' WHERE identifiant = "' + req.session.identifiant + '" AND statut_suppression = 0 AND lieu = "CHAPONNAY" AND saison = "' + process.env.SAISON + '"';
|
||
const [results2, fields2] = await db_connection_promise.execute(sql2);
|
||
logger.info("Row ras_adherent SELECT : " + results2.length, { numsession: req.session.id, label: filename});
|
||
|
||
// participants
|
||
//let sql3 = 'SELECT ras_adherent.identifiant, ras_adherent.association_suzuki, ras_adherent.saison, ras_adherent.date_maj, ras_adherent.adherent_nom, ras_adherent.adherent_prenom, ras_adherent.adherent_telephone, ras_adherent.adherent_mail, ras_participant.ID_participant, ras_participant.ras_part_nom, ras_participant.ras_part_prenom, ras_participant.ras_part_date_naiss, ras_participant.ras_part_role, ras_participant.ras_part_age, ras_participant.instrument, ras_participant.cahier, ras_participant.piece, ras_participant.prof_nom FROM ras_participant JOIN ras_adherent ON ras_participant.identifiant = ras_adherent.identifiant WHERE ras_participant.identifiant = "' + req.session.identifiant + '" AND ras_participant.statut_suppression = 0 AND ras_participant.lieu = "CHAPONNAY" AND ras_participant.saison = "' + process.env.SAISON + '"';
|
||
|
||
const sql3 = `
|
||
SELECT
|
||
a.identifiant,
|
||
a.association_suzuki,
|
||
a.saison,
|
||
a.date_maj,
|
||
a.adherent_nom,
|
||
a.adherent_prenom,
|
||
a.adherent_telephone,
|
||
a.adherent_mail,
|
||
p.ID_participant,
|
||
p.ras_part_nom,
|
||
p.ras_part_prenom,
|
||
p.ras_part_date_naiss,
|
||
p.ras_part_role,
|
||
p.ras_part_age,
|
||
p.instrument,
|
||
p.cahier,
|
||
p.piece,
|
||
p.prof_nom
|
||
FROM ras_participant p
|
||
JOIN ras_adherent a
|
||
ON a.identifiant = p.identifiant
|
||
AND a.saison = ?
|
||
WHERE p.identifiant = ?
|
||
AND p.statut_suppression = 0
|
||
AND p.lieu = "CHAPONNAY"
|
||
AND p.saison = ?
|
||
`;
|
||
|
||
const params = [
|
||
process.env.SAISON,
|
||
req.session.identifiant,
|
||
process.env.SAISON
|
||
];
|
||
|
||
|
||
//const [results3, fields3] = await db_connection_promise.execute(sql3);
|
||
const [results3, fields3] = await db_connection_promise.execute(sql3, params);
|
||
await db_connection_promise.end();
|
||
logger.info("Row ras_participant SELECT nombre de participants : " + results3.length, { numsession: req.session.id, label: filename});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// PRÉPARATION PAGE PAIEMENT RÉUSSI
|
||
res.locals.identifiant = req.session.identifiant;
|
||
res.locals.association_suzuki = results2[0].association_suzuki;
|
||
res.locals.accompagnant_prenom = results2[0].accompagnant_prenom;
|
||
res.locals.accompagnant_nom = results2[0].accompagnant_nom;
|
||
|
||
for (let toto = 0; toto < (results3.length); toto++) {
|
||
logger.info("==== Personne N° " + toto, { numsession: req.session.id, label: filename});
|
||
res.locals["personne_"+toto+"_numero"] = toto;
|
||
res.locals["personne_"+toto+"_nom"] = results3[toto].ras_part_nom.toUpperCase();
|
||
res.locals["personne_"+toto+"_prenom"] = results3[toto].ras_part_prenom;
|
||
logger.info("Prénom " + res.locals["personne_"+toto+"_prenom"], { numsession: req.session.id, label: filename});
|
||
res.locals["personne_"+toto+"_role"] = results3[toto].ras_part_role;
|
||
res.locals["personne_"+toto+"_instrument"] = results3[toto].instrument;
|
||
res.locals["personne_"+toto+"_cahier"] = results3[toto].cahier;
|
||
res.locals["personne_"+toto+"_piece"] = results3[toto].piece;
|
||
res.locals["personne_"+toto+"_prof"] = results3[toto].prof_nom;
|
||
}
|
||
res.locals.tarif_rassemblement = results2[0].tarif_rassemblement;
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AJOUT INFOS DANS GOOGLE SHEET
|
||
// TRY 4
|
||
try {
|
||
|
||
await GS_rassemblementra.useServiceAccountAuth(GS_creds_rassemblementra);
|
||
await GS_rassemblementra.loadInfo();
|
||
let GS_rassemblementra_Adherents = GS_rassemblementra.sheetsByTitle['Adherents'];
|
||
let GS_rassemblementra_Paiements = GS_rassemblementra.sheetsByTitle['Paiements'];
|
||
let GS_rassemblementra_Instrumentistes = GS_rassemblementra.sheetsByTitle['Instrumentistes'];
|
||
let GS_rassemblementra_Professeurs = GS_rassemblementra.sheetsByTitle['Professeurs'];
|
||
let GS_rassemblementra_VIOLON = GS_rassemblementra.sheetsByTitle['VIOLON'];
|
||
|
||
|
||
await GS_rassemblementra_Adherents.addRows (
|
||
[
|
||
{
|
||
ID_adherent: results2[0].ID_adherent,
|
||
saison: results2[0].saison,
|
||
identifiant: req.session.identifiant,
|
||
association_suzuki: results2[0].association_suzuki,
|
||
date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
|
||
adherent_nom: results2[0].adherent_nom.toUpperCase(),
|
||
adherent_prenom: results2[0].adherent_prenom,
|
||
adherent_mail: results2[0].adherent_mail,
|
||
adherent_telephone: "'" + results2[0].adherent_telephone,
|
||
adherent_adresse_rue: results2[0].adherent_adresse_rue,
|
||
adherent_adresse_complement: results2[0].adherent_adresse_complement,
|
||
adherent_adresse_codepostal: results2[0].adherent_adresse_codepostal,
|
||
adherent_adresse_ville: results2[0].adherent_adresse_ville,
|
||
adherent_adresse_pays: results2[0].adherent_adresse_pays,
|
||
accompagnant_nom: results2[0].accompagnant_nom,
|
||
accompagnant_prenom: results2[0].accompagnant_prenom,
|
||
commentaire: results2[0].ras_commentaire
|
||
}
|
||
]
|
||
);
|
||
|
||
await GS_rassemblementra_Paiements.addRows (
|
||
[
|
||
{
|
||
ID_adherent: results2[0].ID_adherent,
|
||
identifiant: req.session.identifiant,
|
||
adherent_nom: results2[0].adherent_nom.toUpperCase(),
|
||
adherent_prenom: results2[0].adherent_prenom,
|
||
adherent_mail: results2[0].adherent_mail,
|
||
tarif_rassemblement: parseFloat(results2[0].tarif_rassemblement),
|
||
cout_total: parseFloat(results2[0].tarif_rassemblement),
|
||
statut_paiement: results2[0].statut_paiement
|
||
}
|
||
]
|
||
);
|
||
|
||
let ajout_instrumentistes = [];
|
||
let instruments_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste") {
|
||
ajout_instrumentistes.push({
|
||
ID_participant: results3[i].ID_participant,
|
||
identifiant: req.session.identifiant,
|
||
participant_nom: results3[i].ras_part_nom.toUpperCase(),
|
||
participant_prenom: results3[i].ras_part_prenom,
|
||
participant_age: results3[i].ras_part_age,
|
||
adherent_mail: results3[i].adherent_mail,
|
||
adherent_telephone: "'" + results3[i].adherent_telephone,
|
||
instrument: results3[i].instrument,
|
||
cahier: results3[i].cahier,
|
||
piece: results3[i].piece,
|
||
prof_nom: results3[i].prof_nom
|
||
});
|
||
instruments_trouve = "oui";
|
||
}
|
||
}
|
||
if (instruments_trouve === "oui") { await GS_rassemblementra_Instrumentistes.addRows(ajout_instrumentistes);}
|
||
|
||
let ajout_professeur = [];
|
||
let professeur_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "professeur") {
|
||
ajout_professeur.push({
|
||
ID_participant: results3[i].ID_participant,
|
||
identifiant: req.session.identifiant,
|
||
participant_nom: results3[i].ras_part_nom.toUpperCase(),
|
||
participant_prenom: results3[i].ras_part_prenom,
|
||
participant_age: results3[i].ras_part_age,
|
||
adherent_mail: results3[i].adherent_mail,
|
||
adherent_telephone: "'" + results3[i].adherent_telephone,
|
||
instrument: results3[i].instrument
|
||
});
|
||
professeur_trouve = "oui";
|
||
}
|
||
}
|
||
if (professeur_trouve === "oui") { await GS_rassemblementra_Professeurs.addRows(ajout_professeur);}
|
||
|
||
let ajout_violon = [];
|
||
let violon_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste" && results3[i].instrument === "violon") {
|
||
ajout_violon.push({
|
||
ID_participant: results3[i].ID_participant,
|
||
identifiant: req.session.identifiant,
|
||
participant_nom: results3[i].ras_part_nom.toUpperCase(),
|
||
participant_prenom: results3[i].ras_part_prenom,
|
||
participant_age: results3[i].ras_part_age,
|
||
adherent_mail: results3[i].adherent_mail,
|
||
adherent_telephone: "'" + results3[i].adherent_telephone,
|
||
instrument: results3[i].instrument,
|
||
cahier: results3[i].cahier,
|
||
piece: results3[i].piece,
|
||
prof_nom: results3[i].prof_nom
|
||
});
|
||
violon_trouve = "oui";
|
||
}
|
||
|
||
}
|
||
if (violon_trouve === "oui") { await GS_rassemblementra_VIOLON.addRows(ajout_violon);}
|
||
|
||
logger.info("AJOUT GOOGLESHEET FIN", { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la GOOGLE SHEET
|
||
logger.error("Il y a un problème avec la connection à Google sheet (TRY 4) : " + error, { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
return;
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CONFIRMATION PAR MAIL
|
||
|
||
let mail_objet = "Ecole de Musique Suzuki de l'Est Lyonnais - Rassemblement RHÔNE-ALPES 2026 - ";
|
||
mail_objet += results2[0].adherent_nom;
|
||
|
||
let mail_html = "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Cher adhérent,</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Félicitations ! Vous êtes désormais inscrit au Rassemblement Rhône-Alpes du 29 mars 2026 organisé par l'Ecole de Musique Suzuki de l'Est Lyonnais, en partenariat avec l'Association Française pour la Pédagogie Suzuki.</p>";
|
||
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>L’accueil se fera à partir de 9h30 et les premiers cours débuteront à 10h30. <span style='font-size: 10pt;'>(Merci d’arriver en avance afin de faire votre enregistrement et que les cours puissent commencer à l’heure)</span><br>La journée se terminera aux environs de 16h30/17h</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Vous voudrez bien apportez votre pique-nique pour le déjeuner de midi.</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Lieu : Collège La Xavière, 1 Rue des Fontaines 69970 Chaponnay</p>";
|
||
mail_html += "<br>";
|
||
|
||
mail_html += '<p style="color:#E73058;font-size: 13pt; font-family: Arial; text-decoration: none;"><strong>VOTRE FACTURE :</strong></p>';
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Identifiant Suzuki : </strong>";
|
||
mail_html += req.session.identifiant;
|
||
mail_html += "</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Association Suzuki : </strong>";
|
||
mail_html += results2[0].association_suzuki;
|
||
mail_html += "</p>";
|
||
if (results2[0].accompagnant_nom !== "undefined") {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Personne accompagnante : </strong>";
|
||
mail_html += results2[0].accompagnant_nom;
|
||
mail_html += " ";
|
||
mail_html += results2[0].accompagnant_prenom;;
|
||
mail_html += "</p>";
|
||
}
|
||
mail_html += "<br>";
|
||
for (let toto = 0; toto<(results3.length); toto++) {
|
||
if (results3[toto].ras_part_nom) {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #07475A; text-decoration: underline;'><strong>PARTICIPANT ";
|
||
mail_html += toto + 1;
|
||
mail_html += "</strong></p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Nom : </strong>";
|
||
mail_html += results3[toto].ras_part_nom;
|
||
mail_html += " ";
|
||
mail_html += results3[toto].ras_part_prenom;
|
||
mail_html += "</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Catégorie : </strong>";
|
||
mail_html += results3[toto].ras_part_role;
|
||
mail_html += "</p>";
|
||
if (results3[toto].ras_part_role === "professeur") {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument : </strong>";
|
||
mail_html += results3[toto].instrument;
|
||
mail_html += "</p>";
|
||
}
|
||
if (results3[toto].ras_part_role === "instrumentiste") {
|
||
mail_html += "</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Age : </strong>";
|
||
mail_html += results3[toto].ras_part_age;
|
||
mail_html += "</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument : </strong>";
|
||
mail_html += results3[toto].instrument;
|
||
mail_html += " - ";
|
||
mail_html += results3[toto].cahier;
|
||
mail_html += " - ";
|
||
mail_html += results3[toto].piece;
|
||
mail_html += "</p>";
|
||
mail_html += "</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Professeur : </strong>";
|
||
mail_html += results3[toto].prof_nom;
|
||
mail_html += "</p>";
|
||
}
|
||
mail_html += "<br>";
|
||
}
|
||
}
|
||
|
||
mail_html += "<br>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Coût total : </strong>";
|
||
mail_html += results2[0].cout_total + "€";
|
||
mail_html += "<br>Tarif rassemblement : ";
|
||
mail_html += results2[0].tarif_rassemblement + "€";
|
||
mail_html += "</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><br>Nous nous réjouissons de vous accueillir pour cette journée !</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>L'école de Musique Suzuki de l'Est Lyonnais<br>Marie Rossot<br>Pôle organisation du rassemblement</p>";
|
||
|
||
let mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html
|
||
};
|
||
envoie_mail.envoie_mail(mailOptions);
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// un tag pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
req.session.participant_ajoute = "oui";
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AFFICHAGE PAGE PAIEMENT RÉUSSI
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
res.render('rassemblementra/page_templates/paiement_reussi.ejs');
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la BD
|
||
logger.error("Il y a un problème avec la connection à la base de données (TRY 1) : " + error, { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
const RA_accompte_annule = async function(req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RA_accompte_annule ==========");
|
||
logger.info("======================================");
|
||
|
||
// VARIABLES
|
||
let CB_retour;
|
||
|
||
// DATE
|
||
moment().format();
|
||
moment.locale('fr');
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// RETOUR STRIPE
|
||
let id = req.query.id;
|
||
const session_stripe = await stripe.checkout.sessions.retrieve(id);
|
||
let customer_email = session_stripe.customer_email;
|
||
req.session.adherent_mail = customer_email;
|
||
let payment_status = session_stripe.payment_status;
|
||
let stripe_customer = session_stripe.customer;
|
||
let stripe_payment_intent = session_stripe.payment_intent;
|
||
let payment_method_types = session_stripe.payment_method_types;
|
||
let stripe_status = session_stripe.status;
|
||
let identifiant = session_stripe.metadata.identifiant;
|
||
req.session.identifiant = identifiant;
|
||
CB_retour = payment_status + ", " + stripe_customer + ", " + stripe_payment_intent + ", " + session_stripe.id + ", " + payment_method_types + ", " + stripe_status;
|
||
|
||
logger.info("customer_email : " + customer_email, { numsession: req.session.id, label: filename});
|
||
logger.info("payment_status : " + payment_status, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
//Connexion
|
||
let db_connection_promise = await connect_DB_promise();
|
||
|
||
/// Vérifier que le paiement n'existe pas déjà
|
||
/// pour ne pas faire le traitement 2 fois en cas de rafraichissement de la page
|
||
let sql0 = 'select identifiant from ras_adherent where stripe_retour = "' + CB_retour + '"';
|
||
const [results0, fields0] = await db_connection_promise.execute(sql0);
|
||
logger.info("Row ras_adherent stripe_retour : " + results0.length, { numsession: req.session.id, label: filename});
|
||
|
||
if (results0.length < 1) {
|
||
//Query MAJ ras_adherent
|
||
|
||
let sql = `
|
||
UPDATE ras_adherent
|
||
SET
|
||
identifiant = CONCAT(identifiant, ID_adherent),
|
||
stripe_retour = ?,
|
||
statut_paiement = ?,
|
||
statut_suppression = ?
|
||
WHERE identifiant = ?
|
||
AND statut_suppression = 0
|
||
AND lieu = ?
|
||
AND saison = ?
|
||
`;
|
||
let values = [
|
||
CB_retour, // stripe_retour
|
||
"non paye", // statut_paiement
|
||
1, // statut_suppression
|
||
identifiant, // identifiant pour la clause WHERE
|
||
"CHAPONNAY", // lieu
|
||
process.env.SAISON // saison
|
||
];
|
||
|
||
logger.info("sql UPDATE ras_adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
|
||
const [results, fields] = await db_connection_promise.execute(sql, values);
|
||
logger.info("Row stn_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
//Query MAJ stn_participant
|
||
let sql1 = `
|
||
UPDATE ras_participant
|
||
SET
|
||
identifiant = CONCAT(identifiant, ID_participant),
|
||
statut_suppression = ?
|
||
WHERE identifiant = ?
|
||
AND statut_suppression = 0
|
||
AND lieu = ?
|
||
AND saison = ?
|
||
`;
|
||
let values1 = [
|
||
1, // statut_suppression
|
||
identifiant, // identifiant pour la clause WHERE
|
||
"CHAPONNAY", // lieu
|
||
process.env.SAISON // saison
|
||
];
|
||
|
||
|
||
logger.info("sql UPDATE ras_participant : " + sql1, { numsession: req.session.id, label: filename});
|
||
|
||
const [results1, fields1] = await db_connection_promise.execute(sql1, values1);
|
||
logger.info("Row ras_participant UPDATE suppression: " + results1.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
await db_connection_promise.end();
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AFFICHAGE DE LA PAGE ANNULÉ
|
||
res.locals.identifiant = identifiant;
|
||
res.render('rassemblementra/page_templates/paiement_annule');
|
||
return;
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la BD
|
||
logger.error("Il y a un problème système : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
|
||
//await db_connection_promise.end();
|
||
res.redirect('/rassemblementra/identifier');
|
||
return;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
const RA_post_valid_ss_paiement = async function (req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RA_post_valid_ss_paiement ==========");
|
||
logger.info("======================================");
|
||
|
||
// VARIABLES
|
||
/////////////////////////////////////////////////
|
||
moment.locale('fr');
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let sql;
|
||
let table;
|
||
let champs;
|
||
let values;
|
||
|
||
/////////////////////////////////////////////////
|
||
// SI IDENTIFIANT PERDU
|
||
/////////////////////////////////////////////////
|
||
logger.info("req.session.identifiant : " + req.session.identifiant , { numsession: req.session.id, label: filename});
|
||
if (req.session.identifiant === undefined) {
|
||
logger.info("IDENTIFIANT PERDU", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Session expirée, veuillez recommencer";
|
||
res.redirect('/rassemblementra/identifier');
|
||
} else {
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DANS LA BASE DE DONNÉES
|
||
|
||
// TRY 5
|
||
try {
|
||
//Connexion
|
||
let db_connection_promise = await connect_DB_promise();
|
||
|
||
// une vérification pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
|
||
logger.info("req.session.participant_ajoute : " + req.session.participant_ajoute, { numsession: req.session.id, label: filename});
|
||
if (req.session.participant_ajoute === "oui") {
|
||
req.session.err_mail_form_adhesion_1 = "Votre session est terminée, les participants ont déjà été ajoutés.";
|
||
res.redirect('/rassemblementra/identifier');
|
||
return;
|
||
} else {
|
||
/////////////////////////////////////////////////
|
||
// AJOUT PARTICIPANTS
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
if (req.session["personne_"+toto+"_nom"]) {
|
||
// QUERY ADD ras_participant
|
||
await db_ajout_participants(req, res, db_connection_promise, toto, now, sql, table, champs, values);
|
||
}
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
await db_ajout_adherent_gratuit(req, res, db_connection_promise, sql, table, champs, values);
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// Query Récupération des infos pour copie dans Google Sheet + envoie du mail
|
||
// obligatoire pour récupérer le numéro adhérent
|
||
// adhérent
|
||
let sql2 = 'select * from ';
|
||
sql2 += 'ras_adherent';
|
||
sql2 += ' WHERE identifiant = "' + req.session.identifiant + '" AND statut_suppression = 0 AND lieu = "CHAPONNAY" AND saison = "' + process.env.SAISON + '"';
|
||
const [results2, fields2] = await db_connection_promise.execute(sql2);
|
||
logger.info("Row ras_adherent SELECT : " + results2.length, { numsession: req.session.id, label: filename});
|
||
|
||
// participants
|
||
let sql3 = 'SELECT ras_adherent.identifiant, ras_adherent.association_suzuki, ras_adherent.saison, ras_adherent.date_maj, ras_adherent.adherent_nom, ras_adherent.adherent_prenom, ras_adherent.adherent_telephone, ras_adherent.adherent_mail, ras_participant.ID_participant, ras_participant.ras_part_nom, ras_participant.ras_part_prenom, ras_participant.ras_part_date_naiss, ras_participant.ras_part_role, ras_participant.ras_part_age, ras_participant.instrument, ras_participant.cahier, ras_participant.piece, ras_participant.prof_nom FROM ras_participant JOIN ras_adherent ON ras_participant.identifiant = ras_adherent.identifiant WHERE ras_participant.identifiant = "' + req.session.identifiant + '" AND ras_participant.statut_suppression = 0 AND ras_participant.lieu = "CHAPONNAY" AND ras_participant.saison = "' + process.env.SAISON + '"';
|
||
|
||
const [results3, fields3] = await db_connection_promise.execute(sql3);
|
||
await db_connection_promise.end();
|
||
logger.info("Row ras_participant SELECT nombre de participants : " + results3.length, { numsession: req.session.id, label: filename});
|
||
|
||
await db_connection_promise.end();
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// PRÉPARATION PAGE PAIEMENT RÉUSSI
|
||
res.locals.identifiant = req.session.identifiant;
|
||
res.locals.association_suzuki = req.session.association_suzuki;
|
||
|
||
for (let toto = 1; toto < 5; toto++) {
|
||
res.locals["personne_"+toto+"_numero"] = toto;
|
||
res.locals["personne_"+toto+"_nom"] = req.session["personne_"+toto+"_nom"];
|
||
res.locals["personne_"+toto+"_prenom"] = req.session["personne_"+toto+"_prenom"];
|
||
res.locals["personne_"+toto+"_role"] = req.session["personne_"+toto+"_role"];
|
||
res.locals["personne_"+toto+"_instrument"] = req.session["personne_"+toto+"_instrument"];
|
||
logger.info('toto = ' + toto, { numsession: req.session.id, label: filename });
|
||
logger.info('res.locals["personne_"+toto+"_prenom"] = ' + res.locals["personne_"+toto+"_prenom"], { numsession: req.session.id, label: filename });
|
||
}
|
||
res.locals.tag_ss_paiement = "oui";
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AJOUT INFOS DANS GOOGLE SHEET
|
||
// TRY 6
|
||
try {
|
||
await GS_rassemblementra.useServiceAccountAuth(GS_creds_rassemblementra);
|
||
await GS_rassemblementra.loadInfo();
|
||
let GS_rassemblementra_Adherents = GS_rassemblementra.sheetsByTitle['Adherents'];
|
||
let GS_rassemblementra_Professeurs = GS_rassemblementra.sheetsByTitle['Professeurs'];
|
||
|
||
await GS_rassemblementra_Adherents.addRows (
|
||
[
|
||
{
|
||
ID_adherent: results2[0].ID_adherent,
|
||
saison: results2[0].saison,
|
||
identifiant: req.session.identifiant,
|
||
association_suzuki: results2[0].association_suzuki,
|
||
date: moment(results2[0].date_maj).format("YYYY-MM-DD HH:mm:ss"),
|
||
adherent_nom: results2[0].adherent_nom.toUpperCase(),
|
||
adherent_prenom: results2[0].adherent_prenom,
|
||
adherent_mail: results2[0].adherent_mail,
|
||
adherent_telephone: "'" + results2[0].adherent_telephone,
|
||
adherent_adresse_rue: results2[0].adherent_adresse_rue,
|
||
adherent_adresse_complement: results2[0].adherent_adresse_complement,
|
||
adherent_adresse_codepostal: results2[0].adherent_adresse_codepostal,
|
||
adherent_adresse_ville: results2[0].adherent_adresse_ville,
|
||
adherent_adresse_pays: results2[0].adherent_adresse_pays,
|
||
commentaire: results2[0].ras_commentaire
|
||
}
|
||
]
|
||
);
|
||
|
||
let ajout_professeur = [];
|
||
let professeur_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "professeur") {
|
||
ajout_professeur.push({
|
||
ID_participant: results3[i].ID_participant,
|
||
identifiant: req.session.identifiant,
|
||
participant_nom: results3[i].ras_part_nom.toUpperCase(),
|
||
participant_prenom: results3[i].ras_part_prenom,
|
||
participant_age: results3[i].ras_part_age,
|
||
adherent_mail: results3[i].adherent_mail,
|
||
adherent_telephone: "'" + results3[i].adherent_telephone,
|
||
instrument: results3[i].instrument
|
||
});
|
||
professeur_trouve = "oui";
|
||
}
|
||
}
|
||
if (professeur_trouve === "oui") { await GS_rassemblementra_Professeurs.addRows(ajout_professeur);}
|
||
|
||
logger.info("AJOUT GOOGLESHEET FIN", { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la GOOGLE SHEET
|
||
logger.error("Il y a un problème avec la connection à Google sheet (TRY 6) : " + error, { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système, "' + error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CONFIRMATION PAR MAIL
|
||
|
||
let mail_objet = "Ecole de Musique Suzuki de l'Est Lyonnais - Rassemblement RHÔNE-ALPES 2026 - ";
|
||
mail_objet += results2[0].adherent_nom;
|
||
|
||
let mail_html = "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Cher adhérent,</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Félicitations ! Vous êtes désormais inscrit au Rassemblement Rhône-Alpes du 29 mars 2026 organisé par l'Ecole de Musique Suzuki de l'Est Lyonnais, en partenariat avec l'Association Française pour la Pédagogie Suzuki.</p>";
|
||
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>L’accueil se fera à partir de 9h30 et les premiers cours débuteront à 10h30. <span style='font-size: 10pt;'>(Merci d’arriver en avance afin de faire votre enregistrement et que les cours puissent commencer à l’heure)</span><br>La journée se terminera aux environs de 16h30/17h</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Vous voudrez bien apportez votre pique-nique pour le déjeuner de midi.</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Lieu : Collège La Xavière, 1 Rue des Fontaines 69970 Chaponnay</p>";
|
||
|
||
mail_html += "<br>";
|
||
|
||
mail_html += '<p style="color:#E73058;font-size: 13pt; font-family: Arial; text-decoration: none;"><strong>VOTRE INSCRIPTION :</strong></p>';
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Identifiant Suzuki : </strong>";
|
||
mail_html += req.session.identifiant;
|
||
mail_html += "</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Association Suzuki : </strong>";
|
||
mail_html += results2[0].association_suzuki;
|
||
mail_html += "</p>";
|
||
mail_html += "<br>";
|
||
for (let toto = 0; toto<(results3.length); toto++) {
|
||
if (results3[toto].ras_part_nom) {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #07475A; text-decoration: underline;'><strong>PARTICIPANT ";
|
||
mail_html += toto + 1;
|
||
mail_html += "</strong></p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Nom : </strong>";
|
||
mail_html += results3[toto].ras_part_nom;
|
||
mail_html += " ";
|
||
mail_html += results3[toto].ras_part_prenom;
|
||
mail_html += "</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Catégorie : </strong>";
|
||
mail_html += results3[toto].ras_part_role;
|
||
mail_html += "</p>";
|
||
if (results3[toto].ras_part_role === "professeur") {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Instrument : </strong>";
|
||
mail_html += results3[toto].instrument;
|
||
mail_html += "</p>";
|
||
}
|
||
mail_html += "<br>";
|
||
}
|
||
}
|
||
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><br>Nous nous réjouissons de vous accueillir pour cette journée !</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>L'école de Musique Suzuki de l'Est Lyonnais<br>Marie Rossot<br>Pôle organisation du rassemblement</p>";
|
||
|
||
let mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html
|
||
};
|
||
envoie_mail.envoie_mail(mailOptions);
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// un tag pour ne pas ajouter plusieurs fois le même participant en cas de rafraîchissement de la page
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
req.session.participant_ajoute = "oui";
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AFFICHAGE PAGE PAIEMENT RÉUSSI
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
|
||
res.render('rassemblementra/page_templates/paiement_reussi.ejs');
|
||
return;
|
||
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de connection à la BD
|
||
logger.error("Il y a un problème avec la connection à la base de données (TRY 5) : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = '"Il y a un problème système connexion base de données, veuillez recommencer, "' + error;
|
||
res.redirect('/rassemblementra/identifier');
|
||
return;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// FONCTIONS ANNEXES
|
||
/////////////////////////////////////////////////
|
||
|
||
async function db_ajout_adherent(req, res, db_connection_promise, now, sql, table, champs, values) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION ANNEXES RASSEMBLEMENT RA db_ajout_adherent ==========");
|
||
logger.info("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
table = "ras_adherent";
|
||
|
||
champs = `
|
||
identifiant, association_suzuki, lieu, saison, date_maj, adherent_nom, adherent_prenom,
|
||
adherent_telephone, adherent_mail, adherent_adresse_rue, adherent_adresse_complement,
|
||
adherent_adresse_codepostal, adherent_adresse_ville, adherent_adresse_pays,
|
||
ras_commentaire, accompagnant_nom, accompagnant_prenom, tarif_rassemblement,
|
||
cout_total, statut_paiement, statut_suppression
|
||
`;
|
||
|
||
values = [
|
||
req.session.identifiant || null,
|
||
req.session.association_suzuki || null,
|
||
"CHAPONNAY", // valeur fixe
|
||
process.env.SAISON || null,
|
||
new Date(), // Date actuelle
|
||
req.session.adherent_nom || null,
|
||
req.session.adherent_prenom || null,
|
||
req.session.adherent_telephone_mobile || null,
|
||
req.session.adherent_mail || null,
|
||
req.session.adherent_adresse_rue || null,
|
||
req.session.adherent_adresse_complement || null,
|
||
req.session.adherent_adresse_codepostal || null,
|
||
req.session.adherent_adresse_ville || null,
|
||
req.session.adherent_adresse_pays || null,
|
||
req.session.commentaire_adherent || null,
|
||
req.session.accompagnant_nom || null,
|
||
req.session.accompagnant_prenom || null,
|
||
req.session.cout_rassemblement || 0, // valeur par défaut
|
||
req.session.cout_total || 0, // valeur par défaut
|
||
"attente", // valeur fixe
|
||
0 // valeur fixe
|
||
];
|
||
|
||
sql = `INSERT INTO ${table} (${champs}) VALUES (${Array(values.length).fill('?').join(', ')})`;
|
||
|
||
logger.info("REQUETE SQL INSERT INTO ras_adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
const [results_ras_adherent, fields] = await db_connection_promise.execute(sql, values);
|
||
logger.info("ras_adherent Row ID added : " + results_ras_adherent.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
return results_ras_adherent;
|
||
}
|
||
|
||
async function db_ajout_adherent_gratuit(req, res, db_connection_promise, now, sql, table, champs, values) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION ANNEXES RASSEMBLEMENT RA db_ajout_adherent ==========");
|
||
logger.info("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
table = "ras_adherent";
|
||
|
||
champs = `
|
||
identifiant, association_suzuki, lieu, saison, date_maj, adherent_nom, adherent_prenom,
|
||
adherent_telephone, adherent_mail, adherent_adresse_rue, adherent_adresse_complement,
|
||
adherent_adresse_codepostal, adherent_adresse_ville, adherent_adresse_pays,
|
||
ras_commentaire, accompagnant_nom, accompagnant_prenom, tarif_rassemblement,
|
||
cout_total, statut_paiement, statut_suppression
|
||
`;
|
||
|
||
values = [
|
||
req.session.identifiant || null,
|
||
req.session.association_suzuki || null,
|
||
"CHAPONNAY", // valeur fixe
|
||
process.env.SAISON || null,
|
||
new Date(), // Date actuelle
|
||
req.session.adherent_nom || null,
|
||
req.session.adherent_prenom || null,
|
||
req.session.adherent_telephone_mobile || null,
|
||
req.session.adherent_mail || null,
|
||
req.session.adherent_adresse_rue || null,
|
||
req.session.adherent_adresse_complement || null,
|
||
req.session.adherent_adresse_codepostal || null,
|
||
req.session.adherent_adresse_ville || null,
|
||
req.session.adherent_adresse_pays || null,
|
||
req.session.commentaire_adherent || null,
|
||
req.session.accompagnant_nom || null,
|
||
req.session.accompagnant_prenom || null,
|
||
req.session.cout_rassemblement || 0, // valeur par défaut
|
||
req.session.cout_total || 0, // valeur par défaut
|
||
"gratuit", // valeur fixe
|
||
0 // valeur fixe
|
||
];
|
||
|
||
sql = `INSERT INTO ${table} (${champs}) VALUES (${Array(values.length).fill('?').join(', ')})`;
|
||
|
||
logger.info("REQUETE SQL INSERT INTO ras_adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
const [results_ras_adherent, fields] = await db_connection_promise.execute(sql, values);
|
||
logger.info("ras_adherent Row ID added : " + results_ras_adherent.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
return results_ras_adherent;
|
||
}
|
||
|
||
async function db_ajout_participants(req, res, db_connection_promise, toto, now, sql, table, champs, values) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION ANNEXES RASSEMBLEMENT RA db_ajout_participants ==========");
|
||
logger.info("======================================");
|
||
|
||
table = "ras_participant";
|
||
// On ajoute que le professeur car une inscription sans paiement est forcément sans instrumentiste
|
||
if (req.session["personne_"+toto+"_role"] === "professeur"){
|
||
//champs = "identifiant, lieu, saison, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss, ras_part_age, ras_part_role, instrument, statut_suppression";
|
||
//values = '"'+ req.session.identifiant + '", "CHAPONNAY", "' + process.env.SAISON + '", "' + now + '", "'+ req.session["personne_"+toto+"_nom"] + '", "' + req.session["personne_"+toto+"_prenom"] + '", "'+ req.session["personne_"+toto+"_datenaissance"] + '", "'+ req.session["personne_"+toto+"_age"] + '", "' + req.session["personne_"+toto+"_role"] + '", "' + req.session["personne_"+toto+"_instrument"] + '", 0';
|
||
|
||
champs = `
|
||
identifiant, lieu, saison, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss,
|
||
ras_part_age, ras_part_role, instrument, statut_suppression
|
||
`;
|
||
|
||
values = [
|
||
req.session.identifiant,
|
||
"CHAPONNAY",
|
||
process.env.SAISON,
|
||
now,
|
||
req.session[`personne_${toto}_nom`],
|
||
req.session[`personne_${toto}_prenom`],
|
||
req.session[`personne_${toto}_datenaissance`],
|
||
req.session[`personne_${toto}_age`],
|
||
req.session[`personne_${toto}_role`],
|
||
req.session[`personne_${toto}_instrument`],
|
||
0
|
||
];
|
||
|
||
}
|
||
|
||
if (req.session["personne_"+toto+"_role"] === "instrumentiste"){
|
||
//champs = "identifiant, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss, ras_part_age, ras_part_role, instrument, cahier, piece, prof_nom, statut_suppression";
|
||
//values = '"'+ req.session.identifiant + '", "'+ now + '", "'+ req.session["personne_"+toto+"_nom"] + '", "' + req.session["personne_"+toto+"_prenom"] + '", "'+ req.session["personne_"+toto+"_datenaissance"] + '", "'+ req.session["personne_"+toto+"_age"] + '", "' + req.session["personne_"+toto+"_role"] + '", "' + req.session["personne_"+toto+"_instrument"] + '", "'+ req.session["personne_"+toto+"_cahier"] + '", "'+ req.session["personne_"+toto+"_piece"] + '", "'+ req.session["personne_"+toto+"_prof"] + '", 0';
|
||
|
||
champs = `
|
||
identifiant, lieu, saison, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss, ras_part_age,
|
||
ras_part_role, instrument, cahier, piece, prof_nom, statut_suppression
|
||
`;
|
||
values = [
|
||
req.session.identifiant, // identifiant
|
||
"CHAPONNAY",
|
||
process.env.SAISON,
|
||
now, // date_maj
|
||
req.session[`personne_${toto}_nom`], // ras_part_nom
|
||
req.session[`personne_${toto}_prenom`], // ras_part_prenom
|
||
req.session[`personne_${toto}_datenaissance`], // ras_part_date_naiss
|
||
req.session[`personne_${toto}_age`], // ras_part_age
|
||
req.session[`personne_${toto}_role`], // ras_part_role
|
||
req.session[`personne_${toto}_instrument`], // instrument
|
||
req.session[`personne_${toto}_cahier`], // cahier
|
||
req.session[`personne_${toto}_piece`], // piece
|
||
req.session[`personne_${toto}_prof`], // prof_nom
|
||
0 // statut_suppression
|
||
];
|
||
|
||
|
||
}
|
||
|
||
sql = `INSERT INTO ${table} (${champs}) VALUES (${Array(values.length).fill('?').join(', ')})`;
|
||
|
||
//sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')';
|
||
logger.info("REQUETE SQL INSERT INTO ras_participant : " + sql , { numsession: req.session.id, label: filename});
|
||
const [results_ras_participant, fields] = await db_connection_promise.execute(sql, values);
|
||
logger.info("ras_participant Row ID added : " + results_ras_participant.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
return results_ras_participant;
|
||
}
|
||
/////////////////////////////////////////////////
|
||
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
||
/////////////////////////////////////////////////
|
||
|
||
module.exports = {
|
||
checkidentifiant,
|
||
RA_checkinfos,
|
||
post_recap_modifier,
|
||
post_payer_ra,
|
||
RA_accompte_reussi,
|
||
RA_accompte_annule,
|
||
RA_post_valid_ss_paiement
|
||
} |