Initial commit - Horux Despachos NL
This commit is contained in:
46
apps/api/src/controllers/admin-clientes.controller.ts
Normal file
46
apps/api/src/controllers/admin-clientes.controller.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type { Request, Response, NextFunction } from 'express';
|
||||
import * as svc from '../services/admin-clientes.service.js';
|
||||
import { isPlatformStaff } from '../utils/platform-admin.js';
|
||||
import { AppError } from '../middlewares/error.middleware.js';
|
||||
|
||||
async function requireStaff(req: Request) {
|
||||
if (!req.user?.userId) throw new AppError(401, 'No autenticado');
|
||||
const isStaff = await isPlatformStaff(req.user.userId);
|
||||
if (!isStaff) throw new AppError(403, 'Acceso restringido a staff de plataforma');
|
||||
}
|
||||
|
||||
/**
|
||||
* Stats de gestión de clientes.
|
||||
*
|
||||
* Query params:
|
||||
* - `from` (YYYY-MM-DD): inicio del rango. Default: primer día del mes en curso.
|
||||
* - `to` (YYYY-MM-DD): fin del rango. Default: último día del mes en curso.
|
||||
*/
|
||||
export async function getStats(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
await requireStaff(req);
|
||||
const now = new Date();
|
||||
const defaultFrom = new Date(now.getFullYear(), now.getMonth(), 1);
|
||||
const defaultTo = new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59, 999);
|
||||
|
||||
const fromStr = String(req.query.from || '').trim();
|
||||
const toStr = String(req.query.to || '').trim();
|
||||
const from = fromStr ? new Date(fromStr + 'T00:00:00') : defaultFrom;
|
||||
const to = toStr ? new Date(toStr + 'T23:59:59.999') : defaultTo;
|
||||
if (isNaN(from.getTime()) || isNaN(to.getTime())) {
|
||||
return next(new AppError(400, 'Rango de fechas inválido'));
|
||||
}
|
||||
const stats = await svc.getClientesStats({ from, to });
|
||||
return res.json(stats);
|
||||
} catch (err) { return next(err); }
|
||||
}
|
||||
|
||||
export async function listUsuarios(req: Request, res: Response, next: NextFunction) {
|
||||
try {
|
||||
await requireStaff(req);
|
||||
const tenantId = String(req.params.tenantId || '');
|
||||
if (!tenantId) return next(new AppError(400, 'tenantId requerido'));
|
||||
const usuarios = await svc.getTenantUsuarios(tenantId);
|
||||
return res.json({ data: usuarios });
|
||||
} catch (err) { return next(err); }
|
||||
}
|
||||
Reference in New Issue
Block a user