Actualizar server.js
This commit is contained in:
15
server.js
15
server.js
@@ -983,8 +983,6 @@ 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]);
|
let q = await pool.query("SELECT * FROM service_statuses WHERE owner_id=$1 ORDER BY id ASC", [req.user.accountId]);
|
||||||
|
|
||||||
// 🚀 MAGIA SAAS: Si el usuario es nuevo, inyectamos los 9 estados base obligatorios.
|
|
||||||
if (q.rowCount === 0) {
|
if (q.rowCount === 0) {
|
||||||
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},
|
||||||
@@ -992,10 +990,9 @@ app.get("/statuses", authMiddleware, async (req, res) => {
|
|||||||
{name:'Pendiente de Cita', c:'amber', d:false, f:false, sys:true},
|
{name:'Pendiente de Cita', c:'amber', d:false, f:false, sys:true},
|
||||||
{name:'Citado', c:'emerald', d:false, f:false, sys:true},
|
{name:'Citado', c:'emerald', d:false, f:false, sys:true},
|
||||||
{name:'De Camino', c:'indigo', d:false, f:false, sys:true},
|
{name:'De Camino', c:'indigo', d:false, f:false, sys:true},
|
||||||
{name:'Trabajando', c:'amber', d:false, f:false, sys:true},
|
{name:'Desasignado', c:'orange', d:false, f:false, sys:true},
|
||||||
{name:'Incidencia', c:'red', d:false, f:false, sys:true},
|
{name:'Finalizado', c:'purple', d:false, f:true, sys:true},
|
||||||
{name:'Terminado', c:'purple', d:false, f:true, sys:true},
|
{name:'Anulado', c:'red', d:false, f:true, sys:true}
|
||||||
{name:'Anulado', c:'gray', d:false, f:true, sys:true}
|
|
||||||
];
|
];
|
||||||
for (const s of defaults) {
|
for (const s of defaults) {
|
||||||
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]);
|
||||||
@@ -1018,21 +1015,15 @@ app.delete("/statuses/:id", authMiddleware, async (req, res) => {
|
|||||||
const client = await pool.connect();
|
const client = await pool.connect();
|
||||||
try {
|
try {
|
||||||
const statusId = req.params.id;
|
const statusId = req.params.id;
|
||||||
|
|
||||||
// 1. Comprobamos si es del sistema
|
|
||||||
const sysCheck = await client.query("SELECT is_system FROM service_statuses WHERE id = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
const sysCheck = await client.query("SELECT is_system FROM service_statuses WHERE id = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
||||||
if (sysCheck.rowCount > 0 && sysCheck.rows[0].is_system) {
|
if (sysCheck.rowCount > 0 && sysCheck.rows[0].is_system) {
|
||||||
return res.status(400).json({ ok: false, error: "Este es un estado esencial del sistema y no se puede borrar." });
|
return res.status(400).json({ ok: false, error: "Este es un estado esencial del sistema y no se puede borrar." });
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Comprobamos si está en uso (esto hay que cruzarlo con scraped_services ahora que guardamos el ID ahí)
|
|
||||||
const checkSvc = await client.query("SELECT COUNT(*) FROM services WHERE status_id = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
const checkSvc = await client.query("SELECT COUNT(*) FROM services WHERE status_id = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
||||||
const checkScrap = await client.query("SELECT COUNT(*) FROM scraped_services WHERE raw_data->>'status_operativo' = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
const checkScrap = await client.query("SELECT COUNT(*) FROM scraped_services WHERE raw_data->>'status_operativo' = $1 AND owner_id = $2", [statusId, req.user.accountId]);
|
||||||
|
|
||||||
if (parseInt(checkSvc.rows[0].count) > 0 || parseInt(checkScrap.rows[0].count) > 0) {
|
if (parseInt(checkSvc.rows[0].count) > 0 || parseInt(checkScrap.rows[0].count) > 0) {
|
||||||
return res.status(400).json({ ok: false, error: "No puedes borrar un estado que tiene servicios asignados." });
|
return res.status(400).json({ ok: false, error: "No puedes borrar un estado que tiene servicios asignados." });
|
||||||
}
|
}
|
||||||
|
|
||||||
await client.query("DELETE FROM service_statuses WHERE id=$1 AND owner_id=$2", [statusId, req.user.accountId]);
|
await client.query("DELETE FROM service_statuses WHERE id=$1 AND owner_id=$2", [statusId, req.user.accountId]);
|
||||||
res.json({ ok: true });
|
res.json({ ok: true });
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user