///////////////////////////////////////////////// // LOGGING ///////////////////////////////////////////////// const logger = require("../../public/js/app/logger_concert"); ///////////////////////////////////////////////// // APPELS DES MODULES ///////////////////////////////////////////////// const path = require("path"); const fs = require("fs"); // CALCUL DE DATE const moment = require('moment'); // ENVOIE MAIL GOOGLE MAIL const nodemailer = require('nodemailer'); // CONNECTION BASE DE DONNÉES const mysql = require('mysql2'); const mysql_promise = require('mysql2/promise'); // ADOBE PDF const PDFServicesSdk = require('@adobe/pdfservices-node-sdk'); // FETCH (utile pour nodejs version < 18) const fetch = require("node-fetch"); ///////////////////////////////////////////////// // GOOGLE SHEET PARAMETERS ///////////////////////////////////////////////// const { GoogleSpreadsheet } = require('google-spreadsheet'); const GS_creds = require('../../inscriptionsafps-53b60452f63d.json'); const { error } = require("console"); // Fichier Google Sheet "afps_concert_annuel" (Mon Drive/inscriptions/base_donees) // doc ID is the long id in the sheets URL const GS_concert = new GoogleSpreadsheet(process.env.gsheet_concertannuel); ///////////////////////////////////////////////// // APPELS DES FONCTIONS ///////////////////////////////////////////////// const sleep = require("./../../modules/sleep"); const envoie_mail = require("./../../modules/envoie_mail"); const pdf = require("./../../modules/pdf"); //////////////////////////////////////////////////// // FILE NAME //////////////////////////////////////////////////// const filename = path.parse(__filename).base; //////////////////////////////////////////////////// // CONNECTION DB //////////////////////////////////////////////////// async function connect_DB_promise() { return db_connection_promise = await mysql_promise.createConnection({ host: process.env.db_connection_host, port: process.env.db_connection_port, user: process.env.db_connection_user, password: process.env.db_connection_password, database: process.env.db_connection_database }); } ///////////////////////////////////////////////// // 5 - CLIC SUR VALIDER ///////////////////////////////////////////////// const payer = async function (req, res) { logger.info("======================================", { label: filename }); logger.info("======== FUNCTION payer (enregistrement BD + envoie vers Stripe) ==========", { label: filename }); logger.info("======================================", { label: filename }); logger.info("req.session.adherent_mail = " + req.session.adherent_mail , { numsession: req.session.id, label: filename}); logger.info("req.session.deja_inscrit_concert = " + req.session.deja_inscrit_concert , { numsession: req.session.id, label: filename}); let sql; let table; let champs; let values; let saison = "2025/2026"; moment.locale('fr'); let now = moment().format("YYYY-MM-DD HH:mm:ss"); var today = moment().format('L'); let commande_nbr_places_concertiste = 0; let commande_nbr_places_encadrant_parent = 0; let commande_nbr_places_encadrant_prof = 0; let piano_commandes = 0; let alto_commandes = 0; let flute_commandes = 0; let trompette_commandes = 0; let harpe_commandes = 0; let violon1_commandes = 0; let violon2_commandes = 0; let violoncelle1_commandes = 0; let violoncelle2_commandes = 0; var mail_objet; var mail_html; // FONCTION POUR AFFICHER LA PAGE EN CAS D'ERREUR function affiche_page_admin() { //////////////////////////////////////////////////// // AFFIHER LA PAGE /identifier // AFFICHAGE DES ERREURS // EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR : // - SI IDENTIFIANT NON ADHÉRENT // - SI RIEN SAISIE //////////////////////////////////////////////////// if (req.session.err_mail_form_adhesion_1) { res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1; res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2; res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3; // on supprime le contenu après affichage req.session.err_mail_form_adhesion_1 = undefined; req.session.err_mail_form_adhesion_2 = undefined; req.session.err_mail_form_adhesion_3 = undefined; } res.render('concert/page_templates/admin'); }; ///////////////////////////////////////////////// // 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"; affiche_page_admin(); } else { ///////////////////////////////////////////////// // AJOUT DANS LA BASE DE DONNÉES ///////////////////////////////////////////////// if (req.session.deja_inscrit_concert == "non") { logger.info("NOUVELLE INSCRIPTION AU CONCERT", { numsession: req.session.id, label: filename}); } else if (req.session.deja_inscrit_concert == "oui") { logger.info("AJOUT DE BILLETS POUR UN ADHÉRENT DÉJÀ INSCRIT AU CONCERT", { numsession: req.session.id, label: filename}); } // CONNECTION DB PROMISE try { //Connexion let db_connection_promise = await connect_DB_promise(); //Queries ///////////////////////////////////////////////// // AJOUT CONCERTISTES for (let toto = 1; toto < 5; toto++) { if (req.session["eleve_"+toto+"_nom"]) { table = "ca_concertiste"; if (req.session.deja_inscrit_concert == "non") { champs = "date_maj,saison,identifiant,concertiste_nom,concertiste_prenom,concertiste_age,concertiste_intrument,concertiste_cahier,concertiste_piece,concertiste_prof_nom,concertiste_prof_mail"; values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["eleve_"+toto+"_nom"] + '","' + req.session["eleve_"+toto+"_prenom"] + '",' + req.session["eleve_"+toto+"_age"] + ',"' + req.session["eleve_"+toto+"_instrument"] + '","' + req.session["eleve_"+toto+"_cahier"] + '","' + req.session["eleve_"+toto+"_piece"] + '","' + req.session["eleve_"+toto+"_prof_nom"] + '","' + req.session["eleve_"+toto+"_prof_mail"] + '"'; } else if (req.session.deja_inscrit_concert == "oui") { champs = "date_maj,saison,identifiant,concertiste_nom,concertiste_prenom,concertiste_age,concertiste_intrument,concertiste_cahier,concertiste_piece,concertiste_prof_nom,concertiste_prof_mail,ajout"; values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["eleve_"+toto+"_nom"] + '","' + req.session["eleve_"+toto+"_prenom"] + '",' + req.session["eleve_"+toto+"_age"] + ',"' + req.session["eleve_"+toto+"_instrument"] + '","' + req.session["eleve_"+toto+"_cahier"] + '","' + req.session["eleve_"+toto+"_piece"] + '","' + req.session["eleve_"+toto+"_prof_nom"] + '","' + req.session["eleve_"+toto+"_prof_mail"] + '","' + now + '"'; } sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')'; logger.info("REQUETE SQL ca_concertiste : " + sql , { numsession: req.session.id, label: filename}); const [results, fields] = await db_connection_promise.execute(sql); logger.info("CONCERTISTES Row ID added : " + results.insertId, { numsession: req.session.id, label: filename}); // COMPTEUR DE PLACES commande_nbr_places_concertiste += 1; if (req.session["eleve_"+toto+"_instrument"] == "Piano") { piano_commandes += 1; } if (req.session["eleve_"+toto+"_instrument"] == "Alto") { alto_commandes += 1; } if (req.session["eleve_"+toto+"_instrument"] == "Flute") { flute_commandes += 1; } if (req.session["eleve_"+toto+"_instrument"] == "Trompette") { trompette_commandes += 1; } if (req.session["eleve_"+toto+"_instrument"] == "Harpe") { harpe_commandes += 1; } if (req.session["eleve_"+toto+"_instrument"] == "Violon") { switch (req.session["eleve_"+toto+"_cahier"]) { case 'Cahier 1': violon1_commandes += 1; break; case 'Cahier 2': violon1_commandes += 1; break; case 'Cahier 3': violon1_commandes += 1; break; case 'Cahier 4': violon1_commandes += 1; break; case 'Cahier 5': violon1_commandes += 1; break; case 'Cahier 6': violon2_commandes += 1; break; case 'Cahier 7': violon2_commandes += 1; break; case 'Cahier 8': violon2_commandes += 1; break; case 'Cahier 9': violon2_commandes += 1; break; case 'Cahier 10': violon2_commandes += 1; break; default: logger.info("Erreur détecté dans le switch req.session[eleve_+toto+_instrument] == Violon", { numsession: req.session.id, label: filename}); } } if (req.session["eleve_"+toto+"_instrument"] == "Violoncelle") { switch (req.session["eleve_"+toto+"_cahier"]) { case 'Cahier 1': violoncelle1_commandes += 1; break; case 'Cahier 2': violoncelle1_commandes += 1; break; case 'Cahier 3': violoncelle1_commandes += 1; break; case 'Cahier 4': violoncelle1_commandes += 1; break; case 'Cahier 5': violoncelle2_commandes += 1; break; case 'Cahier 6': violoncelle2_commandes += 1; break; case 'Cahier 7': violoncelle2_commandes += 1; break; case 'Cahier 8': violoncelle2_commandes += 1; break; case 'Cahier 9': violoncelle2_commandes += 1; break; case 'Cahier 10': violoncelle2_commandes += 1; break; default: logger.info("Erreur détecté dans le switch req.session[eleve_+toto+_instrument] == Violoncelle", { numsession: req.session.id, label: filename}); } } } } ///////////////////////////////////////////////// // AJOUT ENCADRANTS let compteur_encadrants = 0; for (let toto = 1; toto < 5; toto++) { if (req.session["encadrant_"+toto+"_nom"]) { // SI PARENT, ne rien mettre dans instrument (évite qu'il y ait "undefined") if (!req.session["encadrant_"+toto+"_prof_instrument"]) {req.session["encadrant_"+toto+"_prof_instrument"] = ''}; table = "ca_encadrant"; if (req.session.deja_inscrit_concert == "non") { champs = "date_maj,saison,identifiant,encadrant_type,encadrant_nom,encadrant_prenom,encadrant_telephone_mobile,encadrant_mail,encadrant__prof_instrument"; values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["encadrant_"+toto+"_type"] + '","' + req.session["encadrant_"+toto+"_nom"] + '","' + req.session["encadrant_"+toto+"_prenom"] + '","' + req.session["encadrant_"+toto+"_telephone_mobile"] + '","' + req.session["encadrant_"+toto+"_mail"] + '","' + req.session["encadrant_"+toto+"_prof_instrument"] + '"'; } else if (req.session.deja_inscrit_concert == "oui") { champs = "date_maj,saison,identifiant,encadrant_type,encadrant_nom,encadrant_prenom,encadrant_telephone_mobile,encadrant_mail,encadrant__prof_instrument, ajout"; values = '"'+ now + '","' + saison + '"' + ',"' + req.session.identifiant + '","' + req.session["encadrant_"+toto+"_type"] + '","' + req.session["encadrant_"+toto+"_nom"] + '","' + req.session["encadrant_"+toto+"_prenom"] + '","' + req.session["encadrant_"+toto+"_telephone_mobile"] + '","' + req.session["encadrant_"+toto+"_mail"] + '","' + req.session["encadrant_"+toto+"_prof_instrument"] + '","' + now + '"'; } sql = 'INSERT INTO ' + table + ' (' + champs + ') VALUES (' + values + ')'; logger.info("REQUETE SQL ca_encadrant : " + sql , { numsession: req.session.id, label: filename}); const [results, fields] = await db_connection_promise.execute(sql); // COMPTEUR DE PLACES if (req.session["encadrant_"+toto+"_type"]=="Professeur") { commande_nbr_places_encadrant_prof += 1; }; if (req.session["encadrant_"+toto+"_type"]=="Parent") { commande_nbr_places_encadrant_parent += 1; }; compteur_encadrants++; } } ///////////////////////////////////////////////// // AJOUT DB INFORMATIONS ADHÉRENTS // SI C'EST SA PREMIÈRE INSCRIPTION if (req.session.deja_inscrit_concert == "non") { table = "ca_adherent"; sql = 'INSERT INTO '; sql += table; sql += ' ('; sql += 'date_inscription, '; sql += 'date_maj, '; sql += 'saison, '; sql += 'identifiant, '; sql += 'association_suzuki, '; sql += 'adherent_nom, '; sql += 'adherent_prenom, '; sql += 'adherent_telephone_mobile, '; sql += 'adherent_mail, '; sql += 'hebergement_ville, '; sql += 'hebergement_places, '; sql += 'commande_nb_spectateur, '; sql += 'comment, '; sql += 'commande_nb_concertiste, '; sql += 'commande_nb_encadr_prof, '; sql += 'commande_nb_encadr_par, '; sql += 'commande_cout_concertiste, '; sql += 'commande_cout_spectateur, '; sql += 'don, '; sql += 'stripe_statut_paiement, '; sql += 'montant_total'; sql += ') VALUES ('; sql += '"'+ now +'",'; sql += '"'+ now +'",'; sql += '"'+ saison +'",'; sql += '"'+ req.session.identifiant +'",'; sql += '"'+ req.session.association_suzuki +'",'; sql += '"'+ req.session.adherent_nom +'",'; sql += '"'+ req.session.adherent_prenom +'",'; sql += '"'+ req.session.adherent_telephone_mobile +'",'; sql += '"'+ req.session.adherent_mail +'",'; sql += '"'+ req.session.hebergement_ville +'",'; sql += ''+ req.session.hebergement_nb +','; sql += ''+ req.session.spectateur_nb_place +','; sql += '"'+ req.session.commentaire_adherent +'",'; sql += ''+ commande_nbr_places_concertiste +','; sql += ''+ commande_nbr_places_encadrant_prof +','; sql += ''+ commande_nbr_places_encadrant_parent +','; sql += ''+ req.session.cout_concertiste +','; sql += ''+ req.session.cout_spectateur +','; sql += ''+ parseInt(req.session.don) +','; if (req.session.montant_total > 0) { sql += '"attente",'; } else { sql += '"gratuit",'; } sql += ''+ req.session.montant_total; sql += ')'; logger.info("REQUETE SQL ca_adherent : " + sql , { numsession: req.session.id, label: filename}); const [results_insert_ca_adherent, fields_insert_ca_adherent] = await db_connection_promise.execute(sql); logger.info("ADHÉRENTS Row ID added : " + results_insert_ca_adherent.insertId, { numsession: req.session.id, label: filename}); } else if (req.session.deja_inscrit_concert == "oui") { // SI C'EST UN AJOUT DE BILLET table = "ca_ajout"; sql = 'INSERT INTO '; sql += table; sql += ' ('; sql += 'date_maj, '; sql += 'saison, '; sql += 'identifiant, '; sql += 'commande_nb_spectateur, '; sql += 'commande_nb_concertiste, '; sql += 'commande_nb_encadr_prof, '; sql += 'commande_nb_encadr_par, '; sql += 'commande_cout_concertiste, '; sql += 'commande_cout_spectateur, '; sql += 'don, '; sql += 'stripe_statut_paiement, '; sql += 'montant_total'; sql += ') VALUES ('; sql += '"'+ now +'",'; sql += '"'+ saison +'",'; sql += '"'+ req.session.identifiant +'",'; sql += ''+ req.session.spectateur_nb_place +','; sql += ''+ commande_nbr_places_concertiste +','; sql += ''+ commande_nbr_places_encadrant_prof +','; sql += ''+ commande_nbr_places_encadrant_parent +','; sql += ''+ req.session.cout_concertiste +','; sql += ''+ req.session.cout_spectateur +','; sql += ''+ parseInt(req.session.don) +','; if (req.session.montant_total > 0) { sql += '"attente",'; } else { sql += '"gratuit",'; } sql += ''+ req.session.montant_total; sql += ')'; logger.info("REQUETE SQL ca_ajout : " + sql , { numsession: req.session.id, label: filename}); const [results_insert_ca_adherent, fields_insert_ca_adherent] = await db_connection_promise.execute(sql); logger.info("ca_ajout Row ID added : " + results_insert_ca_adherent.insertId, { numsession: req.session.id, label: filename}); } } catch (error) { // Echec de connection à la BD logger.error("Il y a un problème avec la connection à la base de données! : " + 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; //await db_connection_promise.end(); affiche_page_admin(); } } logger.info("======================================"); logger.info("======== payer =========="); logger.info("======================================"); let sql11; let sql12; let sql13; let sql14; var mail_objet; var mail_html; moment.locale('fr'); var today = moment().format('L'); var identifiant; let compteur_piano = 0 let compteur_harpe = 0 let compteur_trompette = 0 let compteur_flute = 0 let compteur_alto = 0 let compteur_violon1 = 0 let compteur_violon2 = 0 let compteur_violoncelle1 = 0 let compteur_violoncelle2 = 0 // FONCTION POUR AFFICHER LA PAGE EN CAS D'ERREUR function affiche_page_admin() { //////////////////////////////////////////////////// // AFFIHER LA PAGE /identifier // AFFICHAGE DES ERREURS // EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR : // - SI IDENTIFIANT NON ADHÉRENT // - SI RIEN SAISIE //////////////////////////////////////////////////// if (req.session.err_mail_form_adhesion_1) { res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1; res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2; res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3; // on supprime le contenu après affichage req.session.err_mail_form_adhesion_1 = undefined; req.session.err_mail_form_adhesion_2 = undefined; req.session.err_mail_form_adhesion_3 = undefined; } res.render('concert/page_templates/admin'); }; var customer_email = req.session.adherent_mail; var payment_status = "paye"; var amount_total = req.session.montant_total; identifiant = req.session.identifiant; try { //Connexion let db_connection_promise = await connect_DB_promise(); console.log("req.session.deja_inscrit_concert = ",req.session.deja_inscrit_concert); // SI MODE INSCRIPTION INITIALE if (req.session.deja_inscrit_concert == "non") { //Query sql = 'UPDATE '; sql += 'ca_adherent'; sql += ' SET '; sql += 'stripe_retour = "paiement manuel", '; sql += 'stripe_date = "' + now + '", '; sql += 'stripe_statut_paiement = "paye"'; sql += ' WHERE identifiant = "' + identifiant + '"'; console.log("SQL 123 = ", sql); const [results, fields] = await db_connection_promise.execute(sql); logger.info("Row ca_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename}); //ca_concertiste sql11 = 'SELECT saison, concertiste_nom, concertiste_prenom, concertiste_age, concertiste_intrument, concertiste_cahier, concertiste_piece, concertiste_prof_nom, concertiste_prof_mail, ajout FROM ca_concertiste where identifiant = "' + identifiant + '"'; //ca_encadrant sql12 = 'SELECT saison, encadrant_type, encadrant_nom, encadrant_prenom, encadrant_telephone_mobile, encadrant_mail, encadrant__prof_instrument, ajout FROM ca_encadrant where identifiant = "' + identifiant + '"'; //Nombre de place commandées sql13 = 'SELECT commande_nb_spectateur, commande_nb_concertiste, commande_nb_encadr_prof, commande_nb_encadr_par, commande_cout_concertiste, commande_cout_spectateur, don, montant_total, stripe_retour FROM ca_adherent where identifiant = "' + identifiant + '"'; //ca_adherent sql14 = 'SELECT saison, date_inscription, date_maj, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail, hebergement_ville, hebergement_places, comment FROM ca_adherent where identifiant = "' + identifiant + '"'; } // SI MODE INSCRIPTION AJOUT DE BILLET // ON SÉLECTIONNE LES CONCERTISTES ET LES ENCADRANTS QUI ONT QUELQUE CHOSE DANS LA CHAMP "AJOUT" if (req.session.deja_inscrit_concert == "oui") { //Query sql = 'UPDATE '; sql += 'ca_ajout'; sql += ' SET '; sql += 'stripe_statut_paiement = "paye"'; sql += ' WHERE identifiant = "' + identifiant + '"'; const [results, fields] = await db_connection_promise.execute(sql); logger.info("Row ca_adherent UPDATE STRIPE: " + results.changedRows, { numsession: req.session.id, label: filename}); //ca_concertiste sql11 = 'SELECT saison, concertiste_nom, concertiste_prenom, concertiste_age, concertiste_intrument, concertiste_cahier, concertiste_piece, concertiste_prof_nom, concertiste_prof_mail, ajout FROM ca_concertiste where identifiant = "' + identifiant + '" AND ajout IS NOT NULL'; //ca_encadrant sql12 = 'SELECT saison, encadrant_type, encadrant_nom, encadrant_prenom, encadrant_telephone_mobile, encadrant_mail, encadrant__prof_instrument, ajout FROM ca_encadrant where identifiant = "' + identifiant + '" AND ajout IS NOT NULL'; //Nombre de place commandées sql13 = 'SELECT commande_nb_spectateur, commande_nb_concertiste, commande_nb_encadr_prof, commande_nb_encadr_par, commande_cout_concertiste, commande_cout_spectateur, don, montant_total, stripe_retour FROM ca_ajout where identifiant = "' + identifiant + '"'; //ca_adherent sql14 = 'SELECT saison, date_inscription, date_maj, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail FROM ca_adherent where identifiant = "' + identifiant + '"'; } //ca_concertiste const [results_ca_concertiste, fields_ca_concertiste] = await db_connection_promise.execute(sql11); logger.info("Row ca_concertiste RECUP INFOS : " + results_ca_concertiste.length, { numsession: req.session.id, label: filename}); //ca_encadrant const [results_ca_encadrant, fields_ca_encadrant] = await db_connection_promise.execute(sql12); logger.info("Row ca_encadrant RECUP INFOS : " + results_ca_encadrant.length, { numsession: req.session.id, label: filename}); //Nombre de place commandées const [results_nb_commande, fields_nb_commande] = await db_connection_promise.execute(sql13); logger.info("Row results_nb_commande RECUP INFOS : " + results_nb_commande.length, { numsession: req.session.id, label: filename}); // RÉCUPÉRATION DES INFORMATIONS PARTICIPANTS POUR ENVOIE MAIL AVEC RÉCAP //ca_adherent const [results_ca_adherent, fields_ca_adherent] = await db_connection_promise.execute(sql14); logger.info("Row ca_adherent RECUP INFOS: " + results_ca_adherent.length, { numsession: req.session.id, label: filename}); // ADRESSE ADHÉRENT adherent sql = 'SELECT adherent_adresse_rue, adherent_adresse_codepostal, adherent_adresse_ville FROM adherent where identifiant = "' + identifiant + '"'; const [results_adherent, fields_adherent] = await db_connection_promise.execute(sql); logger.info("Row adherent RECUP INFOS: " + results_adherent.length, { numsession: req.session.id, label: filename}); // AJOUT DÉCOMPTE DES PLACES // SI PAIEMENT REUSSI // !!! Au démarrage de la campagne les champs de la table doivent être à 0 (zéro) et non vide ou null sql = 'UPDATE '; sql += 'ca_decompte_place'; sql += ' SET '; sql += 'date_maj = "' + now + '", '; if (results_nb_commande[0].commande_nb_spectateur > 0) { sql += 'spectateur_commandes = spectateur_commandes + ' + results_nb_commande[0].commande_nb_spectateur + ', '; } if (results_nb_commande[0].commande_nb_concertiste > 0) { sql += 'concertiste_commandes = concertiste_commandes + ' + results_nb_commande[0].commande_nb_concertiste + ', '; } if (results_nb_commande[0].commande_nb_encadr_prof > 0) { sql += 'encadr_prof_commandes = encadr_prof_commandes + ' + results_nb_commande[0].commande_nb_encadr_prof + ', '; } if (results_nb_commande[0].commande_nb_encadr_par > 0) { sql += 'encadr_parent_commandes = encadr_parent_commandes + ' + results_nb_commande[0].commande_nb_encadr_par + ', '; } logger.info("A3 VANT LE IF results_ca_concertiste.length: ", { numsession: req.session.id, label: filename}); logger.info("results_ca_concertiste.length: " + results_ca_concertiste.length, { numsession: req.session.id, label: filename}); if (results_ca_concertiste.length > 0) { for (let i = 0; i 0) { mail_html += "

