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

@@ -1,7 +1,8 @@
function profil(adherent_type) {
let profil1, profil2, profil3 ;
console.log ("function profil.adherent_type: ", adherent_type)
console.log ("function profil.adherent_type: ", adherent_type);
adherent_type = (adherent_type || "").trim().toLowerCase();
if (adherent_type === "famille") {
profil1 = "Famille";
console.log("profil1 : ", profil1);
@@ -22,29 +23,30 @@ function profil(adherent_type) {
}
if (adherent_type === "prof_stagiaire") {
profil1 = "Professeur";
profil2 = "Professeur stagiaire";
profil2 = "Stagiaire ESA";
console.log("profil1 : ", profil1);
console.log("profil2 : ", profil2);
}
if (adherent_type === "prof_stagiaire_famille") {
profil1 = "Professeur";
profil2 = "Professeur stagiaire";
profil2 = "Stagiaire ESA";
profil3 = "Élève";
console.log("profil1 : ", profil1);
console.log("profil2 : ", profil2);
console.log("profil3 : ", profil3);
}
if (adherent_type === "prof_stagiaire1") {
profil1 = "Professeur stagiaire";
profil1 = "Stagiaire ESA";
console.log("profil1 : ", profil1);
}
if (adherent_type === "prof_stagiaire1_famille") {
profil1 = "Professeur stagiaire";
profil1 = "Stagiaire ESA";
profil2 = "Élève";
console.log("profil1 : ", profil1);
console.log("profil2 : ", profil2);
}
console.log("RETURN profil1 : ", profil1);
//return profil1;
return [profil1, profil2, profil3];

View File

@@ -0,0 +1,35 @@
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../../public/js/app/logger_adhesion");
const cron = require('node-cron');
const axios = require('axios');
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const path = require("path");
const filename = path.parse(__filename).base;
// URL de la page à lancer pour faire la mise à jour
const URL = "https://inscription.afpedagogiesuzuki.fr/adhesion/sync_prof_strapi";
// Fonction pour envoyer la requête POST
const maj_annuaire = async () => {
try {
const response = await axios.get(URL);
logger.info("annuaire maj avec succès: " + response.status, { numsession:"maj_annuaire", label: filename});
} catch (error) {
logger.error("Erreur lors de la maj de l'annuaire: " + error, { numsession:"maj_annuaire", label: filename});
}
};
// Définir la tâche cron : ici, elle s'exécute toutes les 2 minutes
// cron.schedule('*/2 * * * *', () => {
// Définir la tâche cron : ici, elle s'exécute à 4h du matin
// cron.schedule('0 4 * * *', () => {
cron.schedule('0 4 * * *', () => {
logger.info("MAJ annuaire cron lancée (modules/adhesion/maj_annuaire_prof_site_auto.js)", { numsession:"maj_annuaire", label: filename});
maj_annuaire();
});

View File

@@ -0,0 +1,36 @@
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../../public/js/app/logger_adhesion");
const path = require("path");
const cron = require('node-cron');
const axios = require('axios');
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;
// URL du webhook
//const WEBHOOK_URL = "http://localhost:8890/adhesion/maj_googlesheet_auto";
const WEBHOOK_URL = "https://inscription.afpedagogiesuzuki.fr/adhesion/maj_googlesheet_auto";
//const WEBHOOK_URL = process.env.adhesion_maj_gs_webhook_url; //cela ne fonctionne pas
// Fonction pour envoyer la requête POST
const envoyerWebhook = async () => {
try {
const response = await axios.get(WEBHOOK_URL, {});
logger.info("Webhook envoyé avec succès: " + response.status, { numsession:"webhook", label: filename});
} catch (error) {
logger.error("Erreur lors de l'envoi du webhook: " + error.message, { numsession:"webhook", label: filename});
}
};
// Définir la tâche cron : ici, elle s'exécute toutes les 2 minutes
// cron.schedule('*/2 * * * *', () => {
// Définir la tâche cron : ici, elle s'exécute à 3h du matin
// cron.schedule('0 3 * * *', () => {
cron.schedule('0 3 * * *', () => {
logger.info("Envoi du webhook (modules/adhesion/majgs_webhook.js) à l'heure prévue", { numsession:"webhook", label: filename});
envoyerWebhook();
});

View File

@@ -0,0 +1,47 @@
// recherche si identifiant saisie est bien dans la base de données des adhérents
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const path = require("path");
/////////////////////////////////////////////////
// APPELS DES MODULES PERSOS
/////////////////////////////////////////////////
// loggings
const logger = require("../../public/js/app/logger");
// DB
const { connect_DB_promise } = require('../db/databaseconnect');
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;
async function checkAdherent(sql) {
try {
const connection = await connect_DB_promise();
const [results_checkAdherent] = await connection.execute(sql);
await connection.end();
logger.info("checkAdherent results_checkAdherent.length = " + results_checkAdherent.length, {label: filename});
if (results_checkAdherent.length > 0) {
logger.info("Est adhérent", {label: filename});
return {
found: true,
results_checkAdherent: results_checkAdherent[0],
error: false
};
} else {
logger.info("N'est pas adhérent", {label: filename});
return { found: false, error: false };
}
} catch (error) {
// Echec de connection à la BD
logger.error("Il y a un problème avec la connection à la base de données! : " + error, {label: filename});
return { found: false, error: true };
}
}
module.exports = { checkAdherent };

View File

@@ -0,0 +1,19 @@
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const mysql_promise = require('mysql2/promise');
////////////////////////////////////////////////////
// CONNECTION DB
////////////////////////////////////////////////////
async function connect_DB_promise() {
return 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
});
}
module.exports = { connect_DB_promise };

