diff --git a/luckychit/lib/core/models/user.dart b/luckychit/lib/core/models/user.dart index 02916af..df664b1 100644 --- a/luckychit/lib/core/models/user.dart +++ b/luckychit/lib/core/models/user.dart @@ -1,3 +1,14 @@ +DateTime? _parseDateTime(dynamic value) { + if (value == null) return null; + final s = value.toString().trim(); + if (s.isEmpty) return null; + try { + return DateTime.parse(s); + } catch (_) { + return null; + } +} + class User { final String id; final String mobileNumber; @@ -36,8 +47,8 @@ class User { email: json['email'], address: json['address'], emergencyContact: json['emergency_contact'], - createdAt: json['created_at'] != null ? DateTime.parse(json['created_at']) : DateTime.now(), - updatedAt: json['updated_at'] != null ? DateTime.parse(json['updated_at']) : DateTime.now(), + createdAt: _parseDateTime(json['created_at']) ?? DateTime.now(), + updatedAt: _parseDateTime(json['updated_at']) ?? DateTime.now(), ); } diff --git a/luckychit/lib/core/services/auth_service.dart b/luckychit/lib/core/services/auth_service.dart index dae7459..033f2ab 100644 --- a/luckychit/lib/core/services/auth_service.dart +++ b/luckychit/lib/core/services/auth_service.dart @@ -75,25 +75,16 @@ class AuthService extends GetxController { ); if (response['success']) { - final userData = response['data']['user']; - final token = response['data']['token']; - - final user = User( - id: userData['id'], - mobileNumber: userData['mobile_number'], - fullName: userData['full_name'], - role: userData['role'], - isActive: userData['is_active'] ?? true, - createdAt: DateTime.parse(userData['created_at']), - updatedAt: DateTime.parse(userData['updated_at']), - ); - + final userData = response['data']['user'] as Map; + final token = response['data']['token'] as String; + final user = User.fromJson(userData); + await _saveAuthData(token, user); - + _token.value = token; _currentUser.value = user; _isAuthenticated.value = true; - + return true; } else { Get.snackbar('Signup Failed', response['message']); @@ -115,25 +106,16 @@ class AuthService extends GetxController { final response = await _apiService.login(mobileNumber, password); if (response['success']) { - final userData = response['data']['user']; - final token = response['data']['token']; - - final user = User( - id: userData['id'], - mobileNumber: userData['mobile_number'], - fullName: userData['full_name'], - role: userData['role'], - isActive: userData['is_active'] ?? true, - createdAt: DateTime.parse(userData['created_at']), - updatedAt: DateTime.parse(userData['updated_at']), - ); - + final userData = response['data']['user'] as Map; + final token = response['data']['token'] as String; + final user = User.fromJson(userData); + await _saveAuthData(token, user); - + _token.value = token; _currentUser.value = user; _isAuthenticated.value = true; - + return true; } else { Get.snackbar('Login Failed', response['message']);