You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

59 lines
1.7 KiB

const { pool } = require('../config/databases');
// Afficher la liste des modules avec leur état pour un établissement donné
exports.index = async (req, res) => {
try {
const etablissementId = 1; // À remplacer par auth ou token utilisateur
const [modules] = await pool.query(`SELECT * FROM modules`);
const [actifsRaw] = await pool.query(`
SELECT module_id, est_actif
FROM etablissement_modules
WHERE etablissement_id = ?`,
[etablissementId]
);
const actifs = {};
actifsRaw.forEach(row => {
actifs[row.module_id] = !!row.est_actif;
});
res.render('modules/index', { modules, actifs });
} catch (err) {
res.status(500).json({ error: 'Erreur serveur', details: err.message });
}
};
// Activer/désactiver un module (AJAX)
exports.toggle = async (req, res) => {
const { id, actif } = req.body;
const moduleId = parseInt(id, 10);
const etablissementId = 1; // Authentification future ici
try {
const [existing] = await pool.query(
`SELECT id FROM etablissement_modules
WHERE module_id = ? AND etablissement_id = ?`,
[moduleId, etablissementId]
);
if (existing.length > 0) {
await pool.query(
`UPDATE etablissement_modules
SET est_actif = ?
WHERE id = ?`,
[actif ? 1 : 0, existing[0].id]
);
} else {
await pool.query(
`INSERT INTO etablissement_modules (module_id, etablissement_id, est_actif)
VALUES (?, ?, ?)`,
[moduleId, etablissementId, actif ? 1 : 0]
);
}
res.json({ success: true });
} catch (err) {
res.status(500).json({ success: false, error: err.message });
}
};