Nous vous remercions chaleureusement pour votre don. Votre justificatif est joint à ce mail.

"; } mail_html += "
"; mail_html += '

RÉCAPITULATIF

'; mail_html += "

Identifiant Suzuki : " + identifiant; if (results_ca_adherent[0].hebergement_places > 0) {mail_html += "


HÉBERGEMENT PROPOSÉ :
Ville : " + results_ca_adherent[0].hebergement_ville + ", nombre de personnes : " + results_ca_adherent[0].hebergement_places + "


";} if (results_ca_concertiste.length > 0) { mail_html += "

" + results_ca_concertiste.length + " CONCERTISTE(S) :

"; mail_html += "

Les concertistes s'engagent à être présents les 2 journées du 20 et 21 avril 2024.

"; for (let i = 0; i"; mail_html += "instrument : " + results_ca_concertiste[i].concertiste_intrument + " - " + results_ca_concertiste[i].concertiste_cahier + " - " + results_ca_concertiste[i].concertiste_piece + "
"; if (results_ca_concertiste[i].concertiste_intrument == "Piano") {mail_html += "Pour le piano l’inscription doit être validée par le comité.
"}; mail_html += "professeur : " + results_ca_concertiste[i].concertiste_prof_nom + " - " + results_ca_concertiste[i].concertiste_prof_mail + "

