total_1ère
This commit is contained in:
151
controllers/wuzukiController.js
Normal file
151
controllers/wuzukiController.js
Normal file
@@ -0,0 +1,151 @@
|
||||
/////////////////////////////////////////////////
|
||||
// APPELS DES MODULES
|
||||
/////////////////////////////////////////////////
|
||||
const moment = require('moment');
|
||||
const path = require("path");
|
||||
const axios = require('axios');
|
||||
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// 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');
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
// 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.';
|
||||
return 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 tableau
|
||||
['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 && 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: 'afps.inscription@gmail.com',
|
||||
to: 'afpedagogiesuzuki@gmail.com',
|
||||
cc: 'supplies@juliechaumard.paris',
|
||||
subject: mail_objet,
|
||||
html: mail_html
|
||||
};
|
||||
await 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.";
|
||||
return 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.';
|
||||
return 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;
|
||||
return res.redirect('/wuzuki/envoie_message');
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
||||
/////////////////////////////////////////////////
|
||||
module.exports = {
|
||||
post_form_envoie_message
|
||||
}
|
||||
Reference in New Issue
Block a user