module.exports = {
    friendlyName: "Delete",

    description: "Delete Emplois du Temps par classe.",

    inputs: {
        id: {
            type: "number",
            required: true
        }
    },

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

    fn: async function (inputs, exits) {
        const { id, user } = this.req.token;

        // 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 utilisateur pour accéder a cette page!" })
        }

        let ecoleVerif = await Ecoles.find({ codeEcole: user.codeEcole }).then(_.first)
        if (!ecoleVerif) {
            return exits.notFound({ message: "Cet utilisateur n'est attribué a aucune ecole!" })
        }

        // VERIFICATION DES PERMISSIONS
        if (user.typeUser !== 'ADMINISTRATION' && user.typeUser !== 'SECRETARIAT' && user.typeUser !== 'ADMIN') {
            return exits.notFound({ message: "Vous n'êtes pas autorisé à accéder a cette page!" })
        }

        // VERIFICATION SI L'EMPLOI DU TEMPS EXISTE
        let existingEmploi = await EmploisDuTemps.findOne({ id: inputs.id })
        if (!existingEmploi) {
            return exits.notFound({ message: "Emploi du temps non trouvé!" })
        }

        // VERIFICATION SI L'EMPLOI DU TEMPS APPARTIENT A L'ECOLE
        if (existingEmploi.codeEcole !== user.codeEcole && user.typeUser !== 'ADMIN') {
            return exits.notFound({ message: "Vous n'êtes pas autorisé à supprimer cet emploi du temps!" })
        }

        // SUPPRESSION DE L'EMPLOI DU TEMPS
        await EmploisDuTemps.destroyOne({ id: inputs.id })

        // All done.
        return exits.success({
            message: "Emploi du temps supprimé avec succès!"
        });
    },
}; 