import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/hospital.dart'; class User { String id; String userName; String password; String email; Hospital hospital; Department department; UsersTypes type; String phoneNumber; String whatsApp; String token; bool isActive; DateTime tokenLife; User( {this.id, this.userName = "", this.email = "", this.password = "", this.phoneNumber = "", this.hospital, this.department, this.type, this.whatsApp, this.token, this.tokenLife, this.isActive = false}); Future> toLoginJson() async { if (FirebaseNotificationManger.token == null) await FirebaseNotificationManger.getToken(); return { "username": userName, "password": password, "firebase_token": FirebaseNotificationManger?.token ?? "", }; } Map toUpdateProfileJson() { Map jsonObject = {}; if (department?.id != null) jsonObject["department"] = department.id; 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() { return { "userID": id, "username": userName, "email": email, "token": token, "phoneNumber": phoneNumber, "whatsapp": whatsApp, "client_id": hospital?.id, "client_name": hospital?.name, "department_id": department?.id, "department_name": department?.name, //"password":password, "tokenlife": tokenLife.toIso8601String(), "active": isActive, "userRoles": type == UsersTypes.engineer ? "value: R-6" : "value: R-5", // "token":token, pass is token }; } factory User.fromJson(Map parsedJson) { UsersTypes type; if (parsedJson["userRoles"].toString().contains("value: R-4") || parsedJson["userRoles"].toString().contains("value: R-5") || parsedJson["userRoles"].toString().contains("value: R-7")) { type = UsersTypes.normal_user; } else { type = UsersTypes.engineer; } return User( id: parsedJson["userID"], userName: parsedJson["username"], email: parsedJson["email"], hospital: Hospital(id: parsedJson["client_id"], name: parsedJson["client_name"]), department: Department( id: parsedJson["department_id"], name: parsedJson["department_name"], ), phoneNumber: parsedJson["phoneNumber"], whatsApp: parsedJson["phoneNumber"], token: parsedJson["token"], isActive: parsedJson["isAuthenticated"], tokenLife: DateTime.tryParse(parsedJson["tokenlife"] ?? ""), type: type); } }