module.exports = {
    friendlyName: "Find",

    description: "Find Eleves Classe.",

    inputs: {
        search: {
            type: "string",
        },
        matricule: {
            type: "string",
        },
        anneeScolaire: {
            type: "string",
            require: true
        },
        codeClasse: {
            type: "string",
            require: true
        },
        startDate: {
            type: 'string'
        },
        endDate: {
            type: 'string'
        },
    },

    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!" })
        }
        ///aFIN

        if (inputs.codeClasse === '' || inputs.codeClasse === null || inputs.codeClasse === undefined) {
            inputs.codeClasse = undefined
        }

        if (inputs.matricule === '' || inputs.matricule === undefined || inputs.matricule === null || inputs.matricule === 'undefined') {
            inputs.matricule = undefined
        }

        if (inputs.startDate === '' || inputs.startDate === undefined || inputs.startDate === null || inputs.startDate === 'undefined') {
            inputs.startDate = undefined
        }

        if (inputs.endDate === '' || inputs.endDate === undefined || inputs.endDate === null || inputs.endDate === 'undefined') {
            inputs.endDate = undefined
        }
        //// FIN

        this.req.query.limit = this.req.query.limit || "10";
        this.req.query.skip = this.req.query.skip || "0";

        let userCodeEcole;
        if (user.typeUser === 'ADMINISTRATION') {
            userCodeEcole = user.codeEcole
        } else if (user.typeUser === 'ADMIN') {
            userCodeEcole = undefined
        } else {
            return exits.notFound({ message: "Vous n'etes pas autoriser a accéder a cette page!" })

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

        let cond = {
            codeEcole: userCodeEcole,
            codeClasse: inputs.codeClasse,
            anneeScolaire: inputs.anneeScolaire ? inputs.anneeScolaire : undefined,
            matricule: inputs.matricule,
            dateQuittance: { '>=': inputs.startDate, '<=': inputs.endDate },

            or: [
                //{ matricule: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
                { numeroQuittance: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
                { nomPayeur: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
            ],
        };
        //console.log("cond", cond)

        let total = 0;
        let quittances = await Quittance.find(cond)
        if (quittances && quittances.length > 0) {
            quittances.map(quittance => {
                if (quittance.montantPaye && quittance.montantPaye !== null) {
                    total = total + parseInt(quittance.montantPaye)
                }
            })
        }
        return exits.success(total);




        // All done.
       // return exits.success(quittances);
    },
};
