48 lines
1.3 KiB
Dart
48 lines
1.3 KiB
Dart
enum BillType { expense, income }
|
|
|
|
class Bill {
|
|
final String id;
|
|
final String userId;
|
|
final String? familyId;
|
|
final BillType type;
|
|
final double amount;
|
|
final String category;
|
|
final String note;
|
|
final String emoji;
|
|
final String time;
|
|
final String date;
|
|
final String createdAt;
|
|
|
|
const Bill({
|
|
required this.id,
|
|
required this.userId,
|
|
this.familyId,
|
|
required this.type,
|
|
required this.amount,
|
|
required this.category,
|
|
this.note = '',
|
|
this.emoji = '📝',
|
|
required this.time,
|
|
required this.date,
|
|
this.createdAt = '',
|
|
});
|
|
|
|
bool get isExpense => type == BillType.expense;
|
|
bool get isIncome => type == BillType.income;
|
|
|
|
factory Bill.fromJson(Map<String, dynamic> json) {
|
|
return Bill(
|
|
id: json['id'] as String? ?? '',
|
|
userId: json['userId'] as String? ?? '',
|
|
familyId: json['familyId'] as String?,
|
|
type: json['type'] as String? == 'income' ? BillType.income : BillType.expense,
|
|
amount: (json['amount'] as num?)?.toDouble() ?? 0,
|
|
category: json['category'] as String? ?? '',
|
|
note: json['note'] as String? ?? '',
|
|
emoji: json['emoji'] as String? ?? '📝',
|
|
time: json['time'] as String? ?? '00:00',
|
|
date: json['date'] as String? ?? '',
|
|
createdAt: json['createdAt'] as String? ?? '',
|
|
);
|
|
}
|
|
} |