Files
EME_APP/eme-frontend/lib/services/emprunt_service.dart
2026-07-24 13:41:40 +02:00

73 lines
2.2 KiB
Dart

import "../models/emprunt_response.dart";
import "../models/emprunt_item.dart";
import "api_client.dart";
/// Appels liés aux emprunts.
class EmpruntService {
EmpruntService._();
static const int posteEmpruntId = 1;
static Future<EmpruntResponse> creerEmprunt({
required int materielId,
required String commentaireDepart,
required List<Map<String, dynamic>> elements,
}) async {
final reponse = await ApiClient.post("/emprunts", {
"materielId": materielId,
"posteEmpruntId": posteEmpruntId,
"modeIdentification": "MAIL_ENSUP",
if (commentaireDepart.trim().isNotEmpty)
"commentaireDepart": commentaireDepart.trim(),
"elements": elements,
});
final data =
(reponse as Map<String, dynamic>)["data"] as Map<String, dynamic>;
return EmpruntResponse.fromJson(data);
}
static Future<List<EmpruntItem>> getMesEmprunts() async {
final reponse = await ApiClient.get("/mes-emprunts");
final data = (reponse as Map<String, dynamic>)["data"] as List<dynamic>;
return data
.map((json) => EmpruntItem.fromJson(json as Map<String, dynamic>))
.toList();
}
static Future<EmpruntResponse> restituerEmprunt({
required int empruntId,
required String commentaireRetour,
required List<Map<String, dynamic>> elements,
}) async {
final reponse = await ApiClient.post("/emprunts/$empruntId/restitution", {
"modeIdentification": "MAIL_ENSUP",
if (commentaireRetour.trim().isNotEmpty)
"commentaireRetour": commentaireRetour.trim(),
"elements": elements,
});
final data =
(reponse as Map<String, dynamic>)["data"] as Map<String, dynamic>;
return EmpruntResponse.fromJson(data);
}
static Future<bool> signalerTentativeRetour({
required int empruntId,
required String nomElement,
required String etatInitial,
required String etatDemande,
}) async {
final reponse = await ApiClient.post(
"/emprunts/$empruntId/alerte-changement-retour",
{
"nomElement": nomElement,
"etatInitial": etatInitial,
"etatDemande": etatDemande,
},
);
final data = Map<String, dynamic>.from(reponse["data"] as Map);
return data["alerteCreee"] as bool;
}
}