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)" });
|
||||
|
||||
// 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(`
|
||||
SELECT u.id, u.full_name, u.phone
|
||||
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 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]);
|
||||
|
||||
// 3. Construir mensaje de WhatsApp con toda la información solicitada
|
||||
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 });
|
||||
} 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) => {
|
||||
|
||||
Reference in New Issue
Block a user