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 ); } }