Actualizar server.js
This commit is contained in:
28
server.js
28
server.js
@@ -640,11 +640,12 @@ app.post("/public/portal/:token/book", async (req, res) => {
|
|||||||
if (clientQ.rowCount === 0) return res.status(404).json({ ok: false, error: "Token inválido" });
|
if (clientQ.rowCount === 0) return res.status(404).json({ ok: false, error: "Token inválido" });
|
||||||
const ownerId = clientQ.rows[0].owner_id;
|
const ownerId = clientQ.rows[0].owner_id;
|
||||||
|
|
||||||
// Recuperamos los datos crudos del servicio
|
// 🚨 CAMBIO AQUÍ: Recuperamos los datos crudos Y TAMBIÉN a quién está asignado
|
||||||
const serviceQ = await pool.query("SELECT raw_data FROM scraped_services WHERE id=$1 AND owner_id=$2", [serviceId, ownerId]);
|
const serviceQ = await pool.query("SELECT raw_data, assigned_to, service_ref FROM scraped_services WHERE id=$1 AND owner_id=$2", [serviceId, ownerId]);
|
||||||
if (serviceQ.rowCount === 0) return res.status(404).json({ ok: false, error: "Servicio no encontrado" });
|
if (serviceQ.rowCount === 0) return res.status(404).json({ ok: false, error: "Servicio no encontrado" });
|
||||||
|
|
||||||
const raw = serviceQ.rows[0].raw_data || {};
|
const srv = serviceQ.rows[0];
|
||||||
|
const raw = srv.raw_data || {};
|
||||||
|
|
||||||
// Grabamos la solicitud en el jsonb para que el admin la vea en agenda.html
|
// Grabamos la solicitud en el jsonb para que el admin la vea en agenda.html
|
||||||
raw.requested_date = date;
|
raw.requested_date = date;
|
||||||
@@ -653,6 +654,27 @@ app.post("/public/portal/:token/book", async (req, res) => {
|
|||||||
|
|
||||||
await pool.query("UPDATE scraped_services SET raw_data = $1 WHERE id = $2", [JSON.stringify(raw), serviceId]);
|
await pool.query("UPDATE scraped_services SET raw_data = $1 WHERE id = $2", [JSON.stringify(raw), serviceId]);
|
||||||
|
|
||||||
|
// =========================================================
|
||||||
|
// 🚨 MAGIA: AVISAR AL OPERARIO POR WHATSAPP AL INSTANTE
|
||||||
|
// =========================================================
|
||||||
|
if (srv.assigned_to) {
|
||||||
|
const workerQ = await pool.query("SELECT full_name, phone FROM users WHERE id=$1", [srv.assigned_to]);
|
||||||
|
if (workerQ.rowCount > 0) {
|
||||||
|
const w = workerQ.rows[0];
|
||||||
|
const ref = srv.service_ref || raw["Referencia"] || serviceId;
|
||||||
|
const clientName = raw["Nombre Cliente"] || raw["CLIENTE"] || "El cliente";
|
||||||
|
|
||||||
|
// Formateamos la fecha para que se lea bonita en WhatsApp
|
||||||
|
const [y, m, d] = date.split('-');
|
||||||
|
const dateFormatted = `${d}/${m}/${y}`;
|
||||||
|
|
||||||
|
const msg = `🔔 *¡NUEVA CITA SOLICITADA!*\n\nHola ${w.full_name}, ${clientName} acaba de elegir un hueco para el expediente *#${ref}*.\n\n📅 *Fecha:* ${dateFormatted}\n⏰ *Hora aprox:* ${time}\n\nEntra en tu App (Agenda) para confirmarla o rechazarla.`;
|
||||||
|
|
||||||
|
// Enviamos el WA de aviso al trabajador
|
||||||
|
sendWhatsAppAuto(w.phone, msg, `cliente_${ownerId}`, false).catch(console.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res.json({ ok: true });
|
res.json({ ok: true });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Error agendando cita (book):", e);
|
console.error("Error agendando cita (book):", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user