'use strict';

const path = require('path');

const VIEW_ROUTES = Object.freeze({
  '/login': 'login.html',
  '/configuracion-metas': 'configuracion-metas.html',
  '/admin': 'admin.html',
  '/arkhon-engineering': 'admin.html',
  '/reportes': 'reportes.html',
  '/inventario': 'inventario.html',
  '/ia-importacion': 'ia-importacion.html',
  '/insumos': 'insumos.html',
  '/productos-editor': 'productos-admin.html',
  '/compras': 'compras.html',
  '/mantenimiento': 'mantenimiento.html',
  '/corte-x': 'corte-x.html',
  '/corte-z': 'corte-z.html',
  '/corte-print': 'corte-print.html',
  '/retiros-caja': 'movimientos-caja.html',
  '/movimientos-caja': 'movimientos-caja.html',
  '/depositos-efectivo': 'depositos-efectivo.html',
  '/cancelaciones': 'cancelaciones.html',
  '/productos-cancelados': 'productos-cancelados.html',
  '/cortesias': 'cortesias.html',
  '/formas-de-pago': 'formas-de-pago.html',
  '/gastos': 'gastos.html',
  '/billing': 'billing.html',
  '/arkhon-card': 'arkhon-card.html',
  '/autofactura': 'autofactura.html',
  '/facturar': 'autofactura.html',
  '/vistas/facturar': 'autofactura.html',
});

function noCacheView(viewsDir, file) {
  return (_req, res) => {
    res.set('Cache-Control', 'no-cache, no-store, must-revalidate');
    res.set('Pragma', 'no-cache');
    res.set('Expires', '0');
    res.sendFile(path.join(viewsDir, file));
  };
}

function registerWebRoutes(app) {
  const frontendDir = path.join(__dirname, '..', '..', 'frontend');
  const viewsDir = path.join(frontendDir, 'views');
  for (const [routePath, file] of Object.entries(VIEW_ROUTES)) {
    app.get(routePath, noCacheView(viewsDir, file));
  }
  app.get('/admin-setup', (req, res, next) => {
    if (req.query.tab !== 'usuarios') return res.redirect(302, '/admin-setup?tab=usuarios');
    return noCacheView(viewsDir, 'admin.html')(req, res, next);
  });
}

module.exports = { VIEW_ROUTES, registerWebRoutes };