"; } } if (results_ca_encadrant.length > 0) { mail_html += "

" + results_ca_encadrant.length + " ENCADRANT(S) :

"; mail_html += "

Les encadrants s'engagent à être présents les 2 journées du 20 et 21 avril 2024.

"; for (let i = 0; i"; mail_html += "coordonnées : " + results_ca_encadrant[i].encadrant_telephone_mobile + " - " + results_ca_encadrant[i].encadrant_mail + "
"; if (results_ca_encadrant[i].encadrant__prof_instrument) {mail_html += "instrument : " + results_ca_encadrant[i].encadrant__prof_instrument}; mail_html += "

"; } } if (results_nb_commande[0].commande_nb_spectateur > 0) { mail_html += "

" + results_nb_commande[0].commande_nb_spectateur + " SPECTATEUR(S) RÉSERVÉ(S) :
" mail_html += "Les billets spectateurs sont valables pour la date du 21 avril 2024.

"; } mail_html += "

TARIFS :
"; if (results_ca_concertiste.length > 0) {mail_html += "- concertiste(s) : " + results_nb_commande[0].commande_cout_concertiste + "€
"}; if (results_nb_commande[0].commande_nb_spectateur > 0) {mail_html += "- spectateur(s) : " + results_nb_commande[0].commande_cout_spectateur + "€"}; if (results_nb_commande[0].don > 0) {mail_html += "

