module.exports = {
    friendlyName: "Find",

    description: "Find Point encaissement.",

    inputs: {
       
        anneeScolaire: {
            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, user.nom)
        //console.log("ID", id, inputs.codeClasse, inputs.anneeScolaire, inputs.trimSem)

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

        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

        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)

        // Je vais chercher chaque nature de rectte et lui associer ses paiements
        let natures = await NatureRecette.find({anneeScolaire: inputs.anneeScolaire}).sort('ordre ASC')
        .then(natures => {
            return Promise.all(natures.map(async nature => {
                let total = 0;
                let details = await DetailsPaiement.find({anneeScolaire: inputs.anneeScolaire, codeEcole: userCodeEcole, libelleNatureRecette: nature.libelleNatureRecette })
                .then(details => {
                    return Promise.all(details.map(async detail => {
                        if (detail.montantPaye && detail.montantPaye !== null) {
                            total = total + parseInt(detail.montantPaye)
                        }

                        return total
                    }))
                })
                nature.total = total
                return nature
            }));
            return natures
        });

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