feat: Add logger service and improve expense dialog with enhanced receipt management and calculation logic.

This commit is contained in:
Van Leemput Dayron
2025-11-28 12:54:54 +01:00
parent cad9d42128
commit fd710b8cb8
35 changed files with 2148 additions and 1296 deletions

View File

@@ -22,12 +22,22 @@ class GroupBalance extends Equatable {
factory GroupBalance.fromMap(Map<String, dynamic> map) {
return GroupBalance(
groupId: map['groupId'] ?? '',
userBalances: (map['userBalances'] as List?)
?.map((userBalance) => UserBalance.fromMap(userBalance as Map<String, dynamic>))
.toList() ?? [],
settlements: (map['settlements'] as List?)
?.map((settlement) => Settlement.fromMap(settlement as Map<String, dynamic>))
.toList() ?? [],
userBalances:
(map['userBalances'] as List?)
?.map(
(userBalance) =>
UserBalance.fromMap(userBalance as Map<String, dynamic>),
)
.toList() ??
[],
settlements:
(map['settlements'] as List?)
?.map(
(settlement) =>
Settlement.fromMap(settlement as Map<String, dynamic>),
)
.toList() ??
[],
totalExpenses: (map['totalExpenses'] as num?)?.toDouble() ?? 0.0,
calculatedAt: _parseDateTime(map['calculatedAt']),
);
@@ -37,8 +47,12 @@ class GroupBalance extends Equatable {
Map<String, dynamic> toMap() {
return {
'groupId': groupId,
'userBalances': userBalances.map((userBalance) => userBalance.toMap()).toList(),
'settlements': settlements.map((settlement) => settlement.toMap()).toList(),
'userBalances': userBalances
.map((userBalance) => userBalance.toMap())
.toList(),
'settlements': settlements
.map((settlement) => settlement.toMap())
.toList(),
'totalExpenses': totalExpenses,
'calculatedAt': Timestamp.fromDate(calculatedAt),
};
@@ -71,16 +85,20 @@ class GroupBalance extends Equatable {
}
// Méthodes utilitaires pour la logique métier
bool get hasUnbalancedUsers => userBalances.any((balance) => !balance.isBalanced);
bool get hasUnbalancedUsers =>
userBalances.any((balance) => !balance.isBalanced);
bool get hasSettlements => settlements.isNotEmpty;
double get totalSettlementAmount => settlements.fold(0.0, (sum, settlement) => sum + settlement.amount);
List<UserBalance> get creditors => userBalances.where((b) => b.shouldReceive).toList();
List<UserBalance> get debtors => userBalances.where((b) => b.shouldPay).toList();
double get totalSettlementAmount =>
settlements.fold(0.0, (total, settlement) => total + settlement.amount);
List<UserBalance> get creditors =>
userBalances.where((b) => b.shouldReceive).toList();
List<UserBalance> get debtors =>
userBalances.where((b) => b.shouldPay).toList();
int get participantCount => userBalances.length;
@override
@@ -90,4 +108,4 @@ class GroupBalance extends Equatable {
String toString() {
return 'GroupBalance(groupId: $groupId, totalExpenses: $totalExpenses, participantCount: $participantCount, calculatedAt: $calculatedAt)';
}
}
}