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

70 lines
1.9 KiB
Dart

class User {
final String id;
final String mobileNumber;
final String fullName;
final String role; // 'manager' or 'member'
final String? createdBy; // Manager who created this account
final bool isActive;
final DateTime createdAt;
final DateTime updatedAt;
User({
required this.id,
required this.mobileNumber,
required this.fullName,
required this.role,
this.createdBy,
required this.isActive,
required this.createdAt,
required this.updatedAt,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'] ?? '',
mobileNumber: json['mobile_number'] ?? '',
fullName: json['full_name'] ?? '',
role: json['role'] ?? 'member',
createdBy: json['created_by'],
isActive: json['is_active'] ?? true,
createdAt: json['created_at'] != null ? DateTime.parse(json['created_at']) : DateTime.now(),
updatedAt: json['updated_at'] != null ? DateTime.parse(json['updated_at']) : DateTime.now(),
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'mobile_number': mobileNumber,
'full_name': fullName,
'role': role,
'created_by': createdBy,
'is_active': isActive,
'created_at': createdAt.toIso8601String(),
'updated_at': updatedAt.toIso8601String(),
};
}
User copyWith({
String? id,
String? mobileNumber,
String? fullName,
String? role,
String? createdBy,
bool? isActive,
DateTime? createdAt,
DateTime? updatedAt,
}) {
return User(
id: id ?? this.id,
mobileNumber: mobileNumber ?? this.mobileNumber,
fullName: fullName ?? this.fullName,
role: role ?? this.role,
createdBy: createdBy ?? this.createdBy,
isActive: isActive ?? this.isActive,
createdAt: createdAt ?? this.createdAt,
updatedAt: updatedAt ?? this.updatedAt,
);
}
}