diff --git a/server.js b/server.js index bde8bf0..c71a2e4 100644 --- a/server.js +++ b/server.js @@ -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] || {} });