Actualizar server.js
This commit is contained in:
28
server.js
28
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] || {} });
|
||||
|
||||
Reference in New Issue
Block a user