Files
aduzuki/controllers/stagenatController.js
julliechaumard dd49ba357b commit
2023-02-28 01:15:30 +01:00

1633 lines
94 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../public/js/app/logger");
logger.info("NOUS SOMMES DANS LE FICHIER : " + __filename);
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const moment = require('moment');
const ejs = require('ejs');
var nodemailer = require('nodemailer');
const path = require("path");
const stripe = require('stripe')(process.env.STRIPE_PRIVATE_KEY);
var pdf = require("pdf-creator-node");
var fs = require("fs");
/////////////////////////////////////////////////
// GOOGLE SHEET PARAMETERS
/////////////////////////////////////////////////
const { GoogleSpreadsheet } = require('google-spreadsheet');
const GS_creds_stagean = require('../inscriptionsafps-53b60452f63d.json');
const GS_stagean = new GoogleSpreadsheet('1STdRD5lXP316hgtdQfNqcqSQavzaoOXDMOqmfqPc3_0');
/////////////////////////////////////////////////
// VARIABLES GLOBALES
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// PAGE 1
// http://localhost:8888/stagenational/identifier
//
// RECHERCHE SI PERSONNE DÉJA INSCRITE
// SI NON INSCRITE
// RECHERCHE SI ADHÉRENTE DANS BD AFPS
//
/////////////////////////////////////////////////
const SN_checkidentifiant = async function(req, res) {
/////////////////////////////////////////////////
// RECHERCHE SI PERSONNE DÉJA INSCRITE
// DANS BD DU STAGE ANNUEL
logger.info("======================================");
logger.info("======== FUNCTION SN_checkidentifiant ==========");
logger.info("======================================");
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
logger.info("NOM FICHIER SHEET: " + GS_stagean.title, { numsession: req.session.id });
const GS_SN_sheet = GS_stagean.sheetsByTitle['inscription_web'];
logger.info("NOM DU TABLEAU (ONGLET): "+GS_SN_sheet.title); //NOM DU TABLEAU (ONGLET)
const GS_SN_rows = await GS_SN_sheet.getRows();
// mettre les identifiants dans un array
let lesidentifiants = new Array;
let compteur = GS_SN_sheet.rowCount - 1;
console.log("compteur: ",compteur);
for (let i=0; i<compteur; i++) {
lesidentifiants[i] = GS_SN_rows[i].identifiant;
}
// afficher le array
console.log("VOICI LA LISTE DES IDENTIFIANTS");
logger.info("VOICI LA LISTE DES IDENTIFIANTS");
console.info(lesidentifiants);
logger.info(lesidentifiants);
// recherche l'identifiant saisi dans le array de tous les identifiants de la Google Sheet
// ON RÉCUPÈRE L'IDENTIFIANT SAISIE DANS LE FORMULAIRE
// EST-CE QUE L'IDENTIFIANT EST SAISI ?
logger.info("identifiant saisi : "+req.body.identifiant);
if (req.body.identifiant) {
// IDENTIFIANT SAISI
req.session.identifiant = req.body.identifiant;
logger.info("req.body.identifiant : " + req.body.identifiant, { numsession: req.session.id });
logger.info("req.session.identifiant : " + req.session.identifiant, { numsession: req.session.id });
// EST-CE QUE L'IDENTIFIANT SAISI EST DÉJA INSCRIT AU STAGE
if (lesidentifiants.includes(req.body.identifiant) === true) {
// DÉJA INSCRIT AU STAGE
req.session.err_mail_form_adhesion_1 = "Cette identifiant est déjà inscrit pour le stage national 2023.";
req.session.err_mail_form_adhesion_2 = "Pour tout problème veuillez contacter lAssociation.";
req.session.err_mail_form_adhesion_3 = "";
res.redirect('/stagenational/identifier');
} else {
// NON ENCORE INSCRIT AU STAGE
// COCHÉ AUTRE PAYS
logger.info("Etat case à coché autre pays : " + req.body.check_autrepays, { numsession: req.session.id });
if (req.body.check_autrepays){
req.session.err_mail_form_adhesion_1 = "Vous n'êtes pas encore inscrit au stage";
req.session.err_mail_form_adhesion_2 = "Vous ètes membre Suzuki d'un autre pays";
req.session.err_mail_form_adhesion_3 = "Nous allons vous diriger vers le formulaire d'inscription";
res.redirect('/stagenational/formulaire');
}
// COCHÉ AUTRE NON ADHÉRENT
logger.info("Etat case à coché non adhérent : " + req.body.check_nonadherent, { numsession: req.session.id });
if (req.body.check_nonadherent){
req.session.err_mail_form_adhesion_1 = "Etre adhérent (et posséder un identifiant) à une association de la pédagogie Suzuki est obligatoire pour toute famille ou personne qui souhaite participer au stage";
req.session.err_mail_form_adhesion_2 = 'Pour adhérer à l\'association Française pour la Pédagogie Suzuki <a target="_blank" href="https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion"><span class="souligne">Cliquez ici</span></a>';
req.session.err_mail_form_adhesion_3 = 'Vous pouvez également adhérer à l\'association de votre pays. <a target="_blank" href="https://www.europeansuzuki.org/countries/"><span class="souligne">Vous trouverez ici les pays européens</span></a>';
res.redirect('/stagenational/identifier');
}
// SI RIEN COCHÉ
if (typeof req.body.check_autrepays === 'undefined' && typeof req.body.check_nonadherent === 'undefined') {
// ON VA VOIR S'IL EST DANS LA BD DES ADHÉRENTS
// BASE DE DONNÉES DES ADHÉRENTS
// 2 SHEETS
const GS_creds_adhe = require('../testapi336520-3105cc3caa46.json');
const GS_adhe = new GoogleSpreadsheet('1BhpYj-KtsyC8inXIDVl-zldDYRuhEqPwBFvP45FtJkI');
await GS_adhe.useServiceAccountAuth(GS_creds_adhe);
await GS_adhe.loadInfo(); // loads document properties and worksheets
console.log("NOM FICHIER SHEET: ",GS_adhe.title); //nom du fichier
const GS_adh_sheet = GS_adhe.sheetsByTitle['adhesion_annuelle_web'];
const GS_adh_sheet_asslocales = GS_adhe.sheetsByTitle['adhesion_ass_locales'];
const GS_adh_rows = await GS_adh_sheet.getRows();
const GS_adh_rows_asslocales = await GS_adh_sheet_asslocales.getRows();
let lesidentifiants_adh = new Array;
let compteur_adh = GS_adh_sheet.rowCount - 1;
let compteur_adh_asslocales = GS_adh_sheet_asslocales.rowCount - 1;
// RÉCUPÉRER LES IDENTIFIANTS DU TABLEAU adhesion_annuelle_web
for (let i=0; i<compteur_adh; i++) {
lesidentifiants_adh.push({identifiant : GS_adh_rows[i].identifiant, association : "AFPS", Adhesion_paye : GS_adh_rows[i].Adhesion_paye});
}
// RÉCUPÉRER LES IDENTIFIANTS DU TABLEAU adhesion_ass_locales
for (let i=0; i<compteur_adh_asslocales; i++) {
lesidentifiants_adh.push({identifiant : GS_adh_rows_asslocales[i].identifiant, association : GS_adh_rows_asslocales[i].association, Adhesion_paye : GS_adh_rows_asslocales[i].Adhesion_paye });
}
console.log("ARRAY lesidentifiants_adh :");
console.info(lesidentifiants_adh);
// RECHERCHE DE L'IDENTIFIANT SAISI DANS LE ARRAY
const adherent_resultat = lesidentifiants_adh.find( adherent => adherent.identifiant === req.session.identifiant);
if (adherent_resultat){
logger.info("Identifiant trouvé dans la base des adhésions : " + adherent_resultat.identifiant, { numsession: req.session.id });
logger.info("Adhésion payé : " + adherent_resultat.Adhesion_paye, { numsession: req.session.id });
if (adherent_resultat.Adhesion_paye === "paye" || adherent_resultat.Adhesion_paye === "attente"){
logger.info("Identifiant trouvé et payé dans la base des adhésions", { numsession: req.session.id });
req.session.err_mail_form_adhesion_1 = "Cet identifiant est bien inscrit dans les adhésions 2022/2023.";
req.session.err_mail_form_adhesion_2 = "Nous pouvons donc procéder à l'inscription au stage.";
req.session.err_mail_form_adhesion_3 = "Vous allez être rediriger vers le formulaire.";
req.session.association = adherent_resultat.association;
console.log("NOM FICHIER SHEET: ",adherent_resultat);
console.log("adherent_resultat association : ",adherent_resultat.association);
console.log("adherent_resultat identifiant : ",adherent_resultat.identifiant);
res.redirect('/stagenational/formulaire');
} else {
logger.info("Identifiant trouvé mais NON payé dans la base des adhésions", { numsession: req.session.id });
req.session.err_mail_form_adhesion_1 = "Cet identifiant n'a pas payé l'adhésion 2022/2023.";
req.session.err_mail_form_adhesion_2 = "Vous devez adhérer avant de vous inscrire au stage";
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.adhesion.afpedagogiesuzuki.fr/inscription/adhesion"><span class="souligne">Cliquez ici</span></a>';
res.redirect('/stagenational/identifier');
}
} else {
logger.info("Identifiant NON trouvé dans la base des adhésions", { numsession: req.session.id });
req.session.err_mail_form_adhesion_1 = "Cet identifiant N'EST PAS inscrit dans les adhésions 2022/2023.";
req.session.err_mail_form_adhesion_2 = "Vous devez adhérer avant de vous inscrire au stage";
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.adhesion.afpedagogiesuzuki.fr/inscription/adhesion"><span class="souligne">Cliquez ici</span></a>';
res.redirect('/stagenational/identifier');
}
}
}
} else {
// IDENTIFIANT NON SAISI
req.session.err_mail_form_adhesion_1 = "Etre adhérent (et posséder un identifiant) à une association de la pédagogie Suzuki est obligatoire pour toute famille ou personne qui souhaite participer au stage";
req.session.err_mail_form_adhesion_2 = 'Pour adhérer à l\'association Française pour la Pédagogie Suzuki <a target="_blank" href="https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion"><span class="souligne">Cliquez ici</span></a>';
req.session.err_mail_form_adhesion_3 = 'Vous pouvez également adhérer à l\'association de votre pays. <a target="_blank" href="https://www.europeansuzuki.org/countries/"><span class="souligne">Vous trouverez ici les pays européens</span></a>';
res.redirect('/stagenational/identifier');
}
}
/////////////////////////////////////////////////
// PAGE 2
// http://localhost:8888/stagenational/formulaire
//
// RECUPERATION CHAMPS SAISIS
// CALCUL AGE
// CALCUL DU PRIX
// AFFICHER PAGE RECAP
//
/////////////////////////////////////////////////
const SN_checkinfos = async function(req, res) {
logger.info("======================================");
logger.info("======== FUNCTION post_form_stagenat ==========");
logger.info("======================================");
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DANS LA SESSION EN COURS
req.session.association = req.body.association;
logger.info("req.session.association : " + req.session.association, { numsession: req.session.id });
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
req.session.adherent_nom = req.body.adherent_nom;
req.session.adherent_prenom = req.body.adherent_prenom;
req.session.adherent_adresse_rue = req.body.adherent_adresse_rue;
req.session.adherent_adresse_complement = req.body.adherent_adresse_complement;
req.session.adherent_adresse_codepostal = req.body.adherent_adresse_codepostal;
req.session.adherent_adresse_ville = req.body.adherent_adresse_ville;
req.session.adherent_adresse_pays = req.body.adherent_adresse_pays;
req.session.adherent_telephone_mobile = req.body.adherent_telephone_mobile;
req.session.adherent_telephone_fixe = req.body.adherent_telephone_fixe;
req.session.adherent_mail = req.body.adherent_mail;
req.session.hebergement = req.body.hebergement;
req.session.commentaire_adherent = req.body.commentaire_adherent;
//// INITIALISATION DES MONTANTS PAR FAMILLE
req.session["cout_total"] = 0;
req.session.frais_dossier = 0;
req.session["cout_total_hebergement"] = 0;
req.session["cout_total_transport"] = 0;
req.session.cout_total_dalcroze = 0;
req.session.cout_total_percussion = 0;
req.session.cout_total_chant = 0;
req.session.cout_total_dalcroze_surplace = 0;
req.session.cout_total_percussion_surplace = 0;
req.session.cout_total_observation = 0;
req.session.cout_total_cours = 0;
req.session.cout_total_campado = 0;
req.session.accompte_frais_bancaire = 0;
req.session.remise = "";
req.session.montant_accompte = 0;
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
logger.info("req.session.cout_total_dalcroze_surplace = " + req.session.cout_total_dalcroze_surplace, { numsession: req.session.id });
var adulte_trouve = "non";
for (let toto = 1; toto < 7; toto++) {
req.session["personne_"+toto+"_nom"] = req.body["personne_"+toto+"_nom"];
logger.info('req.session["personne_"'+toto+'"_nom"]' + req.session["personne_"+toto+"_nom"], { numsession: req.session.id });
req.session["personne_"+toto+"_prenom"] = req.body["personne_"+toto+"_prenom"];
console.log('req.session["personne_"'+toto+'"_prenom"] =',req.session["personne_"+toto+"_prenom"]);
req.session["personne_"+toto+"_datenaissance"] = req.body["personne_"+toto+"_datenaissance"];
console.log('req.session["personne_"'+toto+'"_datenaissance"]', req.session["personne_"+toto+"_datenaissance"]);
req.session["personne_"+toto+"_transport_mode"] = req.body["personne_"+toto+"_transport_mode"];
console.log('req.session["personne_"'+toto+'"_transport_mode"]',req.session["personne_"+toto+"_transport_mode"]);
req.session["personne_"+toto+"_transport_arret"] = req.body["personne_"+toto+"_transport_arret"];
console.log('req.session["personne_"'+toto+'"_transport_arret"]',req.session["personne_"+toto+"_transport_arret"]);
req.session["personne_"+toto+"_categorie"] = req.body["personne_"+toto+"_categorie"];
console.log('req.session["personne_"'+toto+'"_categorie"]',req.session["personne_"+toto+"_categorie"]);
req.session["personne_"+toto+"_profil"] = req.body["personne_"+toto+"_profil"];
console.log('req.session["personne_"'+toto+'"_profil"]',req.session["personne_"+toto+"_profil"]);
req.session["personne_"+toto+"_instrument"] = req.body["personne_"+toto+"_instrument"];
console.log('req.session["personne_"'+toto+'"_instrument"]',req.session["personne_"+toto+"_instrument"]);
req.session["personne_"+toto+"_cahier"] = req.body["personne_"+toto+"_cahier"];
console.log('req.session["personne_"'+toto+'"_cahier"]',req.session["personne_"+toto+"_cahier"]);
req.session["personne_"+toto+"_piece"] = req.body["personne_"+toto+"_piece"];
console.log('req.session["personne_"'+toto+'"_piece"]',req.session["personne_"+toto+"_piece"]);
req.session["personne_"+toto+"_prof"] = req.body["personne_"+toto+"_prof"];
console.log('req.session["personne_"'+toto+'"_prof"]',req.session["personne_"+toto+"_prof"]);
req.session["personne_"+toto+"_mail_prof"] = req.body["personne_"+toto+"_mail_prof"];
console.log('req.session["personne_"'+toto+'"_mail_prof"]',req.session["personne_"+toto+"_mail_prof"]);
req.session["personne_"+toto+"_option_coursindividuel"] = req.body["personne_"+toto+"_option_coursindividuel"];
console.log('req.session["personne_"'+toto+'"_option_coursindividuel"]',req.session["personne_"+toto+"_option_coursindividuel"]);
req.session["personne_"+toto+"_option_concertsolo"] = req.body["personne_"+toto+"_option_concertsolo"];
console.log('req.session["personne_"'+toto+'"_option_concertsolo"]',req.session["personne_"+toto+"_option_concertsolo"]);
req.session["personne_"+toto+"_option_concertsolo_cahier"] = req.body["personne_"+toto+"_option_concertsolo_cahier"];
console.log('req.session["personne_"'+toto+'"_option_concertsolo_cahier"]',req.session["personne_"+toto+"_option_concertsolo_cahier"]);
req.session["personne_"+toto+"_option_concertsolo_piece"] = req.body["personne_"+toto+"_option_concertsolo_piece"];
console.log('req.session["personne_"'+toto+'"_option_concertsolo_piece"]',req.session["personne_"+toto+"_option_concertsolo_piece"]);
req.session["personne_"+toto+"_activite_1"] = req.body["personne_"+toto+"_activite_1"];
console.log('req.session["personne_"'+toto+'"_activite_1"]',req.session["personne_"+toto+"_activite_1"]);
req.session["personne_"+toto+"_activite_2"] = req.body["personne_"+toto+"_activite_2"];
console.log('req.session["personne_"'+toto+'"_activite_2"]',req.session["personne_"+toto+"_activite_2"]);
// CALCUL ÂGE PERSONNE AU 20 aout 2023
// CALCUL PROFIL AGE DE LA PERSONNE AU 20 aout 2023
console.log('req.session["personne_"'+toto+'"_datenaissance"]', req.session["personne_"+toto+"_datenaissance"]);
if (req.session["personne_"+toto+"_datenaissance"]) {
logger.info('req.session["personne_"'+toto+'"_datenaissance"] : ' + req.session["personne_"+toto+"_datenaissance"], { numsession: req.session.id });
let datenaissance_concat = req.session["personne_"+toto+"_datenaissance"];
logger.info("datenaissance_concat : " + datenaissance_concat, { numsession: req.session.id });
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 debutstage = new Date('2023-08-20');
logger.info("birthDate : " + birthDate, { numsession: req.session.id });
logger.info("debutstage : " + debutstage, { numsession: req.session.id });
var age = debutstage.getFullYear() - birthDate.getFullYear();
logger.info("age : " + age, { numsession: req.session.id });
var m = debutstage.getMonth() - birthDate.getMonth();
console.log("m = ",m);
if (m < 0 || (m === 0 && debutstage.getDate() < birthDate.getDate())) {
logger.info("debutstage.getDate() = " + debutstage.getDate(), { numsession: req.session.id });
age--;
}
req.session["personne_"+toto+"_age"] = age;
logger.info('age : ' + age, { numsession: req.session.id });
// CALCUL PROFIL_AGE DE LA PERSONNE AU 20 aout 2023
req.session["personne_"+toto+"_profilage"] = (age < 3) ? "moins_3ans": (age >= 3 && age <= 5) ? "3-5ans": (age >= 6 && age <= 11) ? "6-11ans": (age >= 12 && age <= 15) ? "12-15ans" : (age >= 16 && age <= 17) ? "16-17ans" : "adulte";
logger.info('req.session["personne_"'+toto+'"_profilage"]' + req.session["personne_"+toto+"_profilage"], { numsession: req.session.id });
// Pour camp ado : on vérifie s'il y a un adulte ou non
if (req.session["personne_"+toto+"_age"] > 17) {
adulte_trouve = "oui";
logger.info("adulte_trouve : " + adulte_trouve, { numsession: req.session.id });
};
///////////////////////
// TARIF PAR PERSONNE
//// INITIALISATION DES MONTANTS PAR PERSONNE
req.session["personne_"+toto+"_cout_hebergement"] = 0;
req.session["personne_"+toto+"_cout_transport"] = 0;
req.session["personne_"+toto+"_activite_cout"] = 0;
req.session["personne_"+toto+"_observation_cout"] = 0;
req.session["personne_"+toto+"_cours_cout"] = 0;
req.session["personne_"+toto+"_campado_cout"] = 0;
// FLOCONS VERT COUT PAR PERSONNE
if (req.session.hebergement == "flocons verts") {
logger.info("CALCUL HEBERGEMENT : " + req.session.hebergement, { numsession: req.session.id });
console.log('req.session["personne_"+toto+"_age"] =',req.session["personne_"+toto+"_age"]);
// ADULTE
if (req.session["personne_"+toto+"_age"] > 15) {
console.log("AGE > 17");
req.session["personne_"+toto+"_cout_hebergement"] = 290;
req.session["cout_total"] += 290;
console.log(typeof req.session["cout_total"]);
req.session["cout_total_hebergement"] += 290;
console.log ("cout_total = ", req.session["cout_total"]);
}
if (req.session["personne_"+toto+"_age"] >= 12 && req.session["personne_"+toto+"_age"] <= 15) {
console.log("12 < AGE > 15");
req.session["personne_"+toto+"_cout_hebergement"] = 261;
req.session["cout_total"] += 261;
req.session["cout_total_hebergement"] += 261;
console.log ("cout_total = ", req.session["cout_total"]);
}
if (req.session["personne_"+toto+"_age"] >= 6 && req.session["personne_"+toto+"_age"] <= 11) {
console.log("6 < AGE > 11");
req.session["personne_"+toto+"_cout_hebergement"] = 232;
req.session["cout_total"] += 232;
req.session["cout_total_hebergement"] += 232;
console.log ("cout_total = ", req.session["cout_total"]);
}
if (req.session["personne_"+toto+"_age"] >= 3 && req.session["personne_"+toto+"_age"] <= 5) {
console.log("3 < AGE > 5");
req.session["personne_"+toto+"_cout_hebergement"] = 174;
req.session["cout_total_hebergement"] += 174;
req.session["cout_total"] += 174;
console.log ("cout_total = ", req.session["cout_total"]);
}
}
console.log ('req.session["personne_"+toto+"_cout_hebergement"] = ', req.session["personne_"+toto+"_cout_hebergement"]);
console.log ("cout_total_hebergement = ", req.session["cout_total_hebergement"]);
console.log ("cout_total = ", req.session["cout_total"]);
// CAR COUT PAR PERSONNE
if (req.session["personne_"+toto+"_transport_mode"] == "car") {
req.session["personne_"+toto+"_cout_transport"] = 55;
req.session["cout_total_transport"] += 55;
req.session["cout_total"] += 55;
}
console.log ("cout_total_transport = ", req.session["cout_total_transport"]);
console.log ("cout_total = ", req.session["cout_total"]);
// ACTIVITE COUT PAR PERSONNE
if (req.session["personne_"+toto+"_activite_1"]) {
if (req.session["personne_"+toto+"_activite_1"] == "dalcroze" && req.session["personne_"+toto+"_age"] < 18) {
req.session.cout_total_dalcroze += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
if (req.session["personne_"+toto+"_activite_1"] == "dalcroze" && req.session["personne_"+toto+"_age"] > 17) {
req.session.cout_total_dalcroze_surplace += 75;
logger.info("req.session.cout_total_dalcroze_surplace ACTIVITE 1 = " + req.session.cout_total_dalcroze_surplace, { numsession: req.session.id });
}
if (req.session["personne_"+toto+"_activite_1"] == "percussions" && req.session["personne_"+toto+"_age"] < 18) {
req.session.cout_total_percussion += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
if (req.session["personne_"+toto+"_activite_1"] == "percussions" && req.session["personne_"+toto+"_age"] > 17) {
req.session.cout_total_percussion_surplace += 75;
}
if (req.session["personne_"+toto+"_activite_1"] == "chant" && req.session["personne_"+toto+"_age"] < 12 ) {
req.session.cout_total_chant += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
}
if (req.session["personne_"+toto+"_activite_2"]) {
if (req.session["personne_"+toto+"_activite_2"] == "dalcroze" && req.session["personne_"+toto+"_age"] < 18) {
req.session.cout_total_dalcroze += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
if (req.session["personne_"+toto+"_activite_2"] == "dalcroze" && req.session["personne_"+toto+"_age"] > 17) {
req.session.cout_total_dalcroze_surplace += 75;
logger.info("req.session.cout_total_dalcroze_surplace ACTIVITE 2 = " + req.session.cout_total_dalcroze_surplace, { numsession: req.session.id });
}
if (req.session["personne_"+toto+"_activite_2"] == "percussions" && req.session["personne_"+toto+"_age"] < 18) {
req.session.cout_total_percussion += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
if (req.session["personne_"+toto+"_activite_2"] == "percussions" && req.session["personne_"+toto+"_age"] > 17) {
req.session.cout_total_percussion_surplace += 75;
}
if (req.session["personne_"+toto+"_activite_2"] == "chant" && req.session["personne_"+toto+"_age"] < 12 ) {
req.session.cout_total_chant += 75;
req.session["personne_"+toto+"_activite_cout"] += 75;
req.session["cout_total"] += 75;
}
}
console.log ("cout_total = ", req.session["cout_total"]);
console.log ("cout_total_percussion = ", req.session.cout_total_percussion);
console.log ("cout_total_dalcroze = ", req.session.cout_total_dalcroze);
console.log ("cout_total_chant = ", req.session.cout_total_chant);
// observateur cout par personne
if (req.session["personne_"+toto+"_categorie"] == "observateur" && req.session["personne_"+toto+"_profil"] == "non_professeur") {
req.session["personne_"+toto+"_observation_cout"] = 30;
req.session.cout_total_observation += 30;
req.session["cout_total"] += 30;
}
console.log ("cout_total = ", req.session["cout_total"]);
console.log ("cout_total_observation = ", req.session.cout_total_observation);
// INSTRUMENTISTE PAR PERSONNE
let date1 = new Date('2023-04-30');
let date2 = new Date();
console.log('date1 =',date1);
console.log('date2 =',date2);
console.log('date2 - date1 =',date2 - date1);
if (req.session["personne_"+toto+"_categorie"] == "instrumentiste") {
console.log("IF INSTRUMENTISTE");
if (req.session["personne_"+toto+"_instrument"]== "alto" || req.session["personne_"+toto+"_instrument"]== "violon" || req.session["personne_"+toto+"_instrument"] == "violoncelle" ) {
console.log("IF INSTRUMENTISTE ALTO V V");
console.log("date supérieur au 01/05/2023");
req.session["personne_"+toto+"_cours_cout"] = 300;
req.session.cout_total_cours += 300;
req.session["cout_total"] += 300;
if (req.session["personne_"+toto+"_option_coursindividuel"] == "cours individuel") {
if (req.session["personne_"+toto+"_cahier"]=="Cahier 1" || req.session["personne_"+toto+"_cahier"]=="Cahier 2" || req.session["personne_"+toto+"_cahier"]=="Cahier 3") {
req.session["personne_"+toto+"_cours_cout"] += 45;
req.session.cout_total_cours += 45;
req.session["cout_total"] += 45;
} else {
req.session["personne_"+toto+"_cours_cout"] += 65;
req.session.cout_total_cours += 65;
req.session["cout_total"] += 65;
}
}
}
if (req.session["personne_"+toto+"_instrument"]== "piano") {
if (req.session["personne_"+toto+"_cahier"]=="Cahier 1") {
req.session["personne_"+toto+"_cours_cout"] = 320;
req.session.cout_total_cours += 320;
req.session["cout_total"] += 320;
} else if (req.session["personne_"+toto+"_cahier"]=="Cahier 2" || req.session["personne_"+toto+"_cahier"]=="Cahier 3" || req.session["personne_"+toto+"_cahier"]=="Cahier 4") {
req.session["personne_"+toto+"_cours_cout"] = 340;
req.session.cout_total_cours += 340;
req.session["cout_total"] += 340;
} else {
req.session["personne_"+toto+"_cours_cout"] = 370;
req.session.cout_total_cours += 370;
req.session["cout_total"] += 370;
}
}
console.log ("cout_total = ", req.session["cout_total"]);
console.log ("cout_total_cours = ", req.session.cout_total_cours);
console.log('req.session["personne_"'+toto+'"_cours_cout"]',req.session["personne_"+toto+"_cours_cout"]);
if (date2 < date1) {
console.log("date inférieur au 01/05/2023 on enlève 20 euros");
req.session.cout_total_cours -= 20;
req.session["personne_"+toto+"_cours_cout"] -= 20;
req.session["cout_total"] -= 20;
req.session.remise = "Remise pour inscription avant le 30 avril 23h59.";
console.log ("req.session.remise = ", req.session.remise);
}
logger.info("cout_total = " + req.session["cout_total"], { numsession: req.session.id });
console.log ("cout_total_cours = ", req.session.cout_total_cours);
console.log('req.session["personne_"'+toto+'"_cours_cout"]',req.session["personne_"+toto+"_cours_cout"]);
// ACCOMPTE + 100 PAR INSTRUMENTISTE
req.session.montant_accompte += 100;
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
}
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
}
}
/////////////////////////////////
// CAMP ADO
console.log("/////////////////////////////////");
logger.info("// CAMP ADO");
console.log("adulte_trouve : ", adulte_trouve);
let compteur_ado = 0
logger.info("compteur_ado au départ : " + compteur_ado, { numsession: req.session.id });
if (adulte_trouve == "non" && req.session.hebergement == "flocons verts") {
for (let toto = 1; toto < 7; toto++) {
if (req.session["personne_"+toto+"_age"] >= 14 && req.session["personne_"+toto+"_age"] < 18) {
req.session["personne_"+toto+"_profil"] = "Camp ado";
req.session["personne_"+toto+"_campado_cout"] = 100;
req.session.cout_total_campado += 100;
req.session["cout_total"] += 100;
compteur_ado ++;
logger.info("compteur_ado incrémenté : " + compteur_ado, { numsession: req.session.id });
} else if (req.session["personne_"+toto+"_age"] < 14) {
req.session.err_mineur = 'Vous ne pouvez inscrire un enfant de moins de 14 ans (âge au premier jour du stage) sans adulte pour l\'accompagner. Age de la personne saisi : '+req.session["personne_"+toto+"_age"]+' ans ('+req.session["personne_"+toto+"_datenaissance"]+')';
console.log("adding session_err_mineur : ",req.session.err_mineur);
}
console.log('req.session["personne_"'+toto+'"_profil"]',req.session["personne_"+toto+"_profil"]);
}
//////////////////////////////////
// VÉRIFICATION DU NOMBRE D'ADO DISPO DANS GOOGLE SHEET
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
console.log("NOM FICHIER SHEET: ",GS_stagean.title); //nom du fichier
const GS_SN_sheet_campado = GS_stagean.sheetsByTitle['campado'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet_campado.title, { numsession: req.session.id });
await GS_SN_sheet_campado.loadCells('B1:B2');
const GS_SN_sheet_campado_b2 = GS_SN_sheet_campado.getCellByA1('B2');
logger.info("CONTENU DE LA CELLULE B2 : " + GS_SN_sheet_campado_b2.value, { numsession: req.session.id });
if (GS_SN_sheet_campado_b2.value < compteur_ado) {
req.session.err_mineur = "Il n'y a plus de place disponible pour inscrire une personne en Camp Ado";
logger.info("Il n'y a plus de place disponible pour inscrire une personne en Camp Ado", { numsession: req.session.id });
}
}
req.session.compteur_ado = compteur_ado;
logger.info("req.session.compteur_ado : " + req.session.compteur_ado, { numsession: req.session.id });
if (req.session.err_mineur) {
logger.info("existing session_err_mineur : " + req.session.err_mineur, { numsession: req.session.id });
res.redirect('/stagenational/formulaire');
} else {
//////////////////////////////////
// FRAIS DE DOSIER
req.session.frais_dossier = 30;
req.session["cout_total"] += 30;
//////////////////////////////////
// ACOMPTE
// Si acompte est de 0 on lui met 100 (par ex si c'est un observateur)
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
if (req.session.montant_accompte < 100 && req.session["cout_total"] > 100 ) {
req.session.montant_accompte = 100;
logger.info("req.session.montant_accompte = " + req.session.montant_accompte, { numsession: req.session.id });
}
//////////////////////////////////
// FRAIS bancaire
// 1,4 % + 0,25 € pour l'Espace économique européen (hors UK)
if (req.session.montant_accompte > 99) {
req.session.accompte_frais_bancaire = 0.25;
req.session.accompte_frais_bancaire += req.session.montant_accompte * 0.014;
req.session.accompte_frais_bancaire = Math.round(req.session.accompte_frais_bancaire * 100) / 100;
req.session["cout_total"] += req.session.accompte_frais_bancaire;
}
logger.info("cout_total_campado = " + req.session.cout_total_campado, { numsession: req.session.id });
console.log ("cout_total = ", req.session["cout_total"]);
console.log ("montant_accompte = ", req.session.montant_accompte);
// RECAP SANS ACOMPTE À PAYER
if (req.session.montant_accompte < 100) {
logger.info("REDIRECTION VERS RÉCAP SANS ACOMMPTE (montant_accompte) = " + req.session.montant_accompte, { numsession: req.session.id });
res.redirect('/stagenational/recapssacompte');
}
// RECAP AVEC ACOMPTE À PAYER
if (req.session.montant_accompte > 99) {
logger.info("REDIRECTION VERS RÉCAP AVEC ACOMMPTE (montant_accompte) = " + req.session.montant_accompte, { numsession: req.session.id });
res.redirect('/stagenational/recap');
}
}
}
/////////////////////////////////////////////////
// PAGE 3
// http://localhost:8888/stagenational/recap
//
// Bouton modifier
//
/////////////////////////////////////////////////
// CLICK SUR BOUTON MODIFIER
const post_recap_modifier = async function(req, res) {
res.redirect('/stagenational/identifier');
}
/////////////////////////////////////////////////
// PAYER ACCOMPTE
//
// Enregistrement des infos dans la Google Sheet avant le paiement
// (car le redirect après le paiement vers la page "réussi" ou "annulé" initialise une autre session qui fait perdre le cookie précédent et les infos saisies)
// Payer accompte par carte bancaire
// STIPE
//
/////////////////////////////////////////////////
// CLICK SUR BOUTON PAYER ACCOMPTE PAGE RECAP
const post_payer_accompte = async function(req, res, next) {
logger.info("======================================");
logger.info("======== FUNCTION post_payer_accompte ==========");
logger.info("======================================");
//////////////////////////////////
// AJOUT INFO DANS LA GOOGLE SHEET
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
logger.info("NOM FICHIER SHEET : " + GS_stagean.title, { numsession: req.session.id });
const GS_SN_sheet = GS_stagean.sheetsByTitle['inscription_web'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet.title, { numsession: req.session.id });
// DATE DE L'INSCRIPTION
moment().format();
moment.locale('fr');
var date_formattee = moment().format('L')
console.log("date_formattee:", date_formattee);
// AJOUTER UNE LIGNE DANS LA GOOGLE SHEET
logger.info("/ AJOUTER UNE LIGNE DANS LA GOOGLE SHEET", { numsession: req.session.id });
logger.info("req.session.identifiant : " + req.session.identifiant, { numsession: req.session.id });
logger.info("req.session.adherent_nom : " + req.session.adherent_nom, { numsession: req.session.id });
const moreRows = await GS_SN_sheet.addRows([
{
'saison': "2022/2023",
'identifiant': req.session.identifiant,
'association_suzuki': req.session.association,
'inscription_date': date_formattee,
'adherent_nom': req.session.adherent_nom,
'adherent_prenom': req.session.adherent_prenom,
'inscription_accompte_paiement_montant': req.session.montant_accompte,
'cout_total': req.session.cout_total,
'remise': req.session.remise,
'frais_dossier': req.session.frais_dossier,
'cout_total_hebergement': req.session.cout_total_hebergement,
'cout_total_transport': req.session.cout_total_transport,
'cout_total_dalcroze': req.session.cout_total_dalcroze,
'cout_total_dalcroze_surplace': req.session.cout_total_dalcroze_surplace,
'cout_total_percussion': req.session.cout_total_percussion,
'cout_total_percussion_surplace': req.session.cout_total_percussion_surplace,
'cout_total_chant': req.session.cout_total_chant,
'cout_total_observation': req.session.cout_total_observation,
'cout_total_cours': req.session.cout_total_cours,
'cout_total_campado': req.session.cout_total_campado,
'accompte_frais_bancaire': req.session.accompte_frais_bancaire,
'adherent_adresse_rue': req.session.adherent_adresse_rue,
'adherent_adresse_complement': req.session.adherent_adresse_complement,
'adherent_adresse_codepostal': req.session.adherent_adresse_codepostal,
'adherent_adresse_ville': req.session.adherent_adresse_ville,
'adherent_adresse_pays': req.session.adherent_adresse_pays,
'adherent_telephone_fixe': req.session.adherent_telephone_fixe,
'adherent_telephone_mobile': req.session.adherent_telephone_mobile,
'adherent_mail': req.session.adherent_mail,
'hebergement': req.session.hebergement,
'commentaire_adherent': req.session.commentaire_adherent,
'personne_1_nom': req.session.personne_1_nom,
'personne_1_prenom': req.session.personne_1_prenom,
'personne_1_datenaissance': req.session.personne_1_datenaissance,
'personne_1_age': req.session.personne_1_profilage,
'personne_1_transport_mode': req.session.personne_1_transport_mode,
'personne_1_transport_arret': req.session.personne_1_transport_arret,
'personne_1_categorie': req.session.personne_1_categorie,
'personne_1_profil': req.session.personne_1_profil,
'personne_1_instrument': req.session.personne_1_instrument,
'personne_1_cahier': req.session.personne_1_cahier,
'personne_1_piece': req.session.personne_1_piece,
'personne_1_prof': req.session.personne_1_prof,
'personne_1_mail_prof': req.session.personne_1_mail_prof,
'personne_1_option_coursindividuel': req.session.personne_1_option_coursindividuel,
'personne_1_option_concertsolo': req.session.personne_1_option_concertsolo,
'personne_1_option_concertsolo_cahier': req.session.personne_1_option_concertsolo_cahier,
'personne_1_option_concertsolo_piece': req.session.personne_1_option_concertsolo_piece,
'personne_1_activite_1': req.session.personne_1_activite_1,
'personne_1_activite_2': req.session.personne_1_activite_2,
'personne_2_nom': req.session.personne_2_nom,
'personne_2_prenom': req.session.personne_2_prenom,
'personne_2_datenaissance': req.session.personne_2_datenaissance,
'personne_2_age': req.session.personne_2_profilage,
'personne_2_transport_mode': req.session.personne_2_transport_mode,
'personne_2_transport_arret': req.session.personne_2_transport_arret,
'personne_2_categorie': req.session.personne_2_categorie,
'personne_2_profil': req.session.personne_2_profil,
'personne_2_instrument': req.session.personne_2_instrument,
'personne_2_cahier': req.session.personne_2_cahier,
'personne_2_piece': req.session.personne_2_piece,
'personne_2_prof': req.session.personne_2_prof,
'personne_2_mail_prof': req.session.personne_2_mail_prof,
'personne_2_option_coursindividuel': req.session.personne_2_option_coursindividuel,
'personne_2_option_concertsolo': req.session.personne_2_option_concertsolo,
'personne_2_option_concertsolo_cahier': req.session.personne_2_option_concertsolo_cahier,
'personne_2_option_concertsolo_piece': req.session.personne_2_option_concertsolo_piece,
'personne_2_activite_1': req.session.personne_2_activite_1,
'personne_2_activite_2': req.session.personne_2_activite_2,
'personne_3_nom': req.session.personne_3_nom,
'personne_3_prenom': req.session.personne_3_prenom,
'personne_3_datenaissance': req.session.personne_3_datenaissance,
'personne_3_age': req.session.personne_3_profilage,
'personne_3_transport_mode': req.session.personne_3_transport_mode,
'personne_3_transport_arret': req.session.personne_3_transport_arret,
'personne_3_categorie': req.session.personne_3_categorie,
'personne_3_profil': req.session.personne_3_profil,
'personne_3_instrument': req.session.personne_3_instrument,
'personne_3_cahier': req.session.personne_3_cahier,
'personne_3_piece': req.session.personne_3_piece,
'personne_3_prof': req.session.personne_3_prof,
'personne_3_mail_prof': req.session.personne_3_mail_prof,
'personne_3_option_coursindividuel': req.session.personne_3_option_coursindividuel,
'personne_3_option_concertsolo': req.session.personne_3_option_concertsolo,
'personne_3_option_concertsolo_cahier': req.session.personne_3_option_concertsolo_cahier,
'personne_3_option_concertsolo_piece': req.session.personne_3_option_concertsolo_piece,
'personne_3_activite_1': req.session.personne_3_activite_1,
'personne_3_activite_2': req.session.personne_3_activite_2,
'personne_4_nom': req.session.personne_4_nom,
'personne_4_prenom': req.session.personne_4_prenom,
'personne_4_datenaissance': req.session.personne_4_datenaissance,
'personne_4_age': req.session.personne_4_profilage,
'personne_4_transport_mode': req.session.personne_4_transport_mode,
'personne_4_transport_arret': req.session.personne_4_transport_arret,
'personne_4_categorie': req.session.personne_4_categorie,
'personne_4_profil': req.session.personne_4_profil,
'personne_4_instrument': req.session.personne_4_instrument,
'personne_4_cahier': req.session.personne_4_cahier,
'personne_4_piece': req.session.personne_4_piece,
'personne_4_prof': req.session.personne_4_prof,
'personne_4_mail_prof': req.session.personne_4_mail_prof,
'personne_4_option_coursindividuel': req.session.personne_4_option_coursindividuel,
'personne_4_option_concertsolo': req.session.personne_4_option_concertsolo,
'personne_4_option_concertsolo_cahier': req.session.personne_4_option_concertsolo_cahier,
'personne_4_option_concertsolo_piece': req.session.personne_4_option_concertsolo_piece,
'personne_4_activite_1': req.session.personne_4_activite_1,
'personne_4_activite_2': req.session.personne_4_activite_2,
'personne_5_nom': req.session.personne_5_nom,
'personne_5_prenom': req.session.personne_5_prenom,
'personne_5_datenaissance': req.session.personne_5_datenaissance,
'personne_5_age': req.session.personne_5_profilage,
'personne_5_transport_mode': req.session.personne_5_transport_mode,
'personne_5_transport_arret': req.session.personne_5_transport_arret,
'personne_5_categorie': req.session.personne_5_categorie,
'personne_5_profil': req.session.personne_5_profil,
'personne_5_instrument': req.session.personne_5_instrument,
'personne_5_cahier': req.session.personne_5_cahier,
'personne_5_piece': req.session.personne_5_piece,
'personne_5_prof': req.session.personne_5_prof,
'personne_5_mail_prof': req.session.personne_5_mail_prof,
'personne_5_option_coursindividuel': req.session.personne_5_option_coursindividuel,
'personne_5_option_concertsolo': req.session.personne_5_option_concertsolo,
'personne_5_option_concertsolo_cahier': req.session.personne_5_option_concertsolo_cahier,
'personne_5_option_concertsolo_piece': req.session.personne_5_option_concertsolo_piece,
'personne_5_activite_1': req.session.personne_5_activite_1,
'personne_5_activite_2': req.session.personne_5_activite_2,
'personne_6_nom': req.session.personne_6_nom,
'personne_6_prenom': req.session.personne_6_prenom,
'personne_6_datenaissance': req.session.personne_6_datenaissance,
'personne_6_age': req.session.personne_6_profilage,
'personne_6_transport_mode': req.session.personne_6_transport_mode,
'personne_6_transport_arret': req.session.personne_6_transport_arret,
'personne_6_categorie': req.session.personne_6_categorie,
'personne_6_profil': req.session.personne_6_profil,
'personne_6_instrument': req.session.personne_6_instrument,
'personne_6_cahier': req.session.personne_6_cahier,
'personne_6_piece': req.session.personne_6_piece,
'personne_6_prof': req.session.personne_6_prof,
'personne_6_mail_prof': req.session.personne_6_mail_prof,
'personne_6_option_coursindividuel': req.session.personne_6_option_coursindividuel,
'personne_6_option_concertsolo': req.session.personne_6_option_concertsolo,
'personne_6_option_concertsolo_cahier': req.session.personne_6_option_concertsolo_cahier,
'personne_6_option_concertsolo_piece': req.session.personne_6_option_concertsolo_piece,
'personne_6_activite_1': req.session.personne_6_activite_1,
'personne_6_activite_2': req.session.personne_6_activite_2,
},
]);
//////////////////////////////////
// PAIEMENT STRIPE
logger.info("req.session.montant_accompte: " + req.session.montant_accompte, { numsession: req.session.id });
console.log ("req.session.identifiant: ",req.session.identifiant);
console.log ("process.env.STRIPE_PRIVATE_KEY : ", process.env.STRIPE_PRIVATE_KEY);
// STRIPE - ETAPE 1 - CREER l'INTENTION DE PAIEMENT
logger.info("cookiesessionid AVANT Stripe :" + req.session.id, { numsession: req.session.id });
const session = await stripe.checkout.sessions.create({
metadata: {cookiesessionid: req.session.id, identifiant: req.session.identifiant},
customer_email: req.session.adherent_mail,
//There are four different submit types.
submit_type: 'pay',
//success_url: 'http://localhost:8888/inscription/adhesion_paiement/reussi?id={CHECKOUT_SESSION_ID}',
//cancel_url: 'http://localhost:8888/inscription/adhesion_paiement/annule?id={CHECKOUT_SESSION_ID}',
//success_url: 'https://www.adusuki.juliechaumard.paris/inscription/adhesion_paiement/reussi?id={CHECKOUT_SESSION_ID}',
//cancel_url: 'https://www.adusuki.juliechaumard.paris/inscription/adhesion_paiement/annule?id={CHECKOUT_SESSION_ID}',
//success_url: 'https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion_paiement/reussi?id={CHECKOUT_SESSION_ID}',
//cancel_url: 'https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion_paiement/annule?id={CHECKOUT_SESSION_ID}',
success_url: process.env.STRIPE_SN_SUCCESSURL,
cancel_url: process.env.STRIPE_SN_CANCELURL,
payment_method_types: ['card'],
line_items: [{
price_data: {
currency: 'eur',
product_data: {
name: 'Stage annuel accompte',
},
unit_amount: req.session.montant_accompte * 100,
},
quantity: 1,
},],
//Checkout has three modes: payment, subscription, or setup.
mode: 'payment'
});
console.log("session: ",session)
console.log("session.id: ",session.id);
logger.info("session.url: " + session.url, { numsession: req.session.id });
let url_stripe = session.url
res.redirect(session.url)
}
/////////////////////////////////////////////////
// CLICK SUR LE BOUTON ENREGISTRER PAGE RECAP SANS ACOMPTE
const post_enregistrer_inscrip_ssacompte = async function(req, res){
logger.info("======================================");
logger.info("======== FUNCTION post_enregistrer_inscrip_ssacompte ==========");
logger.info("======================================");
//////////////////////////////////
// AJOUT INFO DANS LA GOOGLE SHEET
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
logger.info("NOM FICHIER SHEET : " + GS_stagean.title, { numsession: req.session.id });
const GS_SN_sheet = GS_stagean.sheetsByTitle['inscription_web'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet.title, { numsession: req.session.id });
// DATE DE L'INSCRIPTION
moment().format();
moment.locale('fr');
var date_formattee = moment().format('L')
console.log("date_formattee:", date_formattee);
// AJOUTER UNE LIGNE DANS LA GOOGLE SHEET
logger.info("/ AJOUTER UNE LIGNE DANS LA GOOGLE SHEET", { numsession: req.session.id });
logger.info("req.session.identifiant : " + req.session.identifiant, { numsession: req.session.id });
logger.info("req.session.adherent_nom : " + req.session.adherent_nom, { numsession: req.session.id });
const moreRows = await GS_SN_sheet.addRows([
{
'saison': "2022/2023",
'identifiant': req.session.identifiant,
'association_suzuki': req.session.association,
'inscription_date': date_formattee,
'adherent_nom': req.session.adherent_nom,
'adherent_prenom': req.session.adherent_prenom,
'inscription_accompte_paye': "pas d'acompte",
'inscription_accompte_paiement_montant': req.session.montant_accompte,
'cout_total': req.session.cout_total,
'remise': req.session.remise,
'cout_total_hebergement': req.session.cout_total_hebergement,
'cout_total_transport': req.session.cout_total_transport,
'cout_total_dalcroze': req.session.cout_total_dalcroze,
'cout_total_dalcroze_surplace': req.session.cout_total_dalcroze_surplace,
'cout_total_percussion': req.session.cout_total_percussion,
'cout_total_percussion_surplace': req.session.cout_total_percussion_surplace,
'cout_total_chant': req.session.cout_total_chant,
'cout_total_observation': req.session.cout_total_observation,
'cout_total_cours': req.session.cout_total_cours,
'cout_total_campado': req.session.cout_total_campado,
'accompte_frais_bancaire': req.session.accompte_frais_bancaire,
'adherent_adresse_rue': req.session.adherent_adresse_rue,
'adherent_adresse_complement': req.session.adherent_adresse_complement,
'adherent_adresse_codepostal': req.session.adherent_adresse_codepostal,
'adherent_adresse_ville': req.session.adherent_adresse_ville,
'adherent_adresse_pays': req.session.adherent_adresse_pays,
'adherent_telephone_fixe': req.session.adherent_telephone_fixe,
'adherent_telephone_mobile': req.session.adherent_telephone_mobile,
'adherent_mail': req.session.adherent_mail,
'hebergement': req.session.hebergement,
'commentaire_adherent': req.session.commentaire_adherent,
'personne_1_nom': req.session.personne_1_nom,
'personne_1_prenom': req.session.personne_1_prenom,
'personne_1_datenaissance': req.session.personne_1_datenaissance,
'personne_1_age': req.session.personne_1_profilage,
'personne_1_transport_mode': req.session.personne_1_transport_mode,
'personne_1_transport_arret': req.session.personne_1_transport_arret,
'personne_1_categorie': req.session.personne_1_categorie,
'personne_1_profil': req.session.personne_1_profil,
'personne_1_instrument': req.session.personne_1_instrument,
'personne_1_cahier': req.session.personne_1_cahier,
'personne_1_piece': req.session.personne_1_piece,
'personne_1_prof': req.session.personne_1_prof,
'personne_1_mail_prof': req.session.personne_1_mail_prof,
'personne_1_option_coursindividuel': req.session.personne_1_option_coursindividuel,
'personne_1_option_concertsolo': req.session.personne_1_option_concertsolo,
'personne_1_option_concertsolo_cahier': req.session.personne_1_option_concertsolo_cahier,
'personne_1_option_concertsolo_piece': req.session.personne_1_option_concertsolo_piece,
'personne_1_activite_1': req.session.personne_1_activite_1,
'personne_1_activite_2': req.session.personne_1_activite_2,
'personne_2_nom': req.session.personne_2_nom,
'personne_2_prenom': req.session.personne_2_prenom,
'personne_2_datenaissance': req.session.personne_2_datenaissance,
'personne_2_age': req.session.personne_2_profilage,
'personne_2_transport_mode': req.session.personne_2_transport_mode,
'personne_2_transport_arret': req.session.personne_2_transport_arret,
'personne_2_categorie': req.session.personne_2_categorie,
'personne_2_profil': req.session.personne_2_profil,
'personne_2_instrument': req.session.personne_2_instrument,
'personne_2_cahier': req.session.personne_2_cahier,
'personne_2_piece': req.session.personne_2_piece,
'personne_2_prof': req.session.personne_2_prof,
'personne_2_mail_prof': req.session.personne_2_mail_prof,
'personne_2_option_coursindividuel': req.session.personne_2_option_coursindividuel,
'personne_2_option_concertsolo': req.session.personne_2_option_concertsolo,
'personne_2_option_concertsolo_cahier': req.session.personne_2_option_concertsolo_cahier,
'personne_2_option_concertsolo_piece': req.session.personne_2_option_concertsolo_piece,
'personne_2_activite_1': req.session.personne_2_activite_1,
'personne_2_activite_2': req.session.personne_2_activite_2,
'personne_3_nom': req.session.personne_3_nom,
'personne_3_prenom': req.session.personne_3_prenom,
'personne_3_datenaissance': req.session.personne_3_datenaissance,
'personne_3_age': req.session.personne_3_profilage,
'personne_3_transport_mode': req.session.personne_3_transport_mode,
'personne_3_transport_arret': req.session.personne_3_transport_arret,
'personne_3_categorie': req.session.personne_3_categorie,
'personne_3_profil': req.session.personne_3_profil,
'personne_3_instrument': req.session.personne_3_instrument,
'personne_3_cahier': req.session.personne_3_cahier,
'personne_3_piece': req.session.personne_3_piece,
'personne_3_prof': req.session.personne_3_prof,
'personne_3_mail_prof': req.session.personne_3_mail_prof,
'personne_3_option_coursindividuel': req.session.personne_3_option_coursindividuel,
'personne_3_option_concertsolo': req.session.personne_3_option_concertsolo,
'personne_3_option_concertsolo_cahier': req.session.personne_3_option_concertsolo_cahier,
'personne_3_option_concertsolo_piece': req.session.personne_3_option_concertsolo_piece,
'personne_3_activite_1': req.session.personne_3_activite_1,
'personne_3_activite_2': req.session.personne_3_activite_2,
'personne_4_nom': req.session.personne_4_nom,
'personne_4_prenom': req.session.personne_4_prenom,
'personne_4_datenaissance': req.session.personne_4_datenaissance,
'personne_4_age': req.session.personne_4_profilage,
'personne_4_transport_mode': req.session.personne_4_transport_mode,
'personne_4_transport_arret': req.session.personne_4_transport_arret,
'personne_4_categorie': req.session.personne_4_categorie,
'personne_4_profil': req.session.personne_4_profil,
'personne_4_instrument': req.session.personne_4_instrument,
'personne_4_cahier': req.session.personne_4_cahier,
'personne_4_piece': req.session.personne_4_piece,
'personne_4_prof': req.session.personne_4_prof,
'personne_4_mail_prof': req.session.personne_4_mail_prof,
'personne_4_option_coursindividuel': req.session.personne_4_option_coursindividuel,
'personne_4_option_concertsolo': req.session.personne_4_option_concertsolo,
'personne_4_option_concertsolo_cahier': req.session.personne_4_option_concertsolo_cahier,
'personne_4_option_concertsolo_piece': req.session.personne_4_option_concertsolo_piece,
'personne_4_activite_1': req.session.personne_4_activite_1,
'personne_4_activite_2': req.session.personne_4_activite_2,
'personne_5_nom': req.session.personne_5_nom,
'personne_5_prenom': req.session.personne_5_prenom,
'personne_5_datenaissance': req.session.personne_5_datenaissance,
'personne_5_age': req.session.personne_5_profilage,
'personne_5_transport_mode': req.session.personne_5_transport_mode,
'personne_5_transport_arret': req.session.personne_5_transport_arret,
'personne_5_categorie': req.session.personne_5_categorie,
'personne_5_profil': req.session.personne_5_profil,
'personne_5_instrument': req.session.personne_5_instrument,
'personne_5_cahier': req.session.personne_5_cahier,
'personne_5_piece': req.session.personne_5_piece,
'personne_5_prof': req.session.personne_5_prof,
'personne_5_mail_prof': req.session.personne_5_mail_prof,
'personne_5_option_coursindividuel': req.session.personne_5_option_coursindividuel,
'personne_5_option_concertsolo': req.session.personne_5_option_concertsolo,
'personne_5_option_concertsolo_cahier': req.session.personne_5_option_concertsolo_cahier,
'personne_5_option_concertsolo_piece': req.session.personne_5_option_concertsolo_piece,
'personne_5_activite_1': req.session.personne_5_activite_1,
'personne_5_activite_2': req.session.personne_5_activite_2,
'personne_6_nom': req.session.personne_6_nom,
'personne_6_prenom': req.session.personne_6_prenom,
'personne_6_datenaissance': req.session.personne_6_datenaissance,
'personne_6_age': req.session.personne_6_profilage,
'personne_6_transport_mode': req.session.personne_6_transport_mode,
'personne_6_transport_arret': req.session.personne_6_transport_arret,
'personne_6_categorie': req.session.personne_6_categorie,
'personne_6_profil': req.session.personne_6_profil,
'personne_6_instrument': req.session.personne_6_instrument,
'personne_6_cahier': req.session.personne_6_cahier,
'personne_6_piece': req.session.personne_6_piece,
'personne_6_prof': req.session.personne_6_prof,
'personne_6_mail_prof': req.session.personne_6_mail_prof,
'personne_6_option_coursindividuel': req.session.personne_6_option_coursindividuel,
'personne_6_option_concertsolo': req.session.personne_6_option_concertsolo,
'personne_6_option_concertsolo_cahier': req.session.personne_6_option_concertsolo_cahier,
'personne_6_option_concertsolo_piece': req.session.personne_6_option_concertsolo_piece,
'personne_6_activite_1': req.session.personne_6_activite_1,
'personne_6_activite_2': req.session.personne_6_activite_2,
},
]);
//////////////////////////////////////////////////////////////////////////////
// CONFIRMATION PAR MAIL
console.log("MAIL ENVOI AVANT");
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
// TEST JULIE
//user: 'juliechaumard@gmail.com',
//pass: 'etfq umof iwbx ltxk'
// SUZUKI
user: 'afps.inscription@gmail.com',
pass: 'vljxrkhwgljjracs'
}
});
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - STAGE ANNUEL 2022/2023 - ";
mail_objet += req.session.adherent_nom;
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais inscrit au stage annuel de lAssociation Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) qui se tiendra du 20 au 25 août 2023.</p>";
mail_html += "<br>";
mail_html += "<p>RÉCAPITULATIF :</p>";
mail_html += "<p>Identifiant Suzuki : ";
mail_html += req.session.identifiant;
mail_html += "</p><p>Association Suzuki : ";
mail_html += req.session.association;
mail_html += "</p><p>Mode d'hébergement : ";
mail_html += req.session.hebergement;
mail_html += "</p><br>";
for (let toto = 1; toto<7; toto++) {
if (req.session["personne_"+toto+"_nom"]) {
mail_html += "<p>Nom : ";
mail_html += req.session["personne_"+toto+"_nom"];
mail_html += " ";
mail_html += req.session["personne_"+toto+"_prenom"];
mail_html += "</p><p>Profile âge : ";
mail_html += req.session["personne_"+toto+"_age"];
mail_html += "</p><p>Catégorie : ";
mail_html += req.session["personne_"+toto+"_categorie"];
if (req.session["personne_"+toto+"_profil"]) {
mail_html += " ";
mail_html += req.session["personne_"+toto+"_profil"];
}
mail_html += "</p><p>Mode de transport : ";
mail_html += req.session["personne_"+toto+"_transport_mode"];
mail_html += " ";
mail_html += req.session["personne_"+toto+"_transport_arret"];
mail_html += "</p>";
if (req.session["personne_"+toto+"_instrument"]) {
mail_html += "<p>Instrument : ";
mail_html += req.session["personne_"+toto+"_instrument"];
mail_html += " ";
mail_html += req.session["personne_"+toto+"_cahier"];
mail_html += " ";
mail_html += req.session["personne_"+toto+"_option_coursindividuel"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_activite_1"]) {
mail_html += "<p>Activité : ";
mail_html += req.session["personne_"+toto+"_activite_1"];
mail_html += " ";
mail_html += req.session["personne_"+toto+"_activite_2"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_cout_hebergement"]) {
mail_html += "<p>Coût hébergement : ";
mail_html += req.session["personne_"+toto+"_cout_hebergement"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_cout_transport"]) {
mail_html += "<p>Coût transport : ";
mail_html += req.session["personne_"+toto+"_cout_transport"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_campado_cout"]) {
mail_html += "<p>Coût camp ado : ";
mail_html += req.session["personne_"+toto+"_campado_cout"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_cours_cout"]) {
mail_html += "<p>Coût cours : ";
mail_html += req.session["personne_"+toto+"_cours_cout"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_activite_cout"]) {
mail_html += "<p>Coût activité : ";
mail_html += req.session["personne_"+toto+"_activite_cout"];
mail_html += "</p>";
}
if (req.session["personne_"+toto+"_observation_cout"]) {
mail_html += "</p><p>Coût observation : ";
mail_html += req.session["personne_"+toto+"_observation_cout"];
mail_html += "</p>";
}
mail_html += "<br>";
}
}
mail_html += "<br>";
mail_html += "<p>Coût total : ";
mail_html += req.session.cout_total;
mail_html += "</p><p>Remise : ";
mail_html += req.session.remise;
mail_html += "</p><p>Frais bancaire de l'acompte : ";
mail_html += req.session.accompte_frais_bancaire;
mail_html += "</p>Montant de l'acompte versé : ";
mail_html += req.session.inscription_accompte_paiement_montant;
mail_html += "</p>";
if (req.session.cout_total_dalcroze_surplace > 0) {
mail_html += "<p>Coût activité Dalcroze adulte à payer sur place : ";
mail_html += req.session.cout_total_dalcroze_surplace;
mail_html += "€</p>";
}
if (req.session.cout_total_percussion_surplace > 0) {
mail_html += "<p>Coût activité percussions adulte à payer sur place : ";
mail_html += req.session.cout_total_percussion_surplace;
mail_html += "€</p>";
}
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très bon stage !</p><p>Association Française pour la pédagogie Suzuki<br>Anne-Laure SAUVEGRAIN<br>Pôle organisation du stage</p>";
var mailOptions = {
from: 'afps.inscription@gmail.com',
to: req.session.adherent_mail,
subject: mail_objet,
html: mail_html,
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
logger.info("error : " + error, { numsession: req.session.id});
} else {
console.log('Email sent: ' + info.response);
}
});
console.log("MAIL ENVOI APRES");
// REDIRECTION VERS LA PAGE DE CONFIRMATION PAIEMENT CARTE BANCAIRE
res.locals.identifiant = req.session.identifiant;
res.locals.association = req.session.association;
res.locals.adherent_nom = req.session.adherent_nom;
res.locals.adherent_prenom = req.session.adherent_prenom;
res.locals.adherent_adresse_rue = req.session.adherent_adresse_rue;
res.locals.adherent_adresse_complement = req.session.adherent_adresse_complement;
res.locals.adherent_adresse_codepostal = req.session.adherent_adresse_codepostal;
res.locals.adherent_adresse_ville = req.session.adherent_adresse_ville;
res.locals.adherent_adresse_pays = req.session.adherent_adresse_pays;
res.locals.adherent_telephone_mobile = req.session.adherent_telephone_mobile;
res.locals.adherent_telephone_fixe = req.session.adherent_telephone_fixe;
res.locals.adherent_mail = req.session.adherent_mail;
res.locals.hebergement = req.session.hebergement;
res.locals.commentaire_adherent = req.session.commentaire_adherent;
for (let toto = 1; toto < 7; 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+"_profilage"] = req.session["personne_"+toto+"_profilage"];
res.locals["personne_"+toto+"_categorie"] = req.session["personne_"+toto+"_categorie"];
res.locals["personne_"+toto+"_profil"] = req.session["personne_"+toto+"_profil"];
res.locals["personne_"+toto+"_transport_mode"] = req.session["personne_"+toto+"_transport_mode"];
res.locals["personne_"+toto+"_transport_arret"] = req.session["personne_"+toto+"_transport_arret"]
res.locals["personne_"+toto+"_instrument"] = req.session["personne_"+toto+"_instrument"];
res.locals["personne_"+toto+"_cahier"] = req.session["personne_"+toto+"_cahier"];
res.locals["personne_"+toto+"_option_coursindividuel"] = req.session["personne_"+toto+"_option_coursindividuel"];
res.locals["personne_"+toto+"_option_concertsolo"] = req.session["personne_"+toto+"_option_concertsolo"];
res.locals["personne_"+toto+"_activite_1"] = req.session["personne_"+toto+"_activite_1"];
res.locals["personne_"+toto+"_activite_2"] = req.session["personne_"+toto+"_activite_2"];
res.locals["personne_"+toto+"_cout_hebergement"] = req.session["personne_"+toto+"_cout_hebergement"];
res.locals["personne_"+toto+"_cout_transport"] = req.session["personne_"+toto+"_cout_transport"];
res.locals["personne_"+toto+"_activite_cout"] = req.session["personne_"+toto+"_activite_cout"];
res.locals["personne_"+toto+"_observation_cout"] = req.session["personne_"+toto+"_observation_cout"];
res.locals["personne_"+toto+"_cours_cout"] = req.session["personne_"+toto+"_cours_cout"];
res.locals["personne_"+toto+"_campado_cout"] = req.session["personne_"+toto+"_campado_cout"];
}
res.locals.cout_total = req.session.cout_total;
res.locals.remise = req.session.remise;
res.locals.accompte_frais_bancaire = req.session.accompte_frais_bancaire;
res.locals.montant_accompte = req.session.inscription_accompte_paiement_montant;
if (!req.session.identifiant) {
res.locals.error = "Il y a eu une erreur lors de l'ajout de votre inscription dans la base de données du stage, veuillez contacter l'association Suzuki par mail pour le signaler à l'adresse StgNational@gmail.com";
}
res.render('stagenat/page_templates/inscription_reussi.ejs');
}
/////////////////////////////////////////////////
// RETOUR PAIEMENT REUSSI
const SN_accompte_reussi = async function(req, res){
logger.info("======================================");
logger.info("======== FUNCTION SN_accompte_reussi ==========");
logger.info("======================================");
// RETOUR STRIPE
var id = req.query.id;
logger.info("id : " + id, { numsession: req.session.id });
const session_stripe = await stripe.checkout.sessions.retrieve(id);
var customer_email = session_stripe.customer_email;
var payment_status = session_stripe.payment_status;
var amount_total = session_stripe.amount_total/100;
var stripe_customer = session_stripe.customer;
var stripe_payment_intent = session_stripe.payment_intent;
var payment_method_types = session_stripe.payment_method_types;
var stripe_status = session_stripe.status;
var identifiant = session_stripe.metadata.identifiant;
var CB_retour = "identifiant_adherent:"+identifiant+",payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session_stripe.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
logger.info("cookiesessionid APRES Stripe :" + session_stripe.metadata.cookiesessionid, { numsession: req.session.id });
var cookiesessionid = session_stripe.metadata.cookiesessionid;
console.log("customer_email: ", customer_email);
logger.info("payment_status : " + payment_status, { numsession: req.session.id });
console.log("stripe_customer: ", stripe_customer);
console.log("amount_total: ", amount_total);
console.log("stripe_payment_intent: ", stripe_payment_intent);
console.log("payment_method_types: ", payment_method_types);
console.log("payment_method_types: ", payment_method_types[0]);
console.log("stripe_status: ", stripe_status);
console.log("CB_retour: ", CB_retour);
//////////////////////////////////////////////////////////////////////////////
// RÉCUPÉRATION DES INFOS STAGIAIRES DANS LA GOOGLE SHEET
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES GSHEET
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
console.log("NOM FICHIER SHEET: ",GS_stagean.title); //nom du fichier
const GS_SN_sheet = GS_stagean.sheetsByTitle['inscription_web'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet.title, { numsession: req.session.id });
// on récupère le contenu de la GSheet dans un array nommé "infos_adherents"
const infos_adherents = await GS_SN_sheet.getRows();
// on récupère quelle ligne contient l'identifiant concerné pour mettre à jour cette ligne
let list_identifiants = new Array;
let compteur = GS_SN_sheet.rowCount - 1;
let rowToBeUpdate;
logger.info("identifiant TRANSMIS PAR STRIPE :" + identifiant, { numsession: req.session.id });
for (let i=0; i<compteur; i++) {
list_identifiants[i] = infos_adherents[i].identifiant;
if (infos_adherents[i].identifiant === identifiant){
logger.info("infos_adherents[i].identifiant TROUVE :" + infos_adherents[i].identifiant, { numsession: req.session.id });
logger.info("IDENTIFIANT TROUVÉ DANS LE ARRAY 'infos_adherents' à i = " + i, { numsession: req.session.id });
logger.info("infos_adherents[i].adherent_nom TROUVE :" + infos_adherents[i].adherent_nom, { numsession: req.session.id });
rowToBeUpdate = i;
}
}
logger.info("infos_adherents[i].adherent_nom TROUVE GARDE :" + infos_adherents[rowToBeUpdate].adherent_nom, { numsession: req.session.id });
// DATE DE DU PAIEMENT
moment().format();
moment.locale('fr');
var date_formattee = moment().format('L')
console.log("date_formattee:", date_formattee);
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES GSHEET
logger.info("rowToBeUpdate :" + rowToBeUpdate, { numsession: req.session.id });
infos_adherents[rowToBeUpdate].inscription_accompte_paye = 'paye';
infos_adherents[rowToBeUpdate].inscription_accompte_paiement_mode = payment_method_types[0];
infos_adherents[rowToBeUpdate].inscription_accompte_paiement_CB_retour = CB_retour;
infos_adherents[rowToBeUpdate].inscription_accompte_paiement_date = date_formattee;
await infos_adherents[rowToBeUpdate].save(); // save updates
//// MISE A JOUR DU COMPTEUR CAMP ADO
let compteur_ado_a_ajouter = 0;
for (let i=1; i<7; i++) {
infos_adherents[rowToBeUpdate]["personne_"+i+"_profil"];
logger.info("infos_adherents[rowToBeUpdate].personne_+i+_profil :" + infos_adherents[rowToBeUpdate]["personne_"+i+"_profil"], { numsession: req.session.id });
if (infos_adherents[rowToBeUpdate]["personne_"+i+"_profil"] === "Camp ado"){
logger.info("CAMP ADO TROUVE = " + infos_adherents[rowToBeUpdate]["personne_"+i+"_profil"], { numsession: req.session.id });
compteur_ado_a_ajouter ++;
}
}
logger.info("compteur_ado_a_ajouter :" + compteur_ado_a_ajouter, { numsession: req.session.id });
if (compteur_ado_a_ajouter > 0) {
//await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
//await GS_stagean.loadInfo(); // loads document properties and worksheets
logger.info("NOM FICHIER SHEET : " + GS_stagean.title, { numsession: req.session.id });
const GS_SN_sheet_campado = GS_stagean.sheetsByTitle['campado'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet_campado.title, { numsession: req.session.id });
await GS_SN_sheet_campado.loadCells('B1:B2');
const GS_SN_sheet_campado_b2 = GS_SN_sheet_campado.getCellByA1('B2');
logger.info("CONTENU DE LA CELLULE B2 : " + GS_SN_sheet_campado_b2.value, { numsession: req.session.id });
GS_SN_sheet_campado_b2.value -= compteur_ado_a_ajouter;
logger.info("CONTENU DE LA CELLULE B2 APRES SOUSTRACTION DU COMPTEUR ADO : " + GS_SN_sheet_campado_b2, { numsession: req.session.id });
await GS_SN_sheet_campado.saveUpdatedCells();
}
//////////////////////////////////////////////////////////////////////////////
// CONFIRMATION PAR MAIL
console.log("MAIL ENVOI AVANT");
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
// TEST JULIE
//user: 'juliechaumard@gmail.com',
//pass: 'etfq umof iwbx ltxk'
// SUZUKI
user: 'afps.inscription@gmail.com',
pass: 'vljxrkhwgljjracs'
}
});
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - STAGE ANNUEL 2022/2023 - ";
mail_objet += infos_adherents[rowToBeUpdate].adherent_nom;
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais inscrit au stage annuel de lAssociation Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) qui se tiendra du 20 au 25 août 2023.</p>";
mail_html += "<br>";
mail_html += "<p>RÉCAPITULATIF :</p>";
mail_html += "<p>Identifiant Suzuki : ";
mail_html += identifiant;
mail_html += "</p><p>Association Suzuki : ";
mail_html += infos_adherents[rowToBeUpdate].association_suzuki;
mail_html += "</p><p>Mode d'hébergement : ";
mail_html += infos_adherents[rowToBeUpdate].hebergement;
mail_html += "</p><br>";
for (let toto = 1; toto<7; toto++) {
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_nom"]) {
mail_html += "<p>Nom : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_nom"];
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_prenom"];
mail_html += "</p><p>Profile âge : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_age"];
mail_html += "</p><p>Catégorie : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_categorie"];
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_profil"]) {
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_profil"];
}
mail_html += "</p><p>Mode de transport : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_transport_mode"];
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_transport_arret"];
mail_html += "</p>";
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_instrument"]) {
mail_html += "<p>Instrument : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_instrument"];
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_cahier"];
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_option_coursindividuel"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_1"]) {
mail_html += "<p>Activité : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_1"];
mail_html += " ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_2"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_hebergement"]) {
mail_html += "<p>Coût hébergement : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_hebergement"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_transport"]) {
mail_html += "<p>Coût transport : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_transport"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_campado_cout"]) {
mail_html += "<p>Coût camp ado : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_campado_cout"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_cours_cout"]) {
mail_html += "<p>Coût cours : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_cours_cout"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_cout"]) {
mail_html += "<p>Coût activité : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_cout"];
mail_html += "</p>";
}
if (infos_adherents[rowToBeUpdate]["personne_"+toto+"_observation_cout"]) {
mail_html += "</p><p>Coût observation : ";
mail_html += infos_adherents[rowToBeUpdate]["personne_"+toto+"_observation_cout"];
mail_html += "</p>";
}
mail_html += "<br>";
}
}
mail_html += "<br>";
mail_html += "<p>Coût total : ";
mail_html += infos_adherents[rowToBeUpdate].cout_total;
mail_html += "</p><p>Remise : ";
mail_html += infos_adherents[rowToBeUpdate].remise;
mail_html += "</p><p>Frais bancaire de l'acompte : ";
mail_html += infos_adherents[rowToBeUpdate].accompte_frais_bancaire;
mail_html += "</p>Montant de l'acompte versé : ";
mail_html += infos_adherents[rowToBeUpdate].inscription_accompte_paiement_montant;
mail_html += "</p>";
if (infos_adherents[rowToBeUpdate].cout_total_dalcroze_surplace > 0) {
mail_html += "<p>Coût activité Dalcroze adulte à payer sur place : ";
mail_html += infos_adherents[rowToBeUpdate].cout_total_dalcroze_surplace;
mail_html += "€</p>";
}
if (infos_adherents[rowToBeUpdate].cout_total_percussion_surplace > 0) {
mail_html += "<p>Coût activité percussions adulte à payer sur place : ";
mail_html += infos_adherents[rowToBeUpdate].cout_total_percussion_surplace;
mail_html += "€</p>";
}
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très bon stage !</p><p>Association Française pour la pédagogie Suzuki<br>Anne-Laure SAUVEGRAIN<br>Pôle organisation du stage</p>";
var mailOptions = {
from: 'afps.inscription@gmail.com',
to: customer_email,
subject: mail_objet,
html: mail_html,
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
logger.info("error : " + error, { numsession: req.session.id});
} else {
console.log('Email sent: ' + info.response);
}
});
console.log("MAIL ENVOI APRES");
// REDIRECTION VERS LA PAGE DE CONFIRMATION PAIEMENT CARTE BANCAIRE
res.locals.identifiant = infos_adherents[rowToBeUpdate].identifiant;
res.locals.association = infos_adherents[rowToBeUpdate].association_suzuki;
res.locals.adherent_nom = infos_adherents[rowToBeUpdate].adherent_nom;
res.locals.adherent_prenom = infos_adherents[rowToBeUpdate].adherent_prenom;
res.locals.adherent_adresse_rue = infos_adherents[rowToBeUpdate].adherent_adresse_rue;
res.locals.adherent_adresse_complement = infos_adherents[rowToBeUpdate].adherent_adresse_complement;
res.locals.adherent_adresse_codepostal = infos_adherents[rowToBeUpdate].adherent_adresse_codepostal;
res.locals.adherent_adresse_ville = infos_adherents[rowToBeUpdate].adherent_adresse_ville;
res.locals.adherent_adresse_pays = infos_adherents[rowToBeUpdate].adherent_adresse_pays;
res.locals.adherent_telephone_mobile = infos_adherents[rowToBeUpdate].adherent_telephone_mobile;
res.locals.adherent_telephone_fixe = infos_adherents[rowToBeUpdate].adherent_telephone_fixe;
res.locals.adherent_mail = infos_adherents[rowToBeUpdate].adherent_mail;
res.locals.hebergement = infos_adherents[rowToBeUpdate].hebergement;
res.locals.commentaire_adherent = infos_adherents[rowToBeUpdate].commentaire_adherent;
for (let toto = 1; toto < 7; toto++) {
res.locals["personne_"+toto+"_numero"] = toto;
res.locals["personne_"+toto+"_nom"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_nom"];
res.locals["personne_"+toto+"_prenom"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_prenom"];
res.locals["personne_"+toto+"_profilage"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_profilage"];
res.locals["personne_"+toto+"_categorie"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_categorie"];
res.locals["personne_"+toto+"_profil"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_profil"];
res.locals["personne_"+toto+"_transport_mode"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_transport_mode"];
res.locals["personne_"+toto+"_transport_arret"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_transport_arret"]
res.locals["personne_"+toto+"_instrument"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_instrument"];
res.locals["personne_"+toto+"_cahier"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_cahier"];
res.locals["personne_"+toto+"_option_coursindividuel"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_option_coursindividuel"];
res.locals["personne_"+toto+"_option_concertsolo"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_option_concertsolo"];
res.locals["personne_"+toto+"_activite_1"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_1"];
res.locals["personne_"+toto+"_activite_2"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_2"];
res.locals["personne_"+toto+"_cout_hebergement"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_hebergement"];
res.locals["personne_"+toto+"_cout_transport"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_cout_transport"];
res.locals["personne_"+toto+"_activite_cout"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_activite_cout"];
res.locals["personne_"+toto+"_observation_cout"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_observation_cout"];
res.locals["personne_"+toto+"_cours_cout"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_cours_cout"];
res.locals["personne_"+toto+"_campado_cout"] = infos_adherents[rowToBeUpdate]["personne_"+toto+"_campado_cout"];
}
res.locals.cout_total = infos_adherents[rowToBeUpdate].cout_total;
res.locals.remise = infos_adherents[rowToBeUpdate].remise;
res.locals.accompte_frais_bancaire = infos_adherents[rowToBeUpdate].accompte_frais_bancaire;
res.locals.montant_accompte = infos_adherents[rowToBeUpdate].inscription_accompte_paiement_montant;
if (!infos_adherents[rowToBeUpdate].identifiant) {
res.locals.error = "Il y a eu une erreur lors de l'ajout de votre inscription dans la base de données du stage, veuillez contacter l'association Suzuki par mail pour le signaler à l'adresse StgNational@gmail.com";
}
res.render('stagenat/page_templates/paiement_reussi.ejs');
}
/////////////////////////////////////////////////
// RETOUR PAIEMENT ECHOUE
// CLICK SUR BOUTON RECOMMENCER
const SN_accompte_annule = async function(req, res) {
logger.info("======================================");
logger.info("======== FUNCTION SN_accompte_echoue ==========");
logger.info("======================================");
// RETOUR STRIPE
var id = req.query.id;
logger.info("id : " + id, { numsession: req.session.id });
const session_stripe = await stripe.checkout.sessions.retrieve(id);
var customer_email = session_stripe.customer_email;
var payment_status = session_stripe.payment_status;
var amount_total = session_stripe.amount_total/100;
var stripe_customer = session_stripe.customer;
var stripe_payment_intent = session_stripe.payment_intent;
var payment_method_types = session_stripe.payment_method_types;
var stripe_status = session_stripe.status;
var identifiant = session_stripe.metadata.identifiant;
var CB_retour = "identifiant_adherent:"+identifiant+",payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session_stripe.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
logger.info("cookiesessionid APRES Stripe :" + session_stripe.metadata.cookiesessionid, { numsession: req.session.id });
var cookiesessionid = session_stripe.metadata.cookiesessionid;
logger.info("payment_status : " + payment_status, { numsession: req.session.id });
//////////////////////////////////////////////////////////////////////////////
// RÉCUPÉRATION DES INFOS STAGIAIRES DANS LA GOOGLE SHEET
// ANNULATION DE L'INSCRIT DANS LA BASE DE DONNÉES GSHEET
// GSHEET "identifiant" = ANNULE / "paye" = echec
await GS_stagean.useServiceAccountAuth(GS_creds_stagean);
await GS_stagean.loadInfo(); // loads document properties and worksheets
console.log("NOM FICHIER SHEET: ",GS_stagean.title); //nom du fichier
const GS_SN_sheet = GS_stagean.sheetsByTitle['inscription_web'];
logger.info("NOM DU TABLEAU (ONGLET): " + GS_SN_sheet.title, { numsession: req.session.id });
// on récupère le contenu de la GSheet dans un array nommé "infos_adherents"
const infos_adherents = await GS_SN_sheet.getRows();
// on récupère quelle ligne contient l'identifiant concerné pour mettre à jour cette ligne
let list_identifiants = new Array;
let compteur = GS_SN_sheet.rowCount - 1;
let rowToBeUpdate;
logger.info("identifiant TRANSMIS PAR STRIPE :" + identifiant, { numsession: req.session.id });
for (let i=0; i<compteur; i++) {
list_identifiants[i] = infos_adherents[i].identifiant;
if (infos_adherents[i].identifiant === identifiant){
logger.info("infos_adherents[i].identifiant TROUVE :" + infos_adherents[i].identifiant, { numsession: req.session.id });
logger.info("IDENTIFIANT TROUVÉ DANS LE ARRAY 'infos_adherents' à i = " + i, { numsession: req.session.id });
logger.info("infos_adherents[i].adherent_nom TROUVE :" + infos_adherents[i].adherent_nom, { numsession: req.session.id });
rowToBeUpdate = i;
}
}
logger.info("infos_adherents[i].adherent_nom TROUVE GARDE :" + infos_adherents[rowToBeUpdate].adherent_nom, { numsession: req.session.id });
// ANNULATION INSCRIT DANS LA BASE DE DONNÉES GSHEET
logger.info("rowToBeUpdate :" + rowToBeUpdate, { numsession: req.session.id });
infos_adherents[rowToBeUpdate].inscription_accompte_paye = 'echec';
infos_adherents[rowToBeUpdate].identifiant = 'ANNULE';
await infos_adherents[rowToBeUpdate].save(); // save updates
res.render('stagenat/page_templates/paiement_annule');
}
/////////////////////////////////////////////////
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
/////////////////////////////////////////////////
module.exports = {
SN_checkidentifiant,
SN_checkinfos,
post_recap_modifier,
post_payer_accompte,
post_enregistrer_inscrip_ssacompte,
SN_accompte_reussi,
SN_accompte_annule
}