Actualizar server.js
This commit is contained in:
57
server.js
57
server.js
@@ -1597,6 +1597,63 @@ app.post("/providers/credentials", authMiddleware, async (req, res) => {
|
||||
} catch (e) { res.status(500).json({ ok: false }); }
|
||||
});
|
||||
|
||||
// ==========================================
|
||||
// 📥 RECEPCIÓN DE SERVICIOS (EMBUDO DIRECTO)
|
||||
// ==========================================
|
||||
app.post("/providers/scraped", authMiddleware, async (req, res) => {
|
||||
try {
|
||||
const { provider, services } = req.body;
|
||||
|
||||
if (!provider || !Array.isArray(services)) {
|
||||
return res.status(400).json({ ok: false, error: "Formato de datos inválido" });
|
||||
}
|
||||
|
||||
let count = 0;
|
||||
for (const svc of services) {
|
||||
|
||||
// 1. Extraer la referencia
|
||||
const ref = svc['Referencia'] || svc['Nº Siniestro'] || svc['Expediente'] || svc['service_ref'];
|
||||
if (!ref) continue;
|
||||
|
||||
// 🔥 2. DETECTOR DIRECTO DE URGENCIAS 🔥
|
||||
let esUrgente = false;
|
||||
|
||||
// Leemos el estado venga en la columna que venga (HomeServe suele usar 'ACTUALMENTE EN' o 'Estado')
|
||||
const estadoSvc = String(svc['ACTUALMENTE EN'] || svc['Estado'] || svc['ESTADO'] || "").toLowerCase();
|
||||
|
||||
// Si el estado contiene la frase exacta de HomeServe o la palabra urgencia
|
||||
if (estadoSvc.includes('atencion presencial urgencias') || estadoSvc.includes('urgencia')) {
|
||||
esUrgente = true;
|
||||
}
|
||||
|
||||
// Por si acaso algún otro proveedor (como Multi) envía una columna literal llamada "Urgente"
|
||||
if (String(svc['Urgente']).toLowerCase() === 'sí' || String(svc['URGENTE']).toLowerCase() === 'si' || String(svc['Urgente']).toLowerCase() === 'true') {
|
||||
esUrgente = true;
|
||||
}
|
||||
|
||||
// 3. Guardamos en la Base de Datos
|
||||
await pool.query(`
|
||||
INSERT INTO scraped_services (owner_id, provider, service_ref, raw_data, is_urgent)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
ON CONFLICT (owner_id, provider, service_ref)
|
||||
DO UPDATE SET
|
||||
raw_data = scraped_services.raw_data || EXCLUDED.raw_data,
|
||||
is_urgent = EXCLUDED.is_urgent
|
||||
`, [req.user.accountId, provider, ref, JSON.stringify(svc), esUrgente]);
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
console.log(`📥 [CAPTURA] Recibidos ${count} servicios de ${provider}.`);
|
||||
res.json({ ok: true, inserted: count });
|
||||
|
||||
} catch (error) {
|
||||
console.error("❌ Error recibiendo servicios:", error);
|
||||
res.status(500).json({ ok: false, error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
app.get("/providers/scraped", authMiddleware, async (req, res) => {
|
||||
try {
|
||||
const q = await pool.query(`
|
||||
|
||||
Reference in New Issue
Block a user