let moment = require('moment')
module.exports = {


    friendlyName: 'Create',


    description: 'Create programme!',


    inputs: {
        codeMatiere: {
            type: 'string',
            required: true
        },
        codeClasse: {
            type: 'string',
            required: true
        },
        anneeScolaire: {
            type: 'string',
            required: true
        },
    },


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


    fn: async function (inputs, exits) {

        //console.log("INPUTS 1", inputs)
        const { /*id, */user } = this.req.token;

        //console.log("INPUTS", inputs)
        let userCodeEcole;
        if (user.typeUser === 'ENSEIGNANT') {
            userCodeEcole = user.codeEcole
        } else {
            return exits.notFound({ message: "Vous n'etes pas autoriser a accéder a cette page!" })

        }

        // 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 ecole!" })
        }
        // FIN VERIF CODE ECOLE

        inputs.codeEcole = userCodeEcole
        ///////////////////

        let lastIdAuto = await Programme.find().sort('id DESC').then(_.first)

        let id;
        if (!lastIdAuto) {
            id = 1
        } else {
            var codeStr = lastIdAuto.codeProgramme;

            codeStr = codeStr.replace('PR', '');
            id = parseFloat(codeStr) + 1
        }

        let codeCreate;
        //console.log('ID', id)


        if (id < 10) {
            codeCreate = `PR000${id}`
        }

        if (id >= 10 && id < 100) {
            codeCreate = `PR00${id}`
        }

        if (id >= 100 && id < 1000) {
            codeCreate = `PR0${id}`
        }

        if (id >= 1000) {
            codeCreate = `PR${id}`
        }

        inputs.codeProgramme = codeCreate

        let programmeVerify = await Programme.find({ codeProgramme: inputs.codeProgramme }).then(_.first)

        if (programmeVerify) {
            return exits.notFound({ message: "Ce code existe déja, veuillez le modifier!" })
        }

        let programmeVerifyExist = await Programme.find({ codeMatiere: inputs.codeMatiere, codeClasse: inputs.codeClasse, codeEnseignant: user.codeUser, codeEcole: inputs.codeEcole, anneeScolaire: inputs.anneeScolaire }).then(_.first)

        if (programmeVerifyExist) {
            return exits.notFound({ message: "Il y a un programme pour cette Classe, ce cours et classe, veuillez le modifier!" })
        }
        inputs.codeEnseignant = user.codeUser

        let programme = await Programme.create(inputs).fetch()

        // Notification via topic de classe
        try {
            const codeClasse = inputs.codeClasse;
            const codeEcole = inputs.codeEcole;
            let libelleClasse = null;
            if (codeClasse) {
                const classe = await Classe.findOne({ codeEcole: codeEcole, codeClasse: codeClasse });
                libelleClasse = classe ? classe.libelleClasse : null;
            }
            const title = 'Programme de cours mis à jour';
            const body = libelleClasse ? `Nouveau programme pour ${libelleClasse}` : 'Nouveau programme de cours publié';
            const data = {
                route: '/notifications',
                type: 'programme_update',
                codeProgramme: String(programme.codeProgramme || ''),
                codeClasse: codeClasse,
                libelleClasse: libelleClasse || '',
                codeMatiere: inputs.codeMatiere,
                anneeScolaire: inputs.anneeScolaire
            };
            const topic = `class-${codeClasse}`;
            await sails.helpers.sendFcm.with({ topic, title, body, data });
        } catch (e) {
            sails.log.warn('Echec envoi FCM (programme/create):', e.message || e);
        }

        return exits.success(_.merge(programme));
        // All done.


    }


};
