import "api_client.dart"; /// Appels API du tableau responsable matériel. class ResponsableService { ResponsableService._(); static Future> dashboard() async { final reponse = await ApiClient.get("/responsable/dashboard"); return Map.from(reponse["data"] as Map); } static Future>> emprunts({ String? statut, int? annee, String? recherche, String tri = "dateEmprunt", String ordre = "desc", }) { final parametres = { "tri": tri, "ordre": ordre, "statut": ?statut, if (annee != null) "annee": "$annee", if (recherche != null && recherche.trim().isNotEmpty) "q": recherche.trim(), }; final query = Uri(queryParameters: parametres).query; return _liste("/responsable/emprunts?$query"); } static Future>> ecarts() => _liste("/responsable/ecarts"); static Future>> materiels({ String? statut, int? categorieId, String? recherche, String tri = "nom", String ordre = "asc", }) { final parametres = { "tri": tri, "ordre": ordre, "statut": ?statut, if (categorieId != null) "categorieId": "$categorieId", if (recherche != null && recherche.trim().isNotEmpty) "q": recherche.trim(), }; final query = Uri(queryParameters: parametres).query; return _liste("/responsable/materiels?$query"); } static Future>> anomalies() => _liste("/responsable/anomalies"); static Future>> notifications() => _liste("/responsable/notifications"); static Future>> historique() => _liste("/responsable/historique"); static Future exporterHistorique() => ApiClient.getFile( "/responsable/historique/export.csv", fallbackFileName: "historique-responsable.csv", ); static Future marquerNotificationsLues() async { final reponse = await ApiClient.patch( "/responsable/notifications/lu-toutes", {}, ); final data = Map.from(reponse["data"] as Map); return data["count"] as int; } static Future> changerStatutAnomalie( int id, String statut, ) async { final reponse = await ApiClient.patch("/responsable/anomalies/$id/statut", { "statut": statut, "observation": "Traitement depuis l'interface responsable", }); return Map.from(reponse["data"] as Map); } static Future> deciderEcart({ required int empruntId, required String decision, String? observation, String? statutMateriel, }) async { final reponse = await ApiClient.patch("/responsable/ecarts/$empruntId/decision", { "decision": decision, if (observation != null && observation.trim().isNotEmpty) "observation": observation.trim(), "statutMateriel": ?statutMateriel, }); return Map.from(reponse["data"] as Map); } static Future>> _liste(String chemin) async { final reponse = await ApiClient.get(chemin); final data = reponse["data"] as List; return data.map((item) => Map.from(item as Map)).toList(); } }