You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			238 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			238 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Dart
		
	
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;
 | 
						|
  List<int> departmentId;
 | 
						|
  List<String> departmentName;
 | 
						|
  String message;
 | 
						|
  String username;
 | 
						|
  String userID;
 | 
						|
  String email;
 | 
						|
  String password;
 | 
						|
  String token;
 | 
						|
  dynamic roles;
 | 
						|
  List<UserRoles> 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;
 | 
						|
  String extensionNo;
 | 
						|
  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,
 | 
						|
  });
 | 
						|
 | 
						|
  bool get isLiveToken => tokenlife != null && (DateTime.tryParse(tokenlife)?.isAfter(DateTime.now()) ?? false);
 | 
						|
 | 
						|
  Future<Map<String, dynamic>> toLoginJson() async {
 | 
						|
    if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken();
 | 
						|
    return {
 | 
						|
      "username": userName,
 | 
						|
      "password": password,
 | 
						|
      "fireBaseToken": FirebaseNotificationManger?.token ?? "",
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  UsersTypes get type {
 | 
						|
    switch (userRoles?.first?.value) {
 | 
						|
      case "R-6":
 | 
						|
        return UsersTypes.engineer;
 | 
						|
      case "R-7":
 | 
						|
        return UsersTypes.normal_user;
 | 
						|
      default:
 | 
						|
        return null;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  Map<String, dynamic> toUpdateProfileJson() {
 | 
						|
    Map<String, dynamic> 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<Map<String, dynamic>> 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<String, dynamic> toJson() {
 | 
						|
    final map = <String, dynamic>{};
 | 
						|
    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['extensionNo'] = extensionNo;
 | 
						|
    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'];
 | 
						|
    if (json['department_id'] != null) {
 | 
						|
      departmentId = [];
 | 
						|
      json['department_id'].forEach((v) {
 | 
						|
        departmentId.add(v);
 | 
						|
      });
 | 
						|
    }
 | 
						|
    if (json['department_name'] != null) {
 | 
						|
      departmentId = [];
 | 
						|
      json['department_name'].forEach((v) {
 | 
						|
        departmentId.add(v);
 | 
						|
      });
 | 
						|
    }
 | 
						|
    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'];
 | 
						|
    extensionNo = json['extensionNo'];
 | 
						|
    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<String, dynamic> toJson() {
 | 
						|
    final map = <String, dynamic>{};
 | 
						|
    map['id'] = id;
 | 
						|
    map['name'] = name;
 | 
						|
    map['value'] = value;
 | 
						|
    return map;
 | 
						|
  }
 | 
						|
}
 |