33
modules/db/sqlqueries.js Normal file
View File

@@ -0,0 +1,33 @@
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const path = require("path");
/////////////////////////////////////////////////
// APPELS DES MODULES PERSOS
/////////////////////////////////////////////////
// loggings
const logger = require("../../public/js/app/logger");
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;
// Fonction qui construit de la requête SQL
function generateInsertSQL(tableName, data) {
// On récupère les noms des champs
const columns = Object.keys(data).join(', ');
// on ajoute autant de "?" que de champs
const placeholders = Object.keys(data).map(() => '?').join(', ');
return `INSERT INTO ${tableName} (${columns}) VALUES (${placeholders})`;
}
// Fonction qui récupère la liste des valeurs des champs
function extractValues (data) {
return Object.values(data);
}
module.exports = { generateInsertSQL, extractValues };

31
modules/envoie_mail.js Normal file
View File

@@ -0,0 +1,31 @@
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../public/js/app/logger");
// ENVOIE MAIL GOOGLE MAIL
const nodemailer = require('nodemailer');
function envoie_mail(mailOptions) {
logger.info("MAIL ENVOI AVANT");
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.nodemailer_user,
pass: process.env.nodemailer_pass
}
});
transporter.sendMail(mailOptions, function(error, info){
if (error) {
logger.info("error" + error);
} else {
logger.info("Email envoyé: " + info.response);
}
});
logger.info("MAIL ENVOI APRES");
}
module.exports = {
envoie_mail
}

62
modules/pdf.js Normal file
View File

@@ -0,0 +1,62 @@
/////////////////////////////////////////////////
// LOGGING
/////////////////////////////////////////////////
const logger = require("../public/js/app/logger_concert");
// ADOBE PDF
const PDFServicesSdk = require('@adobe/pdfservices-node-sdk');
////////////////////////////////////////////////////
// CONNECTION ADOBE API
////////////////////////////////////////////////////
async function pdfgo(OUTPUT, INPUT, JSON_INPUT) {
logger.info("AVANT CREATION DU PDF");
const credentials = PDFServicesSdk.Credentials
.servicePrincipalCredentialsBuilder()
.withClientId(process.env.PDF_SERVICES_CLIENT_ID)
.withClientSecret(process.env.PDF_SERVICES_CLIENT_SECRET)
.build();
const clientConfig = PDFServicesSdk.ClientConfig
.clientConfigBuilder()
.withConnectTimeout(20000)
.withReadTimeout(40000)
.build();
const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
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);
}
});
logger.info("APRES CREATION DU PDF");
}
module.exports = {
pdfgo
}

12
modules/sleep.js Normal file
View File

@@ -0,0 +1,12 @@
// POUR EVITER DE DÉPASSER LE QUOTA DE GOOGLE API REQUEST PER MINUTE
// ON ATTENDS QUELQUES SECONDES
const wait = function wait(milliseconds){
return new Promise(resolve => {
setTimeout(resolve, milliseconds);
console.log('Dans le sleep');
});
};
module.exports = {
wait
}

0
modules/stripe.js Normal file
View File

View File

@@ -0,0 +1,54 @@
// SI DATE LIMITE D'INSCRIPTION DÉPASSÉE ON vérifie que le code secret est bien ok
/////////////////////////////////////////////////
// APPELS DES MODULES
/////////////////////////////////////////////////
const path = require("path");
/////////////////////////////////////////////////
// APPELS DES MODULES PERSOS
/////////////////////////////////////////////////
// loggings
const logger = require("../public/js/app/logger_stagenat");
// DB
const { connect_DB_promise } = require('../modules/db/databaseconnect');
////////////////////////////////////////////////////
// FILE NAME
////////////////////////////////////////////////////
const filename = path.parse(__filename).base;
async function verif_codesecret(req, res) {
logger.info("/// DÉBUT FONCTION verif_codesecret", { numsession: req.session.id, label: filename});
//Connexion
let db_connection_promise = await connect_DB_promise();
if (req.session.datelimitedepass === "oui") {
logger.info("DATE LIMITE DEPASSÉE", { numsession: req.session.id, label: filename});
// Query
let sql_codesecret = 'select code, statut from code where code = "' + req.session.code_secret + '" AND statut = "actif"';
logger.info("sql_codesecret : " + sql_codesecret, { numsession: req.session.id, label: filename});
const [results_codesecret, fields] = await db_connection_promise.execute(sql_codesecret);
await db_connection_promise.end();
logger.info("results_codesecret.length : " + results_codesecret.length, { numsession: req.session.id, label: filename});
if (results_codesecret.length) {
// on peut continuer
req.session.onpeutcontinuer = "oui"
} else {
// CODE SECRET ERRONÉ
req.session.onpeutcontinuer = "non"
logger.info("Code secret erroné : "+req.session.code_secret, { numsession: req.session.id, label: filename});
// ON AFFICHE LA PAGE DE SAISIE DE L'IDENTIFIANT AVEC ERREUR "déjà inscrit"
req.session.err_mail_form_adhesion_1 = "Le code inscription <strong>" + req.session.code_secret + "</strong> est erroné.";
//res.redirect('/stagenational/identifier');
}
} else {
// on peut continuer
req.session.onpeutcontinuer = "oui"
}
logger.info("/// FIN FONCTION verif_codesecret", { numsession: req.session.id, label: filename});
}
module.exports = {
verif_codesecret
}