87 lines
2.3 KiB
Dart
87 lines
2.3 KiB
Dart
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<OrganizationMembership> memberships;
|
|
|
|
List<OrganizationMembership> get approvedMemberships => memberships
|
|
.where(
|
|
(item) =>
|
|
item.status == 'APPROVED' && item.organization.status == 'ACTIVE',
|
|
)
|
|
.toList();
|
|
|
|
factory UserProfile.fromJson(Map<String, dynamic> 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<String, dynamic> 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<String, dynamic> 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']),
|
|
);
|
|
}
|