From 77f8172ccf888dca8f6cf7f96767d36a43c3f9f6 Mon Sep 17 00:00:00 2001 From: marsalva Date: Mon, 16 Feb 2026 18:52:18 +0000 Subject: [PATCH] Actualizar server.js --- server.js | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/server.js b/server.js index 18f66c5..cb60b05 100644 --- a/server.js +++ b/server.js @@ -687,18 +687,34 @@ app.get("/services/active", authMiddleware, async (req, res) => { } catch (e) { res.status(500).json({ ok: false }); } }); +// AÑADIDO: Ruta para fijar la cita o el estado operativo // AÑADIDO: Ruta para fijar la cita o el estado operativo app.put("/services/set-appointment/:id", authMiddleware, async (req, res) => { try { const { id } = req.params; - const { date, time, status_operativo } = req.body; - await pool.query(` - UPDATE scraped_services - SET raw_data = raw_data || jsonb_build_object('scheduled_date', $1, 'scheduled_time', $2, 'status_operativo', $3) - WHERE id = $4 AND owner_id = $5 - `, [date, time, status_operativo, id, req.user.accountId]); + const { date, time, status_operativo, ...extra } = req.body; + + // 1. Extraemos los datos actuales de forma segura + const current = await pool.query('SELECT raw_data FROM scraped_services WHERE id = $1 AND owner_id = $2', [id, req.user.accountId]); + if (current.rowCount === 0) return res.status(404).json({ ok: false, error: 'No encontrado' }); + + // 2. Fusionamos con JavaScript (100% a prueba de fallos y vacíos) + const updatedRawData = { + ...current.rows[0].raw_data, + ...extra, + "scheduled_date": date || "", + "scheduled_time": time || "", + "status_operativo": status_operativo || "citado" + }; + + // 3. Guardamos el JSON completo de vuelta + await pool.query('UPDATE scraped_services SET raw_data = $1 WHERE id = $2 AND owner_id = $3', [JSON.stringify(updatedRawData), id, req.user.accountId]); + res.json({ ok: true }); - } catch (e) { res.status(500).json({ ok: false }); } + } catch (e) { + console.error("Error agendando cita:", e); + res.status(500).json({ ok: false }); + } }); // AÑADIDO: Ruta para alta de expedientes manuales (Cola o Directo)