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.
 

106 lines
3.2 KiB

const { pool } = require('../config/databases');
exports.index = async (req, res) => {
try {
const [tables] = await pool.query('SELECT * FROM tables');
res.render('tables/index', { tables });
} catch (err) {
res.status(500).send('Erreur serveur : ' + err.message);
}
};
// Affiche formulaire création (rendu simple, adapter selon moteur de vue)
exports.create = (req, res) => {
res.render('tables/create');
};
// Enregistre nouvelle table
exports.store = async (req, res) => {
const { numero_table, capacite, statut_actuel } = req.body;
try {
await pool.query(
`INSERT INTO tables (numero_table, capacite, statut_actuel, id_reservation_actuelle)
VALUES (?, ?, ?, NULL)`,
[numero_table, capacite, statut_actuel]
);
res.redirect('/tables?success=Table ajoutée avec succès.');
} catch (err) {
// En cas d'erreur, tu peux passer l'erreur en query string ou gérer autrement
res.redirect('/tables/create?error=' + encodeURIComponent(err.message));
}
};
// Affiche formulaire édition
exports.edit = async (req, res) => {
const id = req.params.id;
try {
const [rows] = await pool.query('SELECT * FROM tables WHERE id = ?', [id]);
if (rows.length === 0) {
return res.status(404).send('Table non trouvée');
}
res.render('tables/edit', { table: rows[0] });
} catch (err) {
res.status(500).send('Erreur serveur : ' + err.message);
}
};
// Met à jour une table
exports.update = async (req, res) => {
const id = req.params.id;
const data = req.body;
try {
// Mettre à jour la table
const [result] = await pool.query(
`UPDATE tables SET numero_table = ?, capacite = ?, statut_actuel = ? WHERE id = ?`,
[data.numero_table, data.capacite, data.statut_actuel, id]
);
res.redirect('/tables?success=Table modifiée avec succès.');
} catch (err) {
res.redirect(`/tables/${id}/edit?error=` + encodeURIComponent(err.message));
}
};
// Supprimer une table
exports.delete = async (req, res) => {
const id = req.params.id;
try {
await pool.query('DELETE FROM tables WHERE id = ?', [id]);
res.redirect('/tables?success=Table supprimée.');
} catch (err) {
res.status(500).send('Erreur serveur : ' + err.message);
}
};
// Afficher détails JSON d'une table + client réservation en cours
exports.show = async (req, res) => {
const id = req.params.id;
try {
const [tables] = await pool.query('SELECT * FROM tables WHERE id = ?', [id]);
if (tables.length === 0) {
return res.status(404).json({ error: 'Table non trouvée' });
}
const table = tables[0];
const [reservations] = await pool.query(`
SELECT client_nom FROM reservations
WHERE type_reservation = 'table'
AND numero_table_chambre = ?
AND statut_reservation IN ('Confirmée', 'En attente')
LIMIT 1
`, [table.numero_table]);
const reservation = reservations.length > 0 ? reservations[0] : {};
res.json({
capacite: table.capacite,
details: table.details || 'N/A',
statut_actuel: table.statut_actuel,
client_nom: reservation.client_nom || null,
});
} catch (err) {
res.status(500).json({ error: 'Erreur serveur', details: err.message });
}
};