feat(loans): confirm declared material state changes

This commit is contained in:
SaidSoighiri94
2026-07-24 13:41:40 +02:00
parent 3739e9b0a0
commit a562b3248f
26 changed files with 1832 additions and 282 deletions
@@ -2,15 +2,18 @@ import { Request, Response } from 'express';
import { AppError } from '../errors/app-error';
import {
changerStatutAnomalieResponsableService,
deciderEcartResponsableService,
getDashboardResponsable,
listerAnomaliesResponsable,
listerHistoriqueResponsable,
listerNotificationsResponsable,
listerMaterielsResponsable,
listerEmpruntsResponsable,
listerEcartsResponsable,
marquerNotificationResponsableLue,
marquerToutesNotificationsResponsableLues,
parseAnomalieId,
parseEmpruntId,
parseCategorieId,
parseLu,
parseNotificationId,
@@ -24,6 +27,7 @@ import {
toAnomalieResponsableResponse,
toDashboardResponsableResponse,
toEmpruntResponsableResponse,
toEcartResponsableResponse,
toHistoriqueResponsableResponse,
toMaterielResponsableResponse,
toNotificationResponsableResponse,
@@ -77,6 +81,44 @@ export async function getEmprunts(req: Request, res: Response): Promise<void> {
res.json({ data: emprunts.map(toEmpruntResponsableResponse) });
}
export async function getEcarts(req: Request, res: Response): Promise<void> {
const user = req.user;
if (!user) {
throw new AppError(401, 'Authentification requise');
}
const ecarts = await listerEcartsResponsable(user.roleCode, user.campusId);
res.json({ data: ecarts.map(toEcartResponsableResponse) });
}
export async function patchEcartDecision(req: Request, res: Response): Promise<void> {
const user = req.user;
if (!user) {
throw new AppError(401, 'Authentification requise');
}
const empruntId = parseEmpruntId(req.params.id);
const body = asBodyObject(req.body);
if (body.decision !== 'CONFIRMER' && body.decision !== 'REFUSER') {
throw new AppError(400, 'decision invalide');
}
const observation = typeof body.observation === 'string' ? body.observation : undefined;
const statutMateriel = parseStatutMateriel(body.statutMateriel);
const ecart = await deciderEcartResponsableService(
user.id,
user.roleCode,
user.campusId,
empruntId,
{
decision: body.decision,
observation,
statutMateriel,
},
);
res.json({ data: toEcartResponsableResponse(ecart) });
}
export async function getMateriels(req: Request, res: Response): Promise<void> {
const user = req.user;
if (!user) {