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
+36
View File
@@ -10,9 +10,19 @@ export interface EmpruntResponse {
dateRetourReelle: Date | null;
statut: string;
materiel: MaterielResponse;
checklistDepart: ChecklistElementResponse[];
}
export interface ChecklistElementResponse {
accessoireId: number | null;
nomElement: string;
etat: string;
quantiteConstatee: number;
}
export function toEmpruntResponse(emprunt: EmpruntAvecMateriel): EmpruntResponse {
const checklistDepart = emprunt.checklists.find((checklist) => checklist.type === 'DEPART');
return {
id: emprunt.id,
dateEmprunt: emprunt.dateEmprunt,
@@ -20,6 +30,13 @@ export function toEmpruntResponse(emprunt: EmpruntAvecMateriel): EmpruntResponse
dateRetourReelle: emprunt.dateRetourReelle,
statut: emprunt.statut,
materiel: toMaterielResponse(emprunt.materiel),
checklistDepart:
checklistDepart?.elements.map((element) => ({
accessoireId: element.accessoireId,
nomElement: element.nomElement,
etat: element.etat,
quantiteConstatee: element.quantiteConstatee,
})) ?? [],
};
}
@@ -123,6 +140,25 @@ export interface RestituerEmpruntRequest {
elements: ChecklistElementRequest[];
}
export interface SignalerTentativeRetourRequest {
nomElement: string;
etatInitial: string;
etatDemande: string;
}
export function parseSignalerTentativeRetourRequest(body: unknown): SignalerTentativeRetourRequest {
const obj = asObject(body, 'Corps de requete invalide');
if (typeof obj.nomElement !== 'string' || obj.nomElement.trim() === '') {
throw new AppError(400, 'nomElement requis');
}
return {
nomElement: obj.nomElement.trim(),
etatInitial: asEnum(obj.etatInitial, ETAT_CHECKLIST_ELEMENT, 'etatInitial'),
etatDemande: asEnum(obj.etatDemande, ETAT_CHECKLIST_ELEMENT, 'etatDemande'),
};
}
export function parseRestituerEmpruntRequest(body: unknown): RestituerEmpruntRequest {
const obj = asObject(body, 'Corps de requete invalide');