- Votre don : " + results_nb_commande[0].don + "€"}; mail_html += "

Montant total : " + results_nb_commande[0].montant_total + "€"; mail_html += '

Association Française pour la pédagogie Suzuki
Marie Rossot - Pôle organisation du Concert national Unesco 2024

Logo

'; // ajout du logo let dossier_image = path.resolve(__dirname, "../../public/images/logos/")+"/logosuzukigris.png"; if (results_nb_commande[0].don > 0) { ////////////////////////////////////////////////////////////////////////////// // ADOBE PDF : JUSTIFICATIF DE DON // VARIABLES POUR LE PDF let OUTPUT; let INPUT; let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss"); var adresse = results_adherent[0].adherent_adresse_rue; adresse += " "; adresse += results_adherent[0].adherent_adresse_codepostal; adresse += " "; adresse += results_adherent[0].adherent_adresse_ville; OUTPUT = path.resolve(__dirname, "../../pdf/concert_annuel/don/2425/")+"/"+identifiant+"_don_"+now_pdf+".pdf"; INPUT = path.resolve(__dirname, "../../pdf/template/don_justificatif.docx"); JSON_INPUT = { "date": today, "identifiant": identifiant, "mode_paiement": "carte bancaire", "adherent_nom": results_ca_adherent[0].adherent_nom, "adherent_prenom": results_ca_adherent[0].adherent_prenom, "adresse": adresse, "adherent_paiement_montant_don": results_nb_commande[0].don }; await pdf.pdfgo(OUTPUT, INPUT, JSON_INPUT); // VARIABLE POUR LE MAIL var attachment_name = identifiant + "_don_" + now_pdf + ".pdf"; var mailOptions = { from: 'afps.inscription@gmail.com', to: customer_email, subject: mail_objet, html: mail_html, attachments: [ { filename: 'logosuzukigris.png', path: dossier_image, cid: 'logo' }, { filename: attachment_name, path: OUTPUT }, ] }; } else { // SANS JUSTIFICATIF DE DON // VARIABLE POUR LE MAIL var mailOptions = { from: 'afps.inscription@gmail.com', to: customer_email, subject: mail_objet, html: mail_html, attachments: [{ filename: 'logosuzukigris.png', path: dossier_image, cid: 'logo' }] }; } envoie_mail.envoie_mail(mailOptions); ///////////////////////////////////// // ENVOI MAIL AU PROF SI PAIEMENT REUSSI & SI CONCERTISTES if(results_ca_concertiste.length > 0) { logger.info("ENVOIE MAILS AU PROF", { numsession: req.session.id, label: filename}); for (let i = 0; i'; mail_html += 'Nom de l\'élève : ' + results_ca_concertiste[i].concertiste_nom + ' ' + results_ca_concertiste[i].concertiste_prenom + '
'; mail_html += 'Âge de l\'élève : ' + results_ca_concertiste[i].concertiste_age + '
'; mail_html += 'Instrument de l\'élève : ' + results_ca_concertiste[i].concertiste_intrument + '
'; mail_html += 'Niveau (cahier) : ' + results_ca_concertiste[i].concertiste_cahier + '
'; mail_html += 'Pièce : ' + results_ca_concertiste[i].concertiste_piece + '

