feat: integrate ErrorService for consistent error display and standardize bloc error messages.
This commit is contained in:
@@ -37,9 +37,13 @@ class BalanceRepository {
|
||||
totalExpenses: totalExpenses,
|
||||
calculatedAt: DateTime.now(),
|
||||
);
|
||||
} catch (e) {
|
||||
_errorService.logError('BalanceRepository', 'Erreur calcul balance: $e');
|
||||
rethrow;
|
||||
} catch (e, stackTrace) {
|
||||
_errorService.logError(
|
||||
'BalanceRepository',
|
||||
'Erreur calcul balance: $e',
|
||||
stackTrace,
|
||||
);
|
||||
throw Exception('Impossible de calculer la balance');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,9 +54,13 @@ class BalanceRepository {
|
||||
.first;
|
||||
|
||||
return _calculateUserBalances(expenses);
|
||||
} catch (e) {
|
||||
_errorService.logError('BalanceRepository', 'Erreur calcul user balances: $e');
|
||||
rethrow;
|
||||
} catch (e, stackTrace) {
|
||||
_errorService.logError(
|
||||
'BalanceRepository',
|
||||
'Erreur calcul user balances: $e',
|
||||
stackTrace,
|
||||
);
|
||||
throw Exception('Impossible de calculer les balances utilisateurs');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,19 +73,17 @@ class BalanceRepository {
|
||||
if (expense.isArchived) continue;
|
||||
|
||||
// Ajouter le payeur
|
||||
userBalanceMap.putIfAbsent(expense.paidById, () => {
|
||||
'name': expense.paidByName,
|
||||
'paid': 0.0,
|
||||
'owed': 0.0,
|
||||
});
|
||||
userBalanceMap.putIfAbsent(
|
||||
expense.paidById,
|
||||
() => {'name': expense.paidByName, 'paid': 0.0, 'owed': 0.0},
|
||||
);
|
||||
|
||||
// Ajouter les participants
|
||||
for (final split in expense.splits) {
|
||||
userBalanceMap.putIfAbsent(split.userId, () => {
|
||||
'name': split.userName,
|
||||
'paid': 0.0,
|
||||
'owed': 0.0,
|
||||
});
|
||||
userBalanceMap.putIfAbsent(
|
||||
split.userId,
|
||||
() => {'name': split.userName, 'paid': 0.0, 'owed': 0.0},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +106,7 @@ class BalanceRepository {
|
||||
final data = entry.value;
|
||||
final paid = data['paid'] as double;
|
||||
final owed = data['owed'] as double;
|
||||
|
||||
|
||||
return UserBalance(
|
||||
userId: userId,
|
||||
userName: data['name'] as String,
|
||||
@@ -114,7 +120,7 @@ class BalanceRepository {
|
||||
// Algorithme d'optimisation des règlements
|
||||
List<Settlement> _calculateOptimalSettlements(List<UserBalance> balances) {
|
||||
final settlements = <Settlement>[];
|
||||
|
||||
|
||||
// Séparer les créditeurs et débiteurs
|
||||
final creditors = balances.where((b) => b.shouldReceive).toList();
|
||||
final debtors = balances.where((b) => b.shouldPay).toList();
|
||||
@@ -125,10 +131,10 @@ class BalanceRepository {
|
||||
|
||||
// Créer des copies mutables des montants
|
||||
final creditorsRemaining = Map.fromEntries(
|
||||
creditors.map((c) => MapEntry(c.userId, c.balance))
|
||||
creditors.map((c) => MapEntry(c.userId, c.balance)),
|
||||
);
|
||||
final debtorsRemaining = Map.fromEntries(
|
||||
debtors.map((d) => MapEntry(d.userId, -d.balance))
|
||||
debtors.map((d) => MapEntry(d.userId, -d.balance)),
|
||||
);
|
||||
|
||||
// Algorithme glouton pour minimiser le nombre de transactions
|
||||
@@ -139,15 +145,20 @@ class BalanceRepository {
|
||||
|
||||
if (creditAmount <= 0.01 || debtAmount <= 0.01) continue;
|
||||
|
||||
final settlementAmount = [creditAmount, debtAmount].reduce((a, b) => a < b ? a : b);
|
||||
final settlementAmount = [
|
||||
creditAmount,
|
||||
debtAmount,
|
||||
].reduce((a, b) => a < b ? a : b);
|
||||
|
||||
settlements.add(Settlement(
|
||||
fromUserId: debtor.userId,
|
||||
fromUserName: debtor.userName,
|
||||
toUserId: creditor.userId,
|
||||
toUserName: creditor.userName,
|
||||
amount: settlementAmount,
|
||||
));
|
||||
settlements.add(
|
||||
Settlement(
|
||||
fromUserId: debtor.userId,
|
||||
fromUserName: debtor.userName,
|
||||
toUserId: creditor.userId,
|
||||
toUserName: creditor.userName,
|
||||
amount: settlementAmount,
|
||||
),
|
||||
);
|
||||
|
||||
creditorsRemaining[creditor.userId] = creditAmount - settlementAmount;
|
||||
debtorsRemaining[debtor.userId] = debtAmount - settlementAmount;
|
||||
@@ -156,4 +167,4 @@ class BalanceRepository {
|
||||
|
||||
return settlements;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user