chitfund/luckychit/lib/core/models/group_member.dart

71 lines
2.1 KiB
Dart

import 'user.dart';
class GroupMember {
final String id;
final String groupId;
final String userId;
final DateTime joinedDate;
final String status;
final double totalPaid;
final double totalWon;
final DateTime createdAt;
final DateTime updatedAt;
final User? user;
GroupMember({
required this.id,
required this.groupId,
required this.userId,
required this.joinedDate,
required this.status,
required this.totalPaid,
required this.totalWon,
required this.createdAt,
required this.updatedAt,
this.user,
});
factory GroupMember.fromJson(Map<String, dynamic> json) {
return GroupMember(
id: json['id'] ?? '',
groupId: json['group_id'] ?? '',
userId: json['user_id'] ?? '',
joinedDate: json['joined_date'] != null ? DateTime.parse(json['joined_date']) : DateTime.now(),
status: json['status'] ?? 'active',
totalPaid: _parseDouble(json['total_paid']),
totalWon: _parseDouble(json['total_won']),
createdAt: json['created_at'] != null ? DateTime.parse(json['created_at']) : DateTime.now(),
updatedAt: json['updated_at'] != null ? DateTime.parse(json['updated_at']) : DateTime.now(),
user: json['User'] != null ? User.fromJson(json['User']) : null,
);
}
static double _parseDouble(dynamic value) {
if (value == null) return 0.0;
if (value is double) return value;
if (value is int) return value.toDouble();
if (value is String) return double.parse(value);
throw ArgumentError('Cannot parse $value to double');
}
Map<String, dynamic> toJson() {
return {
'id': id,
'group_id': groupId,
'user_id': userId,
'joined_date': joinedDate.toIso8601String(),
'status': status,
'total_paid': totalPaid,
'total_won': totalWon,
'created_at': createdAt.toIso8601String(),
'updated_at': updatedAt.toIso8601String(),
'User': user?.toJson(),
};
}
// Helper methods
bool get isActive => status == 'active';
bool get isInactive => status == 'inactive';
bool get isRemoved => status == 'removed';
}