Files
fcs/lib/fcs/common/domain/entities/user.dart
2020-09-13 21:49:39 +06:30

98 lines
2.3 KiB
Dart

import 'package:fcs/fcs/common/helpers/const.dart';
class User {
String id;
String name;
String phoneNumber;
String status;
String fcsID;
List<String> privileges = [];
String get phone => phoneNumber != null && phoneNumber.startsWith("959")
? "0${phoneNumber.substring(2)}"
: phoneNumber;
bool get joined => status != null && status == userStatusJoined;
bool get invited => status != null && status == userStatusInvited;
bool get requested => status != null && status == userStatusRequested;
String get share => "Your phone number:$phoneNumber";
User({
this.id,
this.name,
this.phoneNumber,
this.fcsID,
this.status,
this.privileges,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
name: json['user_name'],
phoneNumber: json['phone_number'],
status: json['status'],
);
}
Map<String, dynamic> toJson() => {
'id': id,
'user_name': name,
'phone_number': phoneNumber,
};
Map<String, dynamic> toMap() {
return {
'user_name': name,
'phone_number': phoneNumber,
};
}
factory User.fromMap(Map<String, dynamic> map, String docID) {
List<String> _privileges =
map['privileges'] == null ? [] : map['privileges'].cast<String>();
return User(
id: docID,
name: map['user_name'],
phoneNumber: map['phone_number'],
status: map['status'],
fcsID: map['fcs_id'],
privileges: _privileges);
}
bool isCustomer() {
return privileges == null || privileges.length == 0;
}
bool hasSysAdmin() {
return privileges != null ? privileges.contains('sa') : false;
}
bool hasAdmin() {
return privileges != null ? privileges.contains('admin') : false;
}
bool hasCustomers() {
return hasSysAdmin() ||
hasAdmin() ||
(privileges != null ? privileges.contains('c') : false);
}
bool hasStaffs() {
return hasSysAdmin() ||
hasAdmin() ||
(privileges != null ? privileges.contains('s') : false);
}
bool hasSupport() {
return hasSysAdmin() ||
hasAdmin() ||
(privileges != null ? privileges.contains('sp') : false);
}
@override
String toString() {
return 'User{name: $name, phoneNumber: $phoneNumber,status:$status}';
}
}