This commit is contained in:
2020-09-11 16:14:36 +06:30
parent f65b69aab0
commit 96a095e2e9
29 changed files with 1370 additions and 837 deletions

View File

@@ -0,0 +1,36 @@
class Customer {
String id;
String name;
String phoneNumber;
String status;
Customer({
this.id,
this.name,
this.status,
this.phoneNumber,
});
factory Customer.fromMap(Map<String, dynamic> map, String docID) {
return Customer(
id: docID,
name: map['user_name'],
phoneNumber: map['phone_number'],
status: map['status'],
);
}
Map<String, dynamic> toMap() {
return {
'user_name': name,
'phone_number': phoneNumber,
};
}
@override
String toString() {
return 'Customer{name: $name, phoneNumber: $phoneNumber,statis:$status}';
}
}

View File

@@ -1,27 +1,48 @@
class FAQ {
String id;
int sn;
String questionEng;
String questionMm;
String answerEng;
String answerMm;
String question(bool isEng) => isEng?questionEng:questionMm;
String answer(bool isEng) => isEng?answerEng:answerMm;
Map<String, String> images;
FAQ({this.id,this.questionEng,this.questionMm,this.answerEng,this.answerMm,this.images});
String question(bool isEng) => isEng ? questionEng : questionMm;
String answer(bool isEng) => isEng ? answerEng : answerMm;
Map<String, String> imageUrls;
FAQ(
{this.id,
this.sn,
this.questionEng,
this.questionMm,
this.answerEng,
this.answerMm,
this.imageUrls});
Map<String, dynamic> toMap() {
return {
'id': id,
'sn':sn,
'question_eng': questionEng,
'answer_eng': answerEng,
'question_mm': questionMm,
'answer_mm': answerMm,
'images': images,
'images': imageUrls,
};
}
factory FAQ.fromMap(Map<String, dynamic> map, String id) {
return FAQ(
id: id,
sn: map['sn'],
questionEng: map['question_eng'],
answerEng: map['answer_eng'],
questionMm: map['question_mm'],
answerMm: map['answer_mm'],
imageUrls: Map.from(map['images'] ?? Map<String, String>()),
);
}
@override
String toString() {
return 'FAQ{id: $id, questionEng: $questionEng,questionMm:$questionMm}';

View File

@@ -0,0 +1,72 @@
class Role {
String roleID;
String roleName;
String privileges;
Role({this.roleName, this.roleID, this.privileges});
Role.fromJson(Map<String, dynamic> json) {
roleName = json['role_name'];
roleID = json['role_id'];
privileges = json['privileges'];
}
}
class Parser {
String status;
String message;
Role data;
Parser({this.status, this.message, this.data});
Parser.fromJson(Map<String, dynamic> json) {
status = json['status'];
message = json['message'];
if (json['status'] == 'Ok') {
data = Role.fromJson(json['data']);
}
}
}
class StatusParser {
String status;
String message;
StatusParser(this.status, this.message);
StatusParser.fromJson(Map<String, dynamic> json) {
status = json['status'];
message = json['message'];
}
}
class Privilege {
String id;
String name;
String desc;
bool sysAdminOnly = true;
bool isChecked = false;
Privilege({this.id, this.name, this.desc, this.isChecked, this.sysAdminOnly});
factory Privilege.fromMap(Map<String, dynamic> map, String docID) {
return Privilege(
id: docID,
name: map['name'],
desc: map['desc'],
sysAdminOnly: map['sys_admin_only']);
}
}
class UserLevel {
String id;
String name;
int level;
UserLevel({this.id, this.name, this.level});
factory UserLevel.fromMap(Map<String, dynamic> map, String docID) {
return UserLevel(
id: docID,
name: map['name'],
level: map['level']
);
}
}

View File

@@ -1,283 +1,70 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
class User {
String id;
String name;
String phoneNumber;
bool hasSignup;
List<String> privileges = [];
String fcsID;
String shippingAddress;
String deliveryAddress;
String get phone => phoneNumber != null && phoneNumber.startsWith("959")
? "0${phoneNumber.substring(2)}"
: phoneNumber;
List<String> claimPrivileges = [];
final String dateofBirth;
final String gender;
final String status;
final bool disable;
bool registeredBuyer;
List<String> privilegeIds;
String roleName;
String roleID;
bool agreeTerms;
String bizID;
String accountID;
String email;
bool isBlock;
int userLevel;
String userLevelID;
String frontUrl;
String backUrl;
String selfieUrl;
DateTime lastActiveTime;
String device;
String primaryDeviceID;
String primaryDeviceName;
String pin;
String get getname => this.name;
String get getphonenumber => this.phoneNumber;
String get getdateofBirth => this.dateofBirth;
bool get getdisable => this.disable;
Future<void> setFirebaseUser(FirebaseUser firebaseUser) async {
IdTokenResult idToken = await firebaseUser.getIdToken(refresh: true);
String privileges = idToken.claims["privileges"];
if (privileges == null || privileges == "") return;
this.claimPrivileges = privileges.split(":").toList();
this.accountID = idToken.claims["account_id"];
this.bizID = idToken.claims["biz_id"];
}
User(
{this.id,
this.name,
this.gender,
this.phoneNumber,
this.fcsID,
this.shippingAddress,
this.deliveryAddress,
this.dateofBirth,
this.roleName,
this.roleID,
this.privilegeIds,
this.email,
this.disable,
this.status,
this.frontUrl,
this.backUrl,
this.selfieUrl,
this.registeredBuyer,
this.agreeTerms,
this.lastActiveTime,
this.device,
this.primaryDeviceID,
this.primaryDeviceName,
this.isBlock,
this.userLevel,
this.userLevelID,
this.pin});
User({
this.id,
this.name,
this.phoneNumber,
this.fcsID,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
name: json['user_name'],
phoneNumber: json['phone_number'],
dateofBirth: json['dob'],
gender: json['gender'],
frontUrl: json['front_url'],
backUrl: json['back_url'],
selfieUrl: json['selfie_url'],
status: json['status'],
agreeTerms: json['agree_terms'],
disable: json['disable'],
registeredBuyer: json['registered_buyer'],
privilegeIds: json['privileges'],
email: json['email'],
isBlock: json['black_list'],
userLevel: json['user_level'],
userLevelID: json['user_level_id'],
pin: json['pin']);
}
factory User.fromUserJson(Map<String, dynamic> json) {
DateTime parsedDate = DateTime.parse(json['last_active_time']);
return User(
id: json['id'],
name: json['user_name'],
phoneNumber: json['phone_number'],
dateofBirth: json['dob'],
roleName: json['role_name'],
roleID: json['role_id'],
disable: json['disable'],
gender: json['gender'],
status: json['status'],
lastActiveTime: parsedDate == null ? null : parsedDate,
device: json['last_active_device'],
email: json['email'],
primaryDeviceID: json['primary_device_id'],
primaryDeviceName: json['primary_device_name'],
userLevel: json['user_level'],
userLevelID: json['user_level_id'],
pin: json['pin']);
id: json['id'],
name: json['user_name'],
phoneNumber: json['phone_number'],
);
}
Map<String, dynamic> toJson() => {
'id': id,
'user_name': name,
'gender': gender,
'phone_number': phoneNumber,
'dob': dateofBirth,
'roleName': roleName,
'roleId': roleID,
'disable': disable,
'status': status,
'registered_buyer': registeredBuyer,
'agree_terms': agreeTerms,
'front_url': frontUrl,
'back_url': backUrl,
'selfie_url': selfieUrl,
'email': email,
'black_list': isBlock,
'user_level': userLevel,
'user_level_id': userLevelID,
'pin': pin,
'privileges': privilegeIds,
};
Map<String, dynamic> toMap() {
return {
'user_name': name,
'phone_number': phoneNumber,
'dob': dateofBirth,
'role_name': roleName,
'role_id': roleID,
'disable': disable,
'gender': gender,
'status': status,
'email': email,
'black_list': isBlock,
'user_level': userLevel,
'user_level_id': userLevelID,
'pin': pin
};
}
factory User.fromMap(Map<String, dynamic> map, String docID) {
var activeTime = (map['last_active_time'] as Timestamp);
return User(
id: docID,
name: map['user_name'],
phoneNumber: map['phone_number'],
privilegeIds:
map['privileges'] == null ? [] : map['privileges'].cast<String>(),
dateofBirth: map['dob'],
roleName: map['role_name'],
roleID: map['role_id'],
disable: map['disable'],
gender: map['gender'],
status: map['status'],
registeredBuyer: map['registered_buyer'],
agreeTerms: map['agree_terms'] == null ? false : map['agree_terms'],
lastActiveTime: activeTime == null ? null : activeTime.toDate(),
device: map['last_active_device'],
email: map['email'],
primaryDeviceID: map['primary_device_id'],
primaryDeviceName: map['primary_device_name'],
isBlock: map['black_list'],
userLevel: map['user_level'],
userLevelID: map['user_level_id'],
pin: map['pin']);
id: docID,
name: map['user_name'],
phoneNumber: map['phone_number'],
);
}
bool isBlockUser() {
return this.isBlock == true;
bool isCustomer() {
return privileges == null || privileges.length == 0;
}
bool isPrimaryDevice() {
return this.primaryDeviceID != null && this.primaryDeviceID != '';
}
bool isRegisteredBuyer() {
return this.registeredBuyer != null && this.registeredBuyer;
}
bool isSysAdmin() {
return claimPrivileges != null
? claimPrivileges.contains('sys_admin')
: false;
}
bool isSysSupport() {
return claimPrivileges != null
? claimPrivileges.contains('sys_support')
: false;
}
bool isBizAdmin() {
return claimPrivileges != null ? claimPrivileges.contains('ba') : false;
}
bool isBuyer() {
return claimPrivileges == null || claimPrivileges.length == 0;
}
bool isEmail() {
return email != null;
}
bool hasAccount() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('a') : false);
}
bool hasDelivery() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('d') : false);
}
bool hasBuyer() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('b') : false);
}
bool isOwner() {
return claimPrivileges != null ? claimPrivileges.contains('o') : false;
}
bool isOwnerAndAbove() {
return isOwner() || isBizAdmin() || isSysAdmin();
bool hasSysAdmin() {
return privileges != null ? privileges.contains('sa') : false;
}
bool hasAdmin() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('admin') : false);
return privileges != null ? privileges.contains('admin') : false;
}
bool hasDO() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('do') : false);
bool hasMaintenance() {
return privileges != null ? privileges.contains('mt') : false;
}
bool hasPO() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('po') : false);
}
bool hasInventory() {
return isOwner() ||
(claimPrivileges != null ? claimPrivileges.contains('inv') : false);
bool hasCustomers() {
return privileges != null ? privileges.contains('c') : false;
}
@override