total_1ère

This commit is contained in:
2026-07-20 16:33:04 +02:00
parent dd49ba357b
commit d49cf88d99
275 changed files with 63607 additions and 5599 deletions

View File

@@ -0,0 +1,167 @@
/////////////////////////////////////////////////
// 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');
const axios = require('axios');
// Weasyprint
const weasyprint = require("htmltopdf-weasyprint");
/////////////////////////////////////////////////
// APPELS DES MODULES PERSOS
/////////////////////////////////////////////////
// loggings
const logger = require("../public/js/app/logger_wuzuki");
// Envoie mail
const envoie_mail = require("../modules/envoie_mail");
// DB
const { connect_DB_promise } = require('../modules/db/databaseconnect');
const { generateInsertSQL, extractValues } = require('../modules/db/sqlqueries');
/////////////////////////////////////////////////
// APPELS DES FONCTIONS
/////////////////////////////////////////////////
// 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_contact = new GoogleSpreadsheet(process.env.gsheet_contact);
/////////////////////////////////////////////////
// ENREGISTREMENT DES INFORMATIONS SAISIES
// ENVOIE MAIL VERS AFPS
// AJOUT DANS GOOGLE SHEET CONTACTS AFPS
/////////////////////////////////////////////////
const post_form_envoie_message = async function(req, res){
logger.info("======================================");
logger.info("======== FUNCTION post_form_envoie_message ==========");
logger.info("======================================");
moment.locale('fr');
let now = moment().format("DD/MM/YYYY");
/////////////////////////////////////////////////
// RÉCUPÉRATION DES DONNÉES DU FORMULAIRE DANS LA SESSION EN COURS et dans la tableau DATA
/////////////////////////////////////////////////
// VÉRIFIER SI CAPTCHA A BIEN ÉTÉ REMPLI
const token_captcha = req.body['g-recaptcha-response'];
if (!token_captcha) {
logger.info("Captcha non rempli", { numsession: req.session.id });
req.session.affiche_err_1 = 'Captcha non rempli.';
res.redirect('/wuzuki/envoie_message');
}
// un tableau : pour récupérer en même temps les informations saisies dans un tableau
let data = [];
// Boucle sur les noms des champs
// ajout des infos dans le tablea
['nom', 'prenom', 'mail', 'commentaire'].forEach(field => {
req.session[field] = req.body[field];
data.push({[field] : req.body[field]});
logger.info("#0 " + field + " = " + req.body[field], { numsession: req.session.id, label: filename});
});
console.log("data = ", data);
/////////////////////////////////////////////////
// ENVOIE MAIL AFPS
// AJOUT DANS GOOGLE SHEET CONTACTS AFPS
/////////////////////////////////////////////////
try {
// CAPTCHA V3
const response_captcha = await axios.post(`https://www.google.com/recaptcha/api/siteverify`, null, {
params: {
secret: process.env.g_captcha,
response: token_captcha
}
});
const response_captcha_data = response_captcha.data;
console.log("response_captcha_data = ", response_captcha_data.success);
logger.info("#0 response_captcha_data : SUCCESS = " + response_captcha_data.success + " / score = " + response_captcha_data.score, { numsession: req.session.id, label: filename});
// CAPTCHA V3
//if (response_captcha_data.success) {
if (response_captcha_data.success && response_captcha_data.score >= 0.8) {
/////////////////////////////////////////////////
// ENVOIE MAIL À L'AFPS
var mail_objet = `[WUZUKI] DEMANDE DE CONTACT DEPUIS LE SITE INTERNET - ${req.session.nom}`;
var mail_html = `<p>Bonjour,</p><p>Une personne a rempli le <strong>formulaire de contact du site Internet de l'AFPS.</strong><br>Voici ses coordonnées et son message :</p><br><p><span style='color: #E73058;'>NOM : </span>${req.session.nom}</p><p><span style='color: #E73058;'>PRÉNOM : </span>${req.session.prenom}</p><p><span style='color: #E73058;'>MAIL : </span>${req.session.mail}</p><p><span style='color: #E73058;'>MESSAGE :</span><br>${req.session.commentaire}</p><br><p>WUZUKI, programme du site Internet de l'AFPS</p>`;
var mailOptions = {
from: 'juliechaumard@gmail.com',
to: 'juliechaumard@gmail.com',
subject: mail_objet,
html: mail_html
};
envoie_mail.envoie_mail(mailOptions);
/////////////////////////////////////////////////
// AJOUT DE LA DEMANDE DE CONTACT DANS GOOGLE SHEET CONTACTS AFPS
await GS_contact.useServiceAccountAuth(GS_creds);
await GS_contact.loadInfo();
let GS_sheet_contact = GS_contact.sheetsByTitle['demande_contact'];
await GS_sheet_contact.addRows (
[
{
provenance: "site internet afps",
cta: 'bouton "Nous Contacter"',
date: now,
nom: req.session.nom,
prenom: req.session.prenom,
mail: req.session.mail,
message: req.session.commentaire,
mail_envoye: 'A afpedagogiesuzuki@gmail.com'
}
]
);
logger.info("AJOUT GOOGLESHEET FIN", { numsession: req.session.id, label: filename});
req.session.affiche_err_1 = "Votre message à bien été envoyé à l'Association Française pour la Pédagogie Suzuki.";
res.redirect('/wuzuki/envoie_message');
} else {
// Les informations saisies sont vides
logger.info("Il y a un problème avec la saisie des informations du formulaire", { numsession: req.session.id });
req.session.affiche_err_1 = 'Il y a un problème avec la saisie des informations du formulaire, veuillez recommencer.';
res.redirect('/wuzuki/envoie_message');
}
} catch (error) {
// Echec de connection à la BD
logger.error("Il y a un problème système post_form_envoie_message : " + error, { numsession: req.session.id });
req.session.affiche_err_1 = '"Il y a un problème système, veuillez recommencer, "' + error;
res.redirect('/wuzuki/envoie_message');
}
}
/////////////////////////////////////////////////
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
/////////////////////////////////////////////////
module.exports = {
post_form_envoie_message
}