43 lines
1.2 KiB
Dart
43 lines
1.2 KiB
Dart
class Payment {
|
|
final String id;
|
|
final String childId; // ← adicionado
|
|
final String guardianId;
|
|
final DateTime month;
|
|
final double amount;
|
|
final String status; // pending | paid | overdue
|
|
final DateTime? paidAt;
|
|
final String? receiptUrl;
|
|
|
|
Payment({
|
|
required this.id,
|
|
required this.childId,
|
|
required this.guardianId,
|
|
required this.month,
|
|
required this.amount,
|
|
required this.status,
|
|
this.paidAt,
|
|
this.receiptUrl,
|
|
});
|
|
|
|
factory Payment.fromMap(Map<String, dynamic> map) => Payment(
|
|
id: map['id'] ?? '',
|
|
childId: map['child_id'] ?? '',
|
|
guardianId: map['guardian_id'] ?? '',
|
|
month: DateTime.tryParse(map['month'] ?? '') ?? DateTime.now(),
|
|
amount: (map['amount'] ?? 0).toDouble(),
|
|
status: map['status'] ?? 'pending',
|
|
paidAt: map['paid_at'] != null ? DateTime.tryParse(map['paid_at']) : null,
|
|
receiptUrl: map['receipt_url'],
|
|
);
|
|
|
|
Map<String, dynamic> toMap() => {
|
|
'child_id': childId,
|
|
'guardian_id': guardianId,
|
|
'month': month.toIso8601String().split('T')[0],
|
|
'amount': amount,
|
|
'status': status,
|
|
'paid_at': paidAt?.toIso8601String(),
|
|
'receipt_url': receiptUrl,
|
|
};
|
|
}
|