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
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 });
|
|
}
|
|
};
|
|
|