module.exports = {
    friendlyName: "Validate All Notes",
    description: "Valide toutes les notes pour un trimestre, une année scolaire et une école.",
    inputs: {
        trimSem: { type: 'string', required: true },
        anneeScolaire: { type: 'string', required: true },


    },
    exits: {
        success: { responseType: 'ok', description: 'Toutes les notes ont été validées.' },
        notFound: { responseType: 'notFound', description: 'Aucune note à valider.' },
        serverError: { responseType: 'serverError', description: 'Erreur serveur.' },
    },
    fn: async function (inputs, exits) {
        try {
            const { user } = this.req.token;
            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!" })

            }
            // 1. Valider tous les ProfNote
            const updated = await ProfNote.update({
                codeEcole: user.codeEcole,
                trimSem: inputs.trimSem,
                anneeScolaire: inputs.anneeScolaire,
                validation: { '!=': 'OUI' }
            })
                .set({
                    validation: 'OUI',
                    validatedBy: user.id,
                    validatedAt: Date.now(),
                    validationComment: inputs.comment || ''
                });
            /*// 2. Récupérer tous les codMoy concernés
            const entetes = await ProfNote.find({
                codeEcole: user.codeEcole,
                trimSem: inputs.trimSem,
                anneeScolaire: inputs.anneeScolaire,
                validation: 'OUI'
            });
            const codMoyList = entetes.map(e => e.codMoy);
            // 3. Valider tous les ProfNoteDetails liés
            await ProfNoteDetails.update({
                codeEcole: user.codeEcole,
                trimSem: inputs.trimSem,
                anneeScolaire: inputs.anneeScolaire,
                codMoy: codMoyList,
                etatNoteDetails: { '!=': 'OUI' }
            })
                .set({
                    etatNoteDetails: 'OUI'
                });*/
            return exits.success({ message: 'Toutes les notes ont été validées.' });
        } catch (e) {
            return exits.serverError({ message: e.message });
        }
    }
}; 