Actualizar server.js
This commit is contained in:
28
server.js
28
server.js
@@ -981,12 +981,7 @@ app.put("/clients/:id", authMiddleware, async (req, res) => {
|
|||||||
// ==========================================
|
// ==========================================
|
||||||
app.get("/statuses", authMiddleware, async (req, res) => {
|
app.get("/statuses", authMiddleware, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
let q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1 ORDER BY id ASC", [req.user.accountId]);
|
// 1. FORZAMOS LA INYECCIÓN/ACTUALIZACIÓN SIEMPRE (A prueba de fallos)
|
||||||
|
|
||||||
// 🚀 VERIFICACIÓN DE MIGRACIÓN: Comprobamos si el usuario ya tiene los estados protegidos del sistema
|
|
||||||
const hasSystemStatuses = q.rows.some(s => s.is_system === true);
|
|
||||||
|
|
||||||
if (!hasSystemStatuses) {
|
|
||||||
const defaults = [
|
const defaults = [
|
||||||
{name:'Pendiente de Asignar', c:'gray', d:true, f:false, sys:true},
|
{name:'Pendiente de Asignar', c:'gray', d:true, f:false, sys:true},
|
||||||
{name:'Asignado', c:'blue', d:false, f:false, sys:true},
|
{name:'Asignado', c:'blue', d:false, f:false, sys:true},
|
||||||
@@ -1001,30 +996,23 @@ app.get("/statuses", authMiddleware, async (req, res) => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
for (const s of defaults) {
|
for (const s of defaults) {
|
||||||
// Evitamos duplicados si el usuario ya había creado uno con el mismo nombre
|
// Buscamos si existe por nombre
|
||||||
const check = await pool.query("SELECT id FROM service_statuses WHERE owner_id=$1 AND name=$2", [req.user.accountId, s.name]);
|
const check = await pool.query("SELECT id FROM service_statuses WHERE owner_id=$1 AND name=$2", [req.user.accountId, s.name]);
|
||||||
if(check.rowCount === 0){
|
if(check.rowCount === 0){
|
||||||
|
// Si no existe, lo creamos blindado
|
||||||
await pool.query("INSERT INTO service_statuses (owner_id,name,color,is_default,is_final,is_system) VALUES ($1,$2,$3,$4,$5,$6)", [req.user.accountId,s.name,s.c,s.d,s.f,s.sys]);
|
await pool.query("INSERT INTO service_statuses (owner_id,name,color,is_default,is_final,is_system) VALUES ($1,$2,$3,$4,$5,$6)", [req.user.accountId,s.name,s.c,s.d,s.f,s.sys]);
|
||||||
} else {
|
} else {
|
||||||
// Si ya existe, lo convertimos en estado de sistema para protegerlo
|
// Si existe, lo actualizamos para asegurarnos de que el color y el candado son correctos
|
||||||
await pool.query("UPDATE service_statuses SET is_system=true WHERE id=$1", [check.rows[0].id]);
|
await pool.query("UPDATE service_statuses SET is_system=true, color=$2, is_final=$3 WHERE id=$1", [check.rows[0].id, s.c, s.f]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Recargamos la lista final
|
|
||||||
q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1 ORDER BY id ASC", [req.user.accountId]);
|
// 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 });
|
res.json({ ok: true, statuses: q.rows });
|
||||||
} catch (e) { res.status(500).json({ ok: false }); }
|
} catch (e) { res.status(500).json({ ok: false }); }
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/statuses", authMiddleware, async (req, res) => {
|
|
||||||
try {
|
|
||||||
const { name, color } = req.body;
|
|
||||||
await pool.query("INSERT INTO service_statuses (owner_id, name, color, is_system) VALUES ($1, $2, $3, false)", [req.user.accountId, name, color || 'gray']);
|
|
||||||
res.json({ ok: true });
|
|
||||||
} catch(e) { res.status(500).json({ ok: false }); }
|
|
||||||
});
|
|
||||||
|
|
||||||
app.delete("/statuses/:id", authMiddleware, async (req, res) => {
|
app.delete("/statuses/:id", authMiddleware, async (req, res) => {
|
||||||
const client = await pool.connect();
|
const client = await pool.connect();
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user