'; mail_html += "

Association Française pour la Pédagogie Suzuki
Marie Rossot - Pôle organisation du Concert national Unesco 2024

Logo"; var mailOptions = { from: 'afps.inscription@gmail.com', to: results_ca_concertiste[i].concertiste_prof_mail, subject: mail_objet, html: mail_html, attachments: [{ filename: 'logosuzukigris.png', path: dossier_image, cid: 'logo' }] }; envoie_mail.envoie_mail(mailOptions); } } ///////////////////////////////////// // ENVOI BILLETS VERS WEEZEVENT ///////////////////////////////////// if((results_ca_concertiste.length > 0 || results_ca_encadrant.length > 0 || results_nb_commande[0].commande_nb_spectateur > 0)) { logger.info("ENVOIE BILLET WEEZEVENT", { numsession: req.session.id, label: filename}); // WEEZEVENT test compte de Julie // EVENT // id: 1012995, name: 'ADUZUKI UNESCO Concertistes Encadrants', // id: 1013004, name: 'ADUZUKI UNESCO Spectateur', // id: 1042983, name: 'ADUZUKI UNESCO Encadrants', // id billet: '3742964', name: 'Spectateur', // id billet : '3863469', name: 'Concertiste' // id billet: '3863496', name: 'Encadrant professeur', // id billet: '3863495', name: 'Encadrant parent', // WEEZEVENT Compte AFPS // EVENT // id: 1043198 ADUZUKI UNESCO Encadrants // id: 1043199 ADUZUKI UNESCO Élèves musiciens // id: 1043050 ADUZUKI UNESCO Spectateur // id billet: '3874933', name: 'Spectateur', // id billet : '3875316', name: 'Élève musicien' // id billet: '3875315', name: 'Encadrant professeur', // id billet: '3875313', name: 'Encadrant parent', let weez_id_evenement_concertiste = process.env.weezevent_id_event_concertiste; let weez_id_evenement_encadrant = process.env.weezevent_id_event_encacrant; let weez_id_evenement_spectateur = process.env.weezevent_id_event_spect; let weez_id_billet_concertiste = process.env.weez_id_billet_concertiste; let weez_id_billet_spectateur = process.env.weez_id_billet_spectateur; let weez_id_billet_encadrant_parent = process.env.weez_id_billet_encadrant_parent; let weez_id_billet_encadrant_prof = process.env.weez_id_billet_encadrant_prof; //let weez_id_evenement_concertiste = "1043199"; //let weez_id_evenement_encadrant = "1043198"; //let weez_id_evenement_spectateur = "1043050"; // // //let weez_id_billet_concertiste = "3875316"; //let weez_id_billet_spectateur = "3874933"; //let weez_id_billet_encadrant_parent = "3875313"; //let weez_id_billet_encadrant_prof = "3875315"; let weez_id_billet; let weez_email = customer_email; //let weez_nom = results_ca_adherent[0].adherent_nom; let participants = { "participants": [], "return_ticket_url": true }; let weez_prenom; let TICKETING_API_BASE_URL = "https://api.weezevent.com/v3/participants?"; let url = TICKETING_API_BASE_URL; body = '&api_key=' + process.env.weezevent_API_KEY; body += '&access_token=' + process.env.weezevent_TOKEN; async function envoi_weez_api(url,body) { logger.info("url = " + url , { numsession: req.session.id, label: filename}); logger.info("body = " + body , { numsession: req.session.id, label: filename}); let headers = {'content-type':'application/x-www-form-urlencoded;charset=utf-8'}; let premise_post_token = await fetch(url, { method: 'POST', headers: headers, body: body }); let response_post_token = await premise_post_token.json(); console.log("response_post_token = ", response_post_token); logger.info("response_post_token = " + response_post_token , { numsession: req.session.id, label: filename}); } // LISTING DES PARTICIPANTS // BILLETS SPECTATEUR if (results_nb_commande[0].commande_nb_spectateur > 0) { logger.info("results_nb_commande[0].commande_nb_spectateur = " + results_nb_commande[0].commande_nb_spectateur , { numsession: req.session.id, label: filename}); for (let i = 0; i 0) { logger.info("results_ca_encadrant.length = " + results_ca_encadrant.length , { numsession: req.session.id, label: filename}); for (let i = 0; i 0) { logger.info("results_ca_concertiste.length = " + results_ca_concertiste.length , { numsession: req.session.id, label: filename}); for (let i = 0; i 0){ const ajout_gs_hebergements = await GS_concert_hebergements.addRows ( [ { saison: results_ca_adherent[0].saison, identifiant: identifiant, hebergement_ville: results_ca_adherent[0].hebergement_ville, hebergement_places: results_ca_adherent[0].hebergement_places, date_maj_gsheet: now } ] ); } if (results_nb_commande[0].commande_nb_spectateur > 0){ const ajout_gs_spectateurs = await GS_concert_spectateurs.addRows ( [ { saison: results_ca_adherent[0].saison, identifiant: identifiant, commande_nb_spectateur: results_nb_commande[0].commande_nb_spectateur, date_maj_gsheet: now } ] ); } if (results_ca_concertiste.length > 0) { let ajout_gs_concertistes = []; for (let i = 0; i < results_ca_concertiste.length; i++) { ajout_gs_concertistes.push({ saison: results_ca_concertiste[i].saison, identifiant: identifiant, concertiste_nom: results_ca_concertiste[i].concertiste_nom, concertiste_prenom: results_ca_concertiste[i].concertiste_prenom, adherent_telephone_mobile: "'" + results_ca_adherent[0].adherent_telephone_mobile, adherent_mail: results_ca_adherent[0].adherent_mail, concertiste_age: results_ca_concertiste[i].concertiste_age, concertiste_intrument: results_ca_concertiste[i].concertiste_intrument, concertiste_cahier: results_ca_concertiste[i].concertiste_cahier, concertiste_piece: results_ca_concertiste[i].concertiste_piece, concertiste_prof_nom: results_ca_concertiste[i].concertiste_prof_nom, concertiste_prof_mail: results_ca_concertiste[i].concertiste_prof_mail, date_maj_gsheet: now }); } await GS_concert_concertistes.addRows (ajout_gs_concertistes); } if (results_ca_encadrant.length > 0) { let ajout_gs_encadrants = []; for (let i = 0; i