import { Router, type IRouter } from 'express';
import { authenticate } from '../middlewares/auth.middleware.js';
import { tenantMiddleware } from '../middlewares/tenant.middleware.js';
import * as alertasController from '../controllers/alertas.controller.js';

const router: IRouter = Router();

router.use(authenticate);
router.use(tenantMiddleware);

router.get('/', alertasController.getAlertas);
router.get('/automaticas', alertasController.getAlertasAutomaticas);
router.get('/manuales', alertasController.getManualesPendientes);
router.patch('/manuales/:id/resolver', alertasController.resolverAlertaManual);
router.get('/drilldown/lista-negra-clientes', alertasController.getListaNegraClientes);
router.get('/drilldown/lista-negra-proveedores', alertasController.getListaNegraProveedores);
router.get('/drilldown/concentracion-clientes', alertasController.getConcentracionClientes);
router.get('/drilldown/concentracion-proveedores', alertasController.getConcentracionProveedores);
router.get('/drilldown/discrepancia-regimen', alertasController.getDiscrepanciaRegimen);
router.get('/drilldown/cancelaciones', alertasController.getCancelados);
router.get('/drilldown/cancelaciones-periodo-anterior', alertasController.getCancelacionesPeriodoAnterior);
router.get('/drilldown/efectivo', alertasController.getEfectivo);
router.get('/drilldown/tipo-relacion-sospechosa', alertasController.getTipoRelacionSospechosa);
router.post('/descartar', alertasController.descartarCfdis);
router.delete('/descartar', alertasController.restaurarDescartados);
router.get('/descartados', alertasController.getDescartados);
router.get('/stats', alertasController.getStats);
router.post('/mark-all-read', alertasController.markAllAsRead);
router.get('/:id', alertasController.getAlerta);
router.post('/', alertasController.createAlerta);
router.patch('/:id', alertasController.updateAlerta);
router.delete('/:id', alertasController.deleteAlerta);

export { router as alertasRoutes };
