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