From ec2d27c84313a319221eea52ad96ca046ec519dd Mon Sep 17 00:00:00 2001 From: marsalva Date: Fri, 20 Feb 2026 19:47:36 +0000 Subject: [PATCH] Actualizar server.js --- server.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/server.js b/server.js index 1922b24..a25088f 100644 --- a/server.js +++ b/server.js @@ -981,7 +981,7 @@ app.put("/clients/:id", authMiddleware, async (req, res) => { // ========================================== app.get("/statuses", authMiddleware, async (req, res) => { try { - // 1. FORZAMOS LA INYECCIÓN/ACTUALIZACIÓN SIEMPRE (A prueba de fallos) + // 1. FORZAMOS LA INYECCIÓN/ACTUALIZACIÓN SIEMPRE const defaults = [ {name:'Pendiente de Asignar', c:'gray', d:true, f:false, sys:true}, {name:'Asignado', c:'blue', d:false, f:false, sys:true}, @@ -1004,13 +1004,24 @@ app.get("/statuses", authMiddleware, async (req, res) => { } } - // 🧹 MAGIA LIMPIADORA: Le quitamos el candado a los estados viejos (como "Pendiente de Cita") + // 🧹 Limpiamos el candado a los viejos 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]); - // 2. RECUPERAMOS LA LISTA YA ACTUALIZADA PARA EL FRONTEND - let q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1 ORDER BY is_system DESC, id ASC", [req.user.accountId]); - res.json({ ok: true, statuses: q.rows }); + // 2. RECUPERAMOS LOS ESTADOS + 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 + let sortedStatuses = q.rows.sort((a, b) => { + let idxA = nombresOficiales.indexOf(a.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(idxB === -1) idxB = 99; + return idxA - idxB; + }); + + res.json({ ok: true, statuses: sortedStatuses }); } catch (e) { res.status(500).json({ ok: false }); } });