module.exports = {
    friendlyName: "Find",
  
    description: "Find Inscrption Admin.",
  
    inputs: {
      search: {
        type: "string",
      },
      /*trimSem: {
        type: "string",
        require: true
      },*/
      annee: {
        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)
  
      // 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.annee)
      if (inputs.annee === '' || inputs.annee === null || inputs.annee === undefined) {
        return exits.notFound({ message: "Veuillez préciser une année scolaire pour a accéder a cette page!" })
      }
      //// 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 fixedAttr = ["codeEcole", "anneeScolaire"];
  
      let cond = {
        codeEcole: userCodeEcole,
        //codeClasse: inputs.codeClasse ? inputs.codeClasse : undefined,
        anneeScolaire: inputs.annee ? inputs.annee : undefined,
  
        or: [
          //{ matricule: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
          { nom: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
          { matricule: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
        ],
      };
      //console.log("cond", cond)
  
      let options = {
        ...this.req.query,
        fixCond: _.pick(cond, fixedAttr),
        //sort: "nom ASC",
      };
  
  
      let inscriptions = await sails.helpers
        .paginator(InscriptionsEleve, cond, options)
        .then(async (inscriptions) => {
            inscriptions.data = await Promise.all(
                inscriptions.data.map(async (inscription) => {
                    if (inscription.codeParent) {
                        inscription.parent = await Parents.find({ codeParent: inscription.codeParent }).then(_.first);
                    }

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