Actualizar server.js
This commit is contained in:
41
server.js
41
server.js
@@ -434,6 +434,20 @@ app.post("/providers/automate/:id", authMiddleware, async (req, res) => {
|
|||||||
|
|
||||||
if (!guild_id || !cp) return res.status(400).json({ ok: false, error: "Faltan datos (Gremio o CP)" });
|
if (!guild_id || !cp) return res.status(400).json({ ok: false, error: "Faltan datos (Gremio o CP)" });
|
||||||
|
|
||||||
|
// 1. Obtener datos del expediente para el mensaje
|
||||||
|
const serviceQ = await pool.query("SELECT raw_data, provider FROM scraped_services WHERE id = $1", [id]);
|
||||||
|
if (serviceQ.rowCount === 0) return res.status(404).json({ ok: false, error: "Expediente no encontrado" });
|
||||||
|
|
||||||
|
const raw = serviceQ.rows[0].raw_data;
|
||||||
|
const nombreCliente = raw["Nombre Cliente"] || raw["CLIENTE"] || "Cliente";
|
||||||
|
const poblacion = raw["Población"] || raw["POBLACION-PROVINCIA"] || "---";
|
||||||
|
const gremioNombre = raw["Gremio"] || "Servicio General";
|
||||||
|
|
||||||
|
// Limpiar dirección: Quitar números y pisos (regex para detectar números y lo que sigue)
|
||||||
|
const direccionCompleta = raw["Dirección"] || raw["DOMICILIO"] || "";
|
||||||
|
const direccionLimpia = direccionCompleta.split(/[0-9]/)[0].trim();
|
||||||
|
|
||||||
|
// 2. Buscar operarios disponibles
|
||||||
const workersQ = await pool.query(`
|
const workersQ = await pool.query(`
|
||||||
SELECT u.id, u.full_name, u.phone
|
SELECT u.id, u.full_name, u.phone
|
||||||
FROM users u
|
FROM users u
|
||||||
@@ -448,15 +462,36 @@ app.post("/providers/automate/:id", authMiddleware, async (req, res) => {
|
|||||||
|
|
||||||
const worker = workersQ.rows[Math.floor(Math.random() * workersQ.rows.length)];
|
const worker = workersQ.rows[Math.floor(Math.random() * workersQ.rows.length)];
|
||||||
const token = crypto.randomBytes(16).toString('hex');
|
const token = crypto.randomBytes(16).toString('hex');
|
||||||
const expiresAt = new Date(Date.now() + 5 * 60 * 1000);
|
const expiresAt = new Date(Date.now() + 5 * 60 * 1000); // 5 Minutos
|
||||||
|
|
||||||
|
// Formatear hora de caducidad (HH:mm)
|
||||||
|
const horaCaducidad = expiresAt.toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit' });
|
||||||
|
|
||||||
await pool.query(`INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) VALUES ($1, $2, $3, $4)`, [id, worker.id, token, expiresAt]);
|
await pool.query(`INSERT INTO assignment_pings (scraped_id, user_id, token, expires_at) VALUES ($1, $2, $3, $4)`, [id, worker.id, token, expiresAt]);
|
||||||
|
|
||||||
|
// 3. Construir mensaje de WhatsApp con toda la información solicitada
|
||||||
const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;
|
const link = `https://web.integrarepara.es/aceptar.html?t=${token}`;
|
||||||
await sendWhatsAppAuto(worker.phone, `🛠️ *NUEVO SERVICIO*\nCP: ${cp}\n🔗 ${link}`);
|
const mensaje = `🛠️ *NUEVO SERVICIO ASIGNADO A TI*
|
||||||
|
|
||||||
|
👤 *Operario:* ${worker.full_name}
|
||||||
|
📋 *Gremio:* ${gremioNombre}
|
||||||
|
|
||||||
|
*DATOS DEL CLIENTE:*
|
||||||
|
👤 *Nombre:* ${nombreCliente}
|
||||||
|
📍 *Zona:* ${direccionLimpia}
|
||||||
|
🏙️ *Población:* ${poblacion} (CP: ${cp})
|
||||||
|
|
||||||
|
⚠️ *ATENCIÓN:* Tienes hasta las *${horaCaducidad}* para revisar los datos completos y ACEPTAR el servicio en el siguiente enlace:
|
||||||
|
|
||||||
|
🔗 ${link}`;
|
||||||
|
|
||||||
|
await sendWhatsAppAuto(worker.phone, mensaje);
|
||||||
|
|
||||||
res.json({ ok: true, message: "Automatismo iniciado con " + worker.full_name });
|
res.json({ ok: true, message: "Automatismo iniciado con " + worker.full_name });
|
||||||
} catch (e) { res.status(500).json({ ok: false, error: e.message }); }
|
} catch (e) {
|
||||||
|
console.error("Error Automate:", e.message);
|
||||||
|
res.status(500).json({ ok: false, error: e.message });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/providers/import/:id", authMiddleware, async (req, res) => {
|
app.post("/providers/import/:id", authMiddleware, async (req, res) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user