add faq
This commit is contained in:
36
lib/fcs/common/domain/entities/customer.dart
Normal file
36
lib/fcs/common/domain/entities/customer.dart
Normal 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}';
|
||||
}
|
||||
}
|
||||
@@ -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}';
|
||||
|
||||
72
lib/fcs/common/domain/entities/role.dart
Normal file
72
lib/fcs/common/domain/entities/role.dart
Normal 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']
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user