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 }); } });
|
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) => {
|
app.post("/config/company", authMiddleware, async (req, res) => {
|
||||||
const client = await pool.connect();
|
const client = await pool.connect();
|
||||||
try {
|
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)
|
// 1. Manejo del Slug (Enlace)
|
||||||
let cleanSlug = null;
|
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" });
|
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 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á
|
// 3. UPDATE Inteligente: Solo cambia lo que le enviamos, el resto lo deja como está
|
||||||
await client.query(`
|
await client.query(`
|
||||||
@@ -3816,14 +3810,16 @@ app.post("/config/company", authMiddleware, async (req, res) => {
|
|||||||
SET company_slug = COALESCE($1, company_slug),
|
SET company_slug = COALESCE($1, company_slug),
|
||||||
full_name = COALESCE($2, full_name),
|
full_name = COALESCE($2, full_name),
|
||||||
company_logo = COALESCE($3, company_logo),
|
company_logo = COALESCE($3, company_logo),
|
||||||
portal_settings = COALESCE(portal_settings, '{}'::jsonb) || COALESCE($4, '{}'::jsonb),
|
company_ad = COALESCE($4, company_ad),
|
||||||
app_settings = COALESCE(app_settings, '{}'::jsonb) || COALESCE($5, '{}'::jsonb),
|
portal_settings = COALESCE(portal_settings, '{}'::jsonb) || COALESCE($5, '{}'::jsonb),
|
||||||
billing_settings = COALESCE(billing_settings, '{}'::jsonb) || COALESCE($6, '{}'::jsonb)
|
app_settings = COALESCE(app_settings, '{}'::jsonb) || COALESCE($6, '{}'::jsonb),
|
||||||
WHERE id = $7
|
billing_settings = COALESCE(billing_settings, '{}'::jsonb) || COALESCE($7, '{}'::jsonb)
|
||||||
|
WHERE id = $8
|
||||||
`, [
|
`, [
|
||||||
cleanSlug,
|
cleanSlug,
|
||||||
company_name ?? null,
|
company_name ?? null,
|
||||||
company_logo ?? null,
|
company_logo ?? null,
|
||||||
|
company_ad ?? null,
|
||||||
portal_settings ? JSON.stringify(portal_settings) : null,
|
portal_settings ? JSON.stringify(portal_settings) : null,
|
||||||
app_settings ? JSON.stringify(app_settings) : null,
|
app_settings ? JSON.stringify(app_settings) : null,
|
||||||
billing_settings ? JSON.stringify(billing_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) => {
|
app.get("/config/company", authMiddleware, async (req, res) => {
|
||||||
try {
|
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, company_ad, 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, portal_settings, app_settings, billing_settings FROM users WHERE id=$1", [req.user.accountId]);
|
|
||||||
res.json({ ok: true, config: q.rows[0] || {} });
|
res.json({ ok: true, config: q.rows[0] || {} });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// Si falla porque la columna aún no se ha creado (el usuario nunca ha guardado), devolvemos el resto normal
|
|
||||||
try {
|
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]);
|
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] || {} });
|
res.json({ ok: true, config: fallback.rows[0] || {} });
|
||||||
|
|||||||
Reference in New Issue
Block a user