class UserProfile { const UserProfile({ required this.id, required this.username, required this.name, required this.phone, required this.email, required this.gender, required this.age, this.memberships = const [], }); final String id; final String username; final String name; final String phone; final String email; final String gender; final int age; final List memberships; List get approvedMemberships => memberships .where( (item) => item.status == 'APPROVED' && item.organization.status == 'ACTIVE', ) .toList(); factory UserProfile.fromJson(Map json) => UserProfile( id: json['id'] as String, username: json['username'] as String, name: json['name'] as String, phone: json['phone'] as String, email: json['email'] as String, gender: json['gender'] as String, age: json['age'] as int, memberships: (json['memberships'] as List? ?? const []) .map((item) => OrganizationMembership.fromJson(item)) .toList(), ); } class OrganizationSummary { const OrganizationSummary({ required this.id, required this.code, required this.name, required this.status, }); final String id; final String code; final String name; final String status; factory OrganizationSummary.fromJson(Map json) => OrganizationSummary( id: json['id'] as String, code: json['code'] as String, name: json['name'] as String, status: json['status'] as String, ); } class OrganizationMembership { const OrganizationMembership({ required this.id, required this.role, required this.status, required this.organization, this.rejectionReason, }); final String id; final String role; final String status; final String? rejectionReason; final OrganizationSummary organization; factory OrganizationMembership.fromJson(Map json) => OrganizationMembership( id: json['id'] as String, role: json['role'] as String, status: json['status'] as String, rejectionReason: json['rejectionReason'] as String?, organization: OrganizationSummary.fromJson(json['organization']), ); }