Initial commit: unionflow-mobile-apps
Application Flutter complète (sans build artifacts). Signed-off-by: lions dev Team
This commit is contained in:
26
lib/core/data/models/seuil_lcb_ft_model.dart
Normal file
26
lib/core/data/models/seuil_lcb_ft_model.dart
Normal file
@@ -0,0 +1,26 @@
|
||||
/// Modèle pour le seuil LCB-FT récupéré depuis l'API.
|
||||
/// Endpoint: GET /api/parametres-lcb-ft/seuil-justification
|
||||
class SeuilLcbFtModel {
|
||||
final double montantSeuil;
|
||||
final String codeDevise;
|
||||
|
||||
const SeuilLcbFtModel({
|
||||
required this.montantSeuil,
|
||||
required this.codeDevise,
|
||||
});
|
||||
|
||||
factory SeuilLcbFtModel.fromJson(Map<String, dynamic> json) {
|
||||
return SeuilLcbFtModel(
|
||||
montantSeuil: (json['montantSeuil'] as num).toDouble(),
|
||||
codeDevise: json['codeDevise'] as String? ?? 'XOF',
|
||||
);
|
||||
}
|
||||
|
||||
/// Seuil par défaut si l'API échoue (500k XOF selon spec LCB-FT BCEAO).
|
||||
factory SeuilLcbFtModel.defaultSeuil() {
|
||||
return const SeuilLcbFtModel(
|
||||
montantSeuil: 500000.0,
|
||||
codeDevise: 'XOF',
|
||||
);
|
||||
}
|
||||
}
|
||||
84
lib/core/data/repositories/parametres_lcb_ft_repository.dart
Normal file
84
lib/core/data/repositories/parametres_lcb_ft_repository.dart
Normal file
@@ -0,0 +1,84 @@
|
||||
import 'package:injectable/injectable.dart';
|
||||
import 'package:unionflow_mobile_apps/core/network/api_client.dart';
|
||||
import 'package:unionflow_mobile_apps/core/utils/logger.dart';
|
||||
import '../models/seuil_lcb_ft_model.dart';
|
||||
|
||||
/// Repository pour les paramètres LCB-FT (seuils anti-blanchiment).
|
||||
/// Endpoints: GET /api/parametres-lcb-ft, GET /api/parametres-lcb-ft/seuil-justification
|
||||
@lazySingleton
|
||||
class ParametresLcbFtRepository {
|
||||
final ApiClient _apiClient;
|
||||
static const String _base = '/api/parametres-lcb-ft';
|
||||
|
||||
ParametresLcbFtRepository(this._apiClient);
|
||||
|
||||
/// Récupère uniquement le seuil de justification (endpoint léger).
|
||||
/// Paramètres optionnels : organisationId, codeDevise (XOF par défaut).
|
||||
/// Retourne le seuil par défaut (500k XOF) en cas d'erreur.
|
||||
Future<SeuilLcbFtModel> getSeuilJustification({
|
||||
String? organisationId,
|
||||
String codeDevise = 'XOF',
|
||||
}) async {
|
||||
try {
|
||||
final queryParams = <String, dynamic>{};
|
||||
if (organisationId != null && organisationId.isNotEmpty) {
|
||||
queryParams['organisationId'] = organisationId;
|
||||
}
|
||||
queryParams['codeDevise'] = codeDevise;
|
||||
|
||||
final response = await _apiClient.get(
|
||||
'$_base/seuil-justification',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
|
||||
if (response.statusCode == 200 && response.data != null) {
|
||||
return SeuilLcbFtModel.fromJson(response.data as Map<String, dynamic>);
|
||||
}
|
||||
|
||||
AppLogger.warning(
|
||||
'ParametresLcbFtRepository: getSeuilJustification status ${response.statusCode}, fallback au seuil par défaut',
|
||||
);
|
||||
return SeuilLcbFtModel.defaultSeuil();
|
||||
} catch (e, st) {
|
||||
AppLogger.error(
|
||||
'ParametresLcbFtRepository: getSeuilJustification échoué, fallback au seuil par défaut',
|
||||
error: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
return SeuilLcbFtModel.defaultSeuil();
|
||||
}
|
||||
}
|
||||
|
||||
/// Récupère les paramètres LCB-FT complets (tous les seuils + config).
|
||||
/// Pour usage admin ou affichage détaillé.
|
||||
Future<Map<String, dynamic>?> getParametres({
|
||||
String? organisationId,
|
||||
String codeDevise = 'XOF',
|
||||
}) async {
|
||||
try {
|
||||
final queryParams = <String, dynamic>{};
|
||||
if (organisationId != null && organisationId.isNotEmpty) {
|
||||
queryParams['organisationId'] = organisationId;
|
||||
}
|
||||
queryParams['codeDevise'] = codeDevise;
|
||||
|
||||
final response = await _apiClient.get(_base, queryParameters: queryParams);
|
||||
|
||||
if (response.statusCode == 200 && response.data != null) {
|
||||
return response.data as Map<String, dynamic>;
|
||||
}
|
||||
|
||||
AppLogger.warning(
|
||||
'ParametresLcbFtRepository: getParametres status ${response.statusCode}',
|
||||
);
|
||||
return null;
|
||||
} catch (e, st) {
|
||||
AppLogger.error(
|
||||
'ParametresLcbFtRepository: getParametres échoué',
|
||||
error: e,
|
||||
stackTrace: st,
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user