const express = require('express'); const router = express.Router(); const { isSuperAdmin } = require('../middleware/auth'); const Company = require('../models/Company'); const User = require('../models/User'); const Ticket = require('../models/Ticket'); router.get('/companies', isSuperAdmin, async (req, res) => { try { const companies = await Company.findAll(); for (const c of companies) { c.userCount = await Company.countUsers(c.id); c.ticketCount = await Company.countTickets(c.id); } res.render('saas/companies', { companies }); } catch (error) { console.error(error); req.flash('error_msg', 'Error al cargar empresas'); res.redirect('/'); } }); router.post('/companies/create', isSuperAdmin, async (req, res) => { const { name, slug, plan } = req.body; if (!name || !slug) { req.flash('error_msg', 'Nombre y slug son obligatorios'); return res.redirect('/saas/companies'); } try { const existing = await Company.findBySlug(slug); if (existing) { req.flash('error_msg', 'El slug ya existe'); return res.redirect('/saas/companies'); } const companyId = await Company.create(name, slug, plan || 'free'); const Department = require('../models/Department'); await Department.create(companyId, 'Soporte Técnico', 'Problemas técnicos'); await Department.create(companyId, 'General', 'Consultas generales'); const bcrypt = require('bcryptjs'); const hash = await bcrypt.hash('123456', 10); await User.create(companyId, 'Admin', `admin@${slug}.com`, hash, 'admin'); req.flash('success_msg', `Empresa ${name} creada`); res.redirect('/saas/companies'); } catch (error) { console.error(error); req.flash('error_msg', 'Error al crear empresa'); res.redirect('/saas/companies'); } }); router.post('/companies/update/:id', isSuperAdmin, async (req, res) => { const { name, plan, max_users, max_tickets, is_active } = req.body; try { const data = {}; if (name) data.name = name; if (plan) data.plan = plan; if (max_users) data.max_users = parseInt(max_users); if (max_tickets) data.max_tickets = parseInt(max_tickets); data.is_active = is_active ? 1 : 0; await Company.update(req.params.id, data); req.flash('success_msg', 'Empresa actualizada'); res.redirect('/saas/companies'); } catch (error) { console.error(error); req.flash('error_msg', 'Error al actualizar empresa'); res.redirect('/saas/companies'); } }); module.exports = router;