module.exports = {
    friendlyName: "Find",

    description: "Find Eleves Classe.",

    inputs: {

        trimSem: {
            type: "string",
            require: true
        },
        anneeScolaire: {
            type: "string",
            require: true
        },
        codeClasse: {
            type: "string",
            require: true
        },
        matricule: {
            type: "string",
            require: true
        },

    },

    exits: {
        notFound: {
            statusCode: 404
        },
    },

    fn: async function (inputs, exits) {
        const { id, user } = this.req.token;
        //console.log("ID", id, user.login, user.typeUser, user.codeEcole)
        console.log("inputs", inputs)
        // VERIFICATION DU CODE ECOLE
        if (user.codeEcole === '' || user.codeEcole === null || user.codeEcole === undefined) {
            return exits.notFound({ message: "Veuillez préciser le code Ecole pour cet utulisateur pour a accéder a cette page!" })
        }
        ecoleVerif = await Ecoles.find({ codeEcole: user.codeEcole }).then(_.first)
        if (!ecoleVerif) {
            return exits.notFound({ message: "Cet utilisateur n'est attribué a aucune classe!" })
        }
        // FIN VERIF CODE ECOLE

        // VERIF SI ANNEE SCOLAIRE EST PASSEE
        console.log("Annee Scolaire", inputs.anneeScolaire)
        if (inputs.anneeScolaire === '' || inputs.anneeScolaire === null || inputs.anneeScolaire === undefined) {
            return exits.notFound({ message: "Veuillez préciser une année scolaire pour a accéder a cette page!" })
        }
        //// FIN

        let userCodeEcole;
        if (user.typeUser === 'ADMINISTRATION' || user.typeUser === 'SECRETARIAT') {
            userCodeEcole = user.codeEcole
        } else if (user.typeUser === 'ADMIN') {
            userCodeEcole = undefined
        } else if (user.typeUser === 'PARENT') {
            userCodeEcole = user.codeEcole
        } else if (user.typeUser === 'ELEVE') {

            // JE VAIS CHERCHER L'ELEVE ET JE REMPLACE SON CODE USER PAR SON MATRICULE POUR LA SUITE DES OPERATION
            let eleveMat = await Eleves.find({ nom: user.nom }).then(_.first)
            if (eleveMat) {
                user.codeUser = eleveMat.matricule
            } else {
                return exits.notFound({ message: "Veuillez inscrire cet eleve dans la base!" })

            }

            // SI type user est ELEVE 
            userCodeEcole = user.codeEcole
            // Go chercher matricule ELEVE
            let eleve = await Eleves.find({ matricule: user.codeUser }).then(_.first);

            if (!eleve) {
                return exits.notFound({ message: "Vous devez posséder un numéro matricule pour accéder a cette page!" })
            }

            inputs.matricule = eleve.matricule
            // GO chercher codeClasse ELEVE
            let classeEleve = await AttributionClasse.find({ codeEcole: user.codeEcole, matricule: eleve.matricule, trimSem: inputs.trimSem, anneeScolaire: inputs.anneeScolaire }).then(_.first);

            if (classeEleve) {
                inputs.codeClasse = classeEleve.codeClasse
            } else {
                return exits.notFound({ message: "Vous devez etre affecté a une classe pour accéder a cette page!" })

            }

        } else {
            return exits.notFound({ message: "Vous n'etes pas autoriser a accéder a cette page!" })

        }
        //console.log("userCodeEcole", userCodeEcole)

        ///////////////////////////////////////////////////// FIN PREMIERE ETAPE PREPARATION DES DONNEES

        let moyennesClasse = await AttributionRang.find({
            codeEcole: userCodeEcole,
            codeClasse: inputs.codeClasse,
            anneeScolaire: inputs.anneeScolaire,
            trimSem: inputs.trimSem,
            matricule: inputs.matricule
        }).then(_.first)

        if (!moyennesClasse) {
            moyennesClasse = {
                "anneeScolaire": "",
                "appreciationBilanAutres": "",
                "appreciationBilanLettre": "",
                "appreciationBilanSciences": "",
                "appreciationChefEtab": "",
                "appreciationPp": "",
                "codeClasse": "",
                "codeEcole": "",
                "codeMatiere": "",
                "createdAt": null,
                "dateEvaluation": "",
                "id": null,
                "matricule": "",
                "mentionConseilProf": "",
                "moyenneBilanAutres": "0",
                "moyenneBilanLettre": "0",
                "moyenneBilanSciences": "0",
                "moyenneClasse": "0",
                "moyenneFaible": "0",
                "moyenneForte": "0",
                "moyennePeriodique": "0",
                "rang": "",
                "statusPassant": "",
                "totalCoef": "0",
                "totalMoyenne": "0",
                "trimSem": "",
                "updatedAt": null
              }
        }

        console.log("moyennesClasse", moyennesClasse)
        // All done.
        return exits.success(moyennesClasse);
    },
};
