Actualizar server.js

This commit is contained in:
2026-05-17 21:03:28 +00:00
parent fc9945ad32
commit 2583b5b69c

View File

@@ -3784,20 +3784,13 @@ app.put("/admin/users/:id", authMiddleware, async (req, res) => { const client =
app.delete("/admin/users/:id", authMiddleware, async (req, res) => { try { await pool.query("DELETE FROM users WHERE id=$1 AND owner_id=$2", [req.params.id, req.user.accountId]); res.json({ ok: true }); } catch (e) { res.status(500).json({ ok: false }); } });
// ==========================================
// 🏢 CONFIGURACIÓN EMPRESA (COLORES, LOGO, PORTAL)
// 🏢 CONFIGURACIÓN EMPRESA (COLORES, LOGO, PUBLICIDAD, PORTAL)
// ==========================================
app.get("/config/company", authMiddleware, async (req, res) => {
try {
// 🔎 AÑADIMOS 'billing_settings' A LA CONSULTA
const q = await pool.query("SELECT company_slug, full_name, plan_tier, company_logo, portal_settings, app_settings, billing_settings FROM users WHERE id=$1", [req.user.accountId]);
res.json({ ok: true, config: q.rows[0] || {} });
} catch (e) { res.status(500).json({ ok: false }); }
});
app.post("/config/company", authMiddleware, async (req, res) => {
const client = await pool.connect();
try {
const { slug, company_name, company_logo, portal_settings, app_settings, billing_settings } = req.body;
const { slug, company_name, company_logo, company_ad, portal_settings, app_settings, billing_settings } = req.body;
// 1. Manejo del Slug (Enlace)
let cleanSlug = null;
@@ -3807,8 +3800,9 @@ app.post("/config/company", authMiddleware, async (req, res) => {
if (check.rowCount > 0) return res.status(400).json({ ok: false, error: "Enlace en uso" });
}
// 2. Asegurar que existe la columna de facturación
// 2. Asegurar que existe la columna de facturación y publicidad
await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS billing_settings JSONB DEFAULT '{}'`);
await client.query(`ALTER TABLE users ADD COLUMN IF NOT EXISTS company_ad TEXT`);
// 3. UPDATE Inteligente: Solo cambia lo que le enviamos, el resto lo deja como está
await client.query(`
@@ -3816,14 +3810,16 @@ app.post("/config/company", authMiddleware, async (req, res) => {
SET company_slug = COALESCE($1, company_slug),
full_name = COALESCE($2, full_name),
company_logo = COALESCE($3, company_logo),
portal_settings = COALESCE(portal_settings, '{}'::jsonb) || COALESCE($4, '{}'::jsonb),
app_settings = COALESCE(app_settings, '{}'::jsonb) || COALESCE($5, '{}'::jsonb),
billing_settings = COALESCE(billing_settings, '{}'::jsonb) || COALESCE($6, '{}'::jsonb)
WHERE id = $7
company_ad = COALESCE($4, company_ad),
portal_settings = COALESCE(portal_settings, '{}'::jsonb) || COALESCE($5, '{}'::jsonb),
app_settings = COALESCE(app_settings, '{}'::jsonb) || COALESCE($6, '{}'::jsonb),
billing_settings = COALESCE(billing_settings, '{}'::jsonb) || COALESCE($7, '{}'::jsonb)
WHERE id = $8
`, [
cleanSlug,
company_name ?? null,
company_logo ?? null,
company_ad ?? null,
portal_settings ? JSON.stringify(portal_settings) : null,
app_settings ? JSON.stringify(app_settings) : null,
billing_settings ? JSON.stringify(billing_settings) : null,
@@ -3839,11 +3835,9 @@ app.post("/config/company", authMiddleware, async (req, res) => {
app.get("/config/company", authMiddleware, async (req, res) => {
try {
// 4. Modificamos también el GET para que devuelva los datos de facturación al Frontend
const q = await pool.query("SELECT company_slug, full_name, plan_tier, company_logo, portal_settings, app_settings, billing_settings FROM users WHERE id=$1", [req.user.accountId]);
const q = await pool.query("SELECT company_slug, full_name, plan_tier, company_logo, company_ad, portal_settings, app_settings, billing_settings FROM users WHERE id=$1", [req.user.accountId]);
res.json({ ok: true, config: q.rows[0] || {} });
} catch (e) {
// Si falla porque la columna aún no se ha creado (el usuario nunca ha guardado), devolvemos el resto normal
try {
const fallback = await pool.query("SELECT company_slug, full_name, plan_tier, company_logo, portal_settings, app_settings FROM users WHERE id=$1", [req.user.accountId]);
res.json({ ok: true, config: fallback.rows[0] || {} });