module.exports = {
  friendlyName: "Find",

  description: "Find Eleves.",

  inputs: {
    search: {
      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)

    // 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

    // CONTROLE SUR USER ET RENVOI DES DATA EN FONCTION DE  USER CONNECTER
    // ACCESSIBLE UNIQUE PAR ADMIN ET ADMINISTRATION

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

    let userCodeEcole;
    if (user.typeUser === 'ADMINISTRATION' || user.typeUser === 'SECRETARIAT') {
      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!" })

    }

    let fixedAttr = ["codeEcole"];
    let cond = {
      codeEcole: userCodeEcole,
      //codeEntite: codent,
      or: [
        { matricule: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
        { nom: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
        // { telephone: { contains: inputs.search ? inputs.search.toUpperCase() : "" } },
      ],
    };
    let options = {
      ...this.req.query,
      fixCond: _.pick(cond, fixedAttr),
      sort: "nom ASC",
    };
    let eleves = await sails.helpers.paginator(Eleves, cond, options);
    // All done.
    return exits.success(eleves);
  },
};
