/////////////////////////////////////////////////
// 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
    });
}

/////////////////////////////////////////////////
// 3 - PAGE INSCRIPTION FAMILLE
/////////////////////////////////////////////////
const inscription_spectateur_tous_recap = async function (req, res) {

    logger.info("======================================", { label: filename });
    logger.info("======== FUNCTION inscription_spectateur_tous_recap ==========", { label: filename });
    logger.info("======================================", { label: filename });

    // VARIABLES
    let cout_concertiste = 0;
    let cout_spectateur = 0;
    let montant_total = 0;
    let montant_commande = 0;
    let don = 0;
    let encadrant_compteur = 0;
    let piano_compteur = 0;
    let alto_compteur = 0;
    let flute_compteur = 0;
    let trompette_compteur = 0;
    let harpe_compteur = 0;
    let violon1_compteur = 0;
    let violon2_compteur = 0;
    let violoncelle1_compteur = 0;
    let violoncelle2_compteur = 0;


    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/erreur');
    };

    /////////////////////////////////////////////////
    // RÉCUPÉRER LES INFORMATIONS SAISIES DANS LE FORMULAIRE
    /////////////////////////////////////////////////

    req.session.identifiant = req.body.identifiant_adherent;
    req.session.association_suzuki = req.body.association_suzuki;
    req.session.adherent_nom = req.body.adherent_nom;
    req.session.adherent_prenom = req.body.adherent_prenom;
    req.session.adherent_telephone_mobile = req.body.adherent_telephone_mobile;
    req.session.adherent_mail = req.body.adherent_mail;

    if (req.body.spectateur_nb_place > 0) {
        req.session.spectateur_nb_place = req.body.spectateur_nb_place;
        cout_spectateur = 20 * req.session.spectateur_nb_place;
    } else {
        req.session.spectateur_nb_place = 0;
    }

    for (let toto = 1; toto < 5; toto++) {
        if (req.body["encadrant_"+toto+"_nom"]){
            req.session["encadrant_"+toto+"_type"] = req.body["encadrant_"+toto+"_type"];
            req.session["encadrant_"+toto+"_nom"] = req.body["encadrant_"+toto+"_nom"];
            req.session["encadrant_"+toto+"_prenom"] = req.body["encadrant_"+toto+"_prenom"];
            req.session["encadrant_"+toto+"_telephone_mobile"] = req.body["encadrant_"+toto+"_telephone_mobile"];
            req.session["encadrant_"+toto+"_mail"] = req.body["encadrant_"+toto+"_mail"];
            req.session["encadrant_"+toto+"_prof_instrument"] = req.body["encadrant_"+toto+"_prof_instrument"];
            encadrant_compteur++;
        } else {
            req.session["encadrant_"+toto+"_type"] = undefined;
            req.session["encadrant_"+toto+"_nom"] = undefined;
            req.session["encadrant_"+toto+"_prenom"] = undefined;
            req.session["encadrant_"+toto+"_telephone_mobile"] = undefined;
            req.session["encadrant_"+toto+"_mail"] = undefined;
            req.session["encadrant_"+toto+"_prof_instrument"] = undefined;
        }
    }

    if (req.body.don  && req.body.don > 0) {req.session.don = req.body.don;} else {req.session.don = 0;}
    
    
    /////////////////////////////////////////////////
    // RÉCAP TARIF
    /////////////////////////////////////////////////
    req.session.montant_commande = cout_spectateur;
    req.session.montant_total = cout_spectateur + parseInt(req.session.don);

    /////////////////////////////////////////////////
    // ENVOIE VERS PAGE SUIVANTE
    // SI PAS DE CONCERTISTE OU PAS D'ENCADRANT ON NE PEUT PAS AVANCER
    // Par ex si on n'inscrit que des spectateurs
    /////////////////////////////////////////////////

    if (req.session.montant_total > 0 || encadrant_compteur > 0) {
        req.session.deja_inscrit_concert = "oui";
        res.redirect('/concert/inscription_recap');
    } else {
        logger.info("montant de la commande inférieur à 0 OU 0 encadrant", { numsession: req.session.id, label: filename});
        req.session.err_mail_form_adhesion_1 = "Veuillez réserver au moins un élève concertiste ou une personne encadrante";
        affiche_page_identifier();
    }

}


/////////////////////////////////////////////////
// EXPORT DES MODULES POUR QU'ILS PUISSENT LUS PAR LES AUTRES FICHIERS JS
/////////////////////////////////////////////////

module.exports = {
    inscription_spectateur_tous_recap
}