import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/models/enums/user_types.dart'; class User { int clientId; String clientName; int departmentId; String departmentName; String message; String username; String userID; String email; String password; String token; dynamic roles; List userRoles; String tokenlife; bool isAuthenticated; bool hasError; String profilePhotoName; String id; String userName; String normalizedUserName; String normalizedEmail; bool emailConfirmed; dynamic passwordHash; String securityStamp; String concurrencyStamp; String phoneNumber; bool phoneNumberConfirmed; bool twoFactorEnabled; dynamic lockoutEnd; bool lockoutEnabled; int accessFailedCount; User({ this.clientId, this.clientName, this.departmentId, this.departmentName, this.message, this.username, this.userID, this.email, this.password, this.token, this.roles, this.userRoles, this.tokenlife, this.isAuthenticated, this.hasError, this.profilePhotoName, this.id, this.userName, this.normalizedUserName, this.normalizedEmail, this.emailConfirmed, this.passwordHash, this.securityStamp, this.concurrencyStamp, this.phoneNumber, this.phoneNumberConfirmed, this.twoFactorEnabled, this.lockoutEnd, this.lockoutEnabled, this.accessFailedCount, }); Future> toLoginJson() async { if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken(); return { "username": userName, "password": password, "fireBaseToken": FirebaseNotificationManger?.token ?? "", }; } UsersTypes get type { switch (userRoles?.first?.name) { case "Engineer": return UsersTypes.engineer; case "Hospital": return UsersTypes.normal_user; default: return null; } } Map toUpdateProfileJson() { Map jsonObject = {}; // if (departmentId != null) jsonObject["department"] = departmentId; // if (whatsApp != null && whatsApp.isNotEmpty) jsonObject["whatsapp"] = whatsApp; // if (phoneNumber != null && phoneNumber.isNotEmpty) jsonObject["phone"] = phoneNumber; return jsonObject; } Future> toRegisterJson() async { // if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken(); return { // "username": userName, // "email": email, // "whatsapp": whatsApp, // "client": hospital.id, // "department": department?.id, // "phone": phoneNumber, // "pass": password, // "firebase_token": FirebaseNotificationManger?.token ?? "", }; } Map toJson() { final map = {}; map['client_id'] = clientId; map['client_name'] = clientName; map['department_id'] = departmentId; map['department_name'] = departmentName; map['message'] = message; map['username'] = username; map['userID'] = userID; map['email'] = email; map['password'] = password; map['token'] = token; map['roles'] = roles; if (userRoles != null) { map['userRoles'] = userRoles.map((v) => v.toJson()).toList(); } map['tokenlife'] = tokenlife; map['isAuthenticated'] = isAuthenticated; map['hasError'] = hasError; map['profilePhotoName'] = profilePhotoName; map['id'] = id; map['userName'] = userName; map['normalizedUserName'] = normalizedUserName; map['normalizedEmail'] = normalizedEmail; map['emailConfirmed'] = emailConfirmed; map['passwordHash'] = passwordHash; map['securityStamp'] = securityStamp; map['concurrencyStamp'] = concurrencyStamp; map['phoneNumber'] = phoneNumber; map['phoneNumberConfirmed'] = phoneNumberConfirmed; map['twoFactorEnabled'] = twoFactorEnabled; map['lockoutEnd'] = lockoutEnd; map['lockoutEnabled'] = lockoutEnabled; map['accessFailedCount'] = accessFailedCount; return map; } User.fromJson(dynamic json) { clientId = json['client_id']; clientName = json['client_name']; departmentId = json['department_id']; departmentName = json['department_name']; message = json['message']; username = json['username']; userID = json['userID']; email = json['email']; password = json['password']; token = json['token']; roles = json['roles']; if (json['userRoles'] != null) { userRoles = []; json['userRoles'].forEach((v) { userRoles.add(UserRoles.fromJson(v)); }); } tokenlife = json['tokenlife']; isAuthenticated = json['isAuthenticated']; hasError = json['hasError']; profilePhotoName = json['profilePhotoName']; id = json['id']; userName = json['userName']; normalizedUserName = json['normalizedUserName']; normalizedEmail = json['normalizedEmail']; emailConfirmed = json['emailConfirmed']; passwordHash = json['passwordHash']; securityStamp = json['securityStamp']; concurrencyStamp = json['concurrencyStamp']; phoneNumber = json['phoneNumber']; phoneNumberConfirmed = json['phoneNumberConfirmed']; twoFactorEnabled = json['twoFactorEnabled']; lockoutEnd = json['lockoutEnd']; lockoutEnabled = json['lockoutEnabled']; accessFailedCount = json['accessFailedCount']; } } class UserRoles { UserRoles({ this.id, this.name, this.value, }); UserRoles.fromJson(dynamic json) { id = json['id']; name = json['name']; value = json['value']; } String id; String name; String value; UserRoles copyWith({ String id, String name, String value, }) => UserRoles( id: id ?? this.id, name: name ?? this.name, value: value ?? this.value, ); Map toJson() { final map = {}; map['id'] = id; map['name'] = name; map['value'] = value; return map; } }