module.exports = {
  inputs: {
    codMoy: { type: 'string', required: true }, // Identifiant du groupe de notes
    codeMatiere: { type: 'string', required: true },
    trimSem: { type: 'string', required: true },
    codeClasse: { type: 'string', required: true },
    typeNote: { type: 'string', required: true },
    anneeScolaire: { type: 'string', required: true },
    comment: { type: 'string' },
     
  },

  exits: {
    success: {
            responseType: "ok",
            description: "Mise à jour réussie"
        },
        notFound: {
            responseType: "notFound",
            description: "Enregistrement non trouvé"
        },
        serverError: {
            responseType: "serverError",
            description: "Erreur serveur"
        },
        invalidRequest: {
            responseType: "invalid",
            description: "Requête invalide"
        }
  },

  fn: async function(inputs, exits) {
    const { id, user } = this.req.token;
    // 1. Vérifier les permissions
    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.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!" })
        }
        //// 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' || 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!" })

        }

    /*if (!this.req.token.user.canValidateNotes) {
      return exits.forbidden();
    }*/

    // 2. Valider toutes les notes correspondantes
    await ProfNote.update({
      codeMatiere: inputs.codeMatiere,
      trimSem: inputs.trimSem,
      codMoy: inputs.codMoy,
      codeClasse: inputs.codeClasse,
      codeEcole: user.codeEcole
    })
    .set({
      validation: 'OUI',
      validatedBy: this.req.token.user.id,
      validatedAt: Date.now(),
      validationComment: inputs.comment
    });

    // 3. Marquer les détails comme validés
    await ProfNoteDetails.update({
      codeMatiere: inputs.codeMatiere,
      trimSem: inputs.trimSem,
      codMoy: inputs.codMoy,
      codeEcole: user.codeEcole

    })
    .set({
      validated: 'OUI'
    });

    return exits.success({ message: 'Notes validées avec succès' });
  }
};