feat(responsable): improve loan supervision table

This commit is contained in:
SaidSoighiri94
2026-07-24 15:00:16 +02:00
parent 4ee593c8d4
commit 5121cac657
6 changed files with 748 additions and 29 deletions
@@ -45,8 +45,22 @@ export interface DashboardResponsableData {
export interface ListerEmpruntsResponsableFiltres {
statut?: StatutEmprunt;
annee?: number;
recherche?: string;
tri?: TriEmpruntResponsable;
ordre?: OrdreTri;
}
export type TriEmpruntResponsable =
| 'dateEmprunt'
| 'dateRetourPrevue'
| 'dateRetourReelle'
| 'materiel'
| 'etudiant'
| 'statut';
export type OrdreTri = 'asc' | 'desc';
export interface ListerMaterielsResponsableFiltres {
statut?: StatutMateriel;
categorieId?: number;
@@ -139,6 +153,49 @@ export function parseStatutEmprunt(value: unknown): StatutEmprunt | undefined {
return value as StatutEmprunt;
}
export function parseAnneeEmprunt(value: unknown): number | undefined {
if (value === undefined) {
return undefined;
}
if (typeof value !== 'string') {
throw new AppError(400, 'annee invalide');
}
const annee = Number(value);
if (!Number.isInteger(annee) || annee < 2000 || annee > 2100) {
throw new AppError(400, 'annee invalide');
}
return annee;
}
export function parseTriEmprunt(value: unknown): TriEmpruntResponsable | undefined {
if (value === undefined) {
return undefined;
}
const valeurs: readonly TriEmpruntResponsable[] = [
'dateEmprunt',
'dateRetourPrevue',
'dateRetourReelle',
'materiel',
'etudiant',
'statut',
];
if (typeof value !== 'string' || !valeurs.includes(value as TriEmpruntResponsable)) {
throw new AppError(400, 'tri invalide');
}
return value as TriEmpruntResponsable;
}
export function parseOrdreTri(value: unknown): OrdreTri | undefined {
if (value === undefined) {
return undefined;
}
if (value !== 'asc' && value !== 'desc') {
throw new AppError(400, 'ordre invalide');
}
return value;
}
export function parseStatutMateriel(value: unknown): StatutMateriel | undefined {
if (value === undefined) {
return undefined;