require('dotenv').config();
module.exports = {


    friendlyName: 'Create',


    description: 'Create Section.',


    inputs: {
        /*codeEcole: {
            type: 'string',
            required: true
            
        },
        codeClasse: {
            type: 'string',
            required: true
          
        },
        matricule: {
            type: 'string',
            required: true
        },

        trimSem: {
            type: 'string',
        },

        anneeScolaire: {
            type: 'string',
        },

        systemSco: {
            type: 'string',
        },*/


        listeElementAjout: {
            type: 'ref'
        },

        logiUsername: {
            type: 'string',
            require: true

        },
        key: {
            type: 'string',
            require: true

        },
        logiPassword: {
            type: 'string',
            require: true

        },


    },


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


    fn: async function (inputs, exits) {

        //console.log("INPUTS 1", inputs)

        // TOKEN VERIFY
        let user = await Utilisateurs.find({ login: inputs.logiUsername, codeUser: inputs.logiPassword }).then(_.first)
        if (!user) {
            return exits.notFound('Utilisateur non trouvé')
        }
        console.log("INPUTS 2", inputs)

        let keyVerify = process.env.KEYVERIFY
        //
        if (keyVerify !== inputs.key) {
            return exits.notFound({ message: "Token non valide" })
        }


        ///////////////////
        let detailsP = []

        if (inputs.listeElementAjout && inputs.listeElementAjout.length > 0) {
            for (let i = 0; i < inputs.listeElementAjout.length; i++) {

                let attributionClasse = await AttributionClasse.find({
                    codeEcole: inputs.listeElementAjout[i].codeEcole,
                    codeClasse: inputs.listeElementAjout[i].codeClasse,
                    matricule: inputs.listeElementAjout[i].matricule,
                    trimSem: inputs.listeElementAjout[i].trimSem,
                    anneeScolaire: inputs.listeElementAjout[i].anneeScolaire,
                    systemSco: inputs.listeElementAjout[i].systemSco
                }).then(_.first)
                if (attributionClasse) {

                    //return exits.notFound({ message: "Cette Attribution existe déja, veuillez la modifier!" })
                } else {
                    let attributionClasseCreate = await AttributionClasse.create({
                        codeEcole: inputs.listeElementAjout[i].codeEcole,
                        codeClasse: inputs.listeElementAjout[i].codeClasse,
                        matricule: inputs.listeElementAjout[i].matricule,
                        trimSem: inputs.listeElementAjout[i].trimSem,
                        anneeScolaire: inputs.listeElementAjout[i].anneeScolaire,
                        systemSco: inputs.listeElementAjout[i].systemSco
                    }).fetch();
                    if (!attributionClasse) {
                        detailsP.push(inputs.listeElementAjout[i])
                    }
                }
            }
        }

        if (detailsP && detailsP.length > 0) {
            for (let i = 0; i < detailsP.length; i++) {

                let attributionClasse2 = await AttributionClasse.find({
                    codeEcole: detailsP[i].codeEcole,
                    codeClasse: detailsP[i].codeClasse,
                    matricule: detailsP[i].matricule,
                    trimSem: detailsP[i].trimSem,
                    anneeScolaire: detailsP[i].anneeScolaire,
                    systemSco: detailsP[i].systemSco
                }).then(_.first)
                if (attributionClasse2) {

                    //return exits.notFound({ message: "Cette Attribution existe déja, veuillez la modifier!" })
                } else {
                    let attributionClasseCreate2 = await AttributionClasse.create({
                        codeEcole: detailsP[i].codeEcole,
                        codeClasse: detailsP[i].codeClasse,
                        matricule: detailsP[i].matricule,
                        trimSem: detailsP[i].trimSem,
                        anneeScolaire: detailsP[i].anneeScolaire,
                        systemSco: detailsP[i].systemSco
                    }).fetch();
                    if (!attributionClasseCreate2) {
                        //detailsP.push(attributionClasseCreate2)
                    }
                }
            }
        }
        // All done.
        return exits.success({ message: 'Done !' });

    }


};
