feat(mejoras): 22 mejoras UX en todos los módulos
Mi día: cancelación con motivo, conteo escrituración real, cita sin retroceder, calendario completo Cobranza: MoraDashboard respeta alcance, hoy dinámico, cancelar con motivo Landing: contactos paginados, error vs vacío diferenciado Dashboards: KPI renombrado, drill-down planes activos Chat: historial recarga, preguntas rotativas, error solo toast Transversal: shadow-sm corrupto corregido en 9 archivos 553 API tests + 7 apps construidas
This commit is contained in:
@@ -5,11 +5,14 @@ import { NotFoundError } from '../utils/errors.js'
|
||||
|
||||
/**
|
||||
* GET /api/contactos (Bearer) → contactos locales (tabla Cliente + LeadCaptura:
|
||||
* nombre, teléfono, email, estado), lo más reciente primero, máx 100. Filtra
|
||||
* por usuario actual: clientes capturados por él + leads asignados a él.
|
||||
* nombre, teléfono, email, estado), lo más reciente primero, paginado de 100 en
|
||||
* 100 (?pagina=N; el front muestra el límite). Filtra por usuario actual:
|
||||
* clientes capturados por él + leads asignados a él.
|
||||
*/
|
||||
export async function listarContactosEndpoint(req: Request, res: Response): Promise<void> {
|
||||
res.json(await listarContactosLocal(req.usuarioToken?.sub))
|
||||
const paginaParam = Number(req.query['pagina'])
|
||||
const pagina = Number.isFinite(paginaParam) && paginaParam >= 1 ? Math.floor(paginaParam) : 1
|
||||
res.json(await listarContactosLocal(req.usuarioToken?.sub, pagina))
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user