Actualizar server.js
This commit is contained in:
23
server.js
23
server.js
@@ -1008,14 +1008,27 @@ app.get("/statuses", authMiddleware, async (req, res) => {
|
|||||||
const nombresOficiales = defaults.map(d => d.name);
|
const nombresOficiales = defaults.map(d => d.name);
|
||||||
await pool.query("UPDATE service_statuses SET is_system=false WHERE owner_id=$1 AND name != ALL($2::text[])", [req.user.accountId, nombresOficiales]);
|
await pool.query("UPDATE service_statuses SET is_system=false WHERE owner_id=$1 AND name != ALL($2::text[])", [req.user.accountId, nombresOficiales]);
|
||||||
|
|
||||||
// 2. RECUPERAMOS LOS ESTADOS
|
// 🚀 FUSIÓN AUTOMÁTICA: Movemos todo lo viejo al nuevo y borramos el fantasma
|
||||||
|
let currentDb = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1", [req.user.accountId]);
|
||||||
|
const idEsperando = currentDb.rows.find(s => s.name === 'Esperando al Cliente')?.id;
|
||||||
|
const idPendiente = currentDb.rows.find(s => s.name === 'Pendiente de Cita')?.id;
|
||||||
|
|
||||||
|
if (idEsperando && idPendiente) {
|
||||||
|
// Pasamos los servicios normales
|
||||||
|
await pool.query("UPDATE services SET status_id = $1 WHERE status_id = $2 AND owner_id = $3", [idEsperando, idPendiente, req.user.accountId]);
|
||||||
|
// Pasamos los servicios del panel operativo (JSON)
|
||||||
|
await pool.query(`UPDATE scraped_services SET raw_data = jsonb_set(COALESCE(raw_data, '{}'::jsonb), '{status_operativo}', to_jsonb($1::text)) WHERE raw_data->>'status_operativo' = $2 AND owner_id = $3`, [String(idEsperando), String(idPendiente), req.user.accountId]);
|
||||||
|
// Exterminamos "Pendiente de Cita"
|
||||||
|
await pool.query("DELETE FROM service_statuses WHERE id = $1 AND owner_id = $2", [idPendiente, req.user.accountId]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. RECUPERAMOS LOS ESTADOS LIMPIOS
|
||||||
let q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1", [req.user.accountId]);
|
let q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1", [req.user.accountId]);
|
||||||
|
|
||||||
// 🚀 MAGIA DE ORDENACIÓN: Forzamos el orden visual lógico del flujo de trabajo
|
// ORDENAMOS
|
||||||
let sortedStatuses = q.rows.sort((a, b) => {
|
let sortedStatuses = q.rows.sort((a, b) => {
|
||||||
let idxA = nombresOficiales.indexOf(a.name);
|
let idxA = nombresOficiales.indexOf(a.name);
|
||||||
let idxB = nombresOficiales.indexOf(b.name);
|
let idxB = nombresOficiales.indexOf(b.name);
|
||||||
// Si hay un estado viejo o creado a mano (ej. Pendiente de Cita), lo mandamos al final (99)
|
|
||||||
if(idxA === -1) idxA = 99;
|
if(idxA === -1) idxA = 99;
|
||||||
if(idxB === -1) idxB = 99;
|
if(idxB === -1) idxB = 99;
|
||||||
return idxA - idxB;
|
return idxA - idxB;
|
||||||
@@ -1025,6 +1038,10 @@ app.get("/statuses", authMiddleware, async (req, res) => {
|
|||||||
} catch (e) { res.status(500).json({ ok: false }); }
|
} catch (e) { res.status(500).json({ ok: false }); }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
res.json({ ok: true, statuses: sortedStatuses });
|
||||||
|
} catch (e) { res.status(500).json({ ok: false }); }
|
||||||
|
});
|
||||||
|
|
||||||
app.get("/clients/search", authMiddleware, async (req, res) => { try { const { phone } = req.query; const p = normalizePhone(phone); if(!p) return res.json({ok:true,client:null}); const q = await pool.query("SELECT * FROM clients WHERE phone=$1 AND owner_id=$2 LIMIT 1", [p, req.user.accountId]); res.json({ ok: true, client: q.rows[0] || null }); } catch (e) { res.status(500).json({ ok: false }); } });
|
app.get("/clients/search", authMiddleware, async (req, res) => { try { const { phone } = req.query; const p = normalizePhone(phone); if(!p) return res.json({ok:true,client:null}); const q = await pool.query("SELECT * FROM clients WHERE phone=$1 AND owner_id=$2 LIMIT 1", [p, req.user.accountId]); res.json({ ok: true, client: q.rows[0] || null }); } catch (e) { res.status(500).json({ ok: false }); } });
|
||||||
app.get("/companies", authMiddleware, async (req, res) => { try { const q = await pool.query("SELECT * FROM companies WHERE owner_id=$1 ORDER BY name ASC", [req.user.accountId]); res.json({ ok: true, companies: q.rows }); } catch (e) { res.status(500).json({ ok: false }); } });
|
app.get("/companies", authMiddleware, async (req, res) => { try { const q = await pool.query("SELECT * FROM companies WHERE owner_id=$1 ORDER BY name ASC", [req.user.accountId]); res.json({ ok: true, companies: q.rows }); } catch (e) { res.status(500).json({ ok: false }); } });
|
||||||
app.post("/companies", authMiddleware, async (req, res) => { try { const { name } = req.body; await pool.query("INSERT INTO companies (name, owner_id) VALUES ($1, $2)", [name, req.user.accountId]); res.json({ ok: true }); } catch (e) { res.status(500).json({ ok: false }); } });
|
app.post("/companies", authMiddleware, async (req, res) => { try { const { name } = req.body; await pool.query("INSERT INTO companies (name, owner_id) VALUES ($1, $2)", [name, req.user.accountId]); res.json({ ok: true }); } catch (e) { res.status(500).json({ ok: false }); } });
|
||||||
|
|||||||
Reference in New Issue
Block a user