371 lines
20 KiB
JavaScript
371 lines
20 KiB
JavaScript
/////////////////////////////////////////////////
|
|
// LOGGING
|
|
/////////////////////////////////////////////////
|
|
const logger = require("../../public/js/app/logger_concert");
|
|
|
|
/////////////////////////////////////////////////
|
|
// APPELS DES MODULES
|
|
/////////////////////////////////////////////////
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
// CALCUL DE DATE
|
|
const moment = require('moment');
|
|
// ENVOIE MAIL GOOGLE MAIL
|
|
const nodemailer = require('nodemailer');
|
|
// CONNECTION BASE DE DONNÉES
|
|
const mysql = require('mysql2');
|
|
const mysql_promise = require('mysql2/promise');
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// APPELS DES FONCTIONS
|
|
/////////////////////////////////////////////////
|
|
const sleep = require("./../../modules/sleep");
|
|
|
|
////////////////////////////////////////////////////
|
|
// FILE NAME
|
|
////////////////////////////////////////////////////
|
|
const filename = path.parse(__filename).base;
|
|
|
|
////////////////////////////////////////////////////
|
|
// CONNECTION DB
|
|
////////////////////////////////////////////////////
|
|
async function connect_DB_promise() {
|
|
return db_connection_promise = await mysql_promise.createConnection({
|
|
host: process.env.db_connection_host,
|
|
port: process.env.db_connection_port,
|
|
user: process.env.db_connection_user,
|
|
password: process.env.db_connection_password,
|
|
database: process.env.db_connection_database
|
|
});
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
// PAGE 1
|
|
// DOMAIN/concert/identifier
|
|
// 2. SAISIE DU L'IDENTIFIANT
|
|
// VÉRIFICATION SI L'IDENTIFIANT EST ADHÉRENT
|
|
/////////////////////////////////////////////////
|
|
|
|
const checkidentifiant = async function (req, res) {
|
|
|
|
/////////////////////////////////////////////////
|
|
// RECHERCHE DANS DB
|
|
// - SI IDENTIFIANT SAISIE EST DÉJÀ INSCRIT AU CONCERT
|
|
|
|
logger.info("======================================", { label: filename });
|
|
logger.info("======== FUNCTION checkidentifiant ==========", { label: filename });
|
|
logger.info("======================================", { label: filename });
|
|
|
|
|
|
function affiche_page_identifier() {
|
|
////////////////////////////////////////////////////
|
|
// AFFIHER LA PAGE /identifier
|
|
// AFFICHAGE DES ERREURS
|
|
// EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR :
|
|
// - SI IDENTIFIANT NON ADHÉRENT
|
|
// - SI RIEN SAISIE
|
|
////////////////////////////////////////////////////
|
|
|
|
if (req.session.err_mail_form_adhesion_1) {
|
|
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
|
|
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
|
|
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
|
|
// on supprime le contenu après affichage
|
|
req.session.err_mail_form_adhesion_1 = undefined;
|
|
req.session.err_mail_form_adhesion_2 = undefined;
|
|
req.session.err_mail_form_adhesion_3 = undefined;
|
|
}
|
|
res.render('concert/page_templates/inscrip_formulaire_identifier');
|
|
};
|
|
|
|
// VARIABLES
|
|
req.session.quota_spectateur = "nondepasse";
|
|
req.session.quota_concertiste = "nondepasse";
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// ON RÉCUPÈRE L'IDENTIFIANT SAISIE DANS LE FORMULAIRE
|
|
// ON REGARDE S'il à bien rempli l'identifiant et s'il a coché la case "je ne suis pas adhérent"
|
|
logger.info("identifiant saisi : " + req.body.identifiant, { numsession: req.session.id, label: filename});
|
|
|
|
if (req.body.identifiant && req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au concert, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
|
req.session.err_mail_form_adhesion_2 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
req.session.err_mail_form_adhesion_3 = '';
|
|
affiche_page_identifier();
|
|
}
|
|
if (!req.body.identifiant && req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au concert, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
|
req.session.err_mail_form_adhesion_2 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
req.session.err_mail_form_adhesion_3 = '';
|
|
affiche_page_identifier();
|
|
}
|
|
if (!req.body.identifiant && !req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Veuillez entrer votre identifiant AFPS<br>(Association Française pour la Pédagogie Suzuki).";
|
|
req.session.err_mail_form_adhesion_2 = "Si vous n'êtes pas encore adhérent, vous pouvez adhérer en";
|
|
req.session.err_mail_form_adhesion_3 = '<a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
affiche_page_identifier();
|
|
}
|
|
if (req.body.identifiant && !req.body.check_nonadherent) {
|
|
// SAISIE OK
|
|
req.session.identifiant = req.body.identifiant;
|
|
|
|
// EST-CE QUE L'IDENTIFIANT SAISI EST DÉJA INSCRIT AU CONCERT TABLE ca_adherent
|
|
|
|
// CONNECTION DB PROMISE
|
|
try {
|
|
//Connexion
|
|
let db_connection_promise = await connect_DB_promise();
|
|
|
|
//Query
|
|
let sql = 'select identifiant, association_suzuki, adherent_mail, commande_nb_spectateur, commande_nb_concertiste from ca_adherent where identifiant = "' + req.session.identifiant + '"';
|
|
const [results, fields] = await db_connection_promise.execute(sql);
|
|
logger.info("Row ca_adherent : " + results.length, { numsession: req.session.id, label: filename});
|
|
|
|
if (results.length) {
|
|
// DÉJA INSCRIT AU CONCERT
|
|
logger.info("Identifant déjà inscrit au concert.", { numsession: req.session.id, label: filename});
|
|
|
|
// TAG ADHÉRENT DÉJÀ INSCRIT
|
|
req.session.deja_inscrit_concert = "oui";
|
|
|
|
// ON REGARDE LE NOMBRE DE PARTICIPANTS DÉJÀ INSCRITS
|
|
if (results[0].commande_nb_spectateur > 2){
|
|
req.session.quota_spectateur = "depasse";
|
|
}
|
|
|
|
if (results[0].commande_nb_concertiste > 3){
|
|
req.session.quota_concertiste = "depasse";
|
|
}
|
|
logger.info("req.session.quota_spectateur = " + req.session.quota_spectateur , { numsession: req.session.id, label: filename});
|
|
logger.info("req.session.quota_concertiste = " + req.session.quota_concertiste , { numsession: req.session.id, label: filename});
|
|
|
|
// On calcule le nombre de places concertistes restantes (tous instruments)
|
|
req.session.tout_instrument_nb_restantes = req.session.piano_nb_restantes + req.session.alto_nb_restantes + req.session.flute_nb_restantes + req.session.trompette_nb_restantes + req.session.harpe_nb_restantes + req.session.violon1_nb_restantes + req.session.violon2_nb_restantes + req.session.violoncelle1_nb_restantes + req.session.violoncelle2_nb_restantes;
|
|
logger.info("NOMBRE DE PLACES TOUT INSTRUMENTS (session) = " + req.session.tout_instrument_nb_restantes, { numsession: req.session.id, label: filename});
|
|
|
|
// On récupère le nom de l'association Suzuki et le mail de l'adhérent
|
|
req.session.adherent_mail = results[0].adherent_mail;
|
|
logger.info("req.session.adherent_mail = " + req.session.adherent_mail , { numsession: req.session.id, label: filename});
|
|
req.session.association_suzuki = results[0].association_suzuki;
|
|
// ON AFFICHE LA PAGE DU FORMULAIRE DE SAISIE DES INFORMATIONS DE L'INSCRIPTION
|
|
res.redirect('/concert/inscription_famille');
|
|
|
|
//req.session.err_mail_form_adhesion_1 = "Vous êtes déjà inscrit au Concert national Unesco 2024.";
|
|
//affiche_page_identifier();
|
|
|
|
|
|
} else {
|
|
// NON INSCRIT AU CONCERT
|
|
logger.info("Identifant non inscrit au concert.", { numsession: req.session.id, label: filename});
|
|
// TAG ADHÉRENT DÉJÀ INSCRIT
|
|
req.session.deja_inscrit_concert = "non";
|
|
|
|
/////////////////////////////////////////////////
|
|
// RECHERCHE SI PERSONNE EST ADHÉRENTE À L'AFPS
|
|
// DANS BD ADHESION adherent
|
|
|
|
sql = 'select identifiant,association_suzuki from adherent where identifiant = "' + req.session.identifiant + '"';
|
|
//Query
|
|
const [results, fields] = await db_connection_promise.execute(sql);
|
|
logger.info("Row adherent : " + results.length, { numsession: req.session.id, label: filename});
|
|
if (results.length === 1) {
|
|
// LA PERSONNE EST BIEN ADHÉRENTE
|
|
logger.info("identifiant BD adhérent : " + results[0].identifiant, { numsession: req.session.id, label: filename});
|
|
req.session.association_suzuki = results[0].association_suzuki;
|
|
// On calcule le nombre de places concertistes restantes (tous instruments)
|
|
req.session.tout_instrument_nb_restantes = req.session.piano_nb_restantes + req.session.alto_nb_restantes + req.session.flute_nb_restantes + req.session.trompette_nb_restantes + req.session.harpe_nb_restantes + req.session.violon1_nb_restantes + req.session.violon2_nb_restantes + req.session.violoncelle1_nb_restantes + req.session.violoncelle2_nb_restantes;
|
|
logger.info("NOMBRE DE PLACES TOUT INSTRUMENTS (session) = " + req.session.tout_instrument_nb_restantes, { numsession: req.session.id, label: filename});
|
|
// ON AFFICHE LA PAGE DU FORMULAIRE DE SAISIE DES INFORMATIONS DE L'INSCRIPTION
|
|
res.redirect('/concert/inscription_famille');
|
|
} else {
|
|
// LA PERSONNE N'EST PAS ADHÉRENTE
|
|
logger.info("Identifant NON adhérent.", { numsession: req.session.id, label: filename});
|
|
req.session.err_mail_form_adhesion_1 = "Cet identifiant N'EST PAS adhérent de l'Association Française pour la Pédagogie Suzuki (AFPS) pour 2025/2026.";
|
|
req.session.err_mail_form_adhesion_2 = "Vous devez adhérer avant de vous inscrire au concert.";
|
|
req.session.err_mail_form_adhesion_3 = 'Pour adhérer à l\'Association Française pour la Pédagogie Suzuki <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
affiche_page_identifier();
|
|
}
|
|
}
|
|
|
|
} catch (error) {
|
|
// Echec de connection à la BD
|
|
logger.error("Il y a un problème avec la connection à la base de données! : " + error, { numsession: req.session.id });
|
|
req.session.err_mail_form_adhesion_1 = "Il y a un problème système connexion base de données, veuillez recommencer.";
|
|
//await db_connection_promise.end();
|
|
affiche_page_identifier();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
//
|
|
// !!!! ACHAT UNIQUEMENT DE SPECTATEUR
|
|
//
|
|
// PAGE 1
|
|
// DOMAIN/concert/identifier
|
|
// 2. SAISIE DU L'IDENTIFIANT
|
|
// VÉRIFICATION SI L'IDENTIFIANT EST ADHÉRENT
|
|
/////////////////////////////////////////////////
|
|
|
|
const checkidentifiant_spectateur = async function (req, res) {
|
|
|
|
/////////////////////////////////////////////////
|
|
// RECHERCHE DANS DB
|
|
// - SI IDENTIFIANT SAISIE EST DÉJÀ INSCRIT AU CONCERT
|
|
|
|
logger.info("======================================", { label: filename });
|
|
logger.info("======== FUNCTION checkidentifiant ==========", { label: filename });
|
|
logger.info("======================================", { label: filename });
|
|
|
|
|
|
function affiche_page_identifier() {
|
|
////////////////////////////////////////////////////
|
|
// AFFIHER LA PAGE /identifier
|
|
// AFFICHAGE DES ERREURS
|
|
// EN CAS DE RETOUR SUR LA PAGE AVEC ERREUR :
|
|
// - SI IDENTIFIANT NON ADHÉRENT
|
|
// - SI RIEN SAISIE
|
|
////////////////////////////////////////////////////
|
|
|
|
if (req.session.err_mail_form_adhesion_1) {
|
|
res.locals.err_mail_form_adhesion_1 = req.session.err_mail_form_adhesion_1;
|
|
res.locals.err_mail_form_adhesion_2 = req.session.err_mail_form_adhesion_2;
|
|
res.locals.err_mail_form_adhesion_3 = req.session.err_mail_form_adhesion_3;
|
|
// on supprime le contenu après affichage
|
|
req.session.err_mail_form_adhesion_1 = undefined;
|
|
req.session.err_mail_form_adhesion_2 = undefined;
|
|
req.session.err_mail_form_adhesion_3 = undefined;
|
|
}
|
|
res.render('concert/page_templates/inscrip_formulaire_identifier');
|
|
};
|
|
|
|
// VARIABLES
|
|
req.session.quota_spectateur = "nondepasse";
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// ON RÉCUPÈRE L'IDENTIFIANT SAISIE DANS LE FORMULAIRE
|
|
// ON REGARDE S'il à bien rempli l'identifiant et/ou s'il a coché la case "je ne suis pas adhérent"
|
|
logger.info("identifiant saisi : " + req.body.identifiant, { numsession: req.session.id, label: filename});
|
|
|
|
if (req.body.identifiant && req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au concert, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
|
req.session.err_mail_form_adhesion_2 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
req.session.err_mail_form_adhesion_3 = '';
|
|
affiche_page_identifier();
|
|
}
|
|
if (!req.body.identifiant && req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Pour vous inscrire au concert, vous devez au préalable être adhérent à l'Association Française pour la Pédagogie Suzuki (AFPS).";
|
|
req.session.err_mail_form_adhesion_2 = 'Pour adhérer <a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
req.session.err_mail_form_adhesion_3 = '';
|
|
affiche_page_identifier();
|
|
}
|
|
if (!req.body.identifiant && !req.body.check_nonadherent) {
|
|
req.session.err_mail_form_adhesion_1 = "Veuillez entrer votre identifiant AFPS<br>(Association Française pour la Pédagogie Suzuki).";
|
|
req.session.err_mail_form_adhesion_2 = "Si vous n'êtes pas encore adhérent, vous pouvez adhérer en";
|
|
req.session.err_mail_form_adhesion_3 = '<a target="_blank" href="https://www.inscription.afpedagogiesuzuki.fr/adhesion/"><span class="souligne">Cliquez ici</span></a>';
|
|
affiche_page_identifier();
|
|
}
|
|
if (req.body.identifiant && !req.body.check_nonadherent) {
|
|
// SAISIE OK
|
|
req.session.identifiant = req.body.identifiant;
|
|
|
|
// EST-CE QUE L'IDENTIFIANT SAISI EST DÉJA INSCRIT AU CONCERT TABLE ca_adherent
|
|
|
|
// CONNECTION DB PROMISE
|
|
try {
|
|
//Connexion
|
|
let db_connection_promise = await connect_DB_promise();
|
|
|
|
//Query
|
|
let sql = 'select identifiant, association_suzuki, adherent_mail, commande_nb_spectateur, commande_nb_concertiste from ca_adherent where identifiant = "' + req.session.identifiant + '"';
|
|
const [results, fields] = await db_connection_promise.execute(sql);
|
|
logger.info("Row ca_adherent : " + results.length, { numsession: req.session.id, label: filename});
|
|
|
|
if (results.length) {
|
|
// DÉJA INSCRIT AU CONCERT
|
|
logger.info("Identifant déjà inscrit au concert.", { numsession: req.session.id, label: filename});
|
|
|
|
// TAG ADHÉRENT DÉJÀ INSCRIT
|
|
req.session.deja_inscrit_concert = "oui";
|
|
|
|
// QUOTA GÉNÉRAL DE PLACES TOTALES
|
|
let sql_ca_decompte_place = 'select spectateur_commandes from ca_decompte_place';
|
|
const [results_ca_decompte_place, fields_ca_decompte_place] = await db_connection_promise.execute(sql_ca_decompte_place);
|
|
logger.info("SQL nombre de places spectateurs déjà commandées : " + results_ca_decompte_place[0].spectateur_commandes, { numsession: req.session.id, label: filename});
|
|
// ON REGARDE LE NOMBRE DE SPECTATEURS DÉJÀ INSCRITS
|
|
|
|
// QUOTA GÉNÉRAL ATTEINT
|
|
if (results_ca_decompte_place[0].spectateur_commandes >= process.env.spectateur_nb_places){
|
|
// QUOTA DÉPASSÉ
|
|
logger.info("Quota spectateur TOTAL dépassé : " + results[0].commande_nb_spectateur, { numsession: req.session.id, label: filename});
|
|
req.session.err_mail_form_adhesion_1 = "Le nombre total de spectateurs a été atteint.";
|
|
req.session.err_mail_form_adhesion_2 = "Vous ne pouvez plus commander de places";
|
|
affiche_page_identifier();
|
|
}
|
|
|
|
// NOMBRE DE PLACES TOTALES RESTANTES
|
|
req.session.quota_total_spectateur = process.env.spectateur_nb_places - results_ca_decompte_place[0].spectateur_commandes;
|
|
logger.info("NOMBRE DE PLACES TOTALES RESTANTES : " + req.session.quota_total_spectateur, { numsession: req.session.id, label: filename});
|
|
|
|
// QUOTA DE 12 PLACES PAR ADHÉRENT
|
|
// ON REGARDE LE NOMBRE DE SPECTATEURS DÉJÀ INSCRITS
|
|
if (results[0].commande_nb_spectateur > 12){
|
|
req.session.quota_spectateur = "depasse";
|
|
// QUOTA DÉPASSÉ
|
|
logger.info("Quota spectateur dépassé : " + results[0].commande_nb_spectateur, { numsession: req.session.id, label: filename});
|
|
req.session.err_mail_form_adhesion_1 = "Cet identifiant "+req.session.identifiant+" a dépassé le quota du nombre de place spectateurs par adhérent";
|
|
req.session.err_mail_form_adhesion_2 = "Vous avez déjà "+results[0].commande_nb_spectateur+" places spectateurs";
|
|
affiche_page_identifier();
|
|
}
|
|
|
|
logger.info("Quota spectateur non dépassé : " + results[0].commande_nb_spectateur, { numsession: req.session.id, label: filename});
|
|
logger.info("req.session.quota_spectateur = " + req.session.quota_spectateur , { numsession: req.session.id, label: filename});
|
|
req.session.spectateur_nb_restantes = 12 - results[0].commande_nb_spectateur;
|
|
|
|
// On récupère le mail de l'adhérent
|
|
req.session.adherent_mail = results[0].adherent_mail;
|
|
|
|
// ON AFFICHE LA PAGE D'ACHAT DES PLACES SPECTATEURS
|
|
|
|
res.redirect('/concert/inscription_spectateur');
|
|
|
|
//req.session.err_mail_form_adhesion_1 = "Vous êtes déjà inscrit au Concert national Unesco 2024.";
|
|
//affiche_page_identifier();
|
|
|
|
|
|
} else {
|
|
// NON INSCRIT AU CONCERT
|
|
logger.info("Identifant non inscrit au concert.", { numsession: req.session.id, label: filename});
|
|
req.session.deja_inscrit_concert = "non";
|
|
req.session.err_mail_form_adhesion_1 = "Cet identifiant "+req.session.identifiant+" N'EST PAS inscrit au concert";
|
|
req.session.err_mail_form_adhesion_2 = "Vous ne pouvez pas acheter de place spectateur.";
|
|
affiche_page_identifier();
|
|
}
|
|
|
|
} 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, label: filename });
|
|
req.session.err_mail_form_adhesion_1 = "Il y a un problème système connexion base de données, veuillez recommencer.";
|
|
//await db_connection_promise.end();
|
|
affiche_page_identifier();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////
|
|
// EXPORT DES MODULES POUR QU'ILS PUISSENT LUS PAR LES AUTRES FICHIERS JS
|
|
/////////////////////////////////////////////////
|
|
|
|
module.exports = {
|
|
checkidentifiant,
|
|
checkidentifiant_spectateur
|
|
}
|