feat(backend): add responsable historique endpoint

This commit is contained in:
SaidSoighiri94
2026-07-16 16:45:41 +02:00
parent 832aa51e23
commit 92e25356bf
6 changed files with 254 additions and 1 deletions
@@ -48,6 +48,16 @@ export type NotificationResponsable = Prisma.NotificationGetPayload<{
};
}>;
export type HistoriqueResponsable = Prisma.HistoriqueGetPayload<{
include: {
utilisateur: true;
materiel: true;
emprunt: true;
sallePret: true;
posteEmprunt: true;
};
}>;
export interface EmpruntResponsableFiltres {
statut?: string;
}
@@ -67,6 +77,15 @@ export interface NotificationResponsableFiltres {
lu?: boolean;
}
export interface HistoriqueResponsableFiltres {
action?: string;
utilisateurId?: number;
materielId?: number;
empruntId?: number;
dateDebut?: Date;
dateFin?: Date;
}
function mapStatutCounts(rows: Array<{ statut: string; _count: { _all: number } }>): StatutCount[] {
return rows.map((row) => ({ statut: row.statut, count: row._count._all }));
}
@@ -239,3 +258,34 @@ export async function marquerNotificationsResponsableLues(utilisateurId: number)
return result.count;
}
export function findHistoriqueResponsable(
campusId: number,
filtres: HistoriqueResponsableFiltres,
): Promise<HistoriqueResponsable[]> {
return prisma.historique.findMany({
where: {
campusId,
...(filtres.action ? { action: filtres.action } : {}),
...(filtres.utilisateurId !== undefined ? { utilisateurId: filtres.utilisateurId } : {}),
...(filtres.materielId !== undefined ? { materielId: filtres.materielId } : {}),
...(filtres.empruntId !== undefined ? { empruntId: filtres.empruntId } : {}),
...(filtres.dateDebut || filtres.dateFin
? {
dateAction: {
...(filtres.dateDebut ? { gte: filtres.dateDebut } : {}),
...(filtres.dateFin ? { lte: filtres.dateFin } : {}),
},
}
: {}),
},
include: {
utilisateur: true,
materiel: true,
emprunt: true,
sallePret: true,
posteEmprunt: true,
},
orderBy: { dateAction: 'desc' },
});
}