4957 lines
260 KiB
JavaScript
4957 lines
260 KiB
JavaScript
/////////////////////////////////////////////////
|
||
// LOGGING
|
||
/////////////////////////////////////////////////
|
||
const logger = require("../public/js/app/logger_adhesion");
|
||
|
||
/////////////////////////////////////////////////
|
||
// APPELS DES MODULES
|
||
/////////////////////////////////////////////////
|
||
const moment = require('moment');
|
||
const ejs = require('ejs');
|
||
const nodemailer = require('nodemailer');
|
||
const path = require("path");
|
||
const stripe = require('stripe')(process.env.STRIPE_PRIVATE_KEY);
|
||
const pdf = require("pdf-creator-node");
|
||
const fs = require("fs");
|
||
const mysql = require('mysql2');
|
||
const mysql_promise = require('mysql2/promise');
|
||
// ADOBE PDF
|
||
const PDFServicesSdk = require('@adobe/pdfservices-node-sdk');
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// APPELS DES FONCTIONS
|
||
/////////////////////////////////////////////////
|
||
// Déterminer les profils de l'adhésion
|
||
const carte_adherent = require("./../modules/adhesion/carte_adherent");
|
||
// FAIRE UNE PAUSE
|
||
const sleep = require("./../modules/sleep");
|
||
|
||
////////////////////////////////////////////////////
|
||
// FILE NAME
|
||
////////////////////////////////////////////////////
|
||
const filename = path.parse(__filename).base;
|
||
|
||
/////////////////////////////////////////////////
|
||
// GOOGLE SHEET PARAMETERS
|
||
/////////////////////////////////////////////////
|
||
const { GoogleSpreadsheet } = require('google-spreadsheet');
|
||
const GS_creds = require('../inscriptionsafps-53b60452f63d.json');
|
||
const { error } = require("console");
|
||
// Initialize the sheet - doc ID is the long id in the sheets URL
|
||
const GS_adhesion = new GoogleSpreadsheet(process.env.gsheet_adhesion);
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// VARIABLES GLOBALES
|
||
/////////////////////////////////////////////////
|
||
let adherent_type, profil1, profil2, profil3;
|
||
|
||
/////////////////////////////////////////////////
|
||
// SAISIE DU MAIL
|
||
// VÉRIFIER SI DÉJÀ INSCRIT DANS DB
|
||
/////////////////////////////////////////////////
|
||
const checkMail = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION checkMail (adhesion) ==========");
|
||
logger.info("======================================");
|
||
logger.info("req.body.identifiant = " + req.body.identifiant, { numsession: req.session.id });
|
||
logger.info("req.session.id = " + req.session.id, { numsession: req.session.id });
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION DB PROMISE
|
||
////////////////////////////////////////////////////
|
||
|
||
// on doit faire le "await mysql_promise.createConnection" ici car c'est un promise et seul le résultat du promise amène la connection
|
||
// on est donc obligé de le faire au moment où l'on a besoin de la connection et avec un await.
|
||
// on essaie de se connecter à la BD (try)
|
||
|
||
try {
|
||
const 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
|
||
});
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
|
||
// Vérification dans la base de données si l'identifiant ne serait pas déjà inscrit
|
||
|
||
// ON RÉCUPÈRE LE MAIL (IDENTIFIANT) SAISIE DANS LE FORMULAIRE
|
||
req.session.identifiant = req.body.identifiant;
|
||
|
||
// Query table adherent
|
||
let sql = 'SELECT identifiant FROM adherent WHERE identifiant = "' + req.session.identifiant + '" AND saison = "2025/2026"';
|
||
logger.info("SQL = " + sql, { numsession: req.session.id });
|
||
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
logger.info("Nombre de lignes trouvées avec cet identifiant = " + results.length, { numsession: req.session.id, label: filename});
|
||
|
||
if (results.length < 1) {
|
||
// adhérent non inscrit
|
||
logger.info("identifiant non inscrit, on va procéder à son inscription", { numsession: req.session.id, label: filename});
|
||
logger.info("Etat case à coché : " + req.body.check_prof, { numsession: req.session.id });
|
||
|
||
// Prof coché ?
|
||
if (req.body.check_prof) {
|
||
// Prof coché : on va vers inscription prof
|
||
logger.info("CASE A COCHÉ PROF : coché", { numsession: req.session.id });
|
||
await db_connection_promise.end();
|
||
return res.redirect('/adhesion/adhesion_prof');
|
||
} else {
|
||
// prof non coché : on va vers inscription famille
|
||
logger.info("CASE A COCHÉ PROF : NON coché", { numsession: req.session.id });
|
||
await db_connection_promise.end();
|
||
return res.redirect('/adhesion/adhesion_famille');
|
||
}
|
||
} else {
|
||
// adhérent dajà inscrit
|
||
// affichage message erreur
|
||
logger.info("identifiant déjà inscrit", { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "Cette adresse Email est déjà inscrite pour les adhésions 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
return res.redirect('/adhesion');
|
||
}
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
logger.error("Il y a un problème avec la requête select identifiant from adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
return res.redirect('/adhesion');
|
||
}
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
return res.redirect('/adhesion');
|
||
}
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// ENREGISTREMENT DES INFOS
|
||
// DÉTERMINER LE TYPE D'adhérent
|
||
// CALCUL DU PRIX
|
||
/////////////////////////////////////////////////
|
||
const post_form_adhesion = async function(req, res){
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_form_adhesion (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
// Controle que l'identifiant ne soit pas vide (en cas de rafraîchissement de la page)
|
||
logger.info("req.session.identifiant = " + req.session.identifiant, { numsession: req.session.id });
|
||
|
||
if (req.session.identifiant){
|
||
|
||
/////////////////////////////////////////////////
|
||
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DE LA SESSION EN COURS
|
||
|
||
// INFOS GÉNÉRALES ADHÉRENT
|
||
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;
|
||
|
||
// INFOS PROF
|
||
req.session.adherent_prof_instrument1 = req.body.adherent_prof_instrument1;
|
||
req.session.adherent_prof_instrument1_esa = req.body.adherent_prof_instrument1_esa;
|
||
req.session.adherent_prof_instrument2 = req.body.adherent_prof_instrument2;
|
||
req.session.adherent_prof_instrument2_esa = req.body.adherent_prof_instrument2_esa;
|
||
req.session.adherent_prof_sece = req.body.adherent_prof_sece;
|
||
req.session.adherent_prof_ecole1 = req.body.adherent_prof_ecole1;
|
||
req.session.adherent_prof_ecole1_adresse = req.body.adherent_prof_ecole1_adresse;
|
||
req.session.adherent_prof_ecole1_cp = req.body.adherent_prof_ecole1_cp;
|
||
req.session.adherent_prof_ecole1_ville = req.body.adherent_prof_ecole1_ville;
|
||
req.session.adherent_prof_ecole1_region = req.body.adherent_prof_ecole1_region;
|
||
req.session.adherent_prof_ecole1_mail = req.body.adherent_prof_ecole1_mail;
|
||
req.session.adherent_prof_ecole1_web = req.body.adherent_prof_ecole1_web;
|
||
req.session.adherent_prof_ecole2 = req.body.adherent_prof_ecole2;
|
||
req.session.adherent_prof_ecole2_adresse = req.body.adherent_prof_ecole2_adresse;
|
||
req.session.adherent_prof_ecole2_cp = req.body.adherent_prof_ecole2_cp;
|
||
req.session.adherent_prof_ecole2_ville = req.body.adherent_prof_ecole2_ville;
|
||
req.session.adherent_prof_ecole2_region = req.body.adherent_prof_ecole2_region;
|
||
req.session.adherent_prof_ecole2_mail = req.body.adherent_prof_ecole2_mail;
|
||
req.session.adherent_prof_ecole2_web = req.body.adherent_prof_ecole2_web;
|
||
req.session.adherent_prof_ecole3 = req.body.adherent_prof_ecole3;
|
||
req.session.adherent_prof_ecole3_adresse = req.body.adherent_prof_ecole3_adresse;
|
||
req.session.adherent_prof_ecole3_cp = req.body.adherent_prof_ecole3_cp;
|
||
req.session.adherent_prof_ecole3_ville = req.body.adherent_prof_ecole3_ville;
|
||
req.session.adherent_prof_ecole3_region = req.body.adherent_prof_ecole3_region;
|
||
req.session.adherent_prof_ecole3_mail = req.body.adherent_prof_ecole3_mail;
|
||
req.session.adherent_prof_ecole3_web = req.body.adherent_prof_ecole3_web;
|
||
|
||
// INFOS FORMATION DU PROF
|
||
req.session.adherent_prof_stagiaire_instrument1 = req.body.adherent_prof_stagiaire_instrument1;
|
||
req.session.adherent_prof_stagiaire_instrument1_esa = req.body.adherent_prof_stagiaire_instrument1_esa;
|
||
req.session.adherent_prof_stagiaire_instrument1_prof = req.body.adherent_prof_stagiaire_instrument1_prof
|
||
req.session.adherent_prof_stagiaire_instrument2 = req.body.adherent_prof_stagiaire_instrument2;
|
||
req.session.adherent_prof_stagiaire_instrument2_esa = req.body.adherent_prof_stagiaire_instrument2_esa;
|
||
req.session.adherent_prof_stagiaire_instrument2_prof = req.body.adherent_prof_stagiaire_instrument2_prof
|
||
|
||
// INFO ÉLÈVES
|
||
for (let i=1; i<6; i++) {
|
||
req.session["eleve_"+i+"_nom"] = req.body["eleve_"+i+"_nom"];
|
||
req.session["eleve_"+i+"_prenom"] = req.body["eleve_"+i+"_prenom"];
|
||
moment.locale('fr');
|
||
if (req.body["eleve_"+i+"_datenaissance"]) {req.session["eleve_"+i+"_datenaissance"] = moment(req.body["eleve_"+i+"_datenaissance"]).format('L')};
|
||
req.session["eleve_"+i+"_instrumentA"] = req.body["eleve_"+i+"_instrumentA"];
|
||
req.session["eleve_"+i+"_instrumentA_cahier"] = req.body["eleve_"+i+"_instrumentA_cahier"];
|
||
req.session["eleve_"+i+"_instrumentA_prof"] = req.body["eleve_"+i+"_instrumentA_prof"];
|
||
req.session["eleve_"+i+"_instrumentB"] = req.body["eleve_"+i+"_instrumentB"];
|
||
req.session["eleve_"+i+"_instrumentB_cahier"] = req.body["eleve_"+i+"_instrumentB_cahier"];
|
||
req.session["eleve_"+i+"_instrumentB_prof"] = req.body["eleve_"+i+"_instrumentB_prof"];
|
||
req.session["eleve_"+i+"_droitimage"] = req.body["eleve_"+i+"_droitimage"];
|
||
req.session["eleve_"+i+"_contactsup_nom"] = req.body["eleve_"+i+"_contactsup_nom"];
|
||
req.session["eleve_"+i+"_contactsup_prenom"] = req.body["eleve_"+i+"_contactsup_prenom"];
|
||
req.session["eleve_"+i+"_contactsup_mail"] = req.body["eleve_"+i+"_contactsup_mail"];
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// DÉTERMINER LE TYPE D'ADHÉRENT
|
||
logger.info("// DÉTERMINER LE TYPE D'ADHÉRENT");
|
||
logger.info("req.session.adherent_type = " + req.session.adherent_type, { numsession: req.session.id });
|
||
|
||
// req.session.adherent_type est inscrit dans adhesionRouter.js
|
||
if (req.session.adherent_type === "famille") {
|
||
adherent_type = "famille";
|
||
} else if (req.session.adherent_type === "observateur") {
|
||
adherent_type = "observateur";
|
||
logger.info("adherent_type in if observateur = " + adherent_type, { numsession: req.session.id });
|
||
} else {
|
||
// req.session.adherent_type n'est pas inscrit dans adhesionRouter.js
|
||
if (req.session.adherent_prof_instrument1 && !req.session.adherent_prof_stagiaire_instrument1 && !req.session.eleve_1_nom) {
|
||
adherent_type = "professeur";
|
||
}
|
||
|
||
if (req.session.adherent_prof_instrument1 && !req.session.adherent_prof_stagiaire_instrument1 && req.session.eleve_1_nom) {
|
||
adherent_type = "prof_famille";
|
||
}
|
||
|
||
if (req.session.adherent_prof_stagiaire_instrument1 && req.session.adherent_prof_stagiaire_instrument1 && !req.session.eleve_1_nom) {
|
||
adherent_type = "prof_stagiaire";
|
||
}
|
||
|
||
if (req.session.adherent_prof_stagiaire_instrument1 && req.session.adherent_prof_stagiaire_instrument1 && req.session.eleve_1_nom) {
|
||
adherent_type = "prof_stagiaire_famille";
|
||
}
|
||
|
||
if (!req.session.adherent_prof_instrument1 && req.session.adherent_prof_stagiaire_instrument1_esa == 'Niveau 1' && !req.session.adherent_prof_stagiaire_instrument2 && !req.session.eleve_1_nom) {
|
||
adherent_type = "prof_stagiaire1";
|
||
}
|
||
|
||
if (!req.session.adherent_prof_instrument1 && req.session.adherent_prof_stagiaire_instrument1_esa == 'Niveau 1' && !req.session.adherent_prof_stagiaire_instrument2 && req.session.eleve_1_nom) {
|
||
adherent_type = "prof_stagiaire1_famille";
|
||
}
|
||
}
|
||
// req.session.adherent_type n'a pas pu être déterminé
|
||
if (!adherent_type) {
|
||
adherent_type = "non déterminé";
|
||
}
|
||
req.session.adherent_type = adherent_type;
|
||
logger.info("adherent_type : " + adherent_type, { numsession: req.session.id });
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
|
||
/////////////////////////////////////////////////
|
||
// CALCUL DU PRIX
|
||
|
||
if (adherent_type == "professeur" || adherent_type == "prof_famille" || adherent_type == "prof_stagiaire" || adherent_type == "prof_stagiaire_famille") {
|
||
adherent_paiement_montant_adhesion = 42;
|
||
};
|
||
if (adherent_type == "prof_stagiaire1" || adherent_type == "prof_stagiaire1_famille") {
|
||
adherent_paiement_montant_adhesion = 22;
|
||
};
|
||
if (adherent_type == "famille") {
|
||
adherent_paiement_montant_adhesion = 22;
|
||
};
|
||
if (adherent_type == "observateur") {
|
||
adherent_paiement_montant_adhesion = 22;
|
||
};
|
||
if (adherent_type == "non déterminé" || adherent_type == "") {
|
||
adherent_paiement_montant_adhesion = 0;
|
||
};
|
||
logger.info("CALCUL DU PRIX : " + adherent_paiement_montant_adhesion, { numsession: req.session.id });
|
||
//passer la variable dans la session pour la récupérer
|
||
req.session.adherent_paiement_montant_adhesion = adherent_paiement_montant_adhesion;
|
||
|
||
|
||
|
||
// REDIRECTION VERS LA PAGE PAIEMENT
|
||
logger.info("REDIRECTION VERS LA PAGE PAIEMENT", { numsession: req.session.id });
|
||
return res.redirect('/adhesion/adhesion_paiement_total');
|
||
|
||
|
||
|
||
|
||
} else {
|
||
logger.info("Identifiant vide, retour page accueil", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La page a perdu les informations, veuillez les saisir de nouveau.";
|
||
return res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// AJOUR DU DON DANS LE MONTANT À PAYER
|
||
/////////////////////////////////////////////////
|
||
const post_form_montant_total = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_form_montant_total (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
// MONTANT TOTAL À PAYER
|
||
|
||
//let montant_adhesion = req.session.adherent_paiement_montant_adhesion;
|
||
req.session.adherent_paiement_montant_don = req.body.adherent_paiement_montant_don;
|
||
logger.info("req.body.adherent_paiement_montant_don: " + req.body.adherent_paiement_montant_don, { numsession: req.session.id });
|
||
logger.info("req.session.adherent_paiement_montant_adhesion: " + req.session.adherent_paiement_montant_adhesion, { numsession: req.session.id });
|
||
// parseInt pour rendre la variable en type interger et faire l'addition
|
||
let montant_adhesion = parseInt(req.session.adherent_paiement_montant_adhesion);
|
||
let montant_don = parseInt(req.session.adherent_paiement_montant_don);
|
||
let montant_apayer;
|
||
if (montant_don>0){
|
||
montant_apayer = montant_adhesion + montant_don;
|
||
logger.info("if (montant_don>0)", { numsession: req.session.id });
|
||
} else {
|
||
logger.info("montant_adhesion: " + montant_adhesion, { numsession: req.session.id });
|
||
montant_apayer = montant_adhesion;
|
||
logger.info("else (montant_don>0)", { numsession: req.session.id });
|
||
};
|
||
req.session.montant_apayer = montant_apayer;
|
||
logger.info("montant_apayer: " + montant_apayer, { numsession: req.session.id });
|
||
let montant_apayer_cent;
|
||
montant_apayer_cent = montant_apayer * 100;
|
||
req.session.montant_apayer_cent = montant_apayer_cent;
|
||
logger.info("montant_apayer_cent: " + montant_apayer_cent, { numsession: req.session.id });
|
||
res.redirect('/adhesion/adhesion_paiement_mode_paiement');
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// PAGE FINALE PAIEMENT PAR CHÈQUE
|
||
/////////////////////////////////////////////////
|
||
const post_paiement_cheque_save = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_paiement_cheque_save (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION ADOBE API
|
||
////////////////////////////////////////////////////
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(20000)
|
||
.withReadTimeout(40000)
|
||
.build();
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DANS LA SESSION EN COURS
|
||
req.session.adherent_paiement_cheque_banque = req.body.adherent_paiement_cheque_banque;
|
||
req.session.adherent_paiement_cheque_numero = req.body.adherent_paiement_cheque_numero;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
|
||
let profils = carte_adherent.profil(adherent_type);
|
||
let profil1 = profils[0];
|
||
let profil2 = profils[1];
|
||
let profil3 = profils[2];
|
||
req.session.profil1 = profil1;
|
||
req.session.profil2 = profil2;
|
||
req.session.profil3 = profil3;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES
|
||
|
||
// Vérifier que la session n'a pas expiré
|
||
if (req.session.identifiant) {
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// VÉRIFICATION DANS LA BD SI IDENTIFIANT DÉJÀ INSCRIT OU NON
|
||
let sql = 'select identifiant from adherent where identifiant = "' + req.session.identifiant + '" AND saison = "2025/2026"';
|
||
logger.info("REQUETE SQL SELECT identifiant from adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
console.log(results);
|
||
logger.info("Nombre de lignes trouvées avec cet identifiant = " + results.length, { numsession: req.session.id, label: filename});
|
||
if (results.length) {
|
||
// IDENTIFIANT DÉJA INSCRIT
|
||
// METTRE Â JOUR l'EXISTANT au cas où il ait modifié des informations
|
||
logger.info("// IDENTIFIANT DÉJA INSCRIT", { numsession: req.session.id, label: filename});
|
||
// affichage message erreur
|
||
logger.info("identifiant déjà inscrit", { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "Cette adresse Email est déjà inscrite pour les adhésions 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
|
||
} else {
|
||
// IDENTIFIANT NON TROUVÉ
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
logger.info("// NON TROUVÉ => AJOUTER UNE LIGNE DANS LA TABLE", { numsession: req.session.id, label: filename});
|
||
let sql2 = 'INSERT INTO ';
|
||
sql2 += 'adherent';
|
||
sql2 += ' (';
|
||
sql2 += 'date_maj, ';
|
||
sql2 += 'saison, ';
|
||
sql2 += 'identifiant, ';
|
||
sql2 += 'association_suzuki, ';
|
||
sql2 += 'adherent_type, ';
|
||
sql2 += 'adherent_nom, ';
|
||
sql2 += 'adherent_prenom, ';
|
||
sql2 += 'adherent_mail, ';
|
||
sql2 += 'adherent_adresse_rue, ';
|
||
sql2 += 'adherent_adresse_complement, ';
|
||
sql2 += 'adherent_adresse_codepostal, ';
|
||
sql2 += 'adherent_adresse_ville, ';
|
||
sql2 += 'adherent_adresse_pays, ';
|
||
sql2 += 'adherent_telephone_mobile, ';
|
||
sql2 += 'adherent_telephone_fixe, ';
|
||
sql2 += 'carte_envoi';
|
||
sql2 += ') VALUES (';
|
||
sql2 += '"'+ now +'",';
|
||
sql2 += '"2025/2026",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"AFPS",';
|
||
sql2 += '"'+ adherent_type +'",';
|
||
sql2 += '"'+ req.session.adherent_nom +'",';
|
||
sql2 += '"'+ req.session.adherent_prenom +'",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_rue +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_complement +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_codepostal +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_ville +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_pays +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_fixe +'", ';
|
||
sql2 += '"temporaire"';
|
||
sql2 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent : " + sql2 , { numsession: req.session.id, label: filename});
|
||
|
||
// AJOUTER L'ADHÉRENT DANS LA TABLE adherent
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
const [results, fields] = await db_connection_promise.execute(sql2);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
// AJOUTER LES ÉLÈVES DANS LA TABLE adherent_eleve
|
||
for (let i=1; i<6; i++) {
|
||
if (req.session["eleve_"+i+"_nom"]) {
|
||
let sql3 = 'INSERT INTO ';
|
||
sql3 += 'adherent_eleve';
|
||
sql3 += ' (';
|
||
sql3 += 'date_maj, ';
|
||
sql3 += 'saison, ';
|
||
sql3 += 'identifiant, ';
|
||
sql3 += 'association_suzuki, ';
|
||
sql3 += 'eleve_nom, ';
|
||
sql3 += 'eleve_prenom, ';
|
||
sql3 += 'adherent_mail, ';
|
||
sql3 += 'adherent_telephone_mobile, ';
|
||
sql3 += 'eleve_datenaissance, ';
|
||
sql3 += 'eleve_instrumentA, ';
|
||
sql3 += 'eleve_instrumentA_cahier, ';
|
||
sql3 += 'eleve_instrumentA_prof, ';
|
||
sql3 += 'eleve_instrumentB, ';
|
||
sql3 += 'eleve_instrumentB_cahier, ';
|
||
sql3 += 'eleve_instrumentB_prof, ';
|
||
sql3 += 'eleve_droitimage, ';
|
||
sql3 += 'eleve_contactsup_nom, ';
|
||
sql3 += 'eleve_contactsup_prenom, ';
|
||
sql3 += 'eleve_contactsup_mail';
|
||
sql3 += ') VALUES (';
|
||
sql3 += '"'+ now +'",';
|
||
sql3 += '"2025/2026",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"AFPS",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_prenom"] +'",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_datenaissance"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_cahier"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_cahier"] +'",';
|
||
if (req.session["eleve_"+i+"_instrumentB_prof"]==undefined){req.session["eleve_"+i+"_instrumentB_prof"]=""};
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_droitimage"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_prenom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_mail"] +'"';
|
||
sql3 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_eleve : " + sql3, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql3);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_eleve! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR DANS LA TABLE adherent_professeur
|
||
if (req.session.adherent_prof_instrument1) {
|
||
let sql4 = 'INSERT INTO ';
|
||
sql4 += 'adherent_professeur';
|
||
sql4 += ' (';
|
||
sql4 += 'date_maj, ';
|
||
sql4 += 'saison, ';
|
||
sql4 += 'identifiant, ';
|
||
sql4 += 'association_suzuki, ';
|
||
sql4 += 'adherent_nom, ';
|
||
sql4 += 'adherent_prenom, ';
|
||
sql4 += 'adherent_mail, ';
|
||
sql4 += 'adherent_telephone_mobile, ';
|
||
sql4 += 'adherent_prof_instrument1, ';
|
||
sql4 += 'adherent_prof_instrument1_esa, ';
|
||
sql4 += 'adherent_prof_instrument2, ';
|
||
sql4 += 'adherent_prof_instrument2_esa, ';
|
||
sql4 += 'adherent_prof_sece, ';
|
||
sql4 += 'adherent_prof_ecole1, ';
|
||
sql4 += 'adherent_prof_ecole1_mail, ';
|
||
sql4 += 'adherent_prof_ecole1_web, ';
|
||
sql4 += 'adherent_prof_ecole1_adresse, ';
|
||
sql4 += 'adherent_prof_ecole1_cp, ';
|
||
sql4 += 'adherent_prof_ecole1_ville, ';
|
||
sql4 += 'adherent_prof_ecole1_region, ';
|
||
sql4 += 'adherent_prof_ecole2, ';
|
||
sql4 += 'adherent_prof_ecole2_mail, ';
|
||
sql4 += 'adherent_prof_ecole2_web, ';
|
||
sql4 += 'adherent_prof_ecole2_adresse, ';
|
||
sql4 += 'adherent_prof_ecole2_cp, ';
|
||
sql4 += 'adherent_prof_ecole2_ville, ';
|
||
sql4 += 'adherent_prof_ecole2_region, ';
|
||
sql4 += 'adherent_prof_ecole3, ';
|
||
sql4 += 'adherent_prof_ecole3_mail, ';
|
||
sql4 += 'adherent_prof_ecole3_web, ';
|
||
sql4 += 'adherent_prof_ecole3_adresse, ';
|
||
sql4 += 'adherent_prof_ecole3_cp, ';
|
||
sql4 += 'adherent_prof_ecole3_ville, ';
|
||
sql4 += 'adherent_prof_ecole3_region';
|
||
sql4 += ') VALUES (';
|
||
sql4 += '"'+ now +'",';
|
||
sql4 += '"2025/2026",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"AFPS",';
|
||
sql4 += '"'+ req.session.adherent_nom +'",';
|
||
sql4 += '"'+ req.session.adherent_prenom +'",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_sece +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_region +'"';
|
||
sql4 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_professeur : " + sql4, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql4);
|
||
logger.info("PROFESSEUR Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_professeur! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR EN FORMATION DANS LA TABLE adherent_formation_prof
|
||
if (req.session.adherent_prof_stagiaire_instrument1) {
|
||
let sql5 = 'INSERT INTO ';
|
||
sql5 += 'adherent_formation_prof';
|
||
sql5 += ' (';
|
||
sql5 += 'date_maj, ';
|
||
sql5 += 'saison, ';
|
||
sql5 += 'identifiant, ';
|
||
sql5 += 'association_suzuki, ';
|
||
sql5 += 'adherent_nom, ';
|
||
sql5 += 'adherent_prenom, ';
|
||
sql5 += 'adherent_mail, ';
|
||
sql5 += 'adherent_telephone_mobile, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_prof, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_prof';
|
||
sql5 += ') VALUES (';
|
||
sql5 += '"'+ now +'",';
|
||
sql5 += '"2025/2026",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"AFPS",';
|
||
sql5 += '"'+ req.session.adherent_nom +'",';
|
||
sql5 += '"'+ req.session.adherent_prenom +'",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_esa +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_prof +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_esa +'",';
|
||
if (req.session.adherent_prof_stagiaire_instrument2_prof==undefined) {req.session.adherent_prof_stagiaire_instrument2_prof = ""};
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_prof +'"';
|
||
sql5 += ')';
|
||
logger.info("====== REQUETE SQL INSERT INTO adherent_formation_prof : ", { numsession: req.session.id, label: filename});
|
||
logger.info(sql5, { numsession: req.session.id, label: filename});
|
||
logger.info("=========================================================", { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql5);
|
||
logger.info("PROFESSEUR EN FORMATION Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_formation_prof! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête select identifiant from adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
let sql6 = 'INSERT INTO ';
|
||
sql6 += 'adherent_finance';
|
||
sql6 += ' (';
|
||
sql6 += 'date_maj, ';
|
||
sql6 += 'saison, ';
|
||
sql6 += 'identifiant, ';
|
||
sql6 += 'association_suzuki, ';
|
||
sql6 += 'adherent_type, ';
|
||
sql6 += 'adherent_nom, ';
|
||
sql6 += 'adherent_prenom, ';
|
||
sql6 += 'adherent_telephone_mobile, ';
|
||
sql6 += 'adherent_mail, ';
|
||
sql6 += 'montant_adhesion, ';
|
||
sql6 += 'montant_don, ';
|
||
sql6 += 'montant_total, ';
|
||
sql6 += 'paiement_mode, ';
|
||
sql6 += 'statut_paiement';
|
||
sql6 += ') VALUES (';
|
||
sql6 += '"'+ now +'",';
|
||
sql6 += '"2025/2026",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
sql6 += '"AFPS",';
|
||
sql6 += '"'+ adherent_type +'",';
|
||
sql6 += '"'+ req.session.adherent_nom +'",';
|
||
sql6 += '"'+ req.session.adherent_prenom +'",';
|
||
sql6 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
if (req.session.adherent_paiement_montant_adhesion == "" || req.session.adherent_paiement_montant_adhesion == "undefined" || !req.session.adherent_paiement_montant_adhesion) {req.session.adherent_paiement_montant_adhesion = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_adhesion +'",';
|
||
if (req.session.adherent_paiement_montant_don == "" || req.session.adherent_paiement_montant_don == "undefined" || !req.session.adherent_paiement_montant_don) {req.session.adherent_paiement_montant_don = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_don +'",';
|
||
if (req.session.montant_apayer == "" || req.session.montant_apayer == "undefined" || !req.session.montant_apayer) {req.session.montant_apayer = 0};
|
||
sql6 += '"'+ req.session.montant_apayer +'",';
|
||
sql6 += '"cheque",';
|
||
sql6 += '"attente"';
|
||
sql6 += ')';
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent_finance : " + sql6 , { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
const [results, fields] = await db_connection_promise.execute(sql6);
|
||
logger.info("adherent_finance Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
} else {
|
||
// les Infos de session ne sont plus dispo
|
||
logger.info("les Infos de session ne sont plus dispo! : ", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La session a expiré.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION TEMPORAIRE EN PDF
|
||
|
||
let OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/attente/")+"/"+req.session.identifiant+"_adhesion_2526_attente_"+now_pdf+".pdf";
|
||
let INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_temp.docx");
|
||
|
||
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = " "};
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": req.session.identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"montant": req.session.adherent_paiement_montant_adhesion
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT TEMPORAIRE PAR MAIL
|
||
|
||
logger.info("MAIL ENVOI AVANT", { numsession: req.session.id });
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = req.session.identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent_temporaire.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += req.session.identifiant;
|
||
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Dès que votre paiement sera validé, vous serez membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pourrez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle 2025/2026 temporaire.<p>Votre identifiant est ";
|
||
mail_html += req.session.identifiant;
|
||
mail_html += ".</p><p>Veuillez noter que votre adhésion ne sera effective qu'à la réception de votre règlement de ";
|
||
mail_html += req.session.adherent_paiement_montant_adhesion;
|
||
mail_html += " euros.<br>";
|
||
if (req.session.adherent_paiement_montant_don > 0) {
|
||
mail_html += "Nous vous remercions pour votre proposition de don de ";
|
||
mail_html += req.session.adherent_paiement_montant_don;
|
||
mail_html += " euros que vous pouvez ajouter à votre règlement.";
|
||
}
|
||
mail_html += "</p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}],
|
||
};
|
||
|
||
transporter.sendMail(mailOptions, function(error, info){
|
||
if (error) {
|
||
logger.info("error" + error, { numsession: req.session.id });
|
||
} else {
|
||
logger.info("Email envoyé: " + info.response, { numsession: req.session.id });
|
||
}
|
||
});
|
||
logger.info("MAIL ENVOI APRES", { numsession: req.session.id });
|
||
|
||
// REDIRECTION VERS LA PAGE DE CONFIRMATION PAIEMENT VIREMENT
|
||
res.locals.today = date_formattee;
|
||
res.redirect('/adhesion/adhesion_paiement/attente');
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// PAGE FINALE PAIEMENT PAR VIREMENT
|
||
/////////////////////////////////////////////////
|
||
const post_paiement_virement_save = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_paiement_virement_save (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION ADOBE API
|
||
////////////////////////////////////////////////////
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(20000)
|
||
.withReadTimeout(40000)
|
||
.build();
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
req.session.adherent_paiement_mode = "virement";
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
let profils = carte_adherent.profil(adherent_type);
|
||
let profil1 = profils[0];
|
||
let profil2 = profils[1];
|
||
let profil3 = profils[2];
|
||
|
||
req.session.profil1 = profil1;
|
||
req.session.profil2 = profil2;
|
||
req.session.profil3 = profil3;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES adherent_finance
|
||
|
||
// Vérifier que la session n'a pas expiré
|
||
if (req.session.identifiant) {
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
/////////////////////////////////////////////////
|
||
// VÉRIFICATION DANS LA BD SI IDENTIFIANT DÉJÀ INSCRIT OU NON
|
||
let sql = 'select identifiant from adherent where identifiant = "' + req.session.identifiant + '" AND saison = "2025/2026"';
|
||
logger.info("REQUETE SQL SELECT identifiant from adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
console.log(results);
|
||
logger.info("Nombre de lignes trouvées avec cet identifiant = " + results.length, { numsession: req.session.id, label: filename});
|
||
if (results.length) {
|
||
// IDENTIFIANT DÉJA INSCRIT
|
||
// METTRE Â JOUR l'EXISTANT au cas où il ait modifié des informations
|
||
logger.info("// IDENTIFIANT DÉJA INSCRIT", { numsession: req.session.id, label: filename});
|
||
// affichage message erreur
|
||
logger.info("identifiant déjà inscrit", { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "Cette adresse Email est déjà inscrite pour les adhésions 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
|
||
} else {
|
||
// IDENTIFIANT NON TROUVÉ
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
logger.info("// NON TROUVÉ => AJOUTER UNE LIGNE DANS LA TABLE", { numsession: req.session.id, label: filename});
|
||
let sql2 = 'INSERT INTO ';
|
||
sql2 += 'adherent';
|
||
sql2 += ' (';
|
||
sql2 += 'date_maj, ';
|
||
sql2 += 'saison, ';
|
||
sql2 += 'identifiant, ';
|
||
sql2 += 'association_suzuki, ';
|
||
sql2 += 'adherent_type, ';
|
||
sql2 += 'adherent_nom, ';
|
||
sql2 += 'adherent_prenom, ';
|
||
sql2 += 'adherent_mail, ';
|
||
sql2 += 'adherent_adresse_rue, ';
|
||
sql2 += 'adherent_adresse_complement, ';
|
||
sql2 += 'adherent_adresse_codepostal, ';
|
||
sql2 += 'adherent_adresse_ville, ';
|
||
sql2 += 'adherent_adresse_pays, ';
|
||
sql2 += 'adherent_telephone_mobile, ';
|
||
sql2 += 'adherent_telephone_fixe, ';
|
||
sql2 += 'carte_envoi';
|
||
sql2 += ') VALUES (';
|
||
sql2 += '"'+ now +'",';
|
||
sql2 += '"2025/2026",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"AFPS",';
|
||
sql2 += '"'+ adherent_type +'",';
|
||
sql2 += '"'+ req.session.adherent_nom +'",';
|
||
sql2 += '"'+ req.session.adherent_prenom +'",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_rue +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_complement +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_codepostal +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_ville +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_pays +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_fixe +'", ';
|
||
sql2 += '"temporaire"';
|
||
sql2 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent : " + sql2 , { numsession: req.session.id, label: filename});
|
||
|
||
// AJOUTER L'ADHÉRENT DANS LA TABLE adherent
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
const [results, fields] = await db_connection_promise.execute(sql2);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
// AJOUTER LES ÉLÈVES DANS LA TABLE adherent_eleve
|
||
for (let i=1; i<6; i++) {
|
||
if (req.session["eleve_"+i+"_nom"]) {
|
||
let sql3 = 'INSERT INTO ';
|
||
sql3 += 'adherent_eleve';
|
||
sql3 += ' (';
|
||
sql3 += 'date_maj, ';
|
||
sql3 += 'saison, ';
|
||
sql3 += 'identifiant, ';
|
||
sql3 += 'association_suzuki, ';
|
||
sql3 += 'eleve_nom, ';
|
||
sql3 += 'eleve_prenom, ';
|
||
sql3 += 'adherent_mail, ';
|
||
sql3 += 'adherent_telephone_mobile, ';
|
||
sql3 += 'eleve_datenaissance, ';
|
||
sql3 += 'eleve_instrumentA, ';
|
||
sql3 += 'eleve_instrumentA_cahier, ';
|
||
sql3 += 'eleve_instrumentA_prof, ';
|
||
sql3 += 'eleve_instrumentB, ';
|
||
sql3 += 'eleve_instrumentB_cahier, ';
|
||
sql3 += 'eleve_instrumentB_prof, ';
|
||
sql3 += 'eleve_droitimage, ';
|
||
sql3 += 'eleve_contactsup_nom, ';
|
||
sql3 += 'eleve_contactsup_prenom, ';
|
||
sql3 += 'eleve_contactsup_mail';
|
||
sql3 += ') VALUES (';
|
||
sql3 += '"'+ now +'",';
|
||
sql3 += '"2025/2026",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"AFPS",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_prenom"] +'",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_datenaissance"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_cahier"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_cahier"] +'",';
|
||
if (req.session["eleve_"+i+"_instrumentB_prof"]==undefined){req.session["eleve_"+i+"_instrumentB_prof"]=""};
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_droitimage"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_prenom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_mail"] +'"';
|
||
sql3 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_eleve : " + sql3, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql3);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_eleve! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR DANS LA TABLE adherent_professeur
|
||
if (req.session.adherent_prof_instrument1) {
|
||
let sql4 = 'INSERT INTO ';
|
||
sql4 += 'adherent_professeur';
|
||
sql4 += ' (';
|
||
sql4 += 'date_maj, ';
|
||
sql4 += 'saison, ';
|
||
sql4 += 'identifiant, ';
|
||
sql4 += 'association_suzuki, ';
|
||
sql4 += 'adherent_nom, ';
|
||
sql4 += 'adherent_prenom, ';
|
||
sql4 += 'adherent_mail, ';
|
||
sql4 += 'adherent_telephone_mobile, ';
|
||
sql4 += 'adherent_prof_instrument1, ';
|
||
sql4 += 'adherent_prof_instrument1_esa, ';
|
||
sql4 += 'adherent_prof_instrument2, ';
|
||
sql4 += 'adherent_prof_instrument2_esa, ';
|
||
sql4 += 'adherent_prof_sece, ';
|
||
sql4 += 'adherent_prof_ecole1, ';
|
||
sql4 += 'adherent_prof_ecole1_mail, ';
|
||
sql4 += 'adherent_prof_ecole1_web, ';
|
||
sql4 += 'adherent_prof_ecole1_adresse, ';
|
||
sql4 += 'adherent_prof_ecole1_cp, ';
|
||
sql4 += 'adherent_prof_ecole1_ville, ';
|
||
sql4 += 'adherent_prof_ecole1_region, ';
|
||
sql4 += 'adherent_prof_ecole2, ';
|
||
sql4 += 'adherent_prof_ecole2_mail, ';
|
||
sql4 += 'adherent_prof_ecole2_web, ';
|
||
sql4 += 'adherent_prof_ecole2_adresse, ';
|
||
sql4 += 'adherent_prof_ecole2_cp, ';
|
||
sql4 += 'adherent_prof_ecole2_ville, ';
|
||
sql4 += 'adherent_prof_ecole2_region, ';
|
||
sql4 += 'adherent_prof_ecole3, ';
|
||
sql4 += 'adherent_prof_ecole3_mail, ';
|
||
sql4 += 'adherent_prof_ecole3_web, ';
|
||
sql4 += 'adherent_prof_ecole3_adresse, ';
|
||
sql4 += 'adherent_prof_ecole3_cp, ';
|
||
sql4 += 'adherent_prof_ecole3_ville, ';
|
||
sql4 += 'adherent_prof_ecole3_region';
|
||
sql4 += ') VALUES (';
|
||
sql4 += '"'+ now +'",';
|
||
sql4 += '"2025/2026",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"AFPS",';
|
||
sql4 += '"'+ req.session.adherent_nom +'",';
|
||
sql4 += '"'+ req.session.adherent_prenom +'",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_sece +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_region +'"';
|
||
sql4 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_professeur : " + sql4, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql4);
|
||
logger.info("PROFESSEUR Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_professeur! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR EN FORMATION DANS LA TABLE adherent_formation_prof
|
||
if (req.session.adherent_prof_stagiaire_instrument1) {
|
||
let sql5 = 'INSERT INTO ';
|
||
sql5 += 'adherent_formation_prof';
|
||
sql5 += ' (';
|
||
sql5 += 'date_maj, ';
|
||
sql5 += 'saison, ';
|
||
sql5 += 'identifiant, ';
|
||
sql5 += 'association_suzuki, ';
|
||
sql5 += 'adherent_nom, ';
|
||
sql5 += 'adherent_prenom, ';
|
||
sql5 += 'adherent_mail, ';
|
||
sql5 += 'adherent_telephone_mobile, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_prof, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_prof';
|
||
sql5 += ') VALUES (';
|
||
sql5 += '"'+ now +'",';
|
||
sql5 += '"2025/2026",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"AFPS",';
|
||
sql5 += '"'+ req.session.adherent_nom +'",';
|
||
sql5 += '"'+ req.session.adherent_prenom +'",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_esa +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_prof +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_esa +'",';
|
||
if (req.session.adherent_prof_stagiaire_instrument2_prof==undefined) {req.session.adherent_prof_stagiaire_instrument2_prof = ""};
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_prof +'"';
|
||
sql5 += ')';
|
||
logger.info("====== REQUETE SQL INSERT INTO adherent_formation_prof : ", { numsession: req.session.id, label: filename});
|
||
logger.info(sql5, { numsession: req.session.id, label: filename});
|
||
logger.info("=========================================================", { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql5);
|
||
logger.info("PROFESSEUR EN FORMATION Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_formation_prof! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête select identifiant from adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
|
||
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
let sql6 = 'INSERT INTO ';
|
||
sql6 += 'adherent_finance';
|
||
sql6 += ' (';
|
||
sql6 += 'date_maj, ';
|
||
sql6 += 'saison, ';
|
||
sql6 += 'identifiant, ';
|
||
sql6 += 'association_suzuki, ';
|
||
sql6 += 'adherent_type, ';
|
||
sql6 += 'adherent_nom, ';
|
||
sql6 += 'adherent_prenom, ';
|
||
sql6 += 'adherent_telephone_mobile, ';
|
||
sql6 += 'adherent_mail, ';
|
||
sql6 += 'montant_adhesion, ';
|
||
sql6 += 'montant_don, ';
|
||
sql6 += 'montant_total, ';
|
||
sql6 += 'paiement_mode, ';
|
||
sql6 += 'statut_paiement';
|
||
sql6 += ') VALUES (';
|
||
sql6 += '"'+ now +'",';
|
||
sql6 += '"2025/2026",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
sql6 += '"AFPS",';
|
||
sql6 += '"'+ adherent_type +'",';
|
||
sql6 += '"'+ req.session.adherent_nom +'",';
|
||
sql6 += '"'+ req.session.adherent_prenom +'",';
|
||
sql6 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
if (req.session.adherent_paiement_montant_adhesion == "" || req.session.adherent_paiement_montant_adhesion == "undefined" || !req.session.adherent_paiement_montant_adhesion) {req.session.adherent_paiement_montant_adhesion = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_adhesion +'",';
|
||
if (req.session.adherent_paiement_montant_don == "" || req.session.adherent_paiement_montant_don == "undefined" || !req.session.adherent_paiement_montant_don) {req.session.adherent_paiement_montant_don = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_don +'",';
|
||
if (req.session.montant_apayer == "" || req.session.montant_apayer == "undefined" || !req.session.montant_apayer) {req.session.montant_apayer = 0};
|
||
sql6 += '"'+ req.session.montant_apayer +'",';
|
||
sql6 += '"virement",';
|
||
sql6 += '"attente"';
|
||
sql6 += ')';
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent_finance : " + sql6 , { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
const [results, fields] = await db_connection_promise.execute(sql6);
|
||
logger.info("adherent_finance Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
} else {
|
||
// les Infos de session ne sont plus dispo
|
||
logger.info("les Infos de session ne sont plus dispo! : ", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La session a expiré.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION TEMPORAIRE EN PDF
|
||
|
||
let OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/attente/")+"/"+req.session.identifiant+"_adhesion_2526_attente_"+now_pdf+".pdf";
|
||
let INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_temp.docx");
|
||
|
||
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = " "};
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": req.session.identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"montant": req.session.adherent_paiement_montant_adhesion
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT TEMPORAIRE PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = req.session.identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent_temporaire.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI- ADHÉSION 2025/2026 - ";
|
||
mail_objet += req.session.identifiant;
|
||
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Dès que votre paiement sera validé, vous serez membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pourrez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle 2025/2026 temporaire.</p><p>Votre identifiant est ";
|
||
mail_html += req.session.identifiant;
|
||
mail_html += ".</p><p>Veuillez toutefois noter que votre adhésion ne sera effective qu'à la réception de votre règlement de ";
|
||
mail_html += req.session.adherent_paiement_montant_adhesion;
|
||
mail_html += " euros.<br>";
|
||
if (req.session.adherent_paiement_montant_don > 0) {
|
||
mail_html += "Merci pour votre proposition de don de ";
|
||
mail_html += req.session.adherent_paiement_montant_don;
|
||
mail_html += " euros que vous pouvez ajouter à votre règlement.";
|
||
}
|
||
mail_html += "</p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique!</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: req.session.identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}],
|
||
};
|
||
|
||
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 VIREMENT
|
||
res.locals.today = date_formattee;
|
||
res.redirect('/adhesion/adhesion_paiement/attente');
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// REQUÈTE VERS LE PAIEMENT STRIPE
|
||
// OUVERTURE SESSION STRIPE
|
||
/////////////////////////////////////////////////
|
||
const post_req_bank = async function(req, res, next) {
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION post_req_bank (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
|
||
logger.info("req.session.montant_apayer_cent: " + req.session.montant_apayer_cent, { numsession: req.session.id });
|
||
logger.info("req.session.identifiant : " + req.session.identifiant, { numsession: req.session.id });
|
||
logger.info("req.session.adherent_type : " + req.session.adherent_type, { numsession: req.session.id });
|
||
|
||
/////////////////////////////////////////////////
|
||
// STRIPE - ETAPE 1 - CREER l'INTENTION DE PAIEMENT
|
||
|
||
const session = await stripe.checkout.sessions.create({
|
||
metadata: {identifiant: req.session.identifiant, profil:req.session.adherent_type, adherent_paiement_montant_adhesion:adherent_paiement_montant_adhesion, adherent_paiement_montant_don:req.session.adherent_paiement_montant_don, adherent_nom:req.session.adherent_nom, adherent_prenom:req.session.adherent_prenom, adherent_adresse_rue:req.session.adherent_adresse_rue, adherent_adresse_codepostal:req.session.adherent_adresse_codepostal, adherent_adresse_ville:req.session.adherent_adresse_ville,},
|
||
customer_email: req.session.identifiant,
|
||
|
||
submit_type: 'pay',
|
||
|
||
success_url: process.env.STRIPE_SUCCESSURL,
|
||
cancel_url: process.env.STRIPE_CANCELURL,
|
||
|
||
payment_method_types: ['card'],
|
||
line_items: [{
|
||
price_data: {
|
||
currency: 'eur',
|
||
product_data: {
|
||
name: 'Adhesion annuelle ' + req.session.adherent_type,
|
||
},
|
||
unit_amount: req.session.adherent_paiement_montant_adhesion * 100,
|
||
},
|
||
quantity: 1,
|
||
},
|
||
{
|
||
price_data: {
|
||
currency: 'eur',
|
||
product_data: {
|
||
name: 'Don',
|
||
},
|
||
unit_amount: req.session.adherent_paiement_montant_don * 100,
|
||
},
|
||
quantity: 1,
|
||
}],
|
||
//Checkout has three modes: payment, subscription, or setup.
|
||
mode: 'payment'
|
||
|
||
});
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// STRIPE - ETAPE 2 - RÉCUPÉRATION DES DONNÉES DE LA SESSION ET ENVOYER LE PAIEMENT
|
||
|
||
// DANS LES INFOS DE LA SESSION ON A l'URL DE PAIEMENT POUR CETTE SESSION AVEC LE ID DE CE PAIEMENT DONNÉE PAR STRIPE EN RETOUR DE L'intention
|
||
// POUR RÉCUPÉRER LES INFOS DE SESSION ON UTILISE "session.[nom de la données]"
|
||
logger.info("session.url: " + session.url, { numsession: req.session.id });
|
||
|
||
|
||
// ON REDIRIGE L'INTERNAUTE VERS L'URL STRIPE POUR QU'IL FASSE LE PAIEMENT
|
||
// POUR LE RETOUR C'EST DANS LES URL success_url et cancel_url sur lesquelles on fait un get dans le js du router et on fait un script
|
||
// pour continuer le process et récupérer les infos contenues dans le get et envoyé par Stripe, comme par ex le code retour de la banque
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES adherent_finance
|
||
|
||
// Vérifier que la session n'a pas expiré
|
||
if (req.session.identifiant) {
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// VÉRIFICATION DANS LA BD SI IDENTIFIANT DÉJÀ INSCRIT OU NON
|
||
let sql = 'select identifiant from adherent where identifiant = "' + req.session.identifiant + '" AND saison = "2025/2026"';
|
||
logger.info("REQUETE SQL SELECT identifiant from adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
console.log(results);
|
||
logger.info("Nombre de lignes trouvées avec cet identifiant = " + results.length, { numsession: req.session.id, label: filename});
|
||
if (results.length) {
|
||
// IDENTIFIANT DÉJA INSCRIT
|
||
// METTRE Â JOUR l'EXISTANT au cas où il ait modifié des informations
|
||
logger.info("// IDENTIFIANT DÉJA INSCRIT", { numsession: req.session.id, label: filename});
|
||
// affichage message erreur
|
||
logger.info("identifiant déjà inscrit", { numsession: req.session.id, label: filename});
|
||
req.session.err_mail_form_adhesion_1 = "Cette adresse Email est déjà inscrite pour les adhésions 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
|
||
} else {
|
||
// IDENTIFIANT NON TROUVÉ
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
logger.info("// NON TROUVÉ => AJOUTER UNE LIGNE DANS LA TABLE", { numsession: req.session.id, label: filename});
|
||
let sql2 = 'INSERT INTO ';
|
||
sql2 += 'adherent';
|
||
sql2 += ' (';
|
||
sql2 += 'date_maj, ';
|
||
sql2 += 'saison, ';
|
||
sql2 += 'identifiant, ';
|
||
sql2 += 'association_suzuki, ';
|
||
sql2 += 'adherent_type, ';
|
||
sql2 += 'adherent_nom, ';
|
||
sql2 += 'adherent_prenom, ';
|
||
sql2 += 'adherent_mail, ';
|
||
sql2 += 'adherent_adresse_rue, ';
|
||
sql2 += 'adherent_adresse_complement, ';
|
||
sql2 += 'adherent_adresse_codepostal, ';
|
||
sql2 += 'adherent_adresse_ville, ';
|
||
sql2 += 'adherent_adresse_pays, ';
|
||
sql2 += 'adherent_telephone_mobile, ';
|
||
sql2 += 'adherent_telephone_fixe';
|
||
sql2 += ') VALUES (';
|
||
sql2 += '"'+ now +'",';
|
||
sql2 += '"2025/2026",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"AFPS",';
|
||
sql2 += '"'+ adherent_type +'",';
|
||
sql2 += '"'+ req.session.adherent_nom +'",';
|
||
sql2 += '"'+ req.session.adherent_prenom +'",';
|
||
sql2 += '"'+ req.session.identifiant +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_rue +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_complement +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_codepostal +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_ville +'",';
|
||
sql2 += '"'+ req.session.adherent_adresse_pays +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql2 += '"'+ req.session.adherent_telephone_fixe +'"';
|
||
sql2 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent : " + sql2 , { numsession: req.session.id, label: filename});
|
||
|
||
// AJOUTER L'ADHÉRENT DANS LA TABLE adherent
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adhrent
|
||
const [results, fields] = await db_connection_promise.execute(sql2);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
// AJOUTER LES ÉLÈVES DANS LA TABLE adherent_eleve
|
||
for (let i=1; i<6; i++) {
|
||
if (req.session["eleve_"+i+"_nom"]) {
|
||
let sql3 = 'INSERT INTO ';
|
||
sql3 += 'adherent_eleve';
|
||
sql3 += ' (';
|
||
sql3 += 'date_maj, ';
|
||
sql3 += 'saison, ';
|
||
sql3 += 'identifiant, ';
|
||
sql3 += 'association_suzuki, ';
|
||
sql3 += 'eleve_nom, ';
|
||
sql3 += 'eleve_prenom, ';
|
||
sql3 += 'adherent_mail, ';
|
||
sql3 += 'adherent_telephone_mobile, ';
|
||
sql3 += 'eleve_datenaissance, ';
|
||
sql3 += 'eleve_instrumentA, ';
|
||
sql3 += 'eleve_instrumentA_cahier, ';
|
||
sql3 += 'eleve_instrumentA_prof, ';
|
||
sql3 += 'eleve_instrumentB, ';
|
||
sql3 += 'eleve_instrumentB_cahier, ';
|
||
sql3 += 'eleve_instrumentB_prof, ';
|
||
sql3 += 'eleve_droitimage, ';
|
||
sql3 += 'eleve_contactsup_nom, ';
|
||
sql3 += 'eleve_contactsup_prenom, ';
|
||
sql3 += 'eleve_contactsup_mail';
|
||
sql3 += ') VALUES (';
|
||
sql3 += '"'+ now +'",';
|
||
sql3 += '"2025/2026",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"AFPS",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_prenom"] +'",';
|
||
sql3 += '"'+ req.session.identifiant +'",';
|
||
sql3 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_datenaissance"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_cahier"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentA_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_cahier"] +'",';
|
||
if (req.session["eleve_"+i+"_instrumentB_prof"]==undefined){req.session["eleve_"+i+"_instrumentB_prof"]=""};
|
||
sql3 += '"'+ req.session["eleve_"+i+"_instrumentB_prof"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_droitimage"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_nom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_prenom"] +'",';
|
||
sql3 += '"'+ req.session["eleve_"+i+"_contactsup_mail"] +'"';
|
||
sql3 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_eleve : " + sql3, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
const [results, fields] = await db_connection_promise.execute(sql3);
|
||
logger.info("ADHÉRENTS Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_eleve! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR DANS LA TABLE adherent_professeur
|
||
if (req.session.adherent_prof_instrument1) {
|
||
let sql4 = 'INSERT INTO ';
|
||
sql4 += 'adherent_professeur';
|
||
sql4 += ' (';
|
||
sql4 += 'date_maj, ';
|
||
sql4 += 'saison, ';
|
||
sql4 += 'identifiant, ';
|
||
sql4 += 'association_suzuki, ';
|
||
sql4 += 'adherent_nom, ';
|
||
sql4 += 'adherent_prenom, ';
|
||
sql4 += 'adherent_mail, ';
|
||
sql4 += 'adherent_telephone_mobile, ';
|
||
sql4 += 'adherent_prof_instrument1, ';
|
||
sql4 += 'adherent_prof_instrument1_esa, ';
|
||
sql4 += 'adherent_prof_instrument2, ';
|
||
sql4 += 'adherent_prof_instrument2_esa, ';
|
||
sql4 += 'adherent_prof_sece, ';
|
||
sql4 += 'adherent_prof_ecole1, ';
|
||
sql4 += 'adherent_prof_ecole1_mail, ';
|
||
sql4 += 'adherent_prof_ecole1_web, ';
|
||
sql4 += 'adherent_prof_ecole1_adresse, ';
|
||
sql4 += 'adherent_prof_ecole1_cp, ';
|
||
sql4 += 'adherent_prof_ecole1_ville, ';
|
||
sql4 += 'adherent_prof_ecole1_region, ';
|
||
sql4 += 'adherent_prof_ecole2, ';
|
||
sql4 += 'adherent_prof_ecole2_mail, ';
|
||
sql4 += 'adherent_prof_ecole2_web, ';
|
||
sql4 += 'adherent_prof_ecole2_adresse, ';
|
||
sql4 += 'adherent_prof_ecole2_cp, ';
|
||
sql4 += 'adherent_prof_ecole2_ville, ';
|
||
sql4 += 'adherent_prof_ecole2_region, ';
|
||
sql4 += 'adherent_prof_ecole3, ';
|
||
sql4 += 'adherent_prof_ecole3_mail, ';
|
||
sql4 += 'adherent_prof_ecole3_web, ';
|
||
sql4 += 'adherent_prof_ecole3_adresse, ';
|
||
sql4 += 'adherent_prof_ecole3_cp, ';
|
||
sql4 += 'adherent_prof_ecole3_ville, ';
|
||
sql4 += 'adherent_prof_ecole3_region';
|
||
sql4 += ') VALUES (';
|
||
sql4 += '"'+ now +'",';
|
||
sql4 += '"2025/2026",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"AFPS",';
|
||
sql4 += '"'+ req.session.adherent_nom +'",';
|
||
sql4 += '"'+ req.session.adherent_prenom +'",';
|
||
sql4 += '"'+ req.session.identifiant +'",';
|
||
sql4 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument1_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_instrument2_esa +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_sece +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole1_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole2_region +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3 +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_mail +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_web +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_adresse +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_cp +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_ville +'",';
|
||
sql4 += '"'+ req.session.adherent_prof_ecole3_region +'"';
|
||
sql4 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent_professeur : " + sql4, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql4);
|
||
logger.info("PROFESSEUR Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_professeur! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
|
||
// AJOUTER LE PROFESSEUR EN FORMATION DANS LA TABLE adherent_formation_prof
|
||
if (req.session.adherent_prof_stagiaire_instrument1) {
|
||
let sql5 = 'INSERT INTO ';
|
||
sql5 += 'adherent_formation_prof';
|
||
sql5 += ' (';
|
||
sql5 += 'date_maj, ';
|
||
sql5 += 'saison, ';
|
||
sql5 += 'identifiant, ';
|
||
sql5 += 'association_suzuki, ';
|
||
sql5 += 'adherent_nom, ';
|
||
sql5 += 'adherent_prenom, ';
|
||
sql5 += 'adherent_mail, ';
|
||
sql5 += 'adherent_telephone_mobile, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument1_prof, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_esa, ';
|
||
sql5 += 'adherent_prof_stagiaire_instrument2_prof';
|
||
sql5 += ') VALUES (';
|
||
sql5 += '"'+ now +'",';
|
||
sql5 += '"2025/2026",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"AFPS",';
|
||
sql5 += '"'+ req.session.adherent_nom +'",';
|
||
sql5 += '"'+ req.session.adherent_prenom +'",';
|
||
sql5 += '"'+ req.session.identifiant +'",';
|
||
sql5 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_esa +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument1_prof +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2 +'",';
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_esa +'",';
|
||
if (req.session.adherent_prof_stagiaire_instrument2_prof==undefined) {req.session.adherent_prof_stagiaire_instrument2_prof = ""};
|
||
sql5 += '"'+ req.session.adherent_prof_stagiaire_instrument2_prof +'"';
|
||
sql5 += ')';
|
||
logger.info("====== REQUETE SQL INSERT INTO adherent_formation_prof : ", { numsession: req.session.id, label: filename});
|
||
logger.info(sql5, { numsession: req.session.id, label: filename});
|
||
logger.info("=========================================================", { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_professeur
|
||
const [results, fields] = await db_connection_promise.execute(sql5);
|
||
logger.info("PROFESSEUR EN FORMATION Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_formation_prof! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
}
|
||
}
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête select identifiant from adherent! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_finance
|
||
let sql6 = 'INSERT INTO ';
|
||
sql6 += 'adherent_finance';
|
||
sql6 += ' (';
|
||
sql6 += 'date_maj, ';
|
||
sql6 += 'saison, ';
|
||
sql6 += 'identifiant, ';
|
||
sql6 += 'association_suzuki, ';
|
||
sql6 += 'adherent_type, ';
|
||
sql6 += 'adherent_nom, ';
|
||
sql6 += 'adherent_prenom, ';
|
||
sql6 += 'adherent_telephone_mobile, ';
|
||
sql6 += 'adherent_mail, ';
|
||
sql6 += 'montant_adhesion, ';
|
||
sql6 += 'montant_don, ';
|
||
sql6 += 'montant_total, ';
|
||
sql6 += 'paiement_mode';
|
||
sql6 += ') VALUES (';
|
||
sql6 += '"'+ now +'",';
|
||
sql6 += '"2025/2026",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
sql6 += '"AFPS",';
|
||
sql6 += '"'+ adherent_type +'",';
|
||
sql6 += '"'+ req.session.adherent_nom +'",';
|
||
sql6 += '"'+ req.session.adherent_prenom +'",';
|
||
sql6 += '"'+ req.session.adherent_telephone_mobile +'",';
|
||
sql6 += '"'+ req.session.identifiant +'",';
|
||
if (req.session.adherent_paiement_montant_adhesion == "" || req.session.adherent_paiement_montant_adhesion == "undefined" || !req.session.adherent_paiement_montant_adhesion) {req.session.adherent_paiement_montant_adhesion = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_adhesion +'",';
|
||
if (req.session.adherent_paiement_montant_don == "" || req.session.adherent_paiement_montant_don == "undefined" || !req.session.adherent_paiement_montant_don) {req.session.adherent_paiement_montant_don = 0};
|
||
sql6 += '"'+ req.session.adherent_paiement_montant_don +'",';
|
||
if (req.session.montant_apayer == "" || req.session.montant_apayer == "undefined" || !req.session.montant_apayer) {req.session.montant_apayer = 0};
|
||
sql6 += '"'+ req.session.montant_apayer +'",';
|
||
sql6 += '"carte bancaire"';
|
||
sql6 += ')';
|
||
logger.info("REQUETE SQL INSERT INTO adherent : " + sql6, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// AJOUTER UNE LIGNE DANS LA TABLE adherent_finance
|
||
const [results, fields] = await db_connection_promise.execute(sql6);
|
||
logger.info("adherent_finance Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
/////////////////////////////////////////////////
|
||
// REDIRECTION VERS LA PAGE DE PAIEMENT STRIPE
|
||
|
||
//let url_stripe = session.url
|
||
logger.info("Stripe session.url : " + session.url, { numsession: req.session.id, label: filename});
|
||
await db_connection_promise.end();
|
||
res.redirect(session.url)
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
} else {
|
||
// les Infos de session ne sont plus dispo
|
||
logger.info("les Infos de session ne sont plus dispo! : ", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La session a expiré.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// RETOUR STRIPE CARTE BANCAIRE PAYÉE
|
||
/////////////////////////////////////////////////
|
||
const get_res_bank = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION get_res_banq (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION ADOBE API
|
||
////////////////////////////////////////////////////
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(20000)
|
||
.withReadTimeout(40000)
|
||
.build();
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
var id = req.query.id;
|
||
logger.info("id = " + id, { numsession: req.session.id });
|
||
const session = await stripe.checkout.sessions.retrieve(id);
|
||
|
||
console.log("======================================");
|
||
console.log("======== SESSION STRIPE ==========");
|
||
console.log("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
|
||
var customer_email = session.customer_email;
|
||
var payment_status = session.payment_status;
|
||
var amount_total = session.amount_total/100;
|
||
var stripe_customer = session.customer;
|
||
var stripe_payment_intent = session.payment_intent;
|
||
var payment_method_types = session.payment_method_types;
|
||
var stripe_status = session.status;
|
||
|
||
var profil = session.metadata.profil;
|
||
var identifiant = session.metadata.identifiant;
|
||
var adherent_paiement_montant_don = session.metadata.adherent_paiement_montant_don;
|
||
var adherent_nom = session.metadata.adherent_nom;
|
||
var adherent_prenom = session.metadata.adherent_prenom;
|
||
var adherent_adresse_rue = session.metadata.adherent_adresse_rue;
|
||
var adherent_adresse_codepostal = session.metadata.adherent_adresse_codepostal;
|
||
var adherent_adresse_ville = session.metadata.adherent_adresse_ville;
|
||
|
||
logger.info("session.metadata.adherent_nom = " + session.metadata.adherent_nom, { numsession: req.session.id });
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
|
||
|
||
|
||
logger.info("customer_email: " + customer_email, { numsession: req.session.id });
|
||
logger.info("payment_status: " + payment_status, { numsession: req.session.id });
|
||
|
||
res.locals.customer_email = customer_email;
|
||
res.locals.payment_status = payment_status;
|
||
res.locals.amount_total = amount_total;
|
||
res.locals.stripe_customer = stripe_customer;
|
||
res.locals.stripe_payment_intent = stripe_payment_intent;
|
||
res.locals.payment_method_types = "carte bancaire";
|
||
res.locals.stripe_status = stripe_status;
|
||
res.locals.identifiant = identifiant;
|
||
res.locals.profil1 = profil1;
|
||
res.locals.profil2 = profil2;
|
||
res.locals.profil3 = profil3;
|
||
|
||
logger.info("req.session.identifiant: " + req.session.identifiant, { numsession: req.session.id });
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES adherent_finance
|
||
|
||
let stripe_retour = "payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
|
||
|
||
// Vérifier que la session n'a pas expiré
|
||
if (identifiant) {
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
let sql = 'UPDATE ';
|
||
sql += 'adherent_finance';
|
||
sql += ' SET ';
|
||
sql += 'date_paiement = "' + now + '", ';
|
||
sql += 'stripe_retour = "' + stripe_retour + '", ';
|
||
sql += 'statut_paiement = "paye"';
|
||
sql += ' WHERE identifiant = "' + identifiant + '"';
|
||
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent_finance : " + sql , { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
logger.info("adherent_finance Row ID changed : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
// METTRE À JOUR LE STATUS D'ENVOI DE LA CARTE
|
||
let sql2 = 'UPDATE ';
|
||
sql2 += 'adherent';
|
||
sql2 += ' SET ';
|
||
sql2 += 'carte_envoi = "definitive"';
|
||
sql2 += ' WHERE identifiant = "' + identifiant + '"';
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent : " + sql2, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent
|
||
const [results, fields] = await db_connection_promise.execute(sql2);
|
||
logger.info("adherent carte envoi Row ID changed : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
} else {
|
||
// les Infos de session ne sont plus dispo
|
||
logger.info("les Infos de session ne sont plus dispo! : ", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La session a expiré.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
// + JUSTIFICATIF DE DON
|
||
|
||
// OUTPUT = /Users/juliechaumard/Documents/GitHub/Aduzuki_v2/pdf/adhesion/2526/payee/lulliabo@icloud.com.pdf
|
||
|
||
let OUTPUT;
|
||
let INPUT;
|
||
|
||
// S'il y a un don
|
||
if (adherent_paiement_montant_don > 0) {
|
||
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+identifiant+"_adhesion_2526_paye_don_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_don.docx");
|
||
|
||
} else {
|
||
|
||
// S'il n'y a pas de don
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+identifiant+"_adhesion_2526_paye_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent.docx");
|
||
|
||
}
|
||
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
var adresse = adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += adherent_adresse_ville;
|
||
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = ""};
|
||
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"mode_paiement": "carte bancaire",
|
||
"nom": adherent_nom,
|
||
"prenom": adherent_prenom,
|
||
"adresse": adresse,
|
||
"montant_don": adherent_paiement_montant_don
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
var attachment_don_name = identifiant;
|
||
attachment_don_name += "_don.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += identifiant;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org) pour l'année 2025/2026. Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += identifiant;
|
||
mail_html += ".</p>";
|
||
if (adherent_paiement_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}
|
||
]
|
||
};
|
||
|
||
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.today = date_formattee;
|
||
res.render('adhesion/page_templates/adhesion_paiement_reussi.ejs');
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// RETOUR STRIPE CARTE BANCAIRE ANNULÉE OU PROBLÈME
|
||
/////////////////////////////////////////////////
|
||
const get_res_bank_annul = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION get_res_bank_annul (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION ADOBE API
|
||
////////////////////////////////////////////////////
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(20000)
|
||
.withReadTimeout(40000)
|
||
.build();
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
console.log ("on est dans la ROUTE /adhesion_paiement/annule");
|
||
var id = req.query.id;
|
||
// type = req.params.type;
|
||
logger.info("id : " + id, { numsession: req.session.id });
|
||
const session = await stripe.checkout.sessions.retrieve(id);
|
||
|
||
console.log("======================================");
|
||
console.log("======== SESSION STRIPE ==========");
|
||
console.log("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE DE L'ADHÉSION
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
|
||
console.info(session);
|
||
var customer_email = session.customer_email;
|
||
var payment_status = session.payment_status;
|
||
var amount_total = session.amount_total/100;
|
||
var stripe_customer = session.customer;
|
||
var stripe_payment_intent = session.payment_intent;
|
||
var payment_method_types = session.payment_method_types;
|
||
var stripe_status = session.status;
|
||
var profil = session.metadata.profil;
|
||
var identifiant = session.metadata.identifiant;
|
||
|
||
var adherent_paiement_montant_don = session.metadata.adherent_paiement_montant_don;
|
||
var adherent_paiement_montant_adhesion = session.metadata.adherent_paiement_montant_adhesion;
|
||
var adherent_nom = session.metadata.adherent_nom;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
|
||
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("stripe_status: ", stripe_status);
|
||
console.log("metadata.profil: ", profil);
|
||
|
||
res.locals.customer_email = customer_email;
|
||
res.locals.payment_status = payment_status;
|
||
res.locals.amount_total = amount_total;
|
||
res.locals.stripe_customer = stripe_customer;
|
||
res.locals.stripe_payment_intent = stripe_payment_intent;
|
||
res.locals.payment_method_types = payment_method_types;
|
||
res.locals.stripe_status = stripe_status;
|
||
res.locals.identifiant = identifiant;
|
||
res.locals.profil1 = profil1;
|
||
res.locals.profil2 = profil2;
|
||
res.locals.profil3 = profil3;
|
||
|
||
logger.info("req.session.identifiant: " + req.session.identifiant, { numsession: req.session.id });
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DES INFORMATIONS SUR LE PAIEMENT DANS LA BASE DE DONNÉES adherent_finance
|
||
|
||
let stripe_retour = "payment_status:"+payment_status+",stripe_customer:"+stripe_customer+",stripe_payment_intent:"+stripe_payment_intent+",sessionID:"+session.id+",payment_method_types:"+payment_method_types+",amount_total:"+amount_total+",stripe_status:"+stripe_status;
|
||
|
||
// Vérifier que la session n'a pas expiré
|
||
if (identifiant) {
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
let sql = 'UPDATE ';
|
||
sql += 'adherent_finance';
|
||
sql += ' SET ';
|
||
sql += 'date_paiement = "' + now + '", ';
|
||
sql += 'stripe_retour = "' + stripe_retour + '", ';
|
||
sql += 'statut_paiement = "impaye"';
|
||
sql += ' WHERE identifiant = "' + identifiant + '"';
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent_finance : " + sql , { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent_finance
|
||
const [results, fields] = await db_connection_promise.execute(sql);
|
||
logger.info("adherent_finance Row ID changed : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
|
||
// METTRE À JOUR LE STATUS D'ENVOI DE LA CARTE
|
||
let sql2 = 'UPDATE ';
|
||
sql2 += 'adherent';
|
||
sql2 += ' SET ';
|
||
sql2 += 'carte_envoi = "temporaire"';
|
||
sql2 += ' WHERE identifiant = "' + identifiant + '"';
|
||
|
||
logger.info("REQUETE SQL UPDATE adherent : " + sql2, { numsession: req.session.id, label: filename});
|
||
|
||
try {
|
||
// METTRE À JOUR LES INFOS DE PAIEMENT DANS adherent
|
||
const [results, fields] = await db_connection_promise.execute(sql2);
|
||
logger.info("adherent_finance Row ID changed : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
} catch (error) {
|
||
// Echec de la requête
|
||
console.log(error);
|
||
logger.error("Il y a un problème avec la requête INSERT INTO adherent_finance! : " + error, { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "Il y a un problème système, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
|
||
|
||
|
||
} 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, veuillez recommencer.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion');
|
||
};
|
||
|
||
} else {
|
||
// les Infos de session ne sont plus dispo
|
||
logger.info("les Infos de session ne sont plus dispo! : ", { numsession: req.session.id });
|
||
req.session.err_mail_form_adhesion_1 = "La session a expiré.";
|
||
req.session.err_mail_form_adhesion_2 = "Si vous n'aviez pas pu finaliser votre paiement veuillez nous envoyer un chèque ou un virement.";
|
||
req.session.err_mail_form_adhesion_3 = "Pour tout problème veuillez contacter l’Association.";
|
||
// redirection vers la page d'accueil des adhésions pour afficher le message d'erreur
|
||
res.redirect('/adhesion');
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION TEMPORAIRE EN PDF
|
||
|
||
let OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/attente/")+"/"+identifiant+"_adhesion_2526_attente_"+now_pdf+".pdf";
|
||
let INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_temp.docx");
|
||
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = ""};
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"montant": adherent_paiement_montant_adhesion
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT TEMPORAIRE PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += adherent_nom;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Dès que votre paiement sera validé, vous serez membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pourrez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle 2025/2026 temporaire.</p><p>Votre identifiant est ";
|
||
mail_html += identifiant;
|
||
mail_html += ".</p><p>Veuillez toutefois noter que votre adhésion ne sera effective qu'à la réception de votre règlement de ";
|
||
mail_html += adherent_paiement_montant_adhesion;
|
||
mail_html += " euros.<br>";
|
||
if (adherent_paiement_montant_don > 0) {
|
||
mail_html += "Nous vous remercions pour votre proposition de don de ";
|
||
mail_html += adherent_paiement_montant_don;
|
||
mail_html += " euros que vous pouvez ajouter à votre règlement.";
|
||
}
|
||
mail_html += "</p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}],
|
||
};
|
||
|
||
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 DE FIN
|
||
res.locals.adherent_paiement_montant_adhesion = adherent_paiement_montant_adhesion;
|
||
res.locals.adherent_paiement_montant_don = adherent_paiement_montant_don;
|
||
res.locals.today = date_formattee;
|
||
res.render('adhesion/page_templates/adhesion_paiement_annule.ejs');
|
||
}
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// ENVOI MANUEL CARTE ADHÉSION ET JUSTIFICATIF DE DON (SI DON)
|
||
/////////////////////////////////////////////////
|
||
/////////////////////////////////////////////////
|
||
// SAISIE DU MAIL
|
||
// VÉRIFIER SI DÉJÀ INSCRIT DANS GOOGLE
|
||
/////////////////////////////////////////////////
|
||
const post_cartemanuelle_verifmail_envoicarte = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION checkMail ENVOI MANUEL (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
await doc.useServiceAccountAuth(creds);
|
||
await doc.loadInfo(); // loads document properties and worksheets
|
||
console.log("NOM FICHIER SHEET: ",doc.title); //nom du fichier
|
||
|
||
const sheet = doc.sheetsByTitle['adhesion_annuelle_web'];
|
||
console.log("NOM DU TABLEAU (ONGLET): ",sheet.title); //NOM DU TABLEAU (ONGLET)
|
||
console.log("NOMBRE DE LIGNE DU TABLEAU: ",sheet.rowCount); // NOMBRE DE LIGNE DU TABLEAU
|
||
|
||
const rows = await sheet.getRows();
|
||
console.log("rows[0].identifiant: ", rows[0].identifiant);
|
||
|
||
|
||
let compteur = sheet.rowCount - 1;
|
||
console.log("compteur: ",compteur);
|
||
|
||
let rowToBeUpdate = 0;
|
||
|
||
// ON RÉCUPÈRE LE MAIL (IDENTIFIANT) SAISIE DANS LE FORMULAIRE
|
||
req.session.identifiant = req.body.identifiant;
|
||
|
||
for (let i=0; i<compteur; i++) {
|
||
if (rows[i].identifiant === req.session.identifiant){
|
||
console.log("rows[",i,"].identifiant: ",rows[i].identifiant);
|
||
console.log("i (dans mail trouvé) = ", i);
|
||
rowToBeUpdate = i;
|
||
}
|
||
}
|
||
console.log("rowToBeUpdate = ", rowToBeUpdate);
|
||
if (rowToBeUpdate>0){
|
||
|
||
console.log(rows[rowToBeUpdate].identifiant);
|
||
console.log(rows[rowToBeUpdate].adherent_type);
|
||
console.log(rows[rowToBeUpdate].adherent_nom);
|
||
console.log(rows[rowToBeUpdate].adherent_prenom);
|
||
console.log(rows[rowToBeUpdate].adherent_paiement_mode);
|
||
console.log(rows[rowToBeUpdate].adherent_adresse_rue);
|
||
console.log(rows[rowToBeUpdate].adherent_adresse_codepostal);
|
||
console.log(rows[rowToBeUpdate].adherent_adresse_ville);
|
||
console.log(rows[rowToBeUpdate].adherent_paiement_montant_don);
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
console.log("PDF CREATION AVANT");
|
||
var html = fs.readFileSync(path.resolve(__dirname, "../pdf/template/carte_adherent.html"), "utf8");
|
||
var options = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
moment().format();
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction "profil" est dans le fichier /modules/adherent_type.js
|
||
let adherent_type = rows[rowToBeUpdate].adherent_type;
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
console.log("profil1 = ",profil1);
|
||
mode_paiement = "Adhésion payée par ";
|
||
mode_paiement += rows[rowToBeUpdate].adherent_paiement_mode;
|
||
var membres = [
|
||
{
|
||
today: today,
|
||
description: "Votre carte d’adhérent à l’Association Française pour la pédagogie Suzuki",
|
||
identifiant: rows[rowToBeUpdate].identifiant,
|
||
profil1: profil1,
|
||
profil2: profil2,
|
||
profil3: profil3,
|
||
type_card: "ADHÉRENT",
|
||
adherent_paiement_mode: mode_paiement
|
||
},
|
||
];
|
||
|
||
var pdfname = path.resolve(__dirname, "../pdf/adhesion/2526/payee/");
|
||
pdfname += "/";
|
||
|
||
pdfname += rows[rowToBeUpdate].identifiant;
|
||
pdfname += "_adhesion_2526_payee.pdf";
|
||
|
||
var document = {
|
||
html: html,
|
||
data: {
|
||
membres: membres,
|
||
},
|
||
path: pdfname,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document, options)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
console.log("PDF CREATION APRES");
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DU PDF JUSTIFICATIF DE DON
|
||
|
||
if (rows[rowToBeUpdate].adherent_paiement_montant_don > 0) {
|
||
console.log("IF DON = OUI");
|
||
var html_don = fs.readFileSync(path.resolve(__dirname, "../pdf/template/don_justificatif.html"), "utf8");
|
||
//var html_don = fs.readFileSync("/Users/julie/Documents/GitHub/aduzuki/pdf/template/don_justificatif.html", "utf8");
|
||
var options_don = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
|
||
var adresse = rows[rowToBeUpdate].adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += rows[rowToBeUpdate].adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += rows[rowToBeUpdate].adherent_adresse_ville;
|
||
|
||
var donneur = [
|
||
{
|
||
today: today,
|
||
identifiant: rows[rowToBeUpdate].identifiant,
|
||
nom: rows[rowToBeUpdate].adherent_nom,
|
||
prenom: rows[rowToBeUpdate].adherent_prenom,
|
||
adresse: adresse,
|
||
adherent_paiement_mode: "carte bancaire",
|
||
montant_don: rows[rowToBeUpdate].adherent_paiement_montant_don
|
||
},
|
||
];
|
||
|
||
var pdfname_don = path.resolve(__dirname, "../pdf/adhesion/2526/don/");
|
||
|
||
pdfname_don += "/";
|
||
pdfname_don += rows[rowToBeUpdate].identifiant;
|
||
pdfname_don += "_adhesion_2526_don.pdf";
|
||
|
||
var document_don = {
|
||
html: html_don,
|
||
data: {
|
||
donneur: donneur,
|
||
},
|
||
path: pdfname_don,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document_don, options_don)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON 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: 'afpedagogiesuzuki@gmail.com',
|
||
pass: 'tlxx kjwx ahyx irnl'
|
||
}
|
||
});
|
||
|
||
var attachment_name = rows[rowToBeUpdate].identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
var attachment_don_name = rows[rowToBeUpdate].identifiant;
|
||
attachment_don_name += "_adhesion_2526_don.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += rows[rowToBeUpdate].adherent_nom;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += rows[rowToBeUpdate].identifiant;
|
||
mail_html += ".</p>";
|
||
if (rows[rowToBeUpdate].adherent_paiement_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
if (req.session.adherent_paiement_montant_don > 0) {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: req.session.identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
},
|
||
{
|
||
filename: attachment_don_name,
|
||
path: pdfname_don
|
||
}
|
||
],
|
||
};
|
||
} else {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: req.session.identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
}
|
||
],
|
||
};
|
||
}
|
||
|
||
transporter.sendMail(mailOptions, function(error, info){
|
||
if (error) {
|
||
console.log(error);
|
||
} else {
|
||
console.log('Email sent: ' + info.response);
|
||
}
|
||
});
|
||
console.log("MAIL ENVOI APRES");
|
||
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// AFFICHAGE DANS LA PAGE WEB QUE LA CARTE EST ENVOYÉE
|
||
req.session.err_mail_form_adhesion_1 = "Carte adhérent envoyée";
|
||
} else {
|
||
req.session.err_mail_form_adhesion_1 = "Cette adresse Email n'est pas inscrite pour les adhésions 2025/2026.";
|
||
req.session.err_mail_form_adhesion_2 = "Vous ne pouvez pas lui envoyer la carte d'adhérent.";
|
||
}
|
||
|
||
res.redirect('/inscription/adhesion/carte_manuelle');
|
||
|
||
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// ENVOI MANUEL CARTE ADHÉSION ET JUSTIFICATIF DE DON (SI DON)
|
||
// Si "x" dans la colonne "filtre" de la Google Sheet (TABLEAU adhesion_annuelle_web ET adhesion_ass_locales)
|
||
// GET URL https://www.adhesion.afpedagogiesuzuki.fr/inscription/adhesion/carte_manuelle
|
||
/////////////////////////////////////////////////
|
||
const post_cartes_manuelles_envoi = async function(req, res){
|
||
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION ENVOI CARTES MANUELLES (adhesion) ==========");
|
||
logger.info("======================================");
|
||
|
||
// RÉCUPÉRATION DU CONTENU DE LA GOOGLE SHEET
|
||
await doc.useServiceAccountAuth(creds);
|
||
await doc.loadInfo(); // loads document properties and worksheets
|
||
console.log("NOM FICHIER SHEET: ",doc.title); //nom du fichier
|
||
const sheet = doc.sheetsByTitle['adhesion_annuelle_web'];
|
||
const sheet_asslocales = doc.sheetsByTitle['adhesion_ass_locales'];
|
||
console.log("NOM DU TABLEAU (ONGLET): ",sheet.title); //NOM DU TABLEAU (ONGLET)
|
||
console.log("NOMBRE DE LIGNE DU TABLEAU: ",sheet.rowCount); // NOMBRE DE LIGNE DU TABLEAU
|
||
console.log("NOM DU TABLEAU (ONGLET) ASS LOCALES: ",sheet_asslocales.title); //NOM DU TABLEAU (ONGLET)
|
||
console.log("NOMBRE DE LIGNE DU TABLEAU ASS LOCALES: ",sheet_asslocales.rowCount); // NOMBRE DE LIGNE DU TABLEAU
|
||
|
||
const rows = await sheet.getRows();
|
||
console.log("rows[0].identifiant: ", rows[0].identifiant);
|
||
const rows_asslocales = await sheet_asslocales.getRows();
|
||
console.log("rows[0].identifiant: ", rows_asslocales[0].identifiant);
|
||
|
||
// COMBIEN DE LIGNES A LE TABLEAU POUR DÉFINIR LE NOMBRE D'ITÉRATION DE LA BOUCLE
|
||
// LA GOOGLE SHEET NE DOIT PAS CONTENIR DE LIGNE VIDE
|
||
let compteur = sheet.rowCount - 1;
|
||
console.log("compteur: ",compteur);
|
||
let compteur_asslocales = sheet_asslocales.rowCount - 1;
|
||
console.log("compteur ASS LOCALES: ",compteur_asslocales);
|
||
|
||
// DATE DU JOUR
|
||
moment().format();
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
console.log("date_formattee:", date_formattee);
|
||
let message_envoye = "carte envoyée le ";
|
||
message_envoye += date_formattee;
|
||
|
||
// BOUCLE D'ENVOI POUR LE TABLEAU GOOGLE SHEET 'adhesion_annuelle_web'
|
||
// SI LA CELLULE "filtre" CONTIENT un "x" ON ENVOIE LA CARTE
|
||
let lesmails = new Array;
|
||
let nbenvoi = 0;
|
||
for (let i=0; i<compteur; i++) {
|
||
if (rows[i].filtre === "x"){
|
||
lesmails[i] = rows[i].identifiant;
|
||
console.log(lesmails[i]);
|
||
console.log(rows[i].filtre);
|
||
console.log("i = ", i);
|
||
nbenvoi = nbenvoi + 1;
|
||
|
||
|
||
// ENVOI DE LA CARTE ADHÉRENT
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
console.log("PDF CREATION AVANT");
|
||
var html = fs.readFileSync(path.resolve(__dirname, "../pdf/template/carte_adherent.html"), "utf8");
|
||
var options = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction "profil" est dans le fichier /modules/adherent_type.js
|
||
let adherent_type = rows[i].adherent_type;
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
console.log("profil1 = ",profil1);
|
||
mode_paiement = "Adhésion payée par ";
|
||
mode_paiement += rows[i].adherent_paiement_mode;
|
||
var membres = [
|
||
{
|
||
today: date_formattee,
|
||
description: "Votre carte d’adhérent à l’Association Française pour la pédagogie Suzuki",
|
||
identifiant: rows[i].identifiant,
|
||
profil1: profil1,
|
||
profil2: profil2,
|
||
profil3: profil3,
|
||
type_card: "ADHÉRENT",
|
||
adherent_paiement_mode: mode_paiement
|
||
},
|
||
];
|
||
var pdfname = path.resolve(__dirname, "../pdf/adhesion/2526/payee/");
|
||
pdfname += "/";
|
||
pdfname += rows[i].identifiant;
|
||
pdfname += "_adhesion_2526_payee.pdf";
|
||
|
||
var document = {
|
||
html: html,
|
||
data: {
|
||
membres: membres,
|
||
},
|
||
path: pdfname,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document, options)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
console.log("PDF CREATION APRES");
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DU PDF JUSTIFICATIF DE DON
|
||
|
||
if (rows[i].adherent_paiement_montant_don > 0) {
|
||
console.log("IF DON = OUI");
|
||
var html_don = fs.readFileSync(path.resolve(__dirname, "../pdf/template/don_justificatif.html"), "utf8");
|
||
var options_don = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
|
||
var adresse = rows[i].adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += rows[i].adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += rows[i].adherent_adresse_ville;
|
||
|
||
var donneur = [
|
||
{
|
||
today: date_formattee,
|
||
identifiant: rows[i].identifiant,
|
||
nom: rows[i].adherent_nom,
|
||
prenom: rows[i].adherent_prenom,
|
||
adresse: adresse,
|
||
adherent_paiement_mode: rows[i].adherent_paiement_mode,
|
||
montant_don: rows[i].adherent_paiement_montant_don
|
||
},
|
||
];
|
||
|
||
var pdfname_don = path.resolve(__dirname, "../pdf/adhesion/2526/don/");
|
||
pdfname_don += "/";
|
||
pdfname_don += rows[i].identifiant;
|
||
pdfname_don += "_adhesion_2526_don.pdf";
|
||
|
||
var document_don = {
|
||
html: html_don,
|
||
data: {
|
||
donneur: donneur,
|
||
},
|
||
path: pdfname_don,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document_don, options_don)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
// MAIL JULIE
|
||
//user: 'juliechaumard@gmail.com',
|
||
//pass: 'etfq umof iwbx ltxk'
|
||
// SUZUKI
|
||
user: 'afpedagogiesuzuki@gmail.com',
|
||
pass: 'tlxx kjwx ahyx irnl'
|
||
}
|
||
});
|
||
|
||
var attachment_name = rows[i].identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
var attachment_don_name = rows[i].identifiant;
|
||
attachment_don_name += "_adhesion_2526_don.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += rows[i].adherent_nom;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += rows[i].identifiant;
|
||
mail_html += ".</p>";
|
||
if (rows[i].adherent_paiement_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
if (rows[i].adherent_paiement_montant_don > 0) {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: rows[i].identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
},
|
||
{
|
||
filename: attachment_don_name,
|
||
path: pdfname_don
|
||
}
|
||
],
|
||
};
|
||
} else {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: rows[i].identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
}
|
||
],
|
||
};
|
||
}
|
||
|
||
transporter.sendMail(mailOptions, function(error, info){
|
||
if (error) {
|
||
console.log(error);
|
||
} else {
|
||
console.log('Email sent: ' + info.response);
|
||
}
|
||
});
|
||
console.log("MAIL ENVOI APRES");
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
rows[i].filtre = message_envoye;
|
||
await rows[i].save();
|
||
}
|
||
|
||
}
|
||
console.log("LISTE lesmails :");
|
||
// Supprimer les items vides de l'array lesmails
|
||
lesmails = lesmails.filter(Boolean);
|
||
console.log(lesmails);
|
||
console.log("nbenvoi :",nbenvoi);
|
||
|
||
// BOUCLE D'ENVOI POUR LE TABLEAU GOOGLE SHEET 'adhesion_ass_locales'
|
||
// SI LA CELLULE "filtre" CONTIENT un "x" ON ENVOIE LA CARTE
|
||
let nbenvoi2 = 0;
|
||
let lesmails_asslocales = new Array;
|
||
for (let i=0; i<compteur_asslocales; i++) {
|
||
if (rows_asslocales[i].filtre === "x"){
|
||
nbenvoi2 = nbenvoi2 + 1;
|
||
lesmails_asslocales[i] = rows_asslocales[i].identifiant;
|
||
console.log(lesmails_asslocales[i]);
|
||
console.log(rows_asslocales[i].filtre);
|
||
console.log("i = ", i);
|
||
|
||
// ENVOI DE LA CARTE ADHÉRENT
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
console.log("PDF CREATION AVANT");
|
||
var html = fs.readFileSync(path.resolve(__dirname, "../pdf/template/carte_adherent.html"), "utf8");
|
||
var options = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction "profil" est dans le fichier /modules/adherent_type.js
|
||
let adherent_type = rows_asslocales[i].adherent_type;
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
console.log("profil1 = ",profil1);
|
||
mode_paiement = "Adhésion payée par ";
|
||
mode_paiement += rows_asslocales[i].adherent_paiement_mode;
|
||
var membres = [
|
||
{
|
||
today: date_formattee,
|
||
description: "Votre carte d’adhérent à l’Association Française pour la pédagogie Suzuki",
|
||
identifiant: rows_asslocales[i].identifiant,
|
||
profil1: profil1,
|
||
profil2: profil2,
|
||
profil3: profil3,
|
||
type_card: "ADHÉRENT",
|
||
adherent_paiement_mode: mode_paiement
|
||
},
|
||
];
|
||
var pdfname = path.resolve(__dirname, "../pdf/adhesion/2526/payee/");
|
||
pdfname += "/";
|
||
pdfname += rows_asslocales[i].identifiant;
|
||
pdfname += "_adhesion_2526_payee.pdf";
|
||
|
||
var document = {
|
||
html: html,
|
||
data: {
|
||
membres: membres,
|
||
},
|
||
path: pdfname,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document, options)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
console.log("PDF CREATION APRES");
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// CRÉATION DU PDF JUSTIFICATIF DE DON
|
||
|
||
if (rows_asslocales[i].adherent_paiement_montant_don > 0) {
|
||
console.log("IF DON = OUI");
|
||
var html_don = fs.readFileSync(path.resolve(__dirname, "../pdf/template/don_justificatif.html"), "utf8");
|
||
var options_don = {
|
||
format: "A4",
|
||
orientation: "portrait",
|
||
border: "10mm",
|
||
};
|
||
|
||
var adresse = rows_asslocales[i].adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += rows_asslocales[i].adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += rows_asslocales[i].adherent_adresse_ville;
|
||
|
||
var donneur = [
|
||
{
|
||
today: date_formattee,
|
||
identifiant: rows_asslocales[i].identifiant,
|
||
nom: rows_asslocales[i].adherent_nom,
|
||
prenom: rows_asslocales[i].adherent_prenom,
|
||
adresse: adresse,
|
||
adherent_paiement_mode: rows_asslocales[i].adherent_paiement_mode,
|
||
montant_don: rows_asslocales[i].adherent_paiement_montant_don
|
||
},
|
||
];
|
||
|
||
var pdfname_don = path.resolve(__dirname, "../pdf/adhesion/2526/don/");
|
||
pdfname_don += "/";
|
||
pdfname_don += rows_asslocales[i].identifiant;
|
||
pdfname_don += "_adhesion_2526_don.pdf";
|
||
|
||
var document_don = {
|
||
html: html_don,
|
||
data: {
|
||
donneur: donneur,
|
||
},
|
||
path: pdfname_don,
|
||
type: ""
|
||
};
|
||
|
||
await pdf
|
||
.create(document_don, options_don)
|
||
.then((res) => {
|
||
console.log(res);
|
||
})
|
||
.catch((error) => {
|
||
console.error(error);
|
||
});
|
||
}
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
// MAIL JULIE
|
||
//user: 'juliechaumard@gmail.com',
|
||
//pass: 'etfq umof iwbx ltxk'
|
||
// SUZUKI
|
||
user: 'afpedagogiesuzuki@gmail.com',
|
||
pass: 'tlxx kjwx ahyx irnl'
|
||
}
|
||
});
|
||
|
||
var attachment_name = rows_asslocales[i].identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
var attachment_don_name = rows_asslocales[i].identifiant;
|
||
attachment_don_name += "_adhesion_2526_don.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += rows_asslocales[i].adherent_nom;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org).<br>Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += rows_asslocales[i].identifiant;
|
||
mail_html += ".</p>";
|
||
if (rows_asslocales[i].adherent_paiement_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
if (rows_asslocales[i].adherent_paiement_montant_don > 0) {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: rows_asslocales[i].identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
},
|
||
{
|
||
filename: attachment_don_name,
|
||
path: pdfname_don
|
||
}
|
||
],
|
||
};
|
||
} else {
|
||
var mailOptions = {
|
||
from: 'afpedagogiesuzuki@gmail.com',
|
||
to: rows_asslocales[i].identifiant,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: pdfname
|
||
}
|
||
],
|
||
};
|
||
}
|
||
|
||
transporter.sendMail(mailOptions, function(error, info){
|
||
if (error) {
|
||
console.log(error);
|
||
} else {
|
||
console.log('Email sent: ' + info.response);
|
||
}
|
||
});
|
||
console.log("MAIL ENVOI APRES");
|
||
|
||
|
||
|
||
|
||
|
||
|
||
rows_asslocales[i].filtre = message_envoye;
|
||
await rows_asslocales[i].save();
|
||
}
|
||
|
||
}
|
||
console.log("LISTE lesmails_asslocales :");
|
||
// Supprimer les items vides de l'array lesmails_asslocales
|
||
lesmails_asslocales = lesmails_asslocales.filter(Boolean);
|
||
console.log(lesmails_asslocales);
|
||
console.log("nbenvoi2 :",nbenvoi2);
|
||
|
||
|
||
// TRAITEMENT FINI, ON AFFICHE LA PAGE AVEC LE RESULTAT
|
||
|
||
req.session.err_mail_form_adhesion_1 = "Cartes adhérents envoyées";
|
||
req.session.err_mail_form_adhesion_2 = lesmails;
|
||
req.session.err_mail_form_adhesion_3 = lesmails_asslocales;
|
||
|
||
res.redirect('/inscription/adhesion/cartes_manuelles');
|
||
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// GOOGLE SHEET
|
||
// DÉCHARGEMENT DES DONNÉES DANS GOOGLE SHEET AUTOMATIQUE
|
||
// IL NE FAUT PAS DE LIGNE VIDES DANS LE GOOGLE SHEET
|
||
//// mysql2 | moment | google-spreadsheet
|
||
////
|
||
////
|
||
/////////////////////////////////////////////////
|
||
const maj_googlesheet_auto = async function(req, res) {
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION maj_googlesheet_auto (adhesion maj_googlesheet) ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
/////////////////////////////////////////////////
|
||
// CONNEXION GSHEET
|
||
await GS_adhesion.useServiceAccountAuth(GS_creds);
|
||
await GS_adhesion.loadInfo();
|
||
|
||
/////////////////////////////////////////////////
|
||
// VARIABLES
|
||
const GS_adhesion_adherent = GS_adhesion.sheetsByTitle['adherent'];
|
||
const GS_adhesion_professeurs = GS_adhesion.sheetsByTitle['professeurs'];
|
||
const GS_adhesion_professeurs_stagiaires = GS_adhesion.sheetsByTitle['professeurs_stagiaires'];
|
||
const GS_adhesion_eleves = GS_adhesion.sheetsByTitle['eleves'];
|
||
const GS_adhesion_finance = GS_adhesion.sheetsByTitle['finance'];
|
||
const GS_adhesion_adherent_en_attente = GS_adhesion.sheetsByTitle['adherent_en_attente'];
|
||
let sql, sql2, sql_recup_prof, sql_update_prof, sql_recup_prof_stagiaires, sql_update_prof_stagiaires, sql_recup_eleves, sql_update_eleves, sql_recup_adh_att, sql_update_adh_att, sql_recup_finance, sql_update_finance;
|
||
let nb_onglet_adherent = 0;
|
||
let nb_onglet_prof = 0;
|
||
let nb_onglet_stagiaires = 0;
|
||
let nb_onglet_eleves = 0;
|
||
let nb_onglet_adh_att = 0;
|
||
let nb_onglet_finance = 0;
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
|
||
/////////////////////////////////////////////////
|
||
// CONNECTION DB
|
||
try {
|
||
const 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
|
||
});
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET adherent
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql = "SELECT adherent.date_maj, adherent.saison, adherent.identifiant, adherent.association_suzuki, adherent.adherent_type, adherent.adherent_nom, adherent.adherent_prenom, adherent.adherent_telephone_mobile, adherent.adherent_mail, adherent.adherent_adresse_rue, adherent.adherent_adresse_complement, adherent.adherent_adresse_codepostal, adherent.adherent_adresse_ville, adherent.adherent_adresse_pays, adherent.adherent_telephone_fixe, adherent.carte_envoi, adherent_finance.statut_paiement FROM adherent INNER JOIN adherent_finance ON adherent.identifiant = adherent_finance.identifiant WHERE (adherent.gsheet = '' OR adherent.gsheet IS NULL)";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
|
||
const [results, fields] = await db_connection_promise.execute(sql); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET adherent - Nombre de lignes = " + results.length, { numsession: req.session.id, label: filename});
|
||
|
||
if (results.length > 0) {
|
||
logger.info("ON EST DANS if (results.length > 0)", { numsession: req.session.id, label: filename});
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_adherent = [];
|
||
for (let i = 0; i < results.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results[i].identifiant, { numsession: req.session.id, label: filename});
|
||
if (results[i].statut_paiement === "paye") {
|
||
nb_onglet_adherent++;
|
||
rowsToAdd_adherent.push({
|
||
'saison': results[i].saison,
|
||
'association': results[i].association_suzuki,
|
||
'identifiant': results[i].identifiant,
|
||
'adhesion_date': results[i].date_maj,
|
||
'adhesion_statut': results[i].statut_paiement,
|
||
'adherent_type': results[i].adherent_type,
|
||
'adherent_nom': results[i].adherent_nom,
|
||
'adherent_prenom': results[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results[i].adherent_telephone_mobile,
|
||
'adherent_mail': results[i].adherent_mail,
|
||
'adherent_adresse_rue': results[i].adherent_adresse_rue,
|
||
'adherent_adresse_complement': results[i].adherent_adresse_complement,
|
||
'adherent_adresse_codepostal': results[i].adherent_adresse_codepostal,
|
||
'adherent_adresse_ville': results[i].adherent_adresse_ville,
|
||
'adherent_adresse_pays': results[i].adherent_adresse_pays,
|
||
'adherent_telephone_fixe': "'" + results[i].adherent_telephone_fixe,
|
||
'carte_envoi': results[i].carte_envoi,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_adherent.length > 0) {
|
||
|
||
try {
|
||
|
||
const ajout_gs_adherents = await GS_adhesion_adherent.addRows(rowsToAdd_adherent);
|
||
logger.info("Insertion dans Google Sheets adhérents réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql2 = 'UPDATE adherent SET gsheet = CASE ';
|
||
const identifiants = [];
|
||
for (let i = 0; i < results.length; i++) {
|
||
if (results[i].statut_paiement === "paye") {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql2 += `WHEN identifiant = '${results[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants.push(`'${results[i].identifiant}'`);
|
||
}
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql2 += `END WHERE identifiant IN (${identifiants.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql2 - MAJ gsheet dans adherent : " + sql2 , { numsession: req.session.id, label: filename});
|
||
const [results2, fields2] = await db_connection_promise.execute(sql2);
|
||
logger.info("UPDATE adherent SET gsheet effectué pour plusieurs lignes : " + results2.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD adhérents : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets adhérents : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
}
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET professeur
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql_recup_prof = "SELECT adherent_professeur.date_maj, adherent_professeur.saison, adherent_professeur.identifiant, adherent_professeur.association_suzuki, adherent_professeur.adherent_nom, adherent_professeur.adherent_prenom, adherent_professeur.adherent_mail, adherent_professeur.adherent_telephone_mobile, adherent_professeur.adherent_prof_instrument1, adherent_professeur.adherent_prof_instrument1_esa, adherent_professeur.adherent_prof_instrument2, adherent_professeur.adherent_prof_instrument2_esa, adherent_professeur.adherent_prof_sece, adherent_professeur.adherent_prof_ecole1, adherent_professeur.adherent_prof_ecole1_mail, adherent_professeur.adherent_prof_ecole1_web, adherent_professeur.adherent_prof_ecole1_adresse, adherent_professeur.adherent_prof_ecole1_cp, adherent_professeur.adherent_prof_ecole1_ville, adherent_professeur.adherent_prof_ecole2, adherent_professeur.adherent_prof_ecole2_mail, adherent_professeur.adherent_prof_ecole2_web, adherent_professeur.adherent_prof_ecole2_adresse, adherent_professeur.adherent_prof_ecole2_cp, adherent_professeur.adherent_prof_ecole2_ville, adherent_professeur.adherent_prof_ecole3, adherent_professeur.adherent_prof_ecole3_mail, adherent_professeur.adherent_prof_ecole3_web, adherent_professeur.adherent_prof_ecole3_adresse, adherent_professeur.adherent_prof_ecole3_cp, adherent_professeur.adherent_prof_ecole3_ville, adherent_finance.statut_paiement FROM adherent_professeur INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_professeur.identifiant WHERE (adherent_professeur.gsheet = '' OR adherent_professeur.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET professeur : " + sql_recup_prof , { numsession: req.session.id, label: filename});
|
||
|
||
const [results_recup_prof, fields_recup_prof] = await db_connection_promise.execute(sql_recup_prof); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET professeur - Nombre de lignes = " + results_recup_prof.length, { numsession: req.session.id, label: filename});
|
||
nb_onglet_prof = results_recup_prof.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results_recup_prof.length > 0) {
|
||
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_prof = [];
|
||
for (let i = 0; i < results_recup_prof.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results_recup_prof[i].identifiant, { numsession: req.session.id, label: filename});
|
||
rowsToAdd_prof.push({
|
||
'saison': results_recup_prof[i].saison,
|
||
'association': results_recup_prof[i].association_suzuki,
|
||
'identifiant': results_recup_prof[i].identifiant,
|
||
'adhesion_date': results_recup_prof[i].date_maj,
|
||
'adherent_nom': results_recup_prof[i].adherent_nom,
|
||
'adherent_prenom': results_recup_prof[i].adherent_prenom,
|
||
'adherent_mail': results_recup_prof[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results_recup_prof[i].adherent_telephone_mobile,
|
||
'adherent_prof_instrument1': results_recup_prof[i].adherent_prof_instrument1,
|
||
'adherent_prof_instrument1_esa': results_recup_prof[i].adherent_prof_instrument1_esa,
|
||
'adherent_prof_instrument2': results_recup_prof[i].adherent_prof_instrument2,
|
||
'adherent_prof_instrument2_esa': results_recup_prof[i].adherent_prof_instrument2_esa,
|
||
'adherent_prof_sece': results_recup_prof[i].adherent_prof_sece,
|
||
'adherent_prof_ecole1': results_recup_prof[i].adherent_prof_ecole1,
|
||
'adherent_prof_ecole1_adresse': results_recup_prof[i].adherent_prof_ecole1_adresse,
|
||
'adherent_prof_ecole1_cp': results_recup_prof[i].adherent_prof_ecole1_cp,
|
||
'adherent_prof_ecole1_ville': results_recup_prof[i].adherent_prof_ecole1_ville,
|
||
'adherent_prof_ecole1_mail': results_recup_prof[i].adherent_prof_ecole1_mail,
|
||
'adherent_prof_ecole1_web': results_recup_prof[i].adherent_prof_ecole1_web,
|
||
'adherent_prof_ecole2': results_recup_prof[i].adherent_prof_ecole2,
|
||
'adherent_prof_ecole2_adresse': results_recup_prof[i].adherent_prof_ecole2_adresse,
|
||
'adherent_prof_ecole2_cp': results_recup_prof[i].adherent_prof_ecole2_cp,
|
||
'adherent_prof_ecole2_ville': results_recup_prof[i].adherent_prof_ecole2_ville,
|
||
'adherent_prof_ecole2_mail': results_recup_prof[i].adherent_prof_ecole2_mail,
|
||
'adherent_prof_ecole2_web': results_recup_prof[i].adherent_prof_ecole2_web,
|
||
'adherent_prof_ecole3': results_recup_prof[i].adherent_prof_ecole3,
|
||
'adherent_prof_ecole3_adresse': results_recup_prof[i].adherent_prof_ecole3_adresse,
|
||
'adherent_prof_ecole3_cp': results_recup_prof[i].adherent_prof_ecole3_cp,
|
||
'adherent_prof_ecole3_ville': results_recup_prof[i].adherent_prof_ecole3_ville,
|
||
'adherent_prof_ecole3_mail': results_recup_prof[i].adherent_prof_ecole3_mail,
|
||
'adherent_prof_ecole3_web': results_recup_prof[i].adherent_prof_ecole3_web,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_prof.length > 0) {
|
||
|
||
try {
|
||
const ajout_gs_prof = await GS_adhesion_professeurs.addRows(rowsToAdd_prof);
|
||
logger.info("Insertion dans Google Sheets professeur réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql_update_prof = 'UPDATE adherent_professeur SET gsheet = CASE ';
|
||
const identifiants_prof = [];
|
||
for (let i = 0; i < results_recup_prof.length; i++) {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql_update_prof += `WHEN identifiant = '${results_recup_prof[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants_prof.push(`'${results_recup_prof[i].identifiant}'`);
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql_update_prof += `END WHERE identifiant IN (${identifiants_prof.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql_update_prof - MAJ gsheet dans professeur : " + sql_update_prof , { numsession: req.session.id, label: filename});
|
||
const [results_update_prof, fields_update_prof] = await db_connection_promise.execute(sql_update_prof);
|
||
logger.info("UPDATE professeur SET gsheet effectué pour plusieurs lignes : " + results_update_prof.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD prof : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets prof : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
|
||
}
|
||
}
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET professeurs_stagiaires
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql_recup_prof_stagiaires = "SELECT adherent_formation_prof.date_maj, adherent_formation_prof.saison, adherent_formation_prof.identifiant, adherent_formation_prof.association_suzuki, adherent_formation_prof.adherent_nom, adherent_formation_prof.adherent_prenom, adherent_formation_prof.adherent_mail, adherent_formation_prof.adherent_telephone_mobile, adherent_formation_prof.adherent_prof_stagiaire_instrument1, adherent_formation_prof.adherent_prof_stagiaire_instrument1_esa, adherent_formation_prof.adherent_prof_stagiaire_instrument1_prof, adherent_formation_prof.adherent_prof_stagiaire_instrument2, adherent_formation_prof.adherent_prof_stagiaire_instrument2_esa, adherent_formation_prof.adherent_prof_stagiaire_instrument2_prof, adherent_finance.statut_paiement FROM adherent_formation_prof INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_formation_prof.identifiant WHERE (adherent_formation_prof.gsheet = '' OR adherent_formation_prof.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET professeurs_stagiaires : " + sql_recup_prof_stagiaires , { numsession: req.session.id, label: filename});
|
||
|
||
const [results_recup_prof_stagiaires, fields_recup_prof_stagiaires] = await db_connection_promise.execute(sql_recup_prof_stagiaires); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET professeurs_stagiaires - Nombre de lignes = " + results_recup_prof_stagiaires.length, { numsession: req.session.id, label: filename});
|
||
nb_onglet_stagiaires = results_recup_prof_stagiaires.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results_recup_prof_stagiaires.length > 0) {
|
||
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_prof_stagiaires = [];
|
||
for (let i = 0; i < results_recup_prof_stagiaires.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results_recup_prof_stagiaires[i].identifiant, { numsession: req.session.id, label: filename});
|
||
rowsToAdd_prof_stagiaires.push({
|
||
'saison': results_recup_prof_stagiaires[i].saison,
|
||
'association': results_recup_prof_stagiaires[i].association_suzuki,
|
||
'identifiant': results_recup_prof_stagiaires[i].identifiant,
|
||
'adhesion_date': results_recup_prof_stagiaires[i].date_maj,
|
||
'adherent_nom': results_recup_prof_stagiaires[i].adherent_nom,
|
||
'adherent_prenom': results_recup_prof_stagiaires[i].adherent_prenom,
|
||
'adherent_mail': results_recup_prof_stagiaires[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results_recup_prof_stagiaires[i].adherent_telephone_mobile,
|
||
'adherent_prof_stagiaire_instrument1': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument1,
|
||
'adherent_prof_stagiaire_instrument1_esa': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument1_esa,
|
||
'adherent_prof_stagiaire_instrument1_prof': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument1_prof,
|
||
'adherent_prof_stagiaire_instrument2': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument2,
|
||
'adherent_prof_stagiaire_instrument2_esa': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument2_esa,
|
||
'adherent_prof_stagiaire_instrument2_prof': results_recup_prof_stagiaires[i].adherent_prof_stagiaire_instrument2_prof,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_prof_stagiaires.length > 0) {
|
||
|
||
try {
|
||
const ajout_gs_prof_stagiaires = await GS_adhesion_professeurs_stagiaires.addRows(rowsToAdd_prof_stagiaires);
|
||
logger.info("Insertion dans Google Sheets professeurs_stagiaires réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql_update_prof_stagiaires = 'UPDATE adherent_formation_prof SET gsheet = CASE ';
|
||
const identifiants_prof_stagiaires = [];
|
||
for (let i = 0; i < results_recup_prof_stagiaires.length; i++) {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql_update_prof_stagiaires += `WHEN identifiant = '${results_recup_prof_stagiaires[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants_prof_stagiaires.push(`'${results_recup_prof_stagiaires[i].identifiant}'`);
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql_update_prof_stagiaires += `END WHERE identifiant IN (${identifiants_prof_stagiaires.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql_update_prof_stagiaires - MAJ gsheet dans professeurs_stagiaires : " + sql_update_prof_stagiaires , { numsession: req.session.id, label: filename});
|
||
const [results_update_prof_stagiaires, fields_update_prof_stagiaires] = await db_connection_promise.execute(sql_update_prof_stagiaires);
|
||
logger.info("UPDATE professeurs_stagiaires SET gsheet effectué pour plusieurs lignes : " + results_update_prof_stagiaires.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD prof stagiaires : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets prof stagiaires : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
|
||
}
|
||
}
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET eleves
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql_recup_eleves = "SELECT adherent_eleve.date_maj, adherent_eleve.saison, adherent_eleve.identifiant, adherent_eleve.association_suzuki, adherent_eleve.eleve_nom, adherent_eleve.eleve_prenom, adherent_eleve.adherent_mail, adherent_eleve.adherent_telephone_mobile, adherent_eleve.eleve_datenaissance, adherent_eleve.eleve_instrumentA, adherent_eleve.eleve_instrumentA_cahier, adherent_eleve.eleve_instrumentA_prof, adherent_eleve.eleve_instrumentB, adherent_eleve.eleve_instrumentB_cahier, adherent_eleve.eleve_instrumentB_prof, adherent_eleve.eleve_droitimage, adherent_eleve.eleve_contactsup_nom, adherent_eleve.eleve_contactsup_prenom, adherent_eleve.eleve_contactsup_mail, adherent_finance.statut_paiement FROM adherent_eleve INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_eleve.identifiant WHERE (adherent_eleve.gsheet = '' OR adherent_eleve.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET eleves : " + sql_recup_eleves , { numsession: req.session.id, label: filename});
|
||
|
||
const [results_recup_eleves, fields_recup_eleves] = await db_connection_promise.execute(sql_recup_eleves); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET eleves - Nombre de lignes = " + results_recup_eleves.length, { numsession: req.session.id, label: filename});
|
||
nb_onglet_eleves = results_recup_eleves.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results_recup_eleves.length > 0) {
|
||
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_eleves = [];
|
||
for (let i = 0; i < results_recup_eleves.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results_recup_eleves[i].identifiant, { numsession: req.session.id, label: filename});
|
||
rowsToAdd_eleves.push({
|
||
'saison': results_recup_eleves[i].saison,
|
||
'association': results_recup_eleves[i].association_suzuki,
|
||
'identifiant': results_recup_eleves[i].identifiant,
|
||
'adhesion_date': results_recup_eleves[i].date_maj,
|
||
'eleve_nom': results_recup_eleves[i].eleve_nom,
|
||
'eleve_prenom': results_recup_eleves[i].eleve_prenom,
|
||
'eleve_datenaissance': results_recup_eleves[i].eleve_datenaissance,
|
||
'adherent_mail': results_recup_eleves[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results_recup_eleves[i].adherent_telephone_mobile,
|
||
'eleve_instrumentA': results_recup_eleves[i].eleve_instrumentA,
|
||
'eleve_instrumentA_cahier': results_recup_eleves[i].eleve_instrumentA_cahier,
|
||
'eleve_instrumentA_prof': results_recup_eleves[i].eleve_instrumentA_prof,
|
||
'eleve_instrumentB': results_recup_eleves[i].eleve_instrumentB,
|
||
'eleve_instrumentB_cahier': results_recup_eleves[i].eleve_instrumentB_cahier,
|
||
'eleve_instrumentB_prof': results_recup_eleves[i].eleve_instrumentB_prof,
|
||
'eleve_droitimage': results_recup_eleves[i].eleve_droitimage,
|
||
'eleve_contactsup_nom': results_recup_eleves[i].eleve_contactsup_nom,
|
||
'eleve_contactsup_prenom': results_recup_eleves[i].eleve_contactsup_prenom,
|
||
'eleve_contactsup_mail': results_recup_eleves[i].eleve_contactsup_mail,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_eleves.length > 0) {
|
||
|
||
try {
|
||
const ajout_gs_eleves = await GS_adhesion_eleves.addRows(rowsToAdd_eleves);
|
||
logger.info("Insertion dans Google Sheets eleves réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql_update_eleves = 'UPDATE adherent_eleve SET gsheet = CASE ';
|
||
const identifiants_eleves = [];
|
||
for (let i = 0; i < results_recup_eleves.length; i++) {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql_update_eleves += `WHEN identifiant = '${results_recup_eleves[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants_eleves.push(`'${results_recup_eleves[i].identifiant}'`);
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql_update_eleves += `END WHERE identifiant IN (${identifiants_eleves.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql_update_eleves - MAJ gsheet dans eleves : " + sql_update_eleves , { numsession: req.session.id, label: filename});
|
||
const [results_update_eleves, fields_update_eleves] = await db_connection_promise.execute(sql_update_eleves);
|
||
logger.info("UPDATE eleves SET gsheet effectué pour plusieurs lignes : " + results_update_eleves.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD eleves : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets eleves : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET adherent_en_attente
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql_recup_adh_att = "SELECT adherent_finance.date_maj, adherent_finance.saison, adherent_finance.identifiant, adherent_finance.association_suzuki, adherent_finance.adherent_type, adherent_finance.adherent_nom, adherent_finance.adherent_prenom, adherent_finance.adherent_telephone_mobile, adherent_finance.adherent_mail, adherent_finance.montant_adhesion, adherent_finance.montant_don, adherent_finance.montant_total, adherent_finance.paiement_mode, adherent_finance.date_paiement, adherent_finance.stripe_retour, adherent_finance.cheque_banque, adherent_finance.cheque_numero, adherent_finance.statut_paiement FROM adherent_finance WHERE (adherent_finance.gs_adherent_att = '' OR adherent_finance.gs_adherent_att IS NULL) AND (adherent_finance.statut_paiement <> 'paye' OR adherent_finance.statut_paiement IS NULL OR adherent_finance.statut_paiement = '')";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET adherent_en_attente : " + sql_recup_adh_att , { numsession: req.session.id, label: filename});
|
||
|
||
const [results_recup_adh_att, fields_recup_adh_att] = await db_connection_promise.execute(sql_recup_adh_att); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET adherent_en_attente - Nombre de lignes = " + results_recup_adh_att.length, { numsession: req.session.id, label: filename});
|
||
nb_onglet_adh_att = results_recup_adh_att.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results_recup_adh_att.length > 0) {
|
||
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_adh_att = [];
|
||
for (let i = 0; i < results_recup_adh_att.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results_recup_adh_att[i].identifiant, { numsession: req.session.id, label: filename});
|
||
rowsToAdd_adh_att.push({
|
||
'saison': results_recup_adh_att[i].saison,
|
||
'association': results_recup_adh_att[i].association_suzuki,
|
||
'identifiant': results_recup_adh_att[i].identifiant,
|
||
'adhesion_date': results_recup_adh_att[i].date_maj,
|
||
'adherent_type': results_recup_adh_att[i].adherent_type,
|
||
'adherent_nom': results_recup_adh_att[i].adherent_nom,
|
||
'adherent_prenom': results_recup_adh_att[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results_recup_adh_att[i].adherent_telephone_mobile,
|
||
'adherent_mail': results_recup_adh_att[i].adherent_mail,
|
||
'montant_adhesion': results_recup_adh_att[i].montant_adhesion,
|
||
'montant_don': results_recup_adh_att[i].montant_don,
|
||
'montant_total': results_recup_adh_att[i].montant_total,
|
||
'paiement_mode': results_recup_adh_att[i].paiement_mode,
|
||
'date_paiement': results_recup_adh_att[i].date_paiement,
|
||
'stripe_retour': results_recup_adh_att[i].stripe_retour,
|
||
'cheque_banque': results_recup_adh_att[i].cheque_banque,
|
||
'cheque_numero': results_recup_adh_att[i].cheque_numero,
|
||
'statut_paiement': results_recup_adh_att[i].statut_paiement,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_adh_att.length > 0) {
|
||
|
||
try {
|
||
const ajout_gs_adh_att = await GS_adhesion_adherent_en_attente.addRows(rowsToAdd_adh_att);
|
||
logger.info("Insertion dans Google Sheets adhérent en attente réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql_update_adh_att = 'UPDATE adherent_finance SET gs_adherent_att = CASE ';
|
||
const identifiants_adh_att = [];
|
||
for (let i = 0; i < results_recup_adh_att.length; i++) {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql_update_adh_att += `WHEN identifiant = '${results_recup_adh_att[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants_adh_att.push(`'${results_recup_adh_att[i].identifiant}'`);
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql_update_adh_att += `END WHERE identifiant IN (${identifiants_adh_att.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql_update_adh_att - MAJ gsheet dans adherent_en_attente : " + sql_update_adh_att , { numsession: req.session.id, label: filename});
|
||
const [results_update_adh_att, fields_update_adh_att] = await db_connection_promise.execute(sql_update_adh_att);
|
||
logger.info("UPDATE adherent_finance SET gs_adherent_att effectué pour plusieurs lignes : " + results_update_adh_att.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD adherent_finance : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets adherent_en_attente : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
|
||
}
|
||
}
|
||
|
||
////////////////////////////////////////
|
||
// MAJ ONGLET finance
|
||
|
||
// EXECUTE SQL RÉCUPÉRATION INFORMATIONS
|
||
sql_recup_finance = "SELECT adherent_finance.date_maj, adherent_finance.saison, adherent_finance.identifiant, adherent_finance.association_suzuki, adherent_finance.adherent_type, adherent_finance.adherent_nom, adherent_finance.adherent_prenom, adherent_finance.adherent_telephone_mobile, adherent_finance.adherent_mail, adherent_finance.montant_adhesion, adherent_finance.montant_don, adherent_finance.montant_total, adherent_finance.paiement_mode, adherent_finance.date_paiement, adherent_finance.stripe_retour, adherent_finance.cheque_banque, adherent_finance.cheque_numero, adherent_finance.statut_paiement FROM adherent_finance WHERE (adherent_finance.gsheet = '' OR adherent_finance.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
//logger.info("REQUETE SQL - MAJ ONGLET finances : " + sql_recup_finance , { numsession: req.session.id, label: filename});
|
||
|
||
const [results_recup_finance, fields_recup_finance] = await db_connection_promise.execute(sql_recup_finance); // Execution SQL
|
||
logger.info("REQUETE SQL - SELECT ONGLET finance - Nombre de lignes = " + results_recup_finance.length, { numsession: req.session.id, label: filename});
|
||
nb_onglet_finance = results_recup_finance.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results_recup_finance.length > 0) {
|
||
|
||
// TABLEAU POUR METTRE LES INFORMATIONS
|
||
const rowsToAdd_finance = [];
|
||
for (let i = 0; i < results_recup_finance.length; i++ ) { // Pour chaque ligne trouvée dans la table, on le met dans le tableau rowsToAdd
|
||
//logger.info("Préparation des données pour injection dans la Google Sheet pour le membre : " + results_recup_finance[i].identifiant, { numsession: req.session.id, label: filename});
|
||
rowsToAdd_finance.push({
|
||
'saison': results_recup_finance[i].saison,
|
||
'association': results_recup_finance[i].association_suzuki,
|
||
'identifiant': results_recup_finance[i].identifiant,
|
||
'adhesion_date': results_recup_finance[i].date_maj,
|
||
'adherent_type': results_recup_finance[i].adherent_type,
|
||
'adherent_nom': results_recup_finance[i].adherent_nom,
|
||
'adherent_prenom': results_recup_finance[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results_recup_finance[i].adherent_telephone_mobile,
|
||
'adherent_mail': results_recup_finance[i].adherent_mail,
|
||
'montant_adhesion': results_recup_finance[i].montant_adhesion,
|
||
'montant_don': results_recup_finance[i].montant_don,
|
||
'montant_total': results_recup_finance[i].montant_total,
|
||
'paiement_mode': results_recup_finance[i].paiement_mode,
|
||
'date_paiement': results_recup_finance[i].date_paiement,
|
||
'stripe_retour': results_recup_finance[i].stripe_retour,
|
||
'cheque_banque': results_recup_finance[i].cheque_banque,
|
||
'cheque_numero': results_recup_finance[i].cheque_numero,
|
||
'statut_paiement': results_recup_finance[i].statut_paiement,
|
||
'date_maj_gsheet': now
|
||
});
|
||
}
|
||
|
||
// AJOUT DES INFOS DANS GOOGLE SHEET
|
||
if (rowsToAdd_finance.length > 0) {
|
||
|
||
try {
|
||
const ajout_gs_finance = await GS_adhesion_finance.addRows(rowsToAdd_finance);
|
||
logger.info("Insertion dans Google Sheets finance réussie", { numsession: req.session.id, label: filename });
|
||
|
||
// EXECUTE SQL UPDATE "gsheet"
|
||
// UNE FOIS LA GOOGLE SHEET MISE A JOUR AVEC LES NOUVEAUX ADHERENTS, ON MODIFIE LE CHAMP "gsheet" de la table dans la BD pour marquer que cette ligne a été importée
|
||
// Construire la partie SQL pour Faire un UPDATE de plusieurs lignes à la fois
|
||
try {
|
||
sql_update_finance = 'UPDATE adherent_finance SET gsheet = CASE ';
|
||
const identifiants_finance = [];
|
||
for (let i = 0; i < results_recup_finance.length; i++) {
|
||
// Ajouter une clause `WHEN` pour chaque identifiant
|
||
sql_update_finance += `WHEN identifiant = '${results_recup_finance[i].identifiant}' THEN '${now}' `;
|
||
|
||
// Collecter les identifiants pour la clause WHERE
|
||
identifiants_finance.push(`'${results_recup_finance[i].identifiant}'`);
|
||
}
|
||
// Ajouter la clause WHERE pour limiter les mises à jour aux identifiants concernés
|
||
sql_update_finance += `END WHERE identifiant IN (${identifiants_finance.join(',')})`;
|
||
|
||
//logger.info("REQUETE SQL - sql_update_finance - MAJ gsheet dans finance : " + sql_update_finance , { numsession: req.session.id, label: filename});
|
||
const [results_update_finance, fields_update_finance] = await db_connection_promise.execute(sql_update_finance);
|
||
logger.info("UPDATE finance SET gsheet effectué pour plusieurs lignes : " + results_update_finance.changedRows, { numsession: req.session.id, label: filename });
|
||
|
||
} catch (error) {
|
||
logger.error("Échec de la mise à jour BD finance : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
} catch (error) {
|
||
logger.error("Erreur lors de l'ajout des lignes à Google Sheets finance : " + error.message, { numsession: req.session.id, label: filename });
|
||
await db_connection_promise.end();
|
||
return;
|
||
};
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
} else {
|
||
logger.info("PAS D'ADHÉRENTS À METTRE À JOUR", { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// ENVOIE MAIL APRES EXECUTION
|
||
logger.info("MAIL ENVOI AVANT", { numsession: req.session.id });
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
var mail_objet = "ADUZUKI - CRON WEBHOOK MAJ GS ADHESION";
|
||
mail_html = "<p>Pour l'administrateur de l'application ADUZUKI,</p><br><p>Ceci est le mail d'envoi pour confirmer l'exécution du Webhook de mise à jour de la Google Sheet des adhésions qui se fait la nuit à 3h.</p>";
|
||
mail_html += "<p>- nombre d'<strong>adhérents</strong> mis à jour : ";
|
||
mail_html += nb_onglet_adherent;
|
||
mail_html += "</p>";
|
||
mail_html += "<p>- nombre de <strong>professeurs</strong> mis à jour : ";
|
||
mail_html += nb_onglet_prof;
|
||
mail_html += "</p>";
|
||
mail_html += "<p>- nombre de <strong>professeurs stagiaires</strong> mis à jour : ";
|
||
mail_html += nb_onglet_stagiaires;
|
||
mail_html += "</p>";
|
||
mail_html += "<p>- nombre d'<strong>élèves</strong> mis à jour : ";
|
||
mail_html += nb_onglet_eleves;
|
||
mail_html += "</p>";
|
||
mail_html += "<p>- nombre d'<strong>adhésions en attente</strong> mis à jour : ";
|
||
mail_html += nb_onglet_adh_att;
|
||
mail_html += "</p>";
|
||
mail_html += "<p>- nombre de lignes <strong>finance</strong> mis à jour : ";
|
||
mail_html += nb_onglet_finance;
|
||
mail_html += "</p>";
|
||
|
||
mail_html += "<br><p>Julie Chaumard</p><p>Développeuse web de l'agence Parisweb.art</p>";
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: "projet@parisweb.art",
|
||
subject: mail_objet,
|
||
html: mail_html
|
||
};
|
||
|
||
transporter.sendMail(mailOptions, function(error, info){
|
||
if (error) {
|
||
logger.info("error" + error, { numsession: req.session.id });
|
||
} else {
|
||
logger.info("Email envoyé: " + info.response, { numsession: req.session.id });
|
||
}
|
||
});
|
||
logger.info("MAIL ENVOI APRES", { numsession: req.session.id });
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// FERMETURE DU PROGRAMME
|
||
await db_connection_promise.end();
|
||
logger.info("ON EST DANS LA FERMETURE", { numsession: req.session.id, label: filename});
|
||
return { nb_onglet_adherent, nb_onglet_prof, nb_onglet_stagiaires, nb_onglet_eleves,nb_onglet_adh_att, nb_onglet_finance };
|
||
|
||
|
||
|
||
} 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 });
|
||
await db_connection_promise.end(); //Fermeture connexion DB
|
||
return;
|
||
};
|
||
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// GOOGLE SHEET
|
||
// DÉCHARGEMENT DES DONNÉES DANS GOOGLE SHEET
|
||
// IL NE FAUT PAS DE LIGNE VIDES DANS LE GOOGLE SHEET
|
||
//// mysql2 | moment | google-spreadsheet
|
||
////
|
||
////
|
||
/////////////////////////////////////////////////
|
||
const maj_googlesheet = async function(req, res) {
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION maj_googlesheet (adhesion maj_googlesheet) ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
/////////////////////////////////////////////////
|
||
// CONNEXION GSHEET
|
||
await GS_adhesion.useServiceAccountAuth(GS_creds);
|
||
await GS_adhesion.loadInfo();
|
||
|
||
/////////////////////////////////////////////////
|
||
// VARIABLES
|
||
const GS_adhesion_adherent = GS_adhesion.sheetsByTitle['adherent'];
|
||
const GS_adhesion_professeurs = GS_adhesion.sheetsByTitle['professeurs'];
|
||
const GS_adhesion_professeurs_stagiaires = GS_adhesion.sheetsByTitle['professeurs_stagiaires'];
|
||
const GS_adhesion_eleves = GS_adhesion.sheetsByTitle['eleves'];
|
||
const GS_adhesion_finance = GS_adhesion.sheetsByTitle['finance'];
|
||
const GS_adhesion_adherent_en_attente = GS_adhesion.sheetsByTitle['adherent_en_attente'];
|
||
let sql, sql2, sql3, sql4, sql5, sql6, sql7, sql8, sql9, sql10, sql11, sql12;
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
|
||
/////////////////////////////////////////////////
|
||
// RÉCUPÉRATION DES DONNÉES DES TABLES DE LA BD
|
||
|
||
// CONNECTION DB
|
||
try {
|
||
const 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
|
||
});
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("Connected TO DATABASE test with mysql2 PREMISE !", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
// MAJ ONGLET adherent
|
||
sql = "SELECT adherent.date_maj, adherent.saison, adherent.identifiant, adherent.association_suzuki, adherent.adherent_type, adherent.adherent_nom, adherent.adherent_prenom, adherent.adherent_telephone_mobile, adherent.adherent_mail, adherent.adherent_adresse_rue, adherent.adherent_adresse_complement, adherent.adherent_adresse_codepostal, adherent.adherent_adresse_ville, adherent.adherent_adresse_pays, adherent.adherent_telephone_fixe, adherent.carte_envoi, adherent_finance.statut_paiement FROM adherent INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent.identifiant WHERE (adherent.gsheet = '' OR adherent.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
logger.info("REQUETE SQL - MAJ ONGLET adherent : " + sql , { numsession: req.session.id, label: filename});
|
||
|
||
const [results, fields] = await db_connection_promise.execute(sql); // Execution SQL
|
||
logger.info("REQUETE SQL - MAJ ONGLET adherent - Nombre de lignes = " + results.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_adherent_maj = results.length; // Pour afficher le résultat du nombre d'adhérents copiés dans la page web
|
||
|
||
if (results.length) {
|
||
for (let i = 0; i < results.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans les onglets correspondants
|
||
logger.info("avant const ajout_gs_adherents = await GS_adhesion_adherent.addRows" + results[i].identifiant, { numsession: req.session.id, label: filename});
|
||
const ajout_gs_adherents = await GS_adhesion_adherent.addRows(
|
||
[
|
||
{
|
||
'saison': results[i].saison,
|
||
'association': results[i].association_suzuki,
|
||
'identifiant': results[i].identifiant,
|
||
'adhesion_date': results[i].date_maj,
|
||
'adhesion_statut': results[i].statut_paiement,
|
||
'adherent_type': results[i].adherent_type,
|
||
'adherent_nom': results[i].adherent_nom,
|
||
'adherent_prenom': results[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results[i].adherent_telephone_mobile,
|
||
'adherent_mail': results[i].adherent_mail,
|
||
'adherent_adresse_rue': results[i].adherent_adresse_rue,
|
||
'adherent_adresse_complement': results[i].adherent_adresse_complement,
|
||
'adherent_adresse_codepostal': results[i].adherent_adresse_codepostal,
|
||
'adherent_adresse_ville': results[i].adherent_adresse_ville,
|
||
'adherent_adresse_pays': results[i].adherent_adresse_pays,
|
||
'adherent_telephone_fixe': results[i].adherent_telephone_fixe,
|
||
'carte_envoi': results[i].carte_envoi,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
logger.info("await delay(15000)", { numsession: req.session.id, label: filename});
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql2 = 'UPDATE adherent SET gsheet = "' + now + '" WHERE identifiant = "' + results[i].identifiant + '"';
|
||
const [results2, fields2] = await db_connection_promise.execute(sql2);
|
||
logger.info("UPDATE adherent SET gsheet Row ID changed : " + results2.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
// MAJ ONGLET professeurs
|
||
sql3 = "SELECT adherent_professeur.date_maj, adherent_professeur.saison, adherent_professeur.identifiant, adherent_professeur.association_suzuki, adherent_professeur.adherent_nom, adherent_professeur.adherent_prenom, adherent_professeur.adherent_mail, adherent_professeur.adherent_telephone_mobile, adherent_professeur.adherent_prof_instrument1, adherent_professeur.adherent_prof_instrument1_esa, adherent_professeur.adherent_prof_instrument2, adherent_professeur.adherent_prof_instrument2_esa, adherent_professeur.adherent_prof_sece, adherent_professeur.adherent_prof_ecole1, adherent_professeur.adherent_prof_ecole1_mail, adherent_professeur.adherent_prof_ecole1_web, adherent_professeur.adherent_prof_ecole1_adresse, adherent_professeur.adherent_prof_ecole1_cp, adherent_professeur.adherent_prof_ecole1_ville, adherent_professeur.adherent_prof_ecole2, adherent_professeur.adherent_prof_ecole2_mail, adherent_professeur.adherent_prof_ecole2_web, adherent_professeur.adherent_prof_ecole2_adresse, adherent_professeur.adherent_prof_ecole2_cp, adherent_professeur.adherent_prof_ecole2_ville, adherent_professeur.adherent_prof_ecole3, adherent_professeur.adherent_prof_ecole3_mail, adherent_professeur.adherent_prof_ecole3_web, adherent_professeur.adherent_prof_ecole3_adresse, adherent_professeur.adherent_prof_ecole3_cp, adherent_professeur.adherent_prof_ecole3_ville, adherent_finance.statut_paiement FROM adherent_professeur INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_professeur.identifiant WHERE (adherent_professeur.gsheet = '' OR adherent_professeur.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
logger.info("REQUETE SQL - ONGLET professeurs : " + sql3, { numsession: req.session.id, label: filename});
|
||
|
||
const [results3, fields3] = await db_connection_promise.execute(sql3);
|
||
logger.info("REQUETE SQL - ONGLET professeurs - Nombre de lignes = " + results3.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_prof_maj = results3.length; // Pour afficher le résultat du nombre de prof copiés dans la page web
|
||
|
||
if (results3.length) {
|
||
for (let i = 0; i < results3.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans les onglets correspondants
|
||
const ajout_gs_prof = await GS_adhesion_professeurs.addRows(
|
||
[
|
||
{
|
||
'saison': results3[i].saison,
|
||
'association': results3[i].association_suzuki,
|
||
'identifiant': results3[i].identifiant,
|
||
'adhesion_date': results3[i].date_maj,
|
||
'adherent_nom': results3[i].adherent_nom,
|
||
'adherent_prenom': results3[i].adherent_prenom,
|
||
'adherent_mail': results3[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results3[i].adherent_telephone_mobile,
|
||
'adherent_prof_instrument1': results3[i].adherent_prof_instrument1,
|
||
'adherent_prof_instrument1_esa': results3[i].adherent_prof_instrument1_esa,
|
||
'adherent_prof_instrument2': results3[i].adherent_prof_instrument2,
|
||
'adherent_prof_instrument2_esa': results3[i].adherent_prof_instrument2_esa,
|
||
'adherent_prof_sece': results3[i].adherent_prof_sece,
|
||
'adherent_prof_ecole1': results3[i].adherent_prof_ecole1,
|
||
'adherent_prof_ecole1_adresse': results3[i].adherent_prof_ecole1_adresse,
|
||
'adherent_prof_ecole1_cp': results3[i].adherent_prof_ecole1_cp,
|
||
'adherent_prof_ecole1_ville': results3[i].adherent_prof_ecole1_ville,
|
||
'adherent_prof_ecole1_mail': results3[i].adherent_prof_ecole1_mail,
|
||
'adherent_prof_ecole1_web': results3[i].adherent_prof_ecole1_web,
|
||
'adherent_prof_ecole2': results3[i].adherent_prof_ecole2,
|
||
'adherent_prof_ecole2_adresse': results3[i].adherent_prof_ecole2_adresse,
|
||
'adherent_prof_ecole2_cp': results3[i].adherent_prof_ecole2_cp,
|
||
'adherent_prof_ecole2_ville': results3[i].adherent_prof_ecole2_ville,
|
||
'adherent_prof_ecole2_mail': results3[i].adherent_prof_ecole2_mail,
|
||
'adherent_prof_ecole2_web': results3[i].adherent_prof_ecole2_web,
|
||
'adherent_prof_ecole3': results3[i].adherent_prof_ecole3,
|
||
'adherent_prof_ecole3_adresse': results3[i].adherent_prof_ecole3_adresse,
|
||
'adherent_prof_ecole3_cp': results3[i].adherent_prof_ecole3_cp,
|
||
'adherent_prof_ecole3_ville': results3[i].adherent_prof_ecole3_ville,
|
||
'adherent_prof_ecole3_mail': results3[i].adherent_prof_ecole3_mail,
|
||
'adherent_prof_ecole3_web': results3[i].adherent_prof_ecole3_web,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
console.log("await delay(15000)");
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql4 = 'UPDATE adherent_professeur SET gsheet = "' + now + '" WHERE identifiant = "' + results3[i].identifiant + '"';
|
||
const [results4, fields4] = await db_connection_promise.execute(sql4);
|
||
logger.info("UPDATE adherent SET gsheet Row ID changed : " + results4.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
// MAJ ONGLET professeurs_stagiaires
|
||
sql5 = "SELECT adherent_formation_prof.date_maj, adherent_formation_prof.saison, adherent_formation_prof.identifiant, adherent_formation_prof.association_suzuki, adherent_formation_prof.adherent_nom, adherent_formation_prof.adherent_prenom, adherent_formation_prof.adherent_mail, adherent_formation_prof.adherent_telephone_mobile, adherent_formation_prof.adherent_prof_stagiaire_instrument1, adherent_formation_prof.adherent_prof_stagiaire_instrument1_esa, adherent_formation_prof.adherent_prof_stagiaire_instrument1_prof, adherent_formation_prof.adherent_prof_stagiaire_instrument2, adherent_formation_prof.adherent_prof_stagiaire_instrument2_esa, adherent_formation_prof.adherent_prof_stagiaire_instrument2_prof, adherent_finance.statut_paiement FROM adherent_formation_prof INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_formation_prof.identifiant WHERE (adherent_formation_prof.gsheet = '' OR adherent_formation_prof.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
logger.info("REQUETE SQL - MAJ ONGLET professeurs_stagiaires : " + sql5, { numsession: req.session.id, label: filename});
|
||
|
||
const [results5, fields5] = await db_connection_promise.execute(sql5);
|
||
logger.info("REQUETE SQL - MAJ ONGLET professeurs_stagiaires - Nombre de lignes = " + results5.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_prof_form_maj = results5.length; // Pour afficher le résultat du nombre de prof en formation copiés dans la page web
|
||
|
||
if (results5.length) {
|
||
for (let i = 0; i < results5.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans les onglets correspondants
|
||
logger.info("i = " + i, { numsession: req.session.id, label: filename});
|
||
logger.info("results5[i].identifiant = " + results5[i].identifiant, { numsession: req.session.id, label: filename});
|
||
|
||
const ajout_gs_prof_formation = await GS_adhesion_professeurs_stagiaires.addRows(
|
||
[
|
||
{
|
||
'saison': results5[i].saison,
|
||
'association': results5[i].association_suzuki,
|
||
'identifiant': results5[i].identifiant,
|
||
'adhesion_date': results5[i].date_maj,
|
||
'adherent_nom': results5[i].adherent_nom,
|
||
'adherent_prenom': results5[i].adherent_prenom,
|
||
'adherent_mail': results5[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results5[i].adherent_telephone_mobile,
|
||
'adherent_prof_stagiaire_instrument1': results5[i].adherent_prof_stagiaire_instrument1,
|
||
'adherent_prof_stagiaire_instrument1_esa': results5[i].adherent_prof_stagiaire_instrument1_esa,
|
||
'adherent_prof_stagiaire_instrument1_prof': results5[i].adherent_prof_stagiaire_instrument1_prof,
|
||
'adherent_prof_stagiaire_instrument2': results5[i].adherent_prof_stagiaire_instrument2,
|
||
'adherent_prof_stagiaire_instrument2_esa': results5[i].adherent_prof_stagiaire_instrument2_esa,
|
||
'adherent_prof_stagiaire_instrument2_prof': results5[i].adherent_prof_stagiaire_instrument2_prof,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
console.log("await delay(15000)");
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql6 = 'UPDATE adherent_formation_prof SET gsheet = "' + now + '" WHERE identifiant = "' + results5[i].identifiant + '"';
|
||
const [results6, fields6] = await db_connection_promise.execute(sql6);
|
||
logger.info("UPDATE adherent_formation_prof SET gsheet Row ID changed : " + results6.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
// MAJ ONGLET élèves
|
||
sql7 = "SELECT adherent_eleve.date_maj, adherent_eleve.saison, adherent_eleve.identifiant, adherent_eleve.association_suzuki, adherent_eleve.eleve_nom, adherent_eleve.eleve_prenom, adherent_eleve.adherent_mail, adherent_eleve.adherent_telephone_mobile, adherent_eleve.eleve_datenaissance, adherent_eleve.eleve_instrumentA, adherent_eleve.eleve_instrumentA_cahier, adherent_eleve.eleve_instrumentA_prof, adherent_eleve.eleve_instrumentB, adherent_eleve.eleve_instrumentB_cahier, adherent_eleve.eleve_instrumentB_prof, adherent_eleve.eleve_droitimage, adherent_eleve.eleve_contactsup_nom, adherent_eleve.eleve_contactsup_prenom, adherent_eleve.eleve_contactsup_mail, adherent_finance.statut_paiement FROM adherent_eleve INNER JOIN adherent_finance ON adherent_finance.identifiant = adherent_eleve.identifiant WHERE (adherent_eleve.gsheet = '' OR adherent_eleve.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
logger.info("REQUETE SQL - MAJ ONGLET élèves : " + sql7, { numsession: req.session.id, label: filename});
|
||
|
||
const [results7, fields7] = await db_connection_promise.execute(sql7);
|
||
logger.info("REQUETE SQL - MAJ ONGLET élèves - Nombre de lignes = " + results7.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_eleve_maj = results7.length; // Pour afficher le résultat du nombre d'élèves copiés dans la page web
|
||
|
||
if (results7.length) {
|
||
for (let i = 0; i < results7.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans l'onglet GoogleS correspondant
|
||
const ajout_gs_eleves = await GS_adhesion_eleves.addRows(
|
||
[
|
||
{
|
||
'saison': results7[i].saison,
|
||
'association': results7[i].association_suzuki,
|
||
'identifiant': results7[i].identifiant,
|
||
'adhesion_date': results7[i].date_maj,
|
||
'eleve_nom': results7[i].eleve_nom,
|
||
'eleve_prenom': results7[i].eleve_prenom,
|
||
'eleve_datenaissance': results7[i].eleve_datenaissance,
|
||
'adherent_mail': results7[i].adherent_mail,
|
||
'adherent_telephone_mobile': "'" + results7[i].adherent_telephone_mobile,
|
||
'eleve_instrumentA': results7[i].eleve_instrumentA,
|
||
'eleve_instrumentA_cahier': results7[i].eleve_instrumentA_cahier,
|
||
'eleve_instrumentA_prof': results7[i].eleve_instrumentA_prof,
|
||
'eleve_instrumentB': results7[i].eleve_instrumentB,
|
||
'eleve_instrumentB_cahier': results7[i].eleve_instrumentB_cahier,
|
||
'eleve_instrumentB_prof': results7[i].eleve_instrumentB_prof,
|
||
'eleve_droitimage': results7[i].eleve_droitimage,
|
||
'eleve_contactsup_nom': results7[i].eleve_contactsup_nom,
|
||
'eleve_contactsup_prenom': results7[i].eleve_contactsup_prenom,
|
||
'eleve_contactsup_mail': results7[i].eleve_contactsup_mail,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
console.log("await delay(15000)");
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql8 = 'UPDATE adherent_eleve SET gsheet = "' + now + '" where identifiant = "' + results7[i].identifiant + '"';
|
||
const [results8, fields8] = await db_connection_promise.execute(sql8);
|
||
logger.info("UPDATE adherent_eleve SET gsheet Row ID changed : " + results8.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
// MAJ ONGLET finances
|
||
sql9 = "SELECT adherent_finance.date_maj, adherent_finance.saison, adherent_finance.identifiant, adherent_finance.association_suzuki, adherent_finance.adherent_type, adherent_finance.adherent_nom, adherent_finance.adherent_prenom, adherent_finance.adherent_telephone_mobile, adherent_finance.adherent_mail, adherent_finance.montant_adhesion, adherent_finance.montant_don, adherent_finance.montant_total, adherent_finance.paiement_mode, adherent_finance.date_paiement, adherent_finance.stripe_retour, adherent_finance.cheque_banque, adherent_finance.cheque_numero, adherent_finance.statut_paiement FROM adherent_finance WHERE (adherent_finance.gsheet = '' OR adherent_finance.gsheet IS NULL) AND adherent_finance.statut_paiement = 'paye'";
|
||
logger.info("REQUETE SQL - MAJ ONGLET finances : " + sql9, { numsession: req.session.id, label: filename});
|
||
|
||
const [results9, fields9] = await db_connection_promise.execute(sql9);
|
||
logger.info("REQUETE SQL - MAJ ONGLET finances - Nombre de lignes = " + results9.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_finance_maj = results9.length; // Pour afficher le résultat du nombre d'élèves copiés dans la page web
|
||
|
||
if (results9.length) {
|
||
for (let i = 0; i < results9.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans l'onglet GoogleS correspondant
|
||
const ajout_gs_finance = await GS_adhesion_finance.addRows(
|
||
[
|
||
{
|
||
'saison': results9[i].saison,
|
||
'association': results9[i].association_suzuki,
|
||
'identifiant': results9[i].identifiant,
|
||
'adhesion_date': results9[i].date_maj,
|
||
'adherent_type': results9[i].adherent_type,
|
||
'adherent_nom': results9[i].adherent_nom,
|
||
'adherent_prenom': results9[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results9[i].adherent_telephone_mobile,
|
||
'adherent_mail': results9[i].adherent_mail,
|
||
'montant_adhesion': results9[i].montant_adhesion,
|
||
'montant_don': results9[i].montant_don,
|
||
'montant_total': results9[i].montant_total,
|
||
'paiement_mode': results9[i].paiement_mode,
|
||
'date_paiement': results9[i].date_paiement,
|
||
'stripe_retour': results9[i].stripe_retour,
|
||
'cheque_banque': results9[i].cheque_banque,
|
||
'cheque_numero': results9[i].cheque_numero,
|
||
'statut_paiement': results9[i].statut_paiement,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
console.log("await delay(15000)");
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql10 = 'UPDATE adherent_finance SET gsheet = "' + now + '" WHERE identifiant = "' + results9[i].identifiant + '"';
|
||
const [results10, fields10] = await db_connection_promise.execute(sql10);
|
||
logger.info("UPDATE adherent_finance SET gsheet Row ID changed : " + results10.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
|
||
|
||
// MAJ ONGLET adherent_en_attente
|
||
sql11 = "SELECT adherent_finance.date_maj, adherent_finance.saison, adherent_finance.identifiant, adherent_finance.association_suzuki, adherent_finance.adherent_type, adherent_finance.adherent_nom, adherent_finance.adherent_prenom, adherent_finance.adherent_telephone_mobile, adherent_finance.adherent_mail, adherent_finance.montant_adhesion, adherent_finance.montant_don, adherent_finance.montant_total, adherent_finance.paiement_mode, adherent_finance.date_paiement, adherent_finance.stripe_retour, adherent_finance.cheque_banque, adherent_finance.cheque_numero, adherent_finance.statut_paiement FROM adherent_finance WHERE (adherent_finance.gs_adherent_att = '' OR adherent_finance.gs_adherent_att IS NULL) AND (adherent_finance.statut_paiement <> 'paye' OR adherent_finance.statut_paiement IS NULL OR adherent_finance.statut_paiement = '')";
|
||
logger.info("REQUETE SQL - MAJ ONGLET adherent_en_attente : " + sql11, { numsession: req.session.id, label: filename});
|
||
|
||
const [results11, fields11] = await db_connection_promise.execute(sql11);
|
||
logger.info("REQUETE SQL - MAJ ONGLET adherent_en_attente - Nombre de lignes = " + results11.length, { numsession: req.session.id, label: filename});
|
||
req.session.nb_adherent_en_attente_maj = results11.length; // Pour afficher le résultat du nombre d'élèves copiés dans la page web
|
||
|
||
if (results11.length) {
|
||
for (let i = 0; i < results11.length; i++ ) { // Pour chaque ligne trouvée dans la table, on l'écrit dans l'onglet GoogleS correspondant
|
||
const ajout_gs_adherent_en_attente = await GS_adhesion_adherent_en_attente.addRows(
|
||
[
|
||
{
|
||
'saison': results11[i].saison,
|
||
'association': results11[i].association_suzuki,
|
||
'identifiant': results11[i].identifiant,
|
||
'adhesion_date': results11[i].date_maj,
|
||
'adherent_type': results11[i].adherent_type,
|
||
'adherent_nom': results11[i].adherent_nom,
|
||
'adherent_prenom': results11[i].adherent_prenom,
|
||
'adherent_telephone_mobile': "'" + results11[i].adherent_telephone_mobile,
|
||
'adherent_mail': results11[i].adherent_mail,
|
||
'montant_adhesion': results11[i].montant_adhesion,
|
||
'montant_don': results11[i].montant_don,
|
||
'montant_total': results11[i].montant_total,
|
||
'paiement_mode': results11[i].paiement_mode,
|
||
'date_paiement': results11[i].date_paiement,
|
||
'stripe_retour': results11[i].stripe_retour,
|
||
'cheque_banque': results11[i].cheque_banque,
|
||
'cheque_numero': results11[i].cheque_numero,
|
||
'statut_paiement': results11[i].statut_paiement,
|
||
'date_maj_gsheet': now
|
||
}
|
||
]
|
||
);
|
||
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
|
||
await sleep.wait(5000);
|
||
console.log("await delay(15000)");
|
||
|
||
// TAGUER DB COMME DÉCHARGÉE DANS GOOGLE SHEET
|
||
sql12 = 'UPDATE adherent_finance SET gs_adherent_att = "' + now + '" WHERE identifiant = "' + results11[i].identifiant + '"';
|
||
const [results12, fields12] = await db_connection_promise.execute(sql12);
|
||
logger.info("UPDATE adherent_finance SET gs_adherent_att Row ID changed : " + results12.changedRows, { numsession: req.session.id, label: filename});
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// REDIRECTION DE FIN VERS LA PAGE DE RÉSULTATS
|
||
await db_connection_promise.end();
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
|
||
|
||
|
||
} 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.message = "Il y a un problème système, veuillez recommencer.";
|
||
|
||
await db_connection_promise.end(); //Fermeture connexion DB
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
};
|
||
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// METTRE À JOUR LE STATUS DE PAIEMENT
|
||
// MANUELLEMENT DANS LA BD
|
||
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
|
||
/////////////////////////////////////////////////
|
||
const maj_statut_paiement_manuel = async function(req, res) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION maj_statut_paiement_manuel (adhesion maj_googlesheet) ==========");
|
||
logger.info("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
let today = moment().format('L')
|
||
|
||
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DE LA SESSION EN COURS
|
||
req.session.maj_identifiant = req.body.maj_identifiant;
|
||
req.session.maj_mode_paiement = req.body.maj_mode_paiement;
|
||
req.session.maj_statut_paiement = req.body.maj_statut_paiement;
|
||
req.session.maj_montant_adhesion = req.body.maj_montant_adhesion;
|
||
req.session.maj_montant_don = req.body.maj_montant_don;
|
||
|
||
// CONNECTION DB
|
||
try {
|
||
const 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
|
||
});
|
||
|
||
if (req.session.maj_identifiant) { // On vérifie que l'identifiant a bien été saisie et conservé dans la session en cours
|
||
///////////////////////////////////////////////////////////////////////
|
||
// MISE À JOUR DU STATUT DU PAIEMENT
|
||
let sql = 'UPDATE adherent_finance SET date_maj = "' + now + '",statut_paiement = "' + req.session.maj_statut_paiement + '", paiement_mode = "' + req.session.maj_mode_paiement + '", montant_adhesion = "' + req.session.maj_montant_adhesion + '", montant_don = "' + req.session.maj_montant_don + '", gs_adherent_att = "" WHERE identifiant = "' + req.session.maj_identifiant + '"';
|
||
logger.info("REQUETE SQL - MISE À JOUR DU STATUT DU PAIEMENT : " + sql , { numsession: req.session.id, label: filename});
|
||
const [results, fields] = await db_connection_promise.execute(sql); // Execution SQL
|
||
logger.info("UPDATE - MISE À JOUR DU STATUT DU PAIEMENT - Row ID changed : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
// UPDATE À ÉTÉ FAIT (IDENTIFIANT BIEN TROUVÉ DANS BD)
|
||
if (results.changedRows > 0) {
|
||
|
||
// SI STATUT = PAYE => ON ENVOIE LA CARTE DÉFINITIVE
|
||
if (req.session.maj_mode_paiement = "paye") {
|
||
logger.info("Le statut est bien paye on peut envoyer la carte définitive : " + req.session.maj_mode_paiement , { numsession: req.session.id, label: filename});
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// RÉCUPÉRATION DES INFOS NÉCESSAIRES À L'ENVOIE DE LA CARTE ADHÉRENT (+ ÉVENTUEL DON)
|
||
let sql2 = 'SELECT adherent.adherent_type, adherent.adherent_adresse_rue, adherent.adherent_adresse_codepostal, adherent.adherent_adresse_ville, adherent.adherent_nom, adherent.adherent_prenom, adherent.adherent_mail FROM adherent WHERE adherent.identifiant = "' + req.session.maj_identifiant + '"';
|
||
logger.info("REQUETE SQL - RÉCUPÉRATION DES INFOS : " + sql2 , { numsession: req.session.id, label: filename});
|
||
const [results2, fields2] = await db_connection_promise.execute(sql2); // Execution SQL
|
||
logger.info("REQUETE SQL - RÉCUPÉRATION DES INFOS - Nombre de ligne : = " + results2.length, { numsession: req.session.id });
|
||
|
||
if (results2.length > 0) {
|
||
///////////////////////////////////////////////////////////////////////
|
||
// ENVOIE DE LA CARTE ADHÉRENT DÉFINITIVE
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// TABLE adherent - MISE À JOUR DU STATUT D'ENVOI DE LA CARTE
|
||
|
||
let sql3 = 'UPDATE adherent SET date_maj = "' + now + '", carte_envoi = "definitive" WHERE identifiant = "' + req.session.maj_identifiant + '"';
|
||
const [results3, fields3] = await db_connection_promise.execute(sql3);
|
||
logger.info("UPDATE adherent SET carte_envoi - Row ID changed : " + results3.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
// CONNECTION ADOBE API
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(20000)
|
||
.withReadTimeout(40000)
|
||
.build();
|
||
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
let adherent_type = results2[0].adherent_type;
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
profils = carte_adherent.profil(adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = ""};
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
// + JUSTIFICATIF DE DON
|
||
|
||
let OUTPUT;
|
||
let INPUT
|
||
|
||
// S'il y a un don
|
||
if (req.session.maj_montant_don > 0) {
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+req.session.maj_identifiant+"_adhesion_2526_paye_don_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_don.docx");
|
||
} else {
|
||
// S'il n'y a pas de don
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+req.session.maj_identifiant+"_adhesion_2526_paye_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent.docx");
|
||
}
|
||
|
||
let adresse = results2[0].adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += results2[0].adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += results2[0].adherent_adresse_ville;
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": req.session.maj_identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"mode_paiement": "carte bancaire",
|
||
"nom": results2[0].adherent_nom,
|
||
"prenom": results2[0].adherent_prenom,
|
||
"adresse": adresse,
|
||
"montant_don": req.session.maj_montant_don
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = req.session.maj_identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += req.session.maj_identifiant;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org) pour l'année 2025/2026. Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += req.session.maj_identifiant;
|
||
mail_html += ".</p>";
|
||
if (req.session.maj_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
await transporter.sendMail({
|
||
from: 'afps.inscription@gmail.com',
|
||
to: results2[0].adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}
|
||
]
|
||
});
|
||
|
||
console.log("MAIL ENVOI APRES");
|
||
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// REDIRECTION DE FIN VERS LA PAGE DE RÉSULTATS
|
||
await db_connection_promise.end();
|
||
req.session.message2 = 'Paiement mis à jour pour ' + req.session.maj_identifiant + '. Carte adhérent définitive envoyée avec justificatif de don le cas échéant';
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
|
||
} else {
|
||
logger.info("Infos Adhérent non trouvées dans la base de données.", { numsession: req.session.id });
|
||
req.session.message2 = "Infos Adhérent non trouvées dans la base de données.";
|
||
await db_connection_promise.end(); //Fermeture connexion DB
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
}
|
||
}
|
||
|
||
|
||
// SI STATUT = ON MET À JOUR GOOGLE SHEET
|
||
|
||
await db_connection_promise.end();
|
||
|
||
///////////////////////////////////////////////////////////////////////
|
||
// REDIRECTION DE FIN VERS LA PAGE DE RÉSULTATS
|
||
|
||
req.session.message2 = 'Paiement mis à jour pour ' + req.session.maj_identifiant;
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
|
||
} else {
|
||
logger.info("Adhérent non trouvé dans la base de données.", { numsession: req.session.id });
|
||
req.session.message2 = "Adhérent non trouvé dans la base de données.";
|
||
await db_connection_promise.end(); //Fermeture connexion DB
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
}
|
||
|
||
|
||
} else {
|
||
logger.info("Problème de session sur le navigateur.", { numsession: req.session.id });
|
||
req.session.message2 = "Problème de session sur le navigateur, veuillez recommencez.";
|
||
await db_connection_promise.end(); //Fermeture connexion DB
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
}
|
||
|
||
|
||
} 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.message2 = "Il y a un problème système, veuillez recommencer.";
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
};
|
||
|
||
|
||
}
|
||
|
||
/////////////////////////////////////////////////
|
||
// SUPPRIMER UN ADHERENT
|
||
// METTRE "supprime" à la place de son identifiant
|
||
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
|
||
/////////////////////////////////////////////////
|
||
const suppr_adherent = async function(req, res) {
|
||
logger.info("======================================");
|
||
logger.info("======== FUNCTION suppr_adherent (adhesion maj_googlesheet) ==========");
|
||
logger.info("======================================");
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
|
||
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DE LA SESSION EN COURS
|
||
req.session.supp_identifiant = req.body.supp_identifiant;
|
||
|
||
// CONNECTION DB
|
||
try {
|
||
const pool = mysql.createPool({
|
||
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,
|
||
rowsAsArray: true
|
||
});
|
||
const promisePool = pool.promise();
|
||
|
||
if (req.session.supp_identifiant) { // On vérifie que l'identifiant a bien été saisie et conservé dans la session en cours
|
||
|
||
// SUPPRESSION DE L'ADHÉRENT DANS LES TABLES
|
||
let sql = 'UPDATE adherent SET identifiant = "supprime", date_maj = ?, identifiant_supprime = ? WHERE identifiant = ?';
|
||
let sql2 = 'UPDATE adherent_eleve SET identifiant = "supprime", date_maj = ?, identifiant_supprime = ? WHERE identifiant = ?';
|
||
let sql3 = 'UPDATE adherent_finance SET identifiant = "supprime", date_maj = ?, identifiant_supprime = ? WHERE identifiant = ?';
|
||
let sql4 = 'UPDATE adherent_formation_prof SET identifiant = "supprime", date_maj = ?, identifiant_supprime = ? WHERE identifiant = ?';
|
||
let sql5 = 'UPDATE adherent_professeur SET identifiant = "supprime", date_maj = ?, identifiant_supprime = ? WHERE identifiant = ?';
|
||
let sql_values = [now, req.session.supp_identifiant, req.session.supp_identifiant];
|
||
|
||
|
||
logger.info("REQUETE SQL - SUPPRESSION DE L'ADHÉRENT : " + sql , { numsession: req.session.id, label: filename});
|
||
|
||
const [results, fields] = await promisePool.query(sql, sql_values); // Execution SQL
|
||
console.log("results = ", results);
|
||
logger.info("UPDATE - SUPPRESSION DE L'ADHÉRENT - Row ID changed 1 : " + results.changedRows, { numsession: req.session.id, label: filename});
|
||
const [results2, fields2] = await promisePool.query(sql2, sql_values); // Execution SQL
|
||
logger.info("UPDATE - SUPPRESSION DE L'ADHÉRENT - Row ID changed 2 : " + results2.changedRows, { numsession: req.session.id, label: filename});
|
||
const [results3, fields3] = await promisePool.query(sql3, sql_values); // Execution SQL
|
||
logger.info("UPDATE - SUPPRESSION DE L'ADHÉRENT - Row ID changed 3 : " + results3.changedRows, { numsession: req.session.id, label: filename});
|
||
const [results4, fields4] = await promisePool.query(sql4, sql_values); // Execution SQL
|
||
logger.info("UPDATE - SUPPRESSION DE L'ADHÉRENT - Row ID changed 4 : " + results4.changedRows, { numsession: req.session.id, label: filename});
|
||
const [results5, fields5] = await promisePool.query(sql5, sql_values); // Execution SQL
|
||
logger.info("UPDATE - SUPPRESSION DE L'ADHÉRENT - Row ID changed 5 : " + results5.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
await promisePool.end();
|
||
|
||
// UPDATE À ÉTÉ FAIT (IDENTIFIANT BIEN TROUVÉ DANS BD)
|
||
if (results.changedRows > 0) {
|
||
req.session.message3 = 'Identifiant supprimé : '+req.session.supp_identifiant;
|
||
} else {
|
||
req.session.message3 = 'Identifiant non trouvé : '+req.session.supp_identifiant;
|
||
}
|
||
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
} 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.message3 = "Il y a un problème système, veuillez recommencer.";
|
||
await promisePool.end();
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
};
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// ASSOCIATIONS LOCACLES
|
||
// IMPORTS ADHÉRENTS DANS DB
|
||
// CLIC SUR LE BOUTON "Valider" de la page /maj_googlesheet
|
||
/////////////////////////////////////////////////
|
||
const import_ass_loacles = async function(req, res) {
|
||
|
||
logger.info("======================================", { label: filename });
|
||
logger.info("======== FUNCTION import_ass_loacles (adhesion maj_googlesheet) ==========", { label: filename });
|
||
logger.info("======================================", { label: filename });
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// DATE
|
||
let now = moment().format("YYYY-MM-DD HH:mm:ss");
|
||
let now_pdf = moment().format("YYYY-MM-DDTHH-mm-ss");
|
||
|
||
/////////////////////////////////////////////////
|
||
// VARIABLE
|
||
let nb_import = 0;
|
||
|
||
/////////////////////////////////////////////////
|
||
// CONNEXION GSHEET
|
||
try {
|
||
await GS_adhesion.useServiceAccountAuth(GS_creds);
|
||
} catch (error) {
|
||
// Echec de connection à GS
|
||
logger.error("Il y a un problème avec la connection à Google Sheet. : " + error, { numsession: req.session.id });
|
||
req.session.message4 = "Il y a un problème système, veuillez recommencer.";
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
};
|
||
|
||
await GS_adhesion.loadInfo();
|
||
const GS_asso_locales = GS_adhesion.sheetsByTitle['adhesion_ass_locales'];
|
||
const GS_asso_locales_rows = await GS_asso_locales.getRows();
|
||
console.log("GS_asso_locales.rowCount = ", GS_asso_locales.rowCount);
|
||
console.log("GS_asso_locales_rows[0].identifiant = ", GS_asso_locales_rows[0].identifiant);
|
||
console.log("GS_asso_locales_rows[1].identifiant = ", GS_asso_locales_rows[1].identifiant);
|
||
|
||
// NOMBRE DE LIGNE DANS L'ONGLET adhesion_ass_locales
|
||
let compteur = GS_asso_locales.rowCount - 1; // POUR DÉCOMPTER LA LIGNE D'EN-TÊTE
|
||
console.log("compteur = ", compteur);
|
||
|
||
////////////////////////////////////////////////////
|
||
// CONNECTION ADOBE API
|
||
////////////////////////////////////////////////////
|
||
const credentials = PDFServicesSdk.Credentials
|
||
.servicePrincipalCredentialsBuilder()
|
||
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
|
||
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
|
||
.build();
|
||
//timeout Default: 10000
|
||
const clientConfig = PDFServicesSdk.ClientConfig
|
||
.clientConfigBuilder()
|
||
.withConnectTimeout(40000)
|
||
.withReadTimeout(80000)
|
||
.build();
|
||
// Create an ExecutionContext using credentials
|
||
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
|
||
|
||
/////////////////////////////////////////////////
|
||
// CONNECTION DB
|
||
try {
|
||
const pool = mysql.createPool({
|
||
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,
|
||
rowsAsArray: true
|
||
});
|
||
const promisePool = pool.promise();
|
||
|
||
/////////////////////////////////////////////////
|
||
// ON LIT TOUTES LES LIGNES DU GOOGLE SHEET LES UNES APRÈS LES AUTRES
|
||
for (i=0; i<compteur; i++) {
|
||
console.log("i = ", i);
|
||
console.log("GS_asso_locales_rows[i].date_export = ", GS_asso_locales_rows[i].date_export);
|
||
|
||
/////////////////////////////////////////////////
|
||
// SI LA LIGNE N'A PAS DÉJÀ ÉTÉ IMPORTÉE ON L'AJOUTE DANS LA BD
|
||
// SI DATE EXPORT EST VIDE
|
||
if (!GS_asso_locales_rows[i].date_export) {
|
||
console.log("GS_asso_locales_rows[i].identifiant NON IMPORTÉ = ", GS_asso_locales_rows[i].identifiant);
|
||
|
||
// AJOUT DANS LA TABLE adherent
|
||
let sql = 'INSERT INTO adherent (association_suzuki, saison, identifiant, date_maj, adherent_type, adherent_nom, adherent_prenom, adherent_adresse_rue, adherent_adresse_complement, adherent_adresse_codepostal, adherent_adresse_ville, adherent_adresse_pays, adherent_telephone_fixe, adherent_telephone_mobile, adherent_mail) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values = [GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, now, GS_asso_locales_rows[i].adherent_type, GS_asso_locales_rows[i].adherent_nom, GS_asso_locales_rows[i].adherent_prenom, GS_asso_locales_rows[i].adherent_adresse_rue, GS_asso_locales_rows[i].adherent_adresse_complement, GS_asso_locales_rows[i].adherent_adresse_codepostal, GS_asso_locales_rows[i].adherent_adresse_ville, GS_asso_locales_rows[i].adherent_adresse_pays, GS_asso_locales_rows[i].adherent_telephone_fixe, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail];
|
||
|
||
const [results, fields] = await promisePool.query(sql, sql_values); // Execution SQL
|
||
logger.info("INSERT - adherent - Row ID added : " + results.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
// AJOUT DANS LA TABLE adherent_finance
|
||
console.log("GS_asso_locales_rows[i].adherent_paiement_montant_don = ", GS_asso_locales_rows[i].adherent_paiement_montant_don);
|
||
if (!GS_asso_locales_rows[i].adherent_paiement_montant_don){GS_asso_locales_rows[i].adherent_paiement_montant_don = 0;}
|
||
|
||
let sql2 = 'INSERT INTO adherent_finance (date_maj, saison, identifiant, association_suzuki, adherent_type, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail, statut_paiement, paiement_mode, date_paiement, montant_adhesion, montant_don, montant_total) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values2 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_type, GS_asso_locales_rows[i].adherent_nom, GS_asso_locales_rows[i].adherent_prenom, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adhesion_paye, GS_asso_locales_rows[i].adherent_paiement_mode, now, GS_asso_locales_rows[i].adherent_paiement_montant_adhesion, GS_asso_locales_rows[i].adherent_paiement_montant_don, GS_asso_locales_rows[i].adherent_paiement_montant_total];
|
||
|
||
const [results2, fields2] = await promisePool.query(sql2, sql_values2); // Execution SQL
|
||
logger.info("INSERT - adherent_finance - Row ID added : " + results2.insertId, { numsession: req.session.id, label: filename});
|
||
|
||
// AJOUT DANS LA TABLE adherent_professeur
|
||
if (GS_asso_locales_rows[i].adherent_prof_instrument1) {
|
||
let sql3 = 'INSERT INTO adherent_professeur (date_maj, saison, identifiant, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail, adherent_prof_instrument1, adherent_prof_instrument1_esa, adherent_prof_instrument2, adherent_prof_instrument2_esa, adherent_prof_sece, adherent_prof_ecole1, adherent_prof_ecole1_adresse, adherent_prof_ecole1_cp, adherent_prof_ecole1_ville, adherent_prof_ecole1_mail, adherent_prof_ecole1_web, adherent_prof_ecole2, adherent_prof_ecole2_adresse, adherent_prof_ecole2_cp, adherent_prof_ecole2_ville, adherent_prof_ecole2_mail, adherent_prof_ecole2_web, adherent_prof_ecole3, adherent_prof_ecole3_adresse, adherent_prof_ecole3_cp, adherent_prof_ecole3_ville, adherent_prof_ecole3_mail, adherent_prof_ecole3_web) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values3 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_nom, GS_asso_locales_rows[i].adherent_prenom, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_prof_instrument1, GS_asso_locales_rows[i].adherent_prof_instrument1_esa, GS_asso_locales_rows[i].adherent_prof_instrument2, GS_asso_locales_rows[i].adherent_prof_instrument2_esa, GS_asso_locales_rows[i].adherent_prof_sece, GS_asso_locales_rows[i].adherent_prof_ecole1, GS_asso_locales_rows[i].adherent_prof_ecole1_adresse, GS_asso_locales_rows[i].adherent_prof_ecole1_cp, GS_asso_locales_rows[i].adherent_prof_ecole1_ville, GS_asso_locales_rows[i].adherent_prof_ecole1_mail, GS_asso_locales_rows[i].adherent_prof_ecole1_web, GS_asso_locales_rows[i].adherent_prof_ecole2, GS_asso_locales_rows[i].adherent_prof_ecole2_adresse, GS_asso_locales_rows[i].adherent_prof_ecole2_cp, GS_asso_locales_rows[i].adherent_prof_ecole2_ville, GS_asso_locales_rows[i].adherent_prof_ecole2_mail, GS_asso_locales_rows[i].adherent_prof_ecole2_web, GS_asso_locales_rows[i].adherent_prof_ecole3, GS_asso_locales_rows[i].adherent_prof_ecole3_adresse, GS_asso_locales_rows[i].adherent_prof_ecole3_cp, GS_asso_locales_rows[i].adherent_prof_ecole3_ville, GS_asso_locales_rows[i].adherent_prof_ecole3_mail, GS_asso_locales_rows[i].adherent_prof_ecole3_web];
|
||
|
||
const [results3, fields3] = await promisePool.query(sql3, sql_values3); // Execution SQL
|
||
logger.info("INSERT - adherent_professeur - Row ID added : " + results3.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
// AJOUT DANS LA TABLE adherent_formation_prof
|
||
if (GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument1) {
|
||
let sql4 = 'INSERT INTO adherent_formation_prof (date_maj, saison, identifiant, association_suzuki, adherent_nom, adherent_prenom, adherent_telephone_mobile, adherent_mail, adherent_prof_stagiaire_instrument1, adherent_prof_stagiaire_instrument1_prof, adherent_prof_stagiaire_instrument1_esa, adherent_prof_stagiaire_instrument2, adherent_prof_stagiaire_instrument2_prof, adherent_prof_stagiaire_instrument2_esa) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values4 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_nom, GS_asso_locales_rows[i].adherent_prenom, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument1, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument1_prof, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument1_esa, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument2, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument2_prof, GS_asso_locales_rows[i].adherent_prof_stagiaire_instrument2_esa];
|
||
|
||
const [results4, fields4] = await promisePool.query(sql4, sql_values4); // Execution SQL
|
||
logger.info("INSERT - adherent_formation_prof - Row ID added : " + results4.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
// AJOUT DANS LA TABLE adherent_eleve 1
|
||
if (GS_asso_locales_rows[i].adherent_eleve1_nom) {
|
||
let sql5 = 'INSERT INTO adherent_eleve (date_maj, saison, identifiant, association_suzuki, adherent_telephone_mobile, adherent_mail, eleve_nom, eleve_prenom, eleve_datenaissance, eleve_contactsup_nom, eleve_contactsup_prenom, eleve_contactsup_mail, eleve_instrumentA, eleve_instrumentA_prof, eleve_instrumentA_cahier, eleve_instrumentB, eleve_instrumentB_prof, eleve_instrumentB_cahier, eleve_droitimage) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values5 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_eleve1_nom, GS_asso_locales_rows[i].adherent_eleve1_prenom, GS_asso_locales_rows[i].adherent_eleve1_datenaissance, GS_asso_locales_rows[i].adherent_eleve1_contactsup_nom, GS_asso_locales_rows[i].adherent_eleve1_contactsup_prenom, GS_asso_locales_rows[i].adherent_eleve1_contactsup_mail, GS_asso_locales_rows[i].adherent_eleve1_InstrumentA, GS_asso_locales_rows[i].adherent_eleve1_InstrumentA_prof, GS_asso_locales_rows[i].adherent_eleve1_InstrumentA_cahier, GS_asso_locales_rows[i].adherent_eleve1_InstrumentB, GS_asso_locales_rows[i].adherent_eleve1_InstrumentB_prof, GS_asso_locales_rows[i].adherent_eleve1_InstrumentB_cahier, GS_asso_locales_rows[i].adherent_eleve1_droitimage];
|
||
|
||
const [results5, fields5] = await promisePool.query(sql5, sql_values5); // Execution SQL
|
||
logger.info("INSERT - adherent_eleve 1 - Row ID added : " + results5.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
// AJOUT DANS LA TABLE adherent_eleve 2
|
||
if (GS_asso_locales_rows[i].adherent_eleve2_nom) {
|
||
let sql6 = 'INSERT INTO adherent_eleve (date_maj, saison, identifiant, association_suzuki, adherent_telephone_mobile, adherent_mail, eleve_nom, eleve_prenom, eleve_datenaissance, eleve_contactsup_nom, eleve_contactsup_prenom, eleve_contactsup_mail, eleve_instrumentA, eleve_instrumentA_prof, eleve_instrumentA_cahier, eleve_instrumentB, eleve_instrumentB_prof, eleve_instrumentB_cahier, eleve_droitimage) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values6 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_eleve2_nom, GS_asso_locales_rows[i].adherent_eleve2_prenom, GS_asso_locales_rows[i].adherent_eleve2_datenaissance, GS_asso_locales_rows[i].adherent_eleve2_contactsup_nom, GS_asso_locales_rows[i].adherent_eleve2_contactsup_prenom, GS_asso_locales_rows[i].adherent_eleve2_contactsup_mail, GS_asso_locales_rows[i].adherent_eleve2_InstrumentA, GS_asso_locales_rows[i].adherent_eleve2_InstrumentA_prof, GS_asso_locales_rows[i].adherent_eleve2_InstrumentA_cahier, GS_asso_locales_rows[i].adherent_eleve2_InstrumentB, GS_asso_locales_rows[i].adherent_eleve2_InstrumentB_prof, GS_asso_locales_rows[i].adherent_eleve2_InstrumentB_cahier, GS_asso_locales_rows[i].adherent_eleve2_droitimage];
|
||
|
||
const [results6, fields6] = await promisePool.query(sql6, sql_values6); // Execution SQL
|
||
logger.info("INSERT - adherent_eleve 2 - Row ID added : " + results6.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
// AJOUT DANS LA TABLE adherent_eleve 3
|
||
if (GS_asso_locales_rows[i].adherent_eleve3_nom) {
|
||
let sql7 = 'INSERT INTO adherent_eleve (date_maj, saison, identifiant, association_suzuki, adherent_telephone_mobile, adherent_mail, eleve_nom, eleve_prenom, eleve_datenaissance, eleve_contactsup_nom, eleve_contactsup_prenom, eleve_contactsup_mail, eleve_instrumentA, eleve_instrumentA_prof, eleve_instrumentA_cahier, eleve_instrumentB, eleve_instrumentB_prof, eleve_instrumentB_cahier, eleve_droitimage) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values7 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_eleve3_nom, GS_asso_locales_rows[i].adherent_eleve3_prenom, GS_asso_locales_rows[i].adherent_eleve3_datenaissance, GS_asso_locales_rows[i].adherent_eleve3_contactsup_nom, GS_asso_locales_rows[i].adherent_eleve3_contactsup_prenom, GS_asso_locales_rows[i].adherent_eleve3_contactsup_mail, GS_asso_locales_rows[i].adherent_eleve3_InstrumentA, GS_asso_locales_rows[i].adherent_eleve3_InstrumentA_prof, GS_asso_locales_rows[i].adherent_eleve3_InstrumentA_cahier, GS_asso_locales_rows[i].adherent_eleve3_InstrumentB, GS_asso_locales_rows[i].adherent_eleve3_InstrumentB_prof, GS_asso_locales_rows[i].adherent_eleve3_InstrumentB_cahier, GS_asso_locales_rows[i].adherent_eleve3_droitimage];
|
||
|
||
const [results7, fields7] = await promisePool.query(sql7, sql_values7); // Execution SQL
|
||
logger.info("INSERT - adherent_eleve 3 - Row ID added : " + results7.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
// AJOUT DANS LA TABLE adherent_eleve 4
|
||
if (GS_asso_locales_rows[i].adherent_eleve4_nom) {
|
||
let sql8 = 'INSERT INTO adherent_eleve (date_maj, saison, identifiant, association_suzuki, adherent_telephone_mobile, adherent_mail, eleve_nom, eleve_prenom, eleve_datenaissance, eleve_contactsup_nom, eleve_contactsup_prenom, eleve_contactsup_mail, eleve_instrumentA, eleve_instrumentA_prof, eleve_instrumentA_cahier, eleve_instrumentB, eleve_instrumentB_prof, eleve_instrumentB_cahier, eleve_droitimage) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values8 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_eleve4_nom, GS_asso_locales_rows[i].adherent_eleve4_prenom, GS_asso_locales_rows[i].adherent_eleve4_datenaissance, GS_asso_locales_rows[i].adherent_eleve4_contactsup_nom, GS_asso_locales_rows[i].adherent_eleve4_contactsup_prenom, GS_asso_locales_rows[i].adherent_eleve4_contactsup_mail, GS_asso_locales_rows[i].adherent_eleve4_InstrumentA, GS_asso_locales_rows[i].adherent_eleve4_InstrumentA_prof, GS_asso_locales_rows[i].adherent_eleve4_InstrumentA_cahier, GS_asso_locales_rows[i].adherent_eleve4_InstrumentB, GS_asso_locales_rows[i].adherent_eleve4_InstrumentB_prof, GS_asso_locales_rows[i].adherent_eleve4_InstrumentB_cahier, GS_asso_locales_rows[i].adherent_eleve4_droitimage];
|
||
|
||
const [results8, fields8] = await promisePool.query(sql8, sql_values8); // Execution SQL
|
||
logger.info("INSERT - adherent_eleve 4 - Row ID added : " + results8.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
// AJOUT DANS LA TABLE adherent_eleve 5
|
||
if (GS_asso_locales_rows[i].adherent_eleve5_nom) {
|
||
let sql9 = 'INSERT INTO adherent_eleve (date_maj, saison, identifiant, association_suzuki, adherent_telephone_mobile, adherent_mail, eleve_nom, eleve_prenom, eleve_datenaissance, eleve_contactsup_nom, eleve_contactsup_prenom, eleve_contactsup_mail, eleve_instrumentA, eleve_instrumentA_prof, eleve_instrumentA_cahier, eleve_instrumentB, eleve_instrumentB_prof, eleve_instrumentB_cahier, eleve_droitimage) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)';
|
||
let sql_values9 = [now, GS_asso_locales_rows[i].saison, GS_asso_locales_rows[i].identifiant, GS_asso_locales_rows[i].association, GS_asso_locales_rows[i].adherent_telephone_mobile, GS_asso_locales_rows[i].adherent_mail, GS_asso_locales_rows[i].adherent_eleve5_nom, GS_asso_locales_rows[i].adherent_eleve5_prenom, GS_asso_locales_rows[i].adherent_eleve5_datenaissance, GS_asso_locales_rows[i].adherent_eleve5_contactsup_nom, GS_asso_locales_rows[i].adherent_eleve5_contactsup_prenom, GS_asso_locales_rows[i].adherent_eleve5_contactsup_mail, GS_asso_locales_rows[i].adherent_eleve5_InstrumentA, GS_asso_locales_rows[i].adherent_eleve5_InstrumentA_prof, GS_asso_locales_rows[i].adherent_eleve5_InstrumentA_cahier, GS_asso_locales_rows[i].adherent_eleve5_InstrumentB, GS_asso_locales_rows[i].adherent_eleve5_InstrumentB_prof, GS_asso_locales_rows[i].adherent_eleve5_InstrumentB_cahier, GS_asso_locales_rows[i].adherent_eleve5_droitimage];
|
||
|
||
const [results9, fields9] = await promisePool.query(sql9, sql_values9); // Execution SQL
|
||
logger.info("INSERT - adherent_eleve 5 - Row ID added : " + results9.insertId, { numsession: req.session.id, label: filename});
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHÉRENT
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ADOBE PDF : CRÉATION DE LA CARTE D'ADHÉSION EN PDF
|
||
// + JUSTIFICATIF DE DON
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// DÉFINIR LE PROFIL À AJOUTER DANS LA CARTE ADHÉRENT
|
||
// La fonction est dans le fichier /modules/adherent_type.js
|
||
profils = carte_adherent.profil(GS_asso_locales_rows[i].adherent_type);
|
||
profil1 = profils[0];
|
||
profil2 = profils[1];
|
||
profil3 = profils[2];
|
||
|
||
let OUTPUT;
|
||
let INPUT
|
||
|
||
// S'il y a un don
|
||
if (GS_asso_locales_rows[i].adherent_paiement_montant_don > 0) {
|
||
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+GS_asso_locales_rows[i].identifiant+"_adhesion_2526_paye_don_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent_don.docx");
|
||
|
||
} else {
|
||
|
||
// S'il n'y a pas de don
|
||
OUTPUT = path.resolve(__dirname, "../pdf/adhesion/2526/paye/")+"/"+GS_asso_locales_rows[i].identifiant+"_adhesion_2526_paye_"+now_pdf+".pdf";
|
||
INPUT = path.resolve(__dirname, "../pdf/template/carte_adherent.docx");
|
||
|
||
}
|
||
|
||
moment.locale('fr');
|
||
var date_formattee = moment().format('L')
|
||
var today = date_formattee;
|
||
|
||
var adresse = GS_asso_locales_rows[i].adherent_adresse_rue;
|
||
adresse += " ";
|
||
adresse += GS_asso_locales_rows[i].adherent_adresse_codepostal;
|
||
adresse += " ";
|
||
adresse += GS_asso_locales_rows[i].adherent_adresse_ville;
|
||
|
||
if (profil2 == undefined) {profil2 = " "};
|
||
if (profil3 == undefined) {profil3 = ""};
|
||
|
||
|
||
JSON_INPUT =
|
||
{
|
||
"date": today,
|
||
"identifiant": GS_asso_locales_rows[i].identifiant,
|
||
"profil1": profil1,
|
||
"profil2": profil2,
|
||
"profil3": profil3,
|
||
"mode_paiement": GS_asso_locales_rows[i].adherent_paiement_mode,
|
||
"nom": GS_asso_locales_rows[i].adherent_nom,
|
||
"prenom": GS_asso_locales_rows[i].adherent_prenom,
|
||
"adresse": adresse,
|
||
"montant_don": GS_asso_locales_rows[i].adherent_paiement_montant_don
|
||
};
|
||
|
||
const documentMerge = PDFServicesSdk.DocumentMerge,
|
||
documentMergeOptions = documentMerge.options,
|
||
adobe_options = new documentMergeOptions.DocumentMergeOptions(JSON_INPUT, documentMergeOptions.OutputFormat.PDF);
|
||
|
||
// Create a new operation instance using the options instance.
|
||
const documentMergeOperation = documentMerge.Operation.createNew(adobe_options);
|
||
|
||
// Set operation input document template from a source file.
|
||
const input = PDFServicesSdk.FileRef.createFromLocalFile(INPUT);
|
||
documentMergeOperation.setInput(input);
|
||
|
||
// Execute the operation and Save the result to the specified location.
|
||
await documentMergeOperation
|
||
.execute(executionContext)
|
||
.then(result => result.saveAsFile(OUTPUT).then(
|
||
)
|
||
)
|
||
.catch(err => {
|
||
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|
||
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
} else {
|
||
console.log('Exception encountered while executing ADOBE PDF', err);
|
||
}
|
||
});
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////////////
|
||
// ENVOIE CARTE ADHERENT + JUSTIFICATIF DE DON PAR MAIL
|
||
|
||
console.log("MAIL ENVOI AVANT");
|
||
var transporter = nodemailer.createTransport({
|
||
service: 'gmail',
|
||
auth: {
|
||
user: process.env.nodemailer_user,
|
||
pass: process.env.nodemailer_pass
|
||
}
|
||
});
|
||
|
||
var attachment_name = GS_asso_locales_rows[i].identifiant;
|
||
attachment_name += "_adhesion_2526_carteadherent.pdf";
|
||
var attachment_don_name = GS_asso_locales_rows[i].identifiant;
|
||
attachment_don_name += "_don.pdf";
|
||
|
||
var mail_objet = "ASSOCIATION FRANÇAISE POUR LA PÉDAGOGIE SUZUKI - ADHÉSION 2025/2026 - ";
|
||
mail_objet += GS_asso_locales_rows[i].identifiant;
|
||
mail_html = "<p>Cher adhérent,</p><p>Félicitations ! Vous êtes désormais membre de l’Association Française pour la Pédagogie Suzuki (http://www.afpedagogiesuzuki.fr) et de l’European Suzuki Association (https://europeansuzuki.org) pour l'année 2025/2026. Vous pouvez à ce titre participer à tous les événements Suzuki en France et dans le monde.</p><p>Vous trouverez en pièce jointe votre carte d'adhésion annuelle (valable du 1er septembre 2025 au 31 août 2026).</p><p>Votre identifiant (valable pour toute la famille) est ";
|
||
mail_html += GS_asso_locales_rows[i].identifiant;
|
||
mail_html += ".</p>";
|
||
if (GS_asso_locales_rows[i].adherent_paiement_montant_don > 0) {
|
||
mail_html += "<br><p>Nous vous remercions chaleureusement pour votre don. Votre justificatif est également joint à ce mail</p>";
|
||
}
|
||
mail_html += "<p><br>Nous vous remercions pour votre intérêt et vous souhaitons une très belle année en musique !</p><p>Association Française pour la pédagogie Suzuki<br>Chez Anne PAGES<br>30 rue des Tattes<br>74500 PUBLIER</p>";
|
||
|
||
|
||
var mailOptions = {
|
||
from: 'afps.inscription@gmail.com',
|
||
to: GS_asso_locales_rows[i].adherent_mail,
|
||
subject: mail_objet,
|
||
html: mail_html,
|
||
attachments: [{
|
||
filename: attachment_name,
|
||
path: OUTPUT
|
||
}
|
||
]
|
||
};
|
||
|
||
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");
|
||
|
||
|
||
// METTRE À JOUR LE STATUS D'ENVOI DE LA CARTE
|
||
let sql10 = 'UPDATE ';
|
||
sql10 += 'adherent';
|
||
sql10 += ' SET ';
|
||
sql10 += 'carte_envoi = "definitive"';
|
||
sql10 += ' WHERE identifiant = "' + GS_asso_locales_rows[i].identifiant + '"';
|
||
|
||
const [results10, fields10] = await promisePool.query(sql10); // Execution SQL
|
||
logger.info("adherent carte envoi Row ID changed : " + results10.changedRows, { numsession: req.session.id, label: filename});
|
||
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// GS - Taguer l'adhérent comme importé dans le tableau Google Sheet
|
||
GS_asso_locales_rows[i].date_export = now;
|
||
await GS_asso_locales_rows[i].save();
|
||
await sleep.wait(2000);
|
||
|
||
nb_import++;
|
||
}
|
||
}
|
||
/////////////////////////////////////////////////
|
||
// ON AFFICHE LE NOMBRE DE LIGNES IMPORTÉES
|
||
req.session.message4 = 'Adhérents associations locales importées : ' + nb_import;
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
|
||
} 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.message4 = "Il y a un problème système, veuillez recommencer. " + error;
|
||
//pool.end();
|
||
res.redirect('/adhesion/maj_googlesheet');
|
||
};
|
||
|
||
}
|
||
|
||
|
||
/////////////////////////////////////////////////
|
||
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
||
/////////////////////////////////////////////////
|
||
module.exports = {
|
||
checkMail,
|
||
post_form_adhesion,
|
||
post_form_montant_total,
|
||
post_paiement_cheque_save,
|
||
post_paiement_virement_save,
|
||
post_req_bank,
|
||
get_res_bank,
|
||
get_res_bank_annul,
|
||
post_cartemanuelle_verifmail_envoicarte,
|
||
post_cartes_manuelles_envoi,
|
||
maj_googlesheet,
|
||
maj_googlesheet_auto,
|
||
maj_statut_paiement_manuel,
|
||
suppr_adherent,
|
||
import_ass_loacles
|
||
}
|