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.
cloudsolutions-atoms/lib/models/user.dart

120 lines
3.2 KiB
Dart

2 years ago
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;
String image;
String hospitalID;
Hospital hospital;
Department department;
UsersTypes type;
String phoneNumber;
String whatsApp;
String token;
bool isActive;
User({
this.id,
this.userName = "",
this.email = "",
this.password = "",
this.phoneNumber = "",
this.hospital,
this.image,
this.department,
this.type,
this.whatsApp,
this.token,
this.isActive = false
});
Future<Map<String, dynamic>> toLoginJson() async {
if(FirebaseNotificationManger.token == null)
await FirebaseNotificationManger.getToken();
return {
"username":userName,
"pass":password,
"firebase_token": FirebaseNotificationManger?.token ?? "",
};
}
Map<String,dynamic> toUpdateProfileJson(){
Map<String,dynamic> jsonObject ={};
if(department?.id != null && department.id.isNotEmpty)
jsonObject["department"] = department.id;
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(){
return {
"uid":id,
"name": userName,
"email":email,
"token":token,
"phone":phoneNumber,
"whatsapp":whatsApp,
"client":hospital?.id,
"client_name":hospital?.name,
"department":department?.id,
"department_name":department?.name,
"password":password,
"picture":image,
"active":isActive ? 1 : 0,
"role": type == UsersTypes.engineer
? "field_engineer" : "normal_user" ,
// "token":token, pass is token
};
}
factory User.fromJson(Map<String,dynamic> parsedJson){
UsersTypes type;
switch(parsedJson["role"]){
case "field_engineer": type = UsersTypes.engineer; break;
default: type = UsersTypes.normal_user; break;
}
return User(
id: parsedJson["uid"],
userName: parsedJson["name"] ?? parsedJson["title"],
email: parsedJson["mail"] ?? parsedJson["email"],
hospital: Hospital(
id: parsedJson["client"],
name: parsedJson["client_name"]
),
department: Department(
id: parsedJson["department"],
name: parsedJson["department_name"],
),
image: parsedJson["picture"],
phoneNumber: parsedJson["phone"],
whatsApp: parsedJson["whatsapp"],
token: parsedJson["token"],
isActive: parsedJson["active"] == "1",
type:type
);
}
}