14 servicios eliminados, 7 controllers local-only, crons locales, config sin MONDAY_*, frontend sin banners/avisos Monday. 552 tests API + 7 apps construidas.
26 lines
1.2 KiB
TypeScript
26 lines
1.2 KiB
TypeScript
import type { Request, Response } from 'express'
|
|
import { getUnidadesLocal, getUnidadLocal } from '../services/unidades-local.service.js'
|
|
import { NotFoundError } from '../utils/errors.js'
|
|
|
|
/**
|
|
* GET /api/unidades — ?disponibles=true filtra solo DISPONIBLE; ?desarrollo= filtra por desarrollo.
|
|
* Lee el espejo local (tabla Unidad), mismo contrato de respuesta.
|
|
*/
|
|
export async function listarUnidades(req: Request, res: Response): Promise<void> {
|
|
const unidades = await getUnidadesLocal()
|
|
const disponibles = req.query['disponibles'] === 'true'
|
|
const desarrollo = req.query['desarrollo']?.toString().toUpperCase()
|
|
let lista = disponibles ? unidades.filter((u) => u.status === 'DISPONIBLE') : unidades
|
|
if (desarrollo) {
|
|
lista = lista.filter((u) => (u.desarrollo || 'DIAGONAL').toUpperCase() === desarrollo)
|
|
}
|
|
res.json(lista)
|
|
}
|
|
|
|
/** GET /api/unidades/:codigo — 404 si no existe en el espejo local */
|
|
export async function obtenerUnidad(req: Request, res: Response): Promise<void> {
|
|
const unidad = await getUnidadLocal(String(req.params['codigo']))
|
|
if (!unidad) throw new NotFoundError(`Unidad ${String(req.params['codigo'])} no encontrada`)
|
|
res.json(unidad)
|
|
}
|