update info

This commit is contained in:
Phuoc Nguyen
2025-11-20 16:32:33 +07:00
parent 1fcef52d5e
commit dc85157758
12 changed files with 1613 additions and 247 deletions

View File

@@ -27,6 +27,15 @@ class UserInfoModel {
this.taxId,
this.address,
this.cccd,
this.dateOfBirth,
this.gender,
this.idCardFront,
this.idCardBack,
this.certificates = const [],
this.membershipStatus,
this.membershipStatusColor,
this.isVerified = false,
this.credentialDisplay = false,
this.referralCode,
this.erpnextCustomerId,
this.createdAt,
@@ -48,6 +57,15 @@ class UserInfoModel {
final String? taxId;
final String? address;
final String? cccd;
final DateTime? dateOfBirth;
final String? gender;
final String? idCardFront;
final String? idCardBack;
final List<String> certificates;
final String? membershipStatus;
final String? membershipStatusColor;
final bool isVerified;
final bool credentialDisplay;
final String? referralCode;
final String? erpnextCustomerId;
final DateTime? createdAt;
@@ -87,9 +105,9 @@ class UserInfoModel {
/// }
/// ```
factory UserInfoModel.fromJson(Map<String, dynamic> json) {
// API response structure: { "message": { "success": true, "data": {...} } }
final message = json['message'] as Map<String, dynamic>?;
final data = message?['data'] as Map<String, dynamic>? ?? json;
// API response structure: { "message": { "full_name": "...", ... } }
// Data is directly under 'message', not nested in 'data'
final data = json['message'] as Map<String, dynamic>? ?? json;
return UserInfoModel(
// Use email as userId since API doesn't provide user_id
@@ -108,11 +126,22 @@ class UserInfoModel {
companyName: data['company_name'] as String?,
taxId: data['tax_code'] as String?,
address: data['address'] as String?,
cccd: data['id_card_front'] as String?, // Store front ID card
cccd: null, // CCCD number not in API
dateOfBirth: _parseDateTime(data['date_of_birth'] as String?),
gender: data['gender'] as String?,
idCardFront: data['id_card_front'] as String?,
idCardBack: data['id_card_back'] as String?,
certificates: (data['certificates'] as List<dynamic>?)
?.map((e) => e.toString())
.toList() ?? const [],
membershipStatus: data['membership_status'] as String?,
membershipStatusColor: data['membership_status_color'] as String?,
isVerified: data['is_verified'] as bool? ?? false,
credentialDisplay: data['credential_display'] as bool? ?? false,
referralCode: null,
erpnextCustomerId: null,
createdAt: _parseDateTime(data['date_of_birth'] as String?),
updatedAt: _parseDateTime(data['date_of_birth'] as String?),
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
);
}
@@ -164,6 +193,15 @@ class UserInfoModel {
taxId: taxId,
address: address,
cccd: cccd,
dateOfBirth: dateOfBirth,
gender: gender,
idCardFront: idCardFront,
idCardBack: idCardBack,
certificates: certificates,
membershipStatus: membershipStatus,
membershipStatusColor: membershipStatusColor,
isVerified: isVerified,
credentialDisplay: credentialDisplay,
referralCode: referralCode,
erpnextCustomerId: erpnextCustomerId,
createdAt: createdAt ?? now,