1258 lines
80 KiB
JavaScript
1258 lines
80 KiB
JavaScript
/////////////////////////////////////////////////
|
||
// APPELS DES MODULES
|
||
/////////////////////////////////////////////////
|
||
const path = require("path");
|
||
// CALCUL DE DATE
|
||
const moment = require('moment');
|
||
// STRIPE
|
||
const stripe = require('stripe')(process.env.STRIPE_RI_PRIVATE_KEY);
|
||
//const stripe = require('stripe')(process.env.STRIPE_PRIVATE_KEY_TEST);
|
||
|
||
/////////////////////////////////////////////////
|
||
// 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_rassemblementidf = require('../inscriptionsafps-53b60452f63d.json');
|
||
const GS_rassemblementidf = new GoogleSpreadsheet('19Y1M7mZFSJrycQTtNxV2Cmmyz2OaeXHmwCKVCgy1r7Q');
|
||
const { error } = require("console");
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// FONCTIONS
|
||
/////////////////////////////////////////////////
|
||
|
||
const RI_checkidentifiant = async function(req, res) {
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION RI_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('/rassemblementidf/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('/rassemblementidf/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('/rassemblementidf/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 = "IDF" 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('/rassemblementidf/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('/rassemblementidf/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 + '"';
|
||
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('/rassemblementidf/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('/rassemblementidf/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('/rassemblementidf/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('/rassemblementidf/identifier');
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
const RI_checkinfos = async function(req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RI_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.bus_nb) {req.session.bus_nb = req.body.bus_nb;};
|
||
|
||
if (req.body.commentaire_adherent) {req.session.commentaire_adherent = req.body.commentaire_adherent;};
|
||
|
||
//// INITIALISATION DES MONTANTS PAR FAMILLE
|
||
req.session.cout_rassemblement = 0;
|
||
req.session.cout_repas = 0;
|
||
req.session.accompte_frais_bancaire = 0;
|
||
req.session.cout_total = 0;
|
||
var nbr_eleve = 0;
|
||
var nbr_repas = 0;
|
||
|
||
for (let toto = 1; toto < 7; 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"]; }
|
||
if (req.body["personne_" + toto + "_repas"]) { req.session["personne_" + toto + "_repas"] = req.body["personne_" + toto + "_repas"]; }
|
||
|
||
logger.info('req.session["personne_"'+toto+'"_prenom"] = ' + req.session["personne_"+toto+"_prenom"], { numsession: req.session.id, label: filename });
|
||
logger.info('req.body["personne_"+toto+"_cahier"] = ' + req.body["personne_"+toto+"_cahier"], { numsession: req.session.id, label: filename });
|
||
logger.info('req.session["personne_"+toto+"_cahier"] = ' + req.session["personne_"+toto+"_cahier"], { numsession: req.session.id, label: filename });
|
||
logger.info('req.session["personne_"+toto+"_prof"] = ' + req.session["personne_"+toto+"_prof"], { 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-04-19');
|
||
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["personne_"+toto+"_age"] = ' + req.session["personne_"+toto+"_age"], { numsession: req.session.id, label: filename });
|
||
|
||
//// +1 nombre d'élève
|
||
if (req.session["personne_"+toto+"_role"] === "instrumentiste") {
|
||
nbr_eleve++;
|
||
}
|
||
}
|
||
|
||
//// +1 repas
|
||
if (req.session["personne_"+toto+"_role"] === "professeur" && req.session["personne_"+toto+"_repas"] === "repas") {
|
||
nbr_repas++;
|
||
}
|
||
}
|
||
|
||
///// CALCUL COUT TOTAL
|
||
logger.info('nbr_eleve TOTAL : ' + nbr_eleve, { numsession: req.session.id, label: filename });
|
||
if (nbr_eleve == 1){
|
||
req.session.cout_rassemblement = 31;
|
||
req.session.cout_total += req.session.cout_rassemblement;
|
||
};
|
||
if (nbr_eleve > 1){
|
||
req.session.cout_rassemblement = 51;
|
||
req.session.cout_total += req.session.cout_rassemblement;
|
||
}
|
||
if (nbr_repas > 0) {
|
||
req.session.cout_repas = 8*nbr_repas;
|
||
req.session.cout_total += req.session.cout_repas;
|
||
}
|
||
|
||
if (req.session.cout_total > 0) {
|
||
req.session.accompte_frais_bancaire = 1;
|
||
req.session.cout_total += req.session.accompte_frais_bancaire;
|
||
}
|
||
|
||
|
||
logger.info('req.session.cout_rassemblement : ' + req.session.cout_rassemblement, { numsession: req.session.id, label: filename });
|
||
logger.info('req.session.cout_repas : ' + req.session.cout_repas, { numsession: req.session.id, label: filename });
|
||
logger.info('req.session.accompte_frais_bancaire : ' + req.session.accompte_frais_bancaire, { numsession: req.session.id, label: filename });
|
||
logger.info('req.session.cout_total : ' + req.session.cout_total, { numsession: req.session.id, label: filename });
|
||
res.redirect('/rassemblementidf/recap');
|
||
|
||
|
||
|
||
}
|
||
|
||
const post_recap_modifier = async function(req, res) {
|
||
res.redirect('/rassemblementidf/identifier');
|
||
}
|
||
|
||
const post_payer_ri = async function(req, res) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_payer_ri ==========");
|
||
logger.info("======================================");
|
||
|
||
// VARIABLES
|
||
/////////////////////////////////////////////////
|
||
let saison = process.env.SAISON;
|
||
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('/rassemblementidf/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 < 7; toto++) {
|
||
if (req.session["personne_"+toto+"_nom"]) {
|
||
|
||
// QUERY ADD ras_participant
|
||
table = "ras_participant";
|
||
if (req.session["personne_" + toto + "_role"] === "professeur") {
|
||
champs = "lieu, saison, identifiant, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss, ras_part_age, ras_part_role, instrument, repas_prof, statut_suppression";
|
||
values = '"IDF", "'+process.env.SAISON+'", "' + 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 + "_repas"] + '", 0';
|
||
}
|
||
|
||
if (req.session["personne_" + toto + "_role"] === "instrumentiste") {
|
||
champs = "lieu, saison, 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 = '"IDF", "'+process.env.SAISON+'", "' + 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';
|
||
}
|
||
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);
|
||
logger.info("ras_participant Row ID added : " + results_ras_participant.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
if (!req.session.bus_nb) {req.session.bus_nb = 0};
|
||
table = "ras_adherent";
|
||
champs = "lieu, identifiant, association_suzuki, 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, bus_nb, tarif_rassemblement, cout_repas_prof, frais_bancaire, cout_total, statut_paiement, statut_suppression";
|
||
values = '"IDF", "' + req.session.identifiant + '", "' + req.session.association_suzuki + '", "' + saison + '", "' + now + '", "' + req.session.adherent_nom + '", "' + req.session.adherent_prenom + '", "' + req.session.adherent_telephone_mobile + '", "' + req.session.adherent_mail + '", "' + 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.commentaire_adherent + '", "' + req.session.accompagnant_nom + '", "' + req.session.accompagnant_prenom + '",' + req.session.bus_nb + ',' + req.session.cout_rassemblement + ',' + req.session.cout_repas + ',' + req.session.accompte_frais_bancaire + ',' + req.session.cout_total + ',"attente",0';
|
||
sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')';
|
||
|
||
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);
|
||
logger.info("ras_adherent Row ID added : " + results_ras_adherent.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
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, accompte_frais_bancaire: req.session.accompte_frais_bancaire},
|
||
customer_email: req.session.adherent_mail,
|
||
|
||
submit_type: 'pay',
|
||
|
||
success_url: process.env.STRIPE_RI_SUCCESSURL,
|
||
cancel_url: process.env.STRIPE_RI_CANCELURL,
|
||
|
||
payment_method_types: ['card'],
|
||
line_items: [{
|
||
price_data: {
|
||
currency: 'eur',
|
||
product_data: {
|
||
name: 'Rassemblement IDF',
|
||
},
|
||
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('/rassemblementidf/identifier');
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
const RI_accompte_reussi = async function(req, res) {
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION RI_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('/rassemblementidf/identifier');
|
||
} else {
|
||
|
||
// Query MAJ infos paiements DB
|
||
// TRY 1
|
||
try {
|
||
|
||
let db_connection_promise = await connect_DB_promise();
|
||
let sql = 'UPDATE ';
|
||
sql += 'ras_adherent';
|
||
sql += ' SET ';
|
||
sql += 'stripe_retour = "' + CB_retour + '", ';
|
||
sql += 'statut_paiement = "paye" ';
|
||
sql += ' WHERE identifiant = "' + req.session.identifiant + '" AND lieu = "IDF" AND saison = "'+process.env.SAISON+'" AND statut_suppression = 0';
|
||
|
||
logger.info("sql UPDATE ras_adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
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 = "IDF" 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 DISTINCT 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, ras_participant.repas_prof 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 = "IDF" 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});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// PRÉPARATION PAGE PAIEMENT RÉUSSI
|
||
res.locals.identifiant = req.session.identifiant;
|
||
res.locals.association_suzuki = results2[0].association_suzuki;
|
||
res.locals.bus_nb = results2[0].bus_nb;
|
||
res.locals.accompagnant_prenom = results2[0].accompagnant_prenom;
|
||
res.locals.accompagnant_nom = results2[0].accompagnant_nom;
|
||
|
||
for (let toto = 0; toto < (results3.length); toto++) {
|
||
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;
|
||
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["personne_"+toto+"_repas"] = results3[toto].repas_prof;
|
||
}
|
||
res.locals.cout_total = results2[0].cout_total;
|
||
res.locals.frais_bancaire = results2[0].frais_bancaire;
|
||
res.locals.tarif_rassemblement = results2[0].tarif_rassemblement;
|
||
res.locals.cout_repas = results2[0].cout_repas_prof;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AJOUT INFOS DANS GOOGLE SHEET
|
||
// TRY 4
|
||
try {
|
||
|
||
await GS_rassemblementidf.useServiceAccountAuth(GS_creds_rassemblementidf);
|
||
await GS_rassemblementidf.loadInfo();
|
||
let GS_rassemblementidf_Adherents = GS_rassemblementidf.sheetsByTitle['Adherents'];
|
||
let GS_rassemblementidf_Paiements = GS_rassemblementidf.sheetsByTitle['Paiements'];
|
||
let GS_rassemblementidf_NAVETTE = GS_rassemblementidf.sheetsByTitle['NAVETTE'];
|
||
let GS_rassemblementidf_Instrumentistes = GS_rassemblementidf.sheetsByTitle['Instrumentistes'];
|
||
let GS_rassemblementidf_Professeurs = GS_rassemblementidf.sheetsByTitle['Professeurs'];
|
||
let GS_rassemblementidf_Repas = GS_rassemblementidf.sheetsByTitle['Repas'];
|
||
let GS_rassemblementidf_VIOLON = GS_rassemblementidf.sheetsByTitle['VIOLON'];
|
||
let GS_rassemblementidf_ALTO = GS_rassemblementidf.sheetsByTitle['ALTO'];
|
||
let GS_rassemblementidf_VIOLONCELLE = GS_rassemblementidf.sheetsByTitle['VIOLONCELLE'];
|
||
let GS_rassemblementidf_HARPE = GS_rassemblementidf.sheetsByTitle['HARPE'];
|
||
let GS_rassemblementidf_PIANO = GS_rassemblementidf.sheetsByTitle['PIANO'];
|
||
|
||
if (results2[0].accompagnant_nom === "undefined") {results2[0].accompagnant_nom = ""};
|
||
if (results2[0].accompagnant_prenom === "undefined") {results2[0].accompagnant_prenom = ""};
|
||
|
||
await GS_rassemblementidf_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_rassemblementidf_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_repas_prof: parseFloat(results2[0].cout_repas_prof),
|
||
frais_bancaire: parseFloat(results2[0].frais_bancaire),
|
||
cout_total: parseFloat(results2[0].cout_total),
|
||
statut_paiement: results2[0].statut_paiement
|
||
}
|
||
]
|
||
);
|
||
|
||
if (results2[0].bus_nb > 0) {
|
||
await GS_rassemblementidf_NAVETTE.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_telephone: "'" + results2[0].adherent_telephone,
|
||
bus_nb : results2[0].bus_nb
|
||
}
|
||
]
|
||
);
|
||
}
|
||
|
||
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_rassemblementidf_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,
|
||
repas: results3[i].repas_prof
|
||
});
|
||
professeur_trouve = "oui";
|
||
}
|
||
}
|
||
if (professeur_trouve === "oui") { await GS_rassemblementidf_Professeurs.addRows(ajout_professeur);}
|
||
|
||
let ajout_repas = [];
|
||
let repas_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].repas_prof === "repas") {
|
||
ajout_repas.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,
|
||
adherent_mail: results3[i].adherent_mail,
|
||
adherent_telephone: "'" + results3[i].adherent_telephone,
|
||
repas: results3[i].repas_prof
|
||
});
|
||
repas_trouve = "oui";
|
||
}
|
||
}
|
||
if (repas_trouve === "oui") { await GS_rassemblementidf_Repas.addRows(ajout_repas);}
|
||
|
||
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_rassemblementidf_VIOLON.addRows(ajout_violon);}
|
||
|
||
let ajout_alto = [];
|
||
let alto_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste" && results3[i].instrument === "alto") {
|
||
ajout_alto.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
|
||
});
|
||
alto_trouve = "oui";
|
||
}
|
||
|
||
}
|
||
if (alto_trouve === "oui") { await GS_rassemblementidf_ALTO.addRows(ajout_alto);}
|
||
|
||
let ajout_violoncelle = [];
|
||
let violoncelle_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste" && results3[i].instrument === "violoncelle") {
|
||
ajout_violoncelle.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
|
||
});
|
||
violoncelle_trouve = "oui";
|
||
}
|
||
|
||
}
|
||
if (violoncelle_trouve === "oui") { await GS_rassemblementidf_VIOLONCELLE.addRows(ajout_violoncelle);}
|
||
|
||
let ajout_harpe = [];
|
||
let harpe_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste" && results3[i].instrument === "harpe") {
|
||
ajout_harpe.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
|
||
});
|
||
harpe_trouve = "oui";
|
||
}
|
||
|
||
}
|
||
if (harpe_trouve === "oui") { await GS_rassemblementidf_HARPE.addRows(ajout_harpe);}
|
||
|
||
let ajout_piano = [];
|
||
let piano_trouve = "";
|
||
for (let i = 0; i < results3.length; i++) {
|
||
if (results3[i].ras_part_role === "instrumentiste" && results3[i].instrument === "piano") {
|
||
ajout_piano.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
|
||
});
|
||
piano_trouve = "oui";
|
||
}
|
||
|
||
}
|
||
if (piano_trouve === "oui") { await GS_rassemblementidf_PIANO.addRows(ajout_piano);}
|
||
|
||
|
||
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('/rassemblementidf/identifier');
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CONFIRMATION PAR MAIL
|
||
|
||
let mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - RASSEMBLEMENT IDF 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 Ile de France du 19 avril 2026 organisé par l’association La clef du bonheur, 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 est ouvert à partir de 9h30. Premier atelier à 10h30, prévoir d'être dans la salle pour l'accord à partir de 10h15. Prévoyez d'arriver en avance pour vous familiariser avec le lieu et l'emploi du temps.<br>Un point café est proposé par les parents d'élèves, vous y trouverez des boissons, gâteaux, viennoiseries ....prévoyez un peu d'argent en liquide pour pouvoir en profiter. <br>La journée se terminera après le concert vers 16h30 et un goûter sera offert aux enfants.</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;'>Vous trouverez en pièce jointe le programme à réviser.</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>ACCÈS : parking de la salle des fêtes de Maule, place Henri Dunand, Chaussée Saint Vincent 78580 Maule. Accueil : École René Coty. Des T-shirt orange seront là pour vous diriger et vous accueillir.</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>";
|
||
}
|
||
if (results2[0].bus_nb > 0) {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Nombre de personnes pour la navette depuis Maule : </strong>";
|
||
mail_html += results2[0].bus_nb;
|
||
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].repas_prof === "repas") {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong style='color:#0D6A87'>Repas : oui (8€)</strong></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 += "</p><p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>Frais bancaire : ";
|
||
mail_html += results2[0].frais_bancaire + "€";
|
||
mail_html += "<br>Tarif rassemblement : ";
|
||
mail_html += results2[0].tarif_rassemblement + "€";
|
||
mail_html += "<br>Coût repas professeur(s) : ";
|
||
mail_html += results2[0].cout_repas_prof + "€";
|
||
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’Association La clef du bonheur<br>Marie Vélu et Philippe Arestan<br>Pôle organisation du rassemblement</p>";
|
||
|
||
let OUTPUT2 = path.resolve(__dirname, "../pdf/rassemblement/documents/")+"/rassemblementidf_programme.pdf";
|
||
var attachment_name_2 = "rassemblementidf_programme.pdf";
|
||
|
||
let mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name_2,
|
||
path: OUTPUT2
|
||
}],
|
||
};
|
||
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('rassemblementidf/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('/rassemblementidf/identifier');
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
const RI_accompte_annule = async function(req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RI_accompte_annule ==========");
|
||
logger.info("======================================");
|
||
|
||
// 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});
|
||
|
||
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 ';
|
||
sql += 'ras_adherent';
|
||
sql += ' SET ';
|
||
|
||
sql += 'identifiant = concat(identifiant, ID_adherent), ';
|
||
sql += 'stripe_retour = "' + CB_retour + '", ';
|
||
sql += 'statut_paiement = "non paye", ';
|
||
sql += 'statut_suppression = 1';
|
||
sql += ' WHERE identifiant = "' + identifiant + '" AND statut_suppression = 0 AND lieu = "IDF" AND saison = "'+process.env.SAISON+'"';
|
||
|
||
logger.info("sql UPDATE ras_adherent : " + sql, { numsession: req.session.id, label: filename});
|
||
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
logger.info("Row stn_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
//Query MAJ stn_participant
|
||
let sql1 = 'UPDATE ';
|
||
sql1 += 'ras_participant';
|
||
sql1 += ' SET ';
|
||
sql1 += 'identifiant = concat(identifiant, ID_participant), ';
|
||
sql1 += 'statut_suppression = 1';
|
||
sql1 += ' WHERE identifiant = "' + identifiant + '" AND statut_suppression = 0 AND lieu = "IDF" AND saison = "'+process.env.SAISON+'"';
|
||
|
||
logger.info("sql UPDATE ras_participant : " + sql1, { numsession: req.session.id, label: filename});
|
||
|
||
const [results1, fields1] = await db_connection_promise.execute(sql1);
|
||
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('rassemblementidf/page_templates/paiement_annule');
|
||
}
|
||
|
||
} 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('/rassemblementidf/identifier');
|
||
}
|
||
|
||
|
||
}
|
||
|
||
const RI_post_valid_ss_paiement = async function (req, res) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION RI_post_valid_ss_paiement ==========");
|
||
logger.info("======================================");
|
||
|
||
// VARIABLES
|
||
/////////////////////////////////////////////////
|
||
let saison = process.env.SAISON;
|
||
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('/rassemblementidf/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('/rassemblementidf/identifier');
|
||
} else {
|
||
/////////////////////////////////////////////////
|
||
// AJOUT PARTICIPANTS
|
||
for (let toto = 1; toto < 7; toto++) {
|
||
if (req.session["personne_"+toto+"_nom"]) {
|
||
// QUERY ADD ras_participant
|
||
table = "ras_participant";
|
||
if (req.session["personne_"+toto+"_role"] === "professeur"){
|
||
champs = "lieu, saison, identifiant, date_maj, ras_part_nom, ras_part_prenom, ras_part_date_naiss, ras_part_age, ras_part_role, instrument, repas_prof, statut_suppression";
|
||
values = '"IDF", "'+process.env.SAISON+'", "'+ 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+"_repas"] + '", 0';
|
||
}
|
||
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);
|
||
logger.info("ras_participant Row ID added : " + results_ras_participant.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUT DB ADHÉRENTS
|
||
// QUERY ADD ras_adherent
|
||
if (!req.session.bus_nb) {req.session.bus_nb = 0};
|
||
table = "ras_adherent";
|
||
champs = "lieu, identifiant, association_suzuki, 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, bus_nb, tarif_rassemblement, cout_repas_prof, frais_bancaire, cout_total, statut_paiement, statut_suppression";
|
||
values = '"IDF", "' + req.session.identifiant + '", "' + req.session.association_suzuki + '", "' + saison + '", "' + now + '", "' + req.session.adherent_nom + '", "' + req.session.adherent_prenom + '", "' + req.session.adherent_telephone_mobile + '", "' + req.session.adherent_mail + '", "' + 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.commentaire_adherent + '", "' + req.session.accompagnant_nom + '", "' + req.session.accompagnant_prenom + '",' + req.session.bus_nb + ',' + req.session.cout_rassemblement + ',' + req.session.cout_repas + ',' + req.session.accompte_frais_bancaire + ',' + req.session.cout_total + ',"gratuit",0';
|
||
sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')';
|
||
|
||
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);
|
||
logger.info("ras_adherent Row ID added : " + results_ras_adherent.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// 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 = "IDF" 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, ras_participant.repas_prof 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 = "IDF" 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;
|
||
res.locals.bus_nb = req.session.bus_nb;
|
||
|
||
for (let toto = 1; toto <= (results3.length); 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"];
|
||
res.locals["personne_"+toto+"_repas"] = req.session["personne_"+toto+"_repas"];
|
||
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_rassemblementidf.useServiceAccountAuth(GS_creds_rassemblementidf);
|
||
await GS_rassemblementidf.loadInfo();
|
||
let GS_rassemblementidf_Adherents = GS_rassemblementidf.sheetsByTitle['Adherents'];
|
||
let GS_rassemblementidf_Paiements = GS_rassemblementidf.sheetsByTitle['Paiements'];
|
||
let GS_rassemblementidf_NAVETTE = GS_rassemblementidf.sheetsByTitle['NAVETTE'];
|
||
let GS_rassemblementidf_Professeurs = GS_rassemblementidf.sheetsByTitle['Professeurs'];
|
||
|
||
await GS_rassemblementidf_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
|
||
}
|
||
]
|
||
);
|
||
|
||
if (results2[0].bus_nb > 0) {
|
||
await GS_rassemblementidf_NAVETTE.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_telephone: "'" + results2[0].adherent_telephone,
|
||
bus_nb : results2[0].bus_nb
|
||
}
|
||
]
|
||
);
|
||
}
|
||
|
||
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,
|
||
repas: results3[i].repas_prof
|
||
});
|
||
professeur_trouve = "oui";
|
||
}
|
||
}
|
||
if (professeur_trouve === "oui") { await GS_rassemblementidf_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('/rassemblementidf/identifier');
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CONFIRMATION PAR MAIL
|
||
|
||
let mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - RASSEMBLEMENT IDF 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 Ile de France du 19 avril 2026 organisé par l’association La clef du bonheur, 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 est ouvert à partir de 9h30. Premier atelier à 10h30, prévoir d'être dans la salle pour l'accord à partir de 10h15. Prévoyez d'arriver en avance pour vous familiariser avec le lieu et l'emploi du temps.<br>Un point café est proposé par les parents d'élèves, vous y trouverez des boissons, gâteaux, viennoiseries ....prévoyez un peu d'argent en liquide pour pouvoir en profiter. <br>La journée se terminera après le concert vers 16h30 et un goûter sera offert aux enfants.</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;'>Vous trouverez en pièce jointe le programme à réviser.</p>";
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'>ACCÈS : parking de la salle des fêtes de Maule, place Henri Dunand, Chaussée Saint Vincent 78580 Maule. Accueil : École René Coty. Des T-shirt orange seront là pour vous diriger et vous accueillir.</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>";
|
||
if (results2[0].bus_nb > 0) {
|
||
mail_html += "<p style='font-size: 12pt; font-family: Arial; color: #454343; text-decoration: none;'><strong>Nombre de personnes pour la navette depuis Maule : </strong>";
|
||
mail_html += results2[0].bus_nb;
|
||
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 += "<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’Association La clef du bonheur<br>Marie Vélu et Philippe Arestan<br>Pôle organisation du rassemblement</p>";
|
||
|
||
let OUTPUT = path.resolve(__dirname, "../pdf/rassemblement/documents/")+"/rassemblementidf_plan_lieu.pdf";
|
||
var attachment_name = "rassemblementidf_plan_lieu.pdf";
|
||
|
||
let OUTPUT2 = path.resolve(__dirname, "../pdf/rassemblement/documents/")+"/rassemblementidf_programme.pdf";
|
||
var attachment_name_2 = "rassemblementidf_programme.pdf";
|
||
|
||
let mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name_2,
|
||
path: OUTPUT2
|
||
}],
|
||
};
|
||
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('rassemblementidf/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 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('/rassemblementidf/identifier');
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
||
/////////////////////////////////////////////////
|
||
|
||
module.exports = {
|
||
RI_checkidentifiant,
|
||
RI_checkinfos,
|
||
post_recap_modifier,
|
||
post_payer_ri,
|
||
RI_accompte_reussi,
|
||
RI_accompte_annule,
|
||
RI_post_valid_ss_paiement
|
||
} |