feat(loans): confirm declared material state changes
This commit is contained in:
@@ -4,10 +4,12 @@ import {
|
||||
creerEmprunt,
|
||||
listerMesEmpruntsEnCours,
|
||||
restituerEmprunt,
|
||||
signalerTentativeModificationRetour,
|
||||
} from '../services/emprunt.service';
|
||||
import {
|
||||
parseCreerEmpruntRequest,
|
||||
parseRestituerEmpruntRequest,
|
||||
parseSignalerTentativeRetourRequest,
|
||||
toEmpruntResponse,
|
||||
} from '../dtos/emprunt.dto';
|
||||
|
||||
@@ -47,3 +49,19 @@ export async function postRestitution(req: Request, res: Response): Promise<void
|
||||
const emprunt = await restituerEmprunt(user.id, empruntId, request);
|
||||
res.json({ data: toEmpruntResponse(emprunt) });
|
||||
}
|
||||
|
||||
export async function postAlerteChangementRetour(req: Request, res: Response): Promise<void> {
|
||||
const user = req.user;
|
||||
if (!user) {
|
||||
throw new AppError(401, 'Authentification requise');
|
||||
}
|
||||
|
||||
const empruntId = Number(req.params.id);
|
||||
if (!Number.isInteger(empruntId) || empruntId <= 0) {
|
||||
throw new AppError(400, 'Identifiant emprunt invalide');
|
||||
}
|
||||
|
||||
const request = parseSignalerTentativeRetourRequest(req.body);
|
||||
const alerteCreee = await signalerTentativeModificationRetour(user.id, empruntId, request);
|
||||
res.json({ data: { alerteCreee } });
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user