Merge branch 'pharmacy_module_feature_home_page' into enad_pharmacy2
# Conflicts: # lib/core/service/client/base_app_client.dart # lib/pages/landing/home_page.dartmerge-update-with-lab-changes
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,68 @@
|
||||
class CMCGetItemsRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
int checkupType;
|
||||
|
||||
CMCGetItemsRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType,
|
||||
this.checkupType});
|
||||
|
||||
CMCGetItemsRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
checkupType = json['CheckupType'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['CheckupType'] = this.checkupType;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
class CMCGetItemsResponseModel {
|
||||
String itemDescription;
|
||||
String itemName;
|
||||
|
||||
CMCGetItemsResponseModel({this.itemDescription, this.itemName});
|
||||
|
||||
CMCGetItemsResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
itemDescription = json['ItemDescription'];
|
||||
itemName = json['ItemName'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ItemDescription'] = this.itemDescription;
|
||||
data['ItemName'] = this.itemName;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,135 @@
|
||||
class CMCInsertPresOrderRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
double latitude;
|
||||
double longitude;
|
||||
int createdBy;
|
||||
int orderServiceID;
|
||||
List<PatientERCMCInsertServicesList> patientERCMCInsertServicesList;
|
||||
|
||||
CMCInsertPresOrderRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType,
|
||||
this.latitude,
|
||||
this.longitude,
|
||||
this.createdBy,
|
||||
this.orderServiceID,
|
||||
this.patientERCMCInsertServicesList});
|
||||
|
||||
CMCInsertPresOrderRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
latitude = json['Latitude'];
|
||||
longitude = json['Longitude'];
|
||||
createdBy = json['CreatedBy'];
|
||||
orderServiceID = json['OrderServiceID'];
|
||||
if (json['PatientER_CMC_InsertServicesList'] != null) {
|
||||
patientERCMCInsertServicesList =
|
||||
new List<PatientERCMCInsertServicesList>();
|
||||
json['PatientER_CMC_InsertServicesList'].forEach((v) {
|
||||
patientERCMCInsertServicesList
|
||||
.add(new PatientERCMCInsertServicesList.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['Latitude'] = this.latitude;
|
||||
data['Longitude'] = this.longitude;
|
||||
data['CreatedBy'] = this.createdBy;
|
||||
data['OrderServiceID'] = this.orderServiceID;
|
||||
if (this.patientERCMCInsertServicesList != null) {
|
||||
data['PatientER_CMC_InsertServicesList'] =
|
||||
this.patientERCMCInsertServicesList.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class PatientERCMCInsertServicesList {
|
||||
int recordID;
|
||||
String serviceID;
|
||||
String selectedServiceName;
|
||||
String selectedServiceNameAR;
|
||||
dynamic price;
|
||||
dynamic vAT;
|
||||
dynamic totalPrice;
|
||||
|
||||
PatientERCMCInsertServicesList(
|
||||
{this.recordID,
|
||||
this.serviceID,
|
||||
this.selectedServiceName,
|
||||
this.selectedServiceNameAR,
|
||||
this.price,
|
||||
this.vAT,
|
||||
this.totalPrice});
|
||||
|
||||
PatientERCMCInsertServicesList.fromJson(Map<String, dynamic> json) {
|
||||
recordID = json['RecordID'];
|
||||
serviceID = json['ServiceID'];
|
||||
selectedServiceName = json['selectedServiceName'];
|
||||
selectedServiceNameAR = json['selectedServiceNameAR'];
|
||||
price = json['Price'];
|
||||
vAT = json['VAT'];
|
||||
totalPrice = json['TotalPrice'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['RecordID'] = this.recordID;
|
||||
data['ServiceID'] = this.serviceID;
|
||||
data['selectedServiceName'] = this.selectedServiceName;
|
||||
data['selectedServiceNameAR'] = this.selectedServiceNameAR;
|
||||
data['Price'] = this.price;
|
||||
data['VAT'] = this.vAT;
|
||||
data['TotalPrice'] = this.totalPrice;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
class GetCMCServicesRequestModel {
|
||||
int channel;
|
||||
int deviceTypeID;
|
||||
int genderID;
|
||||
String generalid;
|
||||
String identificationNo;
|
||||
String iPAdress;
|
||||
bool isDentalAllowedBackend;
|
||||
int languageID;
|
||||
int patientID;
|
||||
int patientOutSA;
|
||||
int patientType;
|
||||
int patientTypeID;
|
||||
String sessionID;
|
||||
String tokenID;
|
||||
double versionID;
|
||||
|
||||
GetCMCServicesRequestModel(
|
||||
{this.channel,
|
||||
this.deviceTypeID,
|
||||
this.genderID,
|
||||
this.generalid,
|
||||
this.identificationNo,
|
||||
this.iPAdress,
|
||||
this.isDentalAllowedBackend,
|
||||
this.languageID,
|
||||
this.patientID,
|
||||
this.patientOutSA,
|
||||
this.patientType,
|
||||
this.patientTypeID,
|
||||
this.sessionID,
|
||||
this.tokenID,
|
||||
this.versionID});
|
||||
|
||||
GetCMCServicesRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
channel = json['Channel'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
genderID = json['GenderID'];
|
||||
generalid = json['generalid'];
|
||||
identificationNo = json['IdentificationNo'];
|
||||
iPAdress = json['IPAdress'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
languageID = json['LanguageID'];
|
||||
patientID = json['PatientID'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
patientType = json['PatientType'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
sessionID = json['SessionID'];
|
||||
tokenID = json['TokenID'];
|
||||
versionID = json['VersionID'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['Channel'] = this.channel;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['GenderID'] = this.genderID;
|
||||
data['generalid'] = this.generalid;
|
||||
data['IdentificationNo'] = this.identificationNo;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['VersionID'] = this.versionID;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
class GetCMCServicesResponseModel {
|
||||
String description;
|
||||
String descriptionN;
|
||||
int iD;
|
||||
bool isActive;
|
||||
dynamic price;
|
||||
int serviceID;
|
||||
dynamic totalPrice;
|
||||
dynamic vAT;
|
||||
|
||||
GetCMCServicesResponseModel(
|
||||
{this.description,
|
||||
this.descriptionN,
|
||||
this.iD,
|
||||
this.isActive,
|
||||
this.price,
|
||||
this.serviceID,
|
||||
this.totalPrice,
|
||||
this.vAT});
|
||||
|
||||
GetCMCServicesResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
description = json['Description'];
|
||||
descriptionN = json['DescriptionN'];
|
||||
iD = json['ID'];
|
||||
isActive = json['IsActive'];
|
||||
price = json['Price'];
|
||||
serviceID = json['ServiceID'];
|
||||
totalPrice = json['TotalPrice'];
|
||||
vAT = json['VAT'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['Description'] = this.description;
|
||||
data['DescriptionN'] = this.descriptionN;
|
||||
data['ID'] = this.iD;
|
||||
data['IsActive'] = this.isActive;
|
||||
data['Price'] = this.price;
|
||||
data['ServiceID'] = this.serviceID;
|
||||
data['TotalPrice'] = this.totalPrice;
|
||||
data['VAT'] = this.vAT;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
class HHCGetAllServicesRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
|
||||
HHCGetAllServicesRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType});
|
||||
|
||||
HHCGetAllServicesRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
class HHCGetAllServicesResponseModel {
|
||||
int iD;
|
||||
int serviceID;
|
||||
String description;
|
||||
String descriptionN;
|
||||
bool isActive;
|
||||
|
||||
HHCGetAllServicesResponseModel(
|
||||
{this.iD,
|
||||
this.serviceID,
|
||||
this.description,
|
||||
this.descriptionN,
|
||||
this.isActive});
|
||||
|
||||
HHCGetAllServicesResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
iD = json['ID'];
|
||||
serviceID = json['ServiceID'];
|
||||
description = json['Description'];
|
||||
descriptionN = json['DescriptionN'];
|
||||
isActive = json['IsActive'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ID'] = this.iD;
|
||||
data['ServiceID'] = this.serviceID;
|
||||
data['Description'] = this.description;
|
||||
data['DescriptionN'] = this.descriptionN;
|
||||
data['IsActive'] = this.isActive;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
|
||||
class PatientERHHCInsertServicesList {
|
||||
int recordID;
|
||||
int serviceID;
|
||||
String serviceName;
|
||||
|
||||
PatientERHHCInsertServicesList(
|
||||
{this.recordID, this.serviceID, this.serviceName});
|
||||
|
||||
PatientERHHCInsertServicesList.fromJson(Map<String, dynamic> json) {
|
||||
recordID = json['RecordID'];
|
||||
serviceID = json['ServiceID'];
|
||||
serviceName = json['ServiceName'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['RecordID'] = this.recordID;
|
||||
data['ServiceID'] = this.serviceID;
|
||||
data['ServiceName'] = this.serviceName;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
class GetHHCAllPresOrdersRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
|
||||
GetHHCAllPresOrdersRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType});
|
||||
|
||||
GetHHCAllPresOrdersRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,132 @@
|
||||
class GetHHCAllPresOrdersResponseModel {
|
||||
int iD;
|
||||
String patientID;
|
||||
bool patientOutSA;
|
||||
bool isOutPatient;
|
||||
int projectID;
|
||||
int nearestProjectID;
|
||||
double longitude;
|
||||
double latitude;
|
||||
String appointmentNo;
|
||||
String dischargeID;
|
||||
int lineItemNo;
|
||||
int status;
|
||||
String description;
|
||||
String descriptionN;
|
||||
String createdOn;
|
||||
int serviceID;
|
||||
int createdBy;
|
||||
String editedOn;
|
||||
int editedBy;
|
||||
int channel;
|
||||
dynamic clientRequestID;
|
||||
bool returnedToQueue;
|
||||
dynamic pickupDateTime;
|
||||
dynamic pickupLocationName;
|
||||
dynamic dropoffLocationName;
|
||||
int realRRTHaveTransactions;
|
||||
String nearestProjectDescription;
|
||||
String nearestProjectDescriptionN;
|
||||
String projectDescription;
|
||||
String projectDescriptionN;
|
||||
|
||||
GetHHCAllPresOrdersResponseModel(
|
||||
{this.iD,
|
||||
this.patientID,
|
||||
this.patientOutSA,
|
||||
this.isOutPatient,
|
||||
this.projectID,
|
||||
this.nearestProjectID,
|
||||
this.longitude,
|
||||
this.latitude,
|
||||
this.appointmentNo,
|
||||
this.dischargeID,
|
||||
this.lineItemNo,
|
||||
this.status,
|
||||
this.description,
|
||||
this.descriptionN,
|
||||
this.createdOn,
|
||||
this.serviceID,
|
||||
this.createdBy,
|
||||
this.editedOn,
|
||||
this.editedBy,
|
||||
this.channel,
|
||||
this.clientRequestID,
|
||||
this.returnedToQueue,
|
||||
this.pickupDateTime,
|
||||
this.pickupLocationName,
|
||||
this.dropoffLocationName,
|
||||
this.realRRTHaveTransactions,
|
||||
this.nearestProjectDescription,
|
||||
this.nearestProjectDescriptionN,
|
||||
this.projectDescription,
|
||||
this.projectDescriptionN});
|
||||
|
||||
GetHHCAllPresOrdersResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
iD = json['ID'];
|
||||
patientID = json['PatientID'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
isOutPatient = json['IsOutPatient'];
|
||||
projectID = json['ProjectID'];
|
||||
nearestProjectID = json['NearestProjectID'];
|
||||
longitude = json['Longitude'];
|
||||
latitude = json['Latitude'];
|
||||
appointmentNo = json['AppointmentNo'];
|
||||
dischargeID = json['DischargeID'];
|
||||
lineItemNo = json['LineItemNo'];
|
||||
status = json['Status'];
|
||||
description = json['Description'];
|
||||
descriptionN = json['DescriptionN'];
|
||||
createdOn = json['CreatedOn'];
|
||||
serviceID = json['ServiceID'];
|
||||
createdBy = json['CreatedBy'];
|
||||
editedOn = json['EditedOn'];
|
||||
editedBy = json['EditedBy'];
|
||||
channel = json['Channel'];
|
||||
clientRequestID = json['ClientRequestID'];
|
||||
returnedToQueue = json['ReturnedToQueue'];
|
||||
pickupDateTime = json['PickupDateTime'];
|
||||
pickupLocationName = json['PickupLocationName'];
|
||||
dropoffLocationName = json['DropoffLocationName'];
|
||||
realRRTHaveTransactions = json['RealRRT_HaveTransactions'];
|
||||
nearestProjectDescription = json['NearestProjectDescription'];
|
||||
nearestProjectDescriptionN = json['NearestProjectDescriptionN'];
|
||||
projectDescription = json['ProjectDescription'];
|
||||
projectDescriptionN = json['ProjectDescriptionN'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ID'] = this.iD;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['IsOutPatient'] = this.isOutPatient;
|
||||
data['ProjectID'] = this.projectID;
|
||||
data['NearestProjectID'] = this.nearestProjectID;
|
||||
data['Longitude'] = this.longitude;
|
||||
data['Latitude'] = this.latitude;
|
||||
data['AppointmentNo'] = this.appointmentNo;
|
||||
data['DischargeID'] = this.dischargeID;
|
||||
data['LineItemNo'] = this.lineItemNo;
|
||||
data['Status'] = this.status;
|
||||
data['Description'] = this.description;
|
||||
data['DescriptionN'] = this.descriptionN;
|
||||
data['CreatedOn'] = this.createdOn;
|
||||
data['ServiceID'] = this.serviceID;
|
||||
data['CreatedBy'] = this.createdBy;
|
||||
data['EditedOn'] = this.editedOn;
|
||||
data['EditedBy'] = this.editedBy;
|
||||
data['Channel'] = this.channel;
|
||||
data['ClientRequestID'] = this.clientRequestID;
|
||||
data['ReturnedToQueue'] = this.returnedToQueue;
|
||||
data['PickupDateTime'] = this.pickupDateTime;
|
||||
data['PickupLocationName'] = this.pickupLocationName;
|
||||
data['DropoffLocationName'] = this.dropoffLocationName;
|
||||
data['RealRRT_HaveTransactions'] = this.realRRTHaveTransactions;
|
||||
data['NearestProjectDescription'] = this.nearestProjectDescription;
|
||||
data['NearestProjectDescriptionN'] = this.nearestProjectDescriptionN;
|
||||
data['ProjectDescription'] = this.projectDescription;
|
||||
data['ProjectDescriptionN'] = this.projectDescriptionN;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
class GetOrderDetailByOrderIDRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
int presOrderID;
|
||||
|
||||
GetOrderDetailByOrderIDRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType,
|
||||
this.presOrderID});
|
||||
|
||||
GetOrderDetailByOrderIDRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
presOrderID = json['PresOrderID'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['PresOrderID'] = this.presOrderID;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
class GetOrderDetailByOrderIDResponseModel {
|
||||
int iD;
|
||||
int presOrderID;
|
||||
int hHCServiceID;
|
||||
int createdBy;
|
||||
String createdOn;
|
||||
int editedBy;
|
||||
String editedOn;
|
||||
bool isActive;
|
||||
String description;
|
||||
String descriptionN;
|
||||
|
||||
GetOrderDetailByOrderIDResponseModel(
|
||||
{this.iD,
|
||||
this.presOrderID,
|
||||
this.hHCServiceID,
|
||||
this.createdBy,
|
||||
this.createdOn,
|
||||
this.editedBy,
|
||||
this.editedOn,
|
||||
this.isActive,
|
||||
this.description,
|
||||
this.descriptionN});
|
||||
|
||||
GetOrderDetailByOrderIDResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
iD = json['ID'];
|
||||
presOrderID = json['PresOrderID'];
|
||||
hHCServiceID = json['HHC_ServiceID'];
|
||||
createdBy = json['CreatedBy'];
|
||||
createdOn = json['CreatedOn'];
|
||||
editedBy = json['EditedBy'];
|
||||
editedOn = json['EditedOn'];
|
||||
isActive = json['IsActive'];
|
||||
description = json['Description'];
|
||||
descriptionN = json['DescriptionN'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['ID'] = this.iD;
|
||||
data['PresOrderID'] = this.presOrderID;
|
||||
data['HHC_ServiceID'] = this.hHCServiceID;
|
||||
data['CreatedBy'] = this.createdBy;
|
||||
data['CreatedOn'] = this.createdOn;
|
||||
data['EditedBy'] = this.editedBy;
|
||||
data['EditedOn'] = this.editedOn;
|
||||
data['IsActive'] = this.isActive;
|
||||
data['Description'] = this.description;
|
||||
data['DescriptionN'] = this.descriptionN;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
import 'PatientERHHCInsertServicesList.dart';
|
||||
|
||||
class PatientERInsertPresOrderRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
double latitude;
|
||||
double longitude;
|
||||
int createdBy;
|
||||
int orderServiceID;
|
||||
List<PatientERHHCInsertServicesList> patientERHHCInsertServicesList =List();
|
||||
|
||||
PatientERInsertPresOrderRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType,
|
||||
this.latitude,
|
||||
this.longitude,
|
||||
this.createdBy,
|
||||
this.orderServiceID,
|
||||
});
|
||||
|
||||
PatientERInsertPresOrderRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
latitude = json['Latitude'];
|
||||
longitude = json['Longitude'];
|
||||
createdBy = json['CreatedBy'];
|
||||
orderServiceID = json['OrderServiceID'];
|
||||
if (json['PatientER_HHC_InsertServicesList'] != null) {
|
||||
patientERHHCInsertServicesList =
|
||||
new List<PatientERHHCInsertServicesList>();
|
||||
json['PatientER_HHC_InsertServicesList'].forEach((v) {
|
||||
patientERHHCInsertServicesList
|
||||
.add(new PatientERHHCInsertServicesList.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['Latitude'] = this.latitude;
|
||||
data['Longitude'] = this.longitude;
|
||||
data['CreatedBy'] = this.createdBy;
|
||||
data['OrderServiceID'] = this.orderServiceID;
|
||||
if (this.patientERHHCInsertServicesList != null) {
|
||||
data['PatientER_HHC_InsertServicesList'] =
|
||||
this.patientERHHCInsertServicesList.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
class UpdatePresOrderRequestModel {
|
||||
double versionID;
|
||||
int channel;
|
||||
int languageID;
|
||||
String iPAdress;
|
||||
String generalid;
|
||||
int patientOutSA;
|
||||
String sessionID;
|
||||
bool isDentalAllowedBackend;
|
||||
int deviceTypeID;
|
||||
int patientID;
|
||||
String tokenID;
|
||||
int patientTypeID;
|
||||
int patientType;
|
||||
int presOrderID;
|
||||
int presOrderStatus;
|
||||
int editedBy;
|
||||
String rejectionReason;
|
||||
|
||||
UpdatePresOrderRequestModel(
|
||||
{this.versionID,
|
||||
this.channel,
|
||||
this.languageID,
|
||||
this.iPAdress,
|
||||
this.generalid,
|
||||
this.patientOutSA,
|
||||
this.sessionID,
|
||||
this.isDentalAllowedBackend,
|
||||
this.deviceTypeID,
|
||||
this.patientID,
|
||||
this.tokenID,
|
||||
this.patientTypeID,
|
||||
this.patientType,
|
||||
this.presOrderID,
|
||||
this.presOrderStatus,
|
||||
this.editedBy,
|
||||
this.rejectionReason});
|
||||
|
||||
UpdatePresOrderRequestModel.fromJson(Map<String, dynamic> json) {
|
||||
versionID = json['VersionID'];
|
||||
channel = json['Channel'];
|
||||
languageID = json['LanguageID'];
|
||||
iPAdress = json['IPAdress'];
|
||||
generalid = json['generalid'];
|
||||
patientOutSA = json['PatientOutSA'];
|
||||
sessionID = json['SessionID'];
|
||||
isDentalAllowedBackend = json['isDentalAllowedBackend'];
|
||||
deviceTypeID = json['DeviceTypeID'];
|
||||
patientID = json['PatientID'];
|
||||
tokenID = json['TokenID'];
|
||||
patientTypeID = json['PatientTypeID'];
|
||||
patientType = json['PatientType'];
|
||||
presOrderID = json['PresOrderID'];
|
||||
presOrderStatus = json['PresOrderStatus'];
|
||||
editedBy = json['EditedBy'];
|
||||
rejectionReason = json['RejectionReason'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['VersionID'] = this.versionID;
|
||||
data['Channel'] = this.channel;
|
||||
data['LanguageID'] = this.languageID;
|
||||
data['IPAdress'] = this.iPAdress;
|
||||
data['generalid'] = this.generalid;
|
||||
data['PatientOutSA'] = this.patientOutSA;
|
||||
data['SessionID'] = this.sessionID;
|
||||
data['isDentalAllowedBackend'] = this.isDentalAllowedBackend;
|
||||
data['DeviceTypeID'] = this.deviceTypeID;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['TokenID'] = this.tokenID;
|
||||
data['PatientTypeID'] = this.patientTypeID;
|
||||
data['PatientType'] = this.patientType;
|
||||
data['PresOrderID'] = this.presOrderID;
|
||||
data['PresOrderStatus'] = this.presOrderStatus;
|
||||
data['EditedBy'] = this.editedBy;
|
||||
data['RejectionReason'] = this.rejectionReason;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,128 @@
|
||||
class Customer {
|
||||
String fileNumber;
|
||||
String iqamaNumber;
|
||||
int isOutSa;
|
||||
int patientType;
|
||||
String gender;
|
||||
String birthDate;
|
||||
String phone;
|
||||
String countryCode;
|
||||
String yahalaAccountno;
|
||||
String billingAddress;
|
||||
String shippingAddress;
|
||||
String id;
|
||||
String username;
|
||||
String email;
|
||||
String firstName;
|
||||
String lastName;
|
||||
String languageId;
|
||||
String adminComment;
|
||||
String isTaxExempt;
|
||||
String hasShoppingCartItems;
|
||||
String active;
|
||||
String deleted;
|
||||
String isSystemAccount;
|
||||
String systemName;
|
||||
String lastIpAddress;
|
||||
String createdOnUtc;
|
||||
String lastLoginDateUtc;
|
||||
String lastActivityDateUtc;
|
||||
String registeredInStoreId;
|
||||
|
||||
Customer(
|
||||
{this.fileNumber,
|
||||
this.iqamaNumber,
|
||||
this.isOutSa,
|
||||
this.patientType,
|
||||
this.gender,
|
||||
this.birthDate,
|
||||
this.phone,
|
||||
this.countryCode,
|
||||
this.yahalaAccountno,
|
||||
this.billingAddress,
|
||||
this.shippingAddress,
|
||||
this.id,
|
||||
this.username,
|
||||
this.email,
|
||||
this.firstName,
|
||||
this.lastName,
|
||||
this.languageId,
|
||||
this.adminComment,
|
||||
this.isTaxExempt,
|
||||
this.hasShoppingCartItems,
|
||||
this.active,
|
||||
this.deleted,
|
||||
this.isSystemAccount,
|
||||
this.systemName,
|
||||
this.lastIpAddress,
|
||||
this.createdOnUtc,
|
||||
this.lastLoginDateUtc,
|
||||
this.lastActivityDateUtc,
|
||||
this.registeredInStoreId});
|
||||
|
||||
Customer.fromJson(Map<String, dynamic> json) {
|
||||
fileNumber = json['file_number'];
|
||||
iqamaNumber = json['iqama_number'];
|
||||
isOutSa = json['is_out_sa'];
|
||||
patientType = json['patient_type'];
|
||||
gender = json['gender'];
|
||||
birthDate = json['birth_date'];
|
||||
phone = json['phone'];
|
||||
countryCode = json['country_code'];
|
||||
yahalaAccountno = json['yahala_accountno'];
|
||||
billingAddress = json['billing_address'];
|
||||
shippingAddress = json['shipping_address'];
|
||||
id = json['id'];
|
||||
username = json['username'];
|
||||
email = json['email'];
|
||||
firstName = json['first_name'];
|
||||
lastName = json['last_name'];
|
||||
languageId = json['language_id'];
|
||||
adminComment = json['admin_comment'];
|
||||
isTaxExempt = json['is_tax_exempt'];
|
||||
hasShoppingCartItems = json['has_shopping_cart_items'];
|
||||
active = json['active'];
|
||||
deleted = json['deleted'];
|
||||
isSystemAccount = json['is_system_account'];
|
||||
systemName = json['system_name'];
|
||||
lastIpAddress = json['last_ip_address'];
|
||||
createdOnUtc = json['created_on_utc'];
|
||||
lastLoginDateUtc = json['last_login_date_utc'];
|
||||
lastActivityDateUtc = json['last_activity_date_utc'];
|
||||
registeredInStoreId = json['registered_in_store_id'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['file_number'] = this.fileNumber;
|
||||
data['iqama_number'] = this.iqamaNumber;
|
||||
data['is_out_sa'] = this.isOutSa;
|
||||
data['patient_type'] = this.patientType;
|
||||
data['gender'] = this.gender;
|
||||
data['birth_date'] = this.birthDate;
|
||||
data['phone'] = this.phone;
|
||||
data['country_code'] = this.countryCode;
|
||||
data['yahala_accountno'] = this.yahalaAccountno;
|
||||
data['billing_address'] = this.billingAddress;
|
||||
data['shipping_address'] = this.shippingAddress;
|
||||
data['id'] = this.id;
|
||||
data['username'] = this.username;
|
||||
data['email'] = this.email;
|
||||
data['first_name'] = this.firstName;
|
||||
data['last_name'] = this.lastName;
|
||||
data['language_id'] = this.languageId;
|
||||
data['admin_comment'] = this.adminComment;
|
||||
data['is_tax_exempt'] = this.isTaxExempt;
|
||||
data['has_shopping_cart_items'] = this.hasShoppingCartItems;
|
||||
data['active'] = this.active;
|
||||
data['deleted'] = this.deleted;
|
||||
data['is_system_account'] = this.isSystemAccount;
|
||||
data['system_name'] = this.systemName;
|
||||
data['last_ip_address'] = this.lastIpAddress;
|
||||
data['created_on_utc'] = this.createdOnUtc;
|
||||
data['last_login_date_utc'] = this.lastLoginDateUtc;
|
||||
data['last_activity_date_utc'] = this.lastActivityDateUtc;
|
||||
data['registered_in_store_id'] = this.registeredInStoreId;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
import 'PharmacyImageObject.dart';
|
||||
|
||||
class Manufacturer {
|
||||
String id;
|
||||
String name;
|
||||
String namen;
|
||||
// List<LocalizedNames> localizedNames;
|
||||
String description;
|
||||
int manufacturerTemplateId;
|
||||
String metaKeywords;
|
||||
String metaDescription;
|
||||
String metaTitle;
|
||||
int pageSize;
|
||||
String pageSizeOptions;
|
||||
String priceRanges;
|
||||
bool published;
|
||||
bool deleted;
|
||||
int displayOrder;
|
||||
String createdOnUtc;
|
||||
String updatedOnUtc;
|
||||
PharmacyImageObject image;
|
||||
|
||||
Manufacturer(
|
||||
{this.id,
|
||||
this.name,
|
||||
this.namen,
|
||||
// this.localizedNames,
|
||||
this.description,
|
||||
this.manufacturerTemplateId,
|
||||
this.metaKeywords,
|
||||
this.metaDescription,
|
||||
this.metaTitle,
|
||||
this.pageSize,
|
||||
this.pageSizeOptions,
|
||||
this.priceRanges,
|
||||
this.published,
|
||||
this.deleted,
|
||||
this.displayOrder,
|
||||
this.createdOnUtc,
|
||||
this.updatedOnUtc,
|
||||
this.image});
|
||||
|
||||
Manufacturer.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
name = json['name'];
|
||||
namen = json['namen'];
|
||||
// if (json['localized_names'] != null) {
|
||||
// localizedNames = new List<LocalizedNames>();
|
||||
// json['localized_names'].forEach((v) {
|
||||
// localizedNames.add(new LocalizedNames.fromJson(v));
|
||||
// });
|
||||
// }
|
||||
description = json['description'];
|
||||
manufacturerTemplateId = json['manufacturer_template_id'];
|
||||
metaKeywords = json['meta_keywords'];
|
||||
metaDescription = json['meta_description'];
|
||||
metaTitle = json['meta_title'];
|
||||
pageSize = json['page_size'];
|
||||
pageSizeOptions = json['page_size_options'];
|
||||
priceRanges = json['price_ranges'];
|
||||
published = json['published'];
|
||||
deleted = json['deleted'];
|
||||
displayOrder = json['display_order'];
|
||||
createdOnUtc = json['created_on_utc'];
|
||||
updatedOnUtc = json['updated_on_utc'];
|
||||
image = json['image'] != null
|
||||
? new PharmacyImageObject.fromJson(json['image'])
|
||||
: null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['name'] = this.name;
|
||||
data['namen'] = this.namen;
|
||||
// if (this.localizedNames != null) {
|
||||
// data['localized_names'] =
|
||||
// this.localizedNames.map((v) => v.toJson()).toList();
|
||||
// }
|
||||
data['description'] = this.description;
|
||||
data['manufacturer_template_id'] = this.manufacturerTemplateId;
|
||||
data['meta_keywords'] = this.metaKeywords;
|
||||
data['meta_description'] = this.metaDescription;
|
||||
data['meta_title'] = this.metaTitle;
|
||||
data['page_size'] = this.pageSize;
|
||||
data['page_size_options'] = this.pageSizeOptions;
|
||||
data['price_ranges'] = this.priceRanges;
|
||||
data['published'] = this.published;
|
||||
data['deleted'] = this.deleted;
|
||||
data['display_order'] = this.displayOrder;
|
||||
data['created_on_utc'] = this.createdOnUtc;
|
||||
data['updated_on_utc'] = this.updatedOnUtc;
|
||||
if (this.image != null) {
|
||||
data['image'] = this.image.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
class PharmacyImageObject {
|
||||
int id;
|
||||
int position;
|
||||
String src;
|
||||
String thumb;
|
||||
String attachment;
|
||||
|
||||
PharmacyImageObject({this.id, this.position, this.src, this.thumb, this.attachment});
|
||||
|
||||
PharmacyImageObject.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
position = json['position'];
|
||||
src = json['src'];
|
||||
thumb = json['thumb'];
|
||||
attachment = json['attachment'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['position'] = this.position;
|
||||
data['src'] = this.src;
|
||||
data['thumb'] = this.thumb;
|
||||
data['attachment'] = this.attachment;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,149 @@
|
||||
import 'PharmacyImageObject.dart';
|
||||
import 'Reviews.dart';
|
||||
|
||||
class PharmacyProduct {
|
||||
String id;
|
||||
String name;
|
||||
String namen;
|
||||
String shortDescription;
|
||||
String fullDescription;
|
||||
String fullDescriptionn;
|
||||
int approvedRatingSum;
|
||||
int approvedTotalReviews;
|
||||
String sku;
|
||||
bool isRx;
|
||||
String rxMessage;
|
||||
String rxMessagen;
|
||||
int stockQuantity;
|
||||
String stockAvailability;
|
||||
String stockAvailabilityn;
|
||||
bool allowBackInStockSubscriptions;
|
||||
int orderMinimumQuantity;
|
||||
int orderMaximumQuantity;
|
||||
double price;
|
||||
double oldPrice;
|
||||
String discountName;
|
||||
String discountNamen;
|
||||
String discountPercentage;
|
||||
int displayOrder;
|
||||
List<int> discountIds;
|
||||
List<Reviews> reviews;
|
||||
List<PharmacyImageObject> images;
|
||||
|
||||
PharmacyProduct(
|
||||
{this.id,
|
||||
this.name,
|
||||
this.namen,
|
||||
this.shortDescription,
|
||||
this.fullDescription,
|
||||
this.fullDescriptionn,
|
||||
this.approvedRatingSum,
|
||||
this.approvedTotalReviews,
|
||||
this.sku,
|
||||
this.isRx,
|
||||
this.rxMessage,
|
||||
this.rxMessagen,
|
||||
this.stockQuantity,
|
||||
this.stockAvailability,
|
||||
this.stockAvailabilityn,
|
||||
this.allowBackInStockSubscriptions,
|
||||
this.orderMinimumQuantity,
|
||||
this.orderMaximumQuantity,
|
||||
this.price,
|
||||
this.oldPrice,
|
||||
this.discountName,
|
||||
this.discountNamen,
|
||||
this.discountPercentage,
|
||||
this.displayOrder,
|
||||
this.discountIds,
|
||||
this.reviews,
|
||||
this.images});
|
||||
|
||||
PharmacyProduct.fromJson(Map<String, dynamic> json) {
|
||||
try {
|
||||
id = json['id'];
|
||||
name = json['name'];
|
||||
namen = json['namen'];
|
||||
shortDescription = json['short_description'];
|
||||
fullDescription = json['full_description'];
|
||||
fullDescriptionn = json['full_descriptionn'];
|
||||
approvedRatingSum = json['approved_rating_sum'];
|
||||
approvedTotalReviews = json['approved_total_reviews'];
|
||||
sku = json['sku'];
|
||||
isRx = json['is_rx'];
|
||||
rxMessage = json['rx_message'];
|
||||
rxMessagen = json['rx_messagen'];
|
||||
stockQuantity = json['stock_quantity'];
|
||||
stockAvailability = json['stock_availability'];
|
||||
stockAvailabilityn = json['stock_availabilityn'];
|
||||
allowBackInStockSubscriptions = json['allow_back_in_stock_subscriptions'];
|
||||
orderMinimumQuantity = json['order_minimum_quantity'];
|
||||
orderMaximumQuantity = json['order_maximum_quantity'];
|
||||
price = json['price'];
|
||||
oldPrice = json['old_price'];
|
||||
discountName = json['discount_name'];
|
||||
discountNamen = json['discount_namen'];
|
||||
discountPercentage = json['discount_percentage'];
|
||||
displayOrder = json['display_order'];
|
||||
if (json['discount_ids'] != null) {
|
||||
discountIds = new List<int>();
|
||||
json['discount_ids'].forEach((v) {
|
||||
discountIds.add(v);
|
||||
});
|
||||
}
|
||||
if (json['reviews'] != null) {
|
||||
reviews = new List<Reviews>();
|
||||
json['reviews'].forEach((v) {
|
||||
reviews.add(new Reviews.fromJson(v));
|
||||
});
|
||||
}
|
||||
if (json['images'] != null) {
|
||||
images = new List<PharmacyImageObject>();
|
||||
json['images'].forEach((v) {
|
||||
images.add(new PharmacyImageObject.fromJson(v));
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['name'] = this.name;
|
||||
data['namen'] = this.namen;
|
||||
data['short_description'] = this.shortDescription;
|
||||
data['full_description'] = this.fullDescription;
|
||||
data['full_descriptionn'] = this.fullDescriptionn;
|
||||
data['approved_rating_sum'] = this.approvedRatingSum;
|
||||
data['approved_total_reviews'] = this.approvedTotalReviews;
|
||||
data['sku'] = this.sku;
|
||||
data['is_rx'] = this.isRx;
|
||||
data['rx_message'] = this.rxMessage;
|
||||
data['rx_messagen'] = this.rxMessagen;
|
||||
data['stock_quantity'] = this.stockQuantity;
|
||||
data['stock_availability'] = this.stockAvailability;
|
||||
data['stock_availabilityn'] = this.stockAvailabilityn;
|
||||
data['allow_back_in_stock_subscriptions'] =
|
||||
this.allowBackInStockSubscriptions;
|
||||
data['order_minimum_quantity'] = this.orderMinimumQuantity;
|
||||
data['order_maximum_quantity'] = this.orderMaximumQuantity;
|
||||
data['price'] = this.price;
|
||||
data['old_price'] = this.oldPrice;
|
||||
data['discount_name'] = this.discountName;
|
||||
data['discount_namen'] = this.discountNamen;
|
||||
data['discount_percentage'] = this.discountPercentage;
|
||||
data['display_order'] = this.displayOrder;
|
||||
if (this.discountIds != String) {
|
||||
data['discount_ids'] = this.discountIds.map((v) => v).toList();
|
||||
}
|
||||
if (this.reviews != String) {
|
||||
data['reviews'] = this.reviews.map((v) => v.toJson()).toList();
|
||||
}
|
||||
if (this.images != String) {
|
||||
data['images'] = this.images.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
import 'Customer.dart';
|
||||
|
||||
class Reviews {
|
||||
int id;
|
||||
int position;
|
||||
int reviewId;
|
||||
int customerId;
|
||||
int productId;
|
||||
int storeId;
|
||||
bool isApproved;
|
||||
String title;
|
||||
String reviewText;
|
||||
Null replyText;
|
||||
int rating;
|
||||
int helpfulYesTotal;
|
||||
int helpfulNoTotal;
|
||||
String createdOnUtc;
|
||||
Customer customer;
|
||||
Null product;
|
||||
|
||||
Reviews(
|
||||
{this.id,
|
||||
this.position,
|
||||
this.reviewId,
|
||||
this.customerId,
|
||||
this.productId,
|
||||
this.storeId,
|
||||
this.isApproved,
|
||||
this.title,
|
||||
this.reviewText,
|
||||
this.replyText,
|
||||
this.rating,
|
||||
this.helpfulYesTotal,
|
||||
this.helpfulNoTotal,
|
||||
this.createdOnUtc,
|
||||
this.customer,
|
||||
this.product});
|
||||
|
||||
Reviews.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
position = json['position'];
|
||||
reviewId = json['review_id'];
|
||||
customerId = json['customer_id'];
|
||||
productId = json['product_id'];
|
||||
storeId = json['store_id'];
|
||||
isApproved = json['is_approved'];
|
||||
title = json['title'];
|
||||
reviewText = json['review_text'];
|
||||
replyText = json['reply_text'];
|
||||
rating = json['rating'];
|
||||
helpfulYesTotal = json['helpful_yes_total'];
|
||||
helpfulNoTotal = json['helpful_no_total'];
|
||||
createdOnUtc = json['created_on_utc'];
|
||||
customer = json['customer'] != null
|
||||
? new Customer.fromJson(json['customer'])
|
||||
: null;
|
||||
product = json['product'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['position'] = this.position;
|
||||
data['review_id'] = this.reviewId;
|
||||
data['customer_id'] = this.customerId;
|
||||
data['product_id'] = this.productId;
|
||||
data['store_id'] = this.storeId;
|
||||
data['is_approved'] = this.isApproved;
|
||||
data['title'] = this.title;
|
||||
data['review_text'] = this.reviewText;
|
||||
data['reply_text'] = this.replyText;
|
||||
data['rating'] = this.rating;
|
||||
data['helpful_yes_total'] = this.helpfulYesTotal;
|
||||
data['helpful_no_total'] = this.helpfulNoTotal;
|
||||
data['created_on_utc'] = this.createdOnUtc;
|
||||
if (this.customer != null) {
|
||||
data['customer'] = this.customer.toJson();
|
||||
}
|
||||
data['product'] = this.product;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,102 @@
|
||||
import 'package:diplomaticquarterapp/config/config.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_get_items_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_get_items_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/get_cmc_service_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/get_cmc_service_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hHC_all_pres_orders_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
|
||||
import '../base_service.dart';
|
||||
|
||||
class CMCService extends BaseService {
|
||||
List<GetCMCServicesResponseModel> cmcAllServicesList = List();
|
||||
List<GetHHCAllPresOrdersResponseModel> cmcAllPresOrdersList = List();
|
||||
|
||||
List<GetOrderDetailByOrderIDResponseModel> cmcAllOrderDetail = List();
|
||||
List<CMCGetItemsResponseModel> checkupItemsList = List();
|
||||
|
||||
bool isOrderUpdated;
|
||||
|
||||
Future getCMCAllServices() async {
|
||||
|
||||
|
||||
GetCMCServicesRequestModel getCMCServicesRequestModel= new GetCMCServicesRequestModel(genderID: user.gender, identificationNo: user.patientIdentificationNo);
|
||||
hasError = false;
|
||||
await baseAppClient.post(HHC_GET_ALL_CMC_SERVICES,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
cmcAllServicesList.clear();
|
||||
response['PatientER_CMC_GetAllServicesList'].forEach((data) {
|
||||
cmcAllServicesList.add(GetCMCServicesResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: getCMCServicesRequestModel.toJson());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Future getCmcAllPresOrders() async {
|
||||
|
||||
GetHHCAllPresOrdersRequestModel getHHCAllPresOrdersRequestModel= GetHHCAllPresOrdersRequestModel();
|
||||
hasError = false;
|
||||
await baseAppClient.post(GET_PATIENT_ALL_PRES_ORDERS,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
cmcAllPresOrdersList.clear();
|
||||
response['PatientER_GetPatientAllPresOrdersList'].forEach((data) {
|
||||
if (data['ServiceID'] == 3)
|
||||
cmcAllPresOrdersList
|
||||
.add(GetHHCAllPresOrdersResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: getHHCAllPresOrdersRequestModel.toJson());
|
||||
}
|
||||
|
||||
Future getOrderDetailByOrderID(GetOrderDetailByOrderIDRequestModel getOrderDetailByOrderIDRequestModel) async {
|
||||
|
||||
hasError = false;
|
||||
await baseAppClient.post(GET_CMC_ORDER_DETAIL_BY_ID,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
cmcAllOrderDetail.clear();
|
||||
response['PatientER_CMC_GetTransactionsForOrderList'].forEach((data) {
|
||||
cmcAllOrderDetail.add(GetOrderDetailByOrderIDResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: getOrderDetailByOrderIDRequestModel.toJson());
|
||||
}
|
||||
|
||||
|
||||
Future getCheckupItems(CMCGetItemsRequestModel cMCGetItemsRequestModel) async {
|
||||
|
||||
hasError = false;
|
||||
await baseAppClient.post(GET_CHECK_UP_ITEMS,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
checkupItemsList.clear();
|
||||
response['GetCheckUpItemsList'].forEach((data) {
|
||||
checkupItemsList.add(CMCGetItemsResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: cMCGetItemsRequestModel.toJson());
|
||||
}
|
||||
|
||||
Future updateCmcPresOrder(UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||
|
||||
hasError = false;
|
||||
await baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
isOrderUpdated = true;
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: updatePresOrderRequestModel.toJson());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
import 'package:diplomaticquarterapp/config/config.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_request_modle.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hHC_all_pres_orders_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
|
||||
import '../base_service.dart';
|
||||
|
||||
class HomeHealthCareService extends BaseService {
|
||||
List<HHCGetAllServicesResponseModel> hhcAllServicesList = List();
|
||||
List<GetHHCAllPresOrdersResponseModel> hhcAllPresOrdersList = List();
|
||||
|
||||
List<GetOrderDetailByOrderIDResponseModel> hhcAllOrderDetail = List();
|
||||
|
||||
bool isOrderUpdated;
|
||||
|
||||
Future getHHCAllServices(
|
||||
HHCGetAllServicesRequestModel hHCGetAllServicesRequestModel) async {
|
||||
hasError = false;
|
||||
await baseAppClient.post(HHC_GET_ALL_SERVICES,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
hhcAllServicesList.clear();
|
||||
response['PatientER_HHC_GetAllServicesList'].forEach((data) {
|
||||
hhcAllServicesList.add(HHCGetAllServicesResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: hHCGetAllServicesRequestModel.toJson());
|
||||
}
|
||||
|
||||
Future getHHCAllPresOrders() async {
|
||||
GetHHCAllPresOrdersRequestModel getHHCAllPresOrdersRequestModel =
|
||||
GetHHCAllPresOrdersRequestModel();
|
||||
hasError = false;
|
||||
await baseAppClient.post(GET_PATIENT_ALL_PRES_ORDERS,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
hhcAllPresOrdersList.clear();
|
||||
response['PatientER_GetPatientAllPresOrdersList'].forEach((data) {
|
||||
if (data['ServiceID'] == 2)
|
||||
hhcAllPresOrdersList
|
||||
.add(GetHHCAllPresOrdersResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: getHHCAllPresOrdersRequestModel.toJson());
|
||||
}
|
||||
|
||||
Future getOrderDetailByOrderID(int presOrderID) async {
|
||||
hasError = false;
|
||||
Map<String, dynamic> body = Map();
|
||||
body['PresOrderID'] = presOrderID;
|
||||
body['isDentalAllowedBackend'] = false;
|
||||
await baseAppClient.post(GET_ORDER_DETAIL_BY_ID,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
hhcAllOrderDetail.clear();
|
||||
response['PatientER_HHC_GetTransactionsForOrderList'].forEach((data) {
|
||||
hhcAllOrderDetail
|
||||
.add(GetOrderDetailByOrderIDResponseModel.fromJson(data));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: body);
|
||||
}
|
||||
|
||||
Future updateHHCPresOrder(
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||
hasError = false;
|
||||
await baseAppClient.post(PATIENT_ER_UPDATE_PRES_ORDER,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
isOrderUpdated = true;
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, body: updatePresOrderRequestModel.toJson());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
import 'package:diplomaticquarterapp/config/config.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/Manufacturer.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/PharmacyImageObject.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/PharmacyProduct.dart';
|
||||
import 'package:diplomaticquarterapp/core/service/base_service.dart';
|
||||
|
||||
class PharmacyModuleService extends BaseService {
|
||||
bool isFinished = true;
|
||||
bool hasError = false;
|
||||
String errorMsg = '';
|
||||
|
||||
List<PharmacyImageObject> bannerItems = List();
|
||||
List<Manufacturer> manufacturerList = List();
|
||||
List<PharmacyProduct> bestSellerProducts = List();
|
||||
|
||||
Future getBannerListList() async {
|
||||
hasError = false;
|
||||
try {
|
||||
await baseAppClient.get(GET_PHARMACY_BANNER,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
bannerItems.clear();
|
||||
response['images'].forEach((item) {
|
||||
bannerItems.add(PharmacyImageObject.fromJson(item));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
});
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
Future getTopManufacturerList() async {
|
||||
Map<String, String> queryParams = {'page': '1', 'limit': '8'};
|
||||
try {
|
||||
await baseAppClient.get(GET_PHARMACY_TOP_MANUFACTURER,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
manufacturerList.clear();
|
||||
response['manufacturer'].forEach((item) {
|
||||
manufacturerList.add(Manufacturer.fromJson(item));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, queryParams: queryParams);
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
Future getBestSellerProducts() async {
|
||||
Map<String, String> queryParams = {
|
||||
'fields':
|
||||
'id,discount_ids,name,namen,localized_names,display_order,short_description,full_description,full_descriptionn,sku,order_minimum_quantity,order_maximum_quantity,price,old_price,images,is_rx,rx_message,rx_messagen,discount_name,discount_namen,approved_rating_sum,approved_total_reviews,allow_back_in_stock_subscriptions,stock_quantity,stock_availability,stock_availabilityn,discount_percentage,reviews',
|
||||
};
|
||||
try {
|
||||
await baseAppClient.get(GET_PHARMACY_BEST_SELLER_PRODUCT,
|
||||
onSuccess: (dynamic response, int statusCode) {
|
||||
bestSellerProducts.clear();
|
||||
response['products'].forEach((item) {
|
||||
bestSellerProducts.add(PharmacyProduct.fromJson(item));
|
||||
});
|
||||
}, onFailure: (String error, int statusCode) {
|
||||
hasError = true;
|
||||
super.error = error;
|
||||
}, queryParams: queryParams);
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_get_items_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_get_items_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/get_cmc_service_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/cmc_service.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
|
||||
|
||||
import '../../../locator.dart';
|
||||
|
||||
class CMCViewModel extends BaseViewModel {
|
||||
CMCService _cMCService =
|
||||
locator<CMCService>();
|
||||
|
||||
List<GetCMCServicesResponseModel> get cmcAllServicesList =>
|
||||
|
||||
_cMCService.cmcAllServicesList;
|
||||
|
||||
List<GetHHCAllPresOrdersResponseModel> get cmcAllPresOrders =>
|
||||
_cMCService.cmcAllPresOrdersList;
|
||||
|
||||
List<GetOrderDetailByOrderIDResponseModel> get cmcAllOrderDetail =>
|
||||
_cMCService.cmcAllOrderDetail;
|
||||
List<CMCGetItemsResponseModel> get checkupItems =>
|
||||
_cMCService.checkupItemsList;
|
||||
|
||||
bool get isOrderUpdated => _cMCService.isOrderUpdated;
|
||||
|
||||
Future getCMCAllServices() async {
|
||||
await _cMCService
|
||||
.getCMCAllServices();
|
||||
CMCGetItemsRequestModel cMCGetItemsRequestModel = new CMCGetItemsRequestModel(checkupType: cmcAllServicesList[0].iD);
|
||||
|
||||
await getCheckupItems(cMCGetItemsRequestModel);
|
||||
if (_cMCService.hasError) {
|
||||
error = _cMCService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
setState(ViewState.Idle);
|
||||
}
|
||||
}
|
||||
Future getCheckupItems(CMCGetItemsRequestModel cMCGetItemsRequestModel) async {
|
||||
await _cMCService
|
||||
.getCheckupItems(cMCGetItemsRequestModel);
|
||||
if (_cMCService.hasError) {
|
||||
error = _cMCService.error;
|
||||
setState(ViewState.Error);
|
||||
}
|
||||
}
|
||||
|
||||
Future getCmcAllPresOrders() async {
|
||||
setState(ViewState.Busy);
|
||||
await _cMCService.getCmcAllPresOrders();
|
||||
if (_cMCService.hasError) {
|
||||
error = _cMCService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
var pendingOrder = _cMCService.cmcAllPresOrdersList.firstWhere(
|
||||
(element) => element.status == 1 || element.status == 2,
|
||||
orElse: () => null);
|
||||
if (pendingOrder != null) {
|
||||
await getOrderDetailByOrderID(pendingOrder);
|
||||
setState(ViewState.Idle);
|
||||
} else {
|
||||
getCMCAllServices();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future updateCmcPresOrder(
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||
setState(ViewState.BusyLocal);
|
||||
await _cMCService.updateCmcPresOrder(
|
||||
updatePresOrderRequestModel);
|
||||
if (_cMCService.hasError) {
|
||||
error = _cMCService.error;
|
||||
setState(ViewState.ErrorLocal);
|
||||
} else {
|
||||
setState(ViewState.Idle);
|
||||
}
|
||||
}
|
||||
|
||||
Future getOrderDetailByOrderID(GetHHCAllPresOrdersResponseModel order) async {
|
||||
GetOrderDetailByOrderIDRequestModel getOrderDetailByOrderIDRequestModel =
|
||||
GetOrderDetailByOrderIDRequestModel(presOrderID: order.iD);
|
||||
await _cMCService
|
||||
.getOrderDetailByOrderID(getOrderDetailByOrderIDRequestModel);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_request_modle.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/HHC_get_all_services_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/PatientERHHCInsertServicesList.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/home_health_care_service.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
|
||||
|
||||
import '../../../locator.dart';
|
||||
|
||||
class HomeHealthCareViewModel extends BaseViewModel {
|
||||
HomeHealthCareService _homeHealthCareService =
|
||||
locator<HomeHealthCareService>();
|
||||
|
||||
List<HHCGetAllServicesResponseModel> get hhcAllServicesList =>
|
||||
_homeHealthCareService.hhcAllServicesList;
|
||||
|
||||
List<GetHHCAllPresOrdersResponseModel> get hhcAllPresOrders =>
|
||||
_homeHealthCareService.hhcAllPresOrdersList;
|
||||
|
||||
List<GetOrderDetailByOrderIDResponseModel> get hhcAllOrderDetail =>
|
||||
_homeHealthCareService.hhcAllOrderDetail;
|
||||
|
||||
bool get isOrderUpdated => _homeHealthCareService.isOrderUpdated;
|
||||
|
||||
GetHHCAllPresOrdersResponseModel pendingOrder;
|
||||
|
||||
List<PatientERHHCInsertServicesList> patientERHHCInsertServicesList = List();
|
||||
|
||||
Future getHHCAllServices() async {
|
||||
HHCGetAllServicesRequestModel hHCGetAllServicesRequestModel =
|
||||
new HHCGetAllServicesRequestModel();
|
||||
//setState(ViewState.Busy);
|
||||
await _homeHealthCareService
|
||||
.getHHCAllServices(hHCGetAllServicesRequestModel);
|
||||
if (_homeHealthCareService.hasError) {
|
||||
error = _homeHealthCareService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
setState(ViewState.Idle);
|
||||
}
|
||||
}
|
||||
|
||||
Future getHHCAllPresOrders() async {
|
||||
pendingOrder = null;
|
||||
setState(ViewState.Busy);
|
||||
await _homeHealthCareService.getHHCAllPresOrders();
|
||||
if (_homeHealthCareService.hasError) {
|
||||
error = _homeHealthCareService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
pendingOrder = _homeHealthCareService.hhcAllPresOrdersList
|
||||
.firstWhere((element) => element.status == 1 || element.status == 2,
|
||||
orElse: () => null);
|
||||
if (pendingOrder != null) {
|
||||
await _homeHealthCareService.getOrderDetailByOrderID(pendingOrder.iD);
|
||||
setState(ViewState.Idle);
|
||||
} else {
|
||||
getHHCAllServices();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Future updateHHCPresOrder(
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel) async {
|
||||
setState(ViewState.Busy);
|
||||
await _homeHealthCareService.updateHHCPresOrder(
|
||||
updatePresOrderRequestModel);
|
||||
if (_homeHealthCareService.hasError) {
|
||||
error = _homeHealthCareService.error;
|
||||
setState(ViewState.ErrorLocal);
|
||||
} else {
|
||||
setState(ViewState.Idle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/Manufacturer.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/PharmacyImageObject.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/PharmacyProduct.dart';
|
||||
import 'package:diplomaticquarterapp/core/service/parmacyModule/parmacy_module_service.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
|
||||
|
||||
import '../../../locator.dart';
|
||||
|
||||
class PharmacyModuleViewModel extends BaseViewModel {
|
||||
PharmacyModuleService _pharmacyService = locator<PharmacyModuleService>();
|
||||
|
||||
List<PharmacyImageObject> get bannerList => _pharmacyService.bannerItems;
|
||||
|
||||
List<Manufacturer> get manufacturerList => _pharmacyService.manufacturerList;
|
||||
|
||||
List<PharmacyProduct> get bestSellerProduct => _pharmacyService.bestSellerProducts;
|
||||
|
||||
Future getPharmacyHomeData() async {
|
||||
setState(ViewState.Busy);
|
||||
await _pharmacyService.getBannerListList();
|
||||
if (_pharmacyService.hasError) {
|
||||
error = _pharmacyService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
_getTopManufacturerList();
|
||||
}
|
||||
}
|
||||
|
||||
List<String> getBannerImagesUrl() {
|
||||
List<String> images = List();
|
||||
images.add('assets/images/pharmacy_module/pharmacy_logo_green.png');
|
||||
_pharmacyService.bannerItems.forEach((element) {
|
||||
images.add(element.src);
|
||||
});
|
||||
|
||||
return images;
|
||||
}
|
||||
|
||||
_getTopManufacturerList() async {
|
||||
await _pharmacyService.getTopManufacturerList();
|
||||
if (_pharmacyService.hasError) {
|
||||
error = _pharmacyService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
_getBestSellerProducts();
|
||||
}
|
||||
}
|
||||
|
||||
_getBestSellerProducts() async {
|
||||
await _pharmacyService.getBestSellerProducts();
|
||||
if (_pharmacyService.hasError) {
|
||||
error = _pharmacyService.error;
|
||||
setState(ViewState.Error);
|
||||
} else {
|
||||
setState(ViewState.Idle);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,104 @@
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class ConfirmCancelOrderDialog extends StatefulWidget {
|
||||
final CMCViewModel model;
|
||||
final Function onTap;
|
||||
|
||||
|
||||
ConfirmCancelOrderDialog(
|
||||
{Key key, this.model, this.onTap});
|
||||
|
||||
@override
|
||||
_ConfirmCancelOrderDialogState createState() => _ConfirmCancelOrderDialogState();
|
||||
}
|
||||
|
||||
class _ConfirmCancelOrderDialogState extends State<ConfirmCancelOrderDialog> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SimpleDialog(
|
||||
contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0),
|
||||
title: Center(
|
||||
child: Texts(
|
||||
"Confirm",
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
Divider(),
|
||||
Center(
|
||||
child: Texts(
|
||||
"Are you sure!! want to cancel this order",
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: Center(
|
||||
child: Texts(
|
||||
TranslationBase.of(context).cancel.toUpperCase(),
|
||||
color: Colors.red,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 1,
|
||||
height: 30,
|
||||
color: Colors.grey[500],
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () async{
|
||||
widget.onTap();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
TranslationBase.of(context).ok,
|
||||
fontWeight: FontWeight.w400,
|
||||
)),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,314 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_insert_pres_order_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/Dialog/confirm_cancel_order_dialog.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'new_cmc_step_one_page.dart';
|
||||
|
||||
class NewCMCPage extends StatefulWidget {
|
||||
NewCMCPage({this.model});
|
||||
|
||||
final CMCViewModel model;
|
||||
|
||||
@override
|
||||
_NewCMCPageState createState() =>
|
||||
_NewCMCPageState();
|
||||
}
|
||||
|
||||
class _NewCMCPageState extends State<NewCMCPage>
|
||||
with TickerProviderStateMixin {
|
||||
PageController _controller;
|
||||
int _currentIndex = 1;
|
||||
int pageSelected = 2;
|
||||
|
||||
CMCInsertPresOrderRequestModel cMCInsertPresOrderRequestModel;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
PatientERCMCInsertServicesList patientERCMCInsertServicesList;
|
||||
if (widget.model.cmcAllServicesList.length > 0) {
|
||||
patientERCMCInsertServicesList = new PatientERCMCInsertServicesList(
|
||||
price: widget.model.cmcAllServicesList[0].price,
|
||||
serviceID: widget.model.cmcAllServicesList[0].serviceID.toString(),
|
||||
selectedServiceName: widget.model.cmcAllServicesList[0].description,
|
||||
selectedServiceNameAR: widget.model.cmcAllServicesList[0].description,
|
||||
recordID: 1,
|
||||
totalPrice: widget.model.cmcAllServicesList[0].totalPrice,
|
||||
vAT: widget.model.cmcAllServicesList[0].vAT);
|
||||
cMCInsertPresOrderRequestModel = new CMCInsertPresOrderRequestModel(
|
||||
patientERCMCInsertServicesList: [patientERCMCInsertServicesList]);
|
||||
}
|
||||
|
||||
cMCInsertPresOrderRequestModel = new CMCInsertPresOrderRequestModel(
|
||||
patientERCMCInsertServicesList: patientERCMCInsertServicesList != null
|
||||
? [patientERCMCInsertServicesList]
|
||||
: []);
|
||||
|
||||
_controller = new PageController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
changePageViewIndex(pageIndex) {
|
||||
_controller.jumpToPage(pageIndex);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
void showConfirmMessage(
|
||||
CMCViewModel model, GetOrderDetailByOrderIDResponseModel order) {
|
||||
showDialog(
|
||||
context: context,
|
||||
child: ConfirmCancelOrderDialog(
|
||||
model: model,
|
||||
onTap: () async {
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||
UpdatePresOrderRequestModel(
|
||||
presOrderID: order.presOrderID,
|
||||
rejectionReason: "",
|
||||
presOrderStatus: 4, editedBy: 3);
|
||||
await model.updateCmcPresOrder(updatePresOrderRequestModel);
|
||||
if (model.state == ViewState.ErrorLocal) {
|
||||
Utils.showErrorToast(model.error);
|
||||
} else {
|
||||
AppToast.showSuccessToast(message: "Done Successfully");
|
||||
await model.getCmcAllPresOrders();
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
return Scaffold(
|
||||
body: SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.8,
|
||||
child: PageView(
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
controller: _controller,
|
||||
onPageChanged: (index) {
|
||||
setState(() {
|
||||
_currentIndex = index;
|
||||
});
|
||||
},
|
||||
scrollDirection: Axis.horizontal,
|
||||
children: <Widget>[
|
||||
widget.model.cmcAllOrderDetail.length != 0
|
||||
? FractionallySizedBox(
|
||||
heightFactor: 0.8,
|
||||
widthFactor: 0.9,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border:
|
||||
Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Request ID",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
widget.model.cmcAllOrderDetail[0].iD.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Status",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
"Pending",
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Pickup Date",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
DateUtil.getDayMonthYearDateFormatted(
|
||||
DateUtil.convertStringToDate(
|
||||
widget.model.cmcAllOrderDetail[0]
|
||||
.createdOn)),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Service Name",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
widget.model.cmcAllOrderDetail[0].description
|
||||
.toString() ??
|
||||
widget.model.cmcAllOrderDetail[0]
|
||||
.descriptionN
|
||||
.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Center(
|
||||
child: Container(
|
||||
width: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width *
|
||||
0.85,
|
||||
child: SecondaryButton(
|
||||
label: "Cancel".toUpperCase(),
|
||||
onTap: () {
|
||||
showConfirmMessage(widget.model,
|
||||
widget.model.cmcAllOrderDetail[0]);
|
||||
}
|
||||
,
|
||||
color: Colors.red[800],
|
||||
disabled: false,
|
||||
textColor: Theme
|
||||
.of(context)
|
||||
.backgroundColor),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
: NewCMCStepOnePage(
|
||||
changePageViewIndex: changePageViewIndex,
|
||||
cMCInsertPresOrderRequestModel:
|
||||
cMCInsertPresOrderRequestModel,
|
||||
model: widget.model,
|
||||
),
|
||||
// NewEReferralStepTowPage(
|
||||
// changePageViewIndex: changePageViewIndex,
|
||||
// patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
|
||||
//
|
||||
// ),
|
||||
// NewEReferralStepThreePage(
|
||||
// changePageViewIndex: changePageViewIndex,
|
||||
// patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
|
||||
//
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,209 @@
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_get_items_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_insert_pres_order_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class NewCMCStepOnePage extends StatefulWidget {
|
||||
final CMCInsertPresOrderRequestModel cMCInsertPresOrderRequestModel;
|
||||
final Function changePageViewIndex;
|
||||
final CMCViewModel model;
|
||||
|
||||
const NewCMCStepOnePage(
|
||||
{Key key,
|
||||
this.cMCInsertPresOrderRequestModel,
|
||||
this.model,
|
||||
this.changePageViewIndex})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
_NewCMCStepOnePageState createState() =>
|
||||
_NewCMCStepOnePageState();
|
||||
}
|
||||
|
||||
class _NewCMCStepOnePageState
|
||||
extends State<NewCMCStepOnePage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: false,
|
||||
baseViewModel: widget.model,
|
||||
body: SingleChildScrollView(
|
||||
physics: ScrollPhysics(),
|
||||
child: Container(
|
||||
margin: EdgeInsets.all(12),
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
FractionallySizedBox(
|
||||
widthFactor: 0.94,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Texts(
|
||||
// TranslationBase.of(context).advancePaymentLabel,
|
||||
"Select Home Health Care Services",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
Column(
|
||||
children: widget.model.cmcAllServicesList.map((
|
||||
service) {
|
||||
return Container(
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border:
|
||||
Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Radio(
|
||||
value: service.serviceID,
|
||||
activeColor: Colors.red[800],
|
||||
onChanged: (newValue) async {
|
||||
PatientERCMCInsertServicesList patientERCMCInsertServicesList =
|
||||
new PatientERCMCInsertServicesList(
|
||||
price: service.price,
|
||||
serviceID: service.serviceID
|
||||
.toString(),
|
||||
selectedServiceName: service
|
||||
.description,
|
||||
selectedServiceNameAR:
|
||||
service.description,
|
||||
recordID: 1,
|
||||
totalPrice: service.totalPrice,
|
||||
vAT: service.vAT);
|
||||
setState(() {
|
||||
widget
|
||||
.cMCInsertPresOrderRequestModel
|
||||
.patientERCMCInsertServicesList =
|
||||
[patientERCMCInsertServicesList];
|
||||
});
|
||||
CMCGetItemsRequestModel cMCGetItemsRequestModel = new CMCGetItemsRequestModel (checkupType:newValue );
|
||||
await widget.model.getCheckupItems(cMCGetItemsRequestModel);
|
||||
},
|
||||
groupValue: widget
|
||||
.cMCInsertPresOrderRequestModel
|
||||
.patientERCMCInsertServicesList.length >0?int.parse(widget
|
||||
.cMCInsertPresOrderRequestModel
|
||||
.patientERCMCInsertServicesList[0]
|
||||
.serviceID):1),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(20.0),
|
||||
child: Texts(
|
||||
service.description,
|
||||
fontSize: 15,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 30,),
|
||||
Container(
|
||||
color: Colors.white,
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: widget.model.checkupItems.map((item) {
|
||||
return Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.8,
|
||||
child: Container(
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border:
|
||||
Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 5, top: 5),
|
||||
decoration: BoxDecoration(
|
||||
// border: Border(
|
||||
// bottom: BorderSide(
|
||||
// color: Colors.grey,
|
||||
// width: 1.0,
|
||||
// ),
|
||||
// ),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
item.itemName,
|
||||
fontSize: 15,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}).toList()),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
bottomSheet:Container(
|
||||
height: MediaQuery.of(context).size.height * 0.10,
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
width: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width * 0.9,
|
||||
child: SecondaryButton(
|
||||
label: "Next",
|
||||
// disabled: this.widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList.length ==0,
|
||||
textColor: Theme
|
||||
.of(context)
|
||||
.backgroundColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hexcolor/hexcolor.dart';
|
||||
import 'cmc_page.dart';
|
||||
|
||||
class CMCIndexPage extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: TranslationBase.of(context).serviceInformation,
|
||||
body: SingleChildScrollView(
|
||||
padding: EdgeInsets.all(12),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Texts(
|
||||
"CMC",
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 25,
|
||||
color: Color(0xff60686b),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Texts(
|
||||
"This service is designed to help you to set drinking water goals and track the volume of water you are drinking on a daily basis. This service allows for schedule reminders and offers a basic statistical analysis of the amount of what you have consumed over the course of a day, week or month.",
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 17,
|
||||
),
|
||||
SizedBox(
|
||||
height: 22,
|
||||
),
|
||||
Center(
|
||||
child: Image.asset(
|
||||
'assets/images/AlHabibMedicalService/Wifi-AR.png')),
|
||||
SizedBox(
|
||||
height: 77,
|
||||
),
|
||||
],
|
||||
)),
|
||||
bottomSheet: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.10,
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.9,
|
||||
child: SecondaryButton(
|
||||
onTap: () => Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: CMCPage(),
|
||||
),
|
||||
),
|
||||
label: "CMC",
|
||||
textColor: Theme.of(context).backgroundColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,130 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'NewCMC/new_cmc_page.dart';
|
||||
import 'orders_log_details_page.dart';
|
||||
|
||||
class CMCPage extends StatefulWidget {
|
||||
@override
|
||||
_CMCPageState createState() => _CMCPageState();
|
||||
}
|
||||
|
||||
class _CMCPageState extends State<CMCPage>
|
||||
with SingleTickerProviderStateMixin {
|
||||
TabController _tabController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_tabController = TabController(length: 2, vsync: this);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_tabController.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseView<CMCViewModel>(
|
||||
onModelReady: (model){
|
||||
model.getCmcAllPresOrders();
|
||||
},
|
||||
builder: (_, model, widget) => AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: TranslationBase.of(context).homeHealthCare,
|
||||
body: Scaffold(
|
||||
extendBodyBehindAppBar: true,
|
||||
appBar: PreferredSize(
|
||||
preferredSize: Size.fromHeight(65.0),
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
Positioned(
|
||||
bottom: 1,
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||
child: Container(
|
||||
color: Theme.of(context)
|
||||
.scaffoldBackgroundColor
|
||||
.withOpacity(0.8),
|
||||
height: 70.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
Center(
|
||||
child: Container(
|
||||
height: 60.0,
|
||||
margin: EdgeInsets.only(top: 10.0),
|
||||
width: MediaQuery.of(context).size.width * 0.9,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 0.7),
|
||||
),
|
||||
color: Colors.white),
|
||||
child: Center(
|
||||
child: TabBar(
|
||||
isScrollable: true,
|
||||
controller: _tabController,
|
||||
indicatorWeight: 5.0,
|
||||
indicatorSize: TabBarIndicatorSize.label,
|
||||
indicatorColor: Colors.red[800],
|
||||
labelColor: Theme.of(context).primaryColor,
|
||||
labelPadding:
|
||||
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
|
||||
unselectedLabelColor: Colors.grey[800],
|
||||
tabs: [
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.37,
|
||||
child: Center(
|
||||
child: Texts("CMC Service"),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.37,
|
||||
child: Center(
|
||||
child: Texts(TranslationBase.of(context).orderLog),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
controller: _tabController,
|
||||
children: <Widget>[
|
||||
NewCMCPage(
|
||||
model: model,
|
||||
),
|
||||
OrdersLogDetailsPage(
|
||||
model: model,
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,250 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/cmc_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'Dialog/confirm_cancel_order_dialog.dart';
|
||||
|
||||
class OrdersLogDetailsPage extends StatelessWidget {
|
||||
final CMCViewModel model;
|
||||
|
||||
const OrdersLogDetailsPage({Key key, this.model}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
void showConfirmMessage(
|
||||
CMCViewModel model, GetHHCAllPresOrdersResponseModel order) {
|
||||
showDialog(
|
||||
context: context,
|
||||
child: ConfirmCancelOrderDialog(
|
||||
model: model,
|
||||
onTap: () async {
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||
UpdatePresOrderRequestModel(
|
||||
presOrderID: order.iD,
|
||||
rejectionReason: "",
|
||||
presOrderStatus: 4, editedBy: 3);
|
||||
await model.updateCmcPresOrder(updatePresOrderRequestModel);
|
||||
if(model.state == ViewState.ErrorLocal) {
|
||||
Utils.showErrorToast(model.error);
|
||||
} else {
|
||||
AppToast.showSuccessToast(message: "Done Successfully");
|
||||
await model.getCmcAllPresOrders();
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
return AppScaffold(
|
||||
isShowAppBar: false,
|
||||
baseViewModel: model,
|
||||
body: SingleChildScrollView(
|
||||
physics: ScrollPhysics(),
|
||||
child: Container(
|
||||
margin: EdgeInsets.all(12),
|
||||
child: Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.94,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: model.cmcAllPresOrders.map((order) {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border:
|
||||
Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Request ID",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.iD.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Status",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.description,
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Pickup Date",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
DateUtil.getDayMonthYearDateFormatted(
|
||||
DateUtil.convertStringToDate(
|
||||
order.createdOn)),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Location",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.nearestProjectDescription
|
||||
.toString() ??
|
||||
order.nearestProjectDescriptionN
|
||||
.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
if (order.status == 1 ||order.status == 2 )
|
||||
Center(
|
||||
child: Container(
|
||||
width: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width *
|
||||
0.85,
|
||||
child: SecondaryButton(
|
||||
label: "Cancel".toUpperCase(),
|
||||
onTap: () {
|
||||
showConfirmMessage(model, order);
|
||||
}
|
||||
,
|
||||
color: Colors.red[800],
|
||||
disabled: false,
|
||||
textColor: Theme
|
||||
.of(context)
|
||||
.backgroundColor),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}).toList())
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,103 @@
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class ConfirmCancelOrderDialog extends StatefulWidget {
|
||||
final HomeHealthCareViewModel model;
|
||||
final Function onTap;
|
||||
|
||||
|
||||
ConfirmCancelOrderDialog(
|
||||
{Key key, this.model, this.onTap});
|
||||
|
||||
@override
|
||||
_ConfirmCancelOrderDialogState createState() => _ConfirmCancelOrderDialogState();
|
||||
}
|
||||
|
||||
class _ConfirmCancelOrderDialogState extends State<ConfirmCancelOrderDialog> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SimpleDialog(
|
||||
contentPadding: EdgeInsets.fromLTRB(28.0, 24.0, 28.0, 0.0),
|
||||
title: Center(
|
||||
child: Texts(
|
||||
"Confirm",
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
Divider(),
|
||||
Center(
|
||||
child: Texts(
|
||||
"Are you sure!! want to cancel this order",
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: Center(
|
||||
child: Texts(
|
||||
TranslationBase.of(context).cancel.toUpperCase(),
|
||||
color: Colors.red,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 1,
|
||||
height: 30,
|
||||
color: Colors.grey[500],
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () async{
|
||||
widget.onTap();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
TranslationBase.of(context).ok,
|
||||
fontWeight: FontWeight.w400,
|
||||
)),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,161 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/PatientERHHCInsertServicesList.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/patient_er_insert_pres_order_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class NewHomeHealthCareStepOnePage extends StatefulWidget {
|
||||
final PatientERInsertPresOrderRequestModel
|
||||
patientERInsertPresOrderRequestModel;
|
||||
final Function changePageViewIndex;
|
||||
final HomeHealthCareViewModel model;
|
||||
|
||||
const NewHomeHealthCareStepOnePage(
|
||||
{Key key,
|
||||
this.patientERInsertPresOrderRequestModel,
|
||||
this.model,
|
||||
this.changePageViewIndex})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
_NewHomeHealthCareStepOnePageState createState() =>
|
||||
_NewHomeHealthCareStepOnePageState();
|
||||
}
|
||||
|
||||
class _NewHomeHealthCareStepOnePageState
|
||||
extends State<NewHomeHealthCareStepOnePage> {
|
||||
@override
|
||||
void initState() {
|
||||
if(widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList==null)
|
||||
widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList = [];
|
||||
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: false,
|
||||
baseViewModel: widget.model,
|
||||
body: SingleChildScrollView(
|
||||
physics: ScrollPhysics(),
|
||||
child: Container(
|
||||
margin: EdgeInsets.only(
|
||||
left: MediaQuery.of(context).size.width * 0.05,
|
||||
right: MediaQuery.of(context).size.width * 0.05),
|
||||
child: Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 1,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Texts(
|
||||
"Select Home Health Care Services",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
Column(
|
||||
children: widget.model.hhcAllServicesList.map((service) {
|
||||
return Container(
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Checkbox(
|
||||
value: isServiceSelected(
|
||||
service.serviceID),
|
||||
activeColor: Colors.black38,
|
||||
onChanged: (bool newValue) {
|
||||
setState(() {
|
||||
if(!isServiceSelected(service.serviceID))
|
||||
widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList.add( PatientERHHCInsertServicesList(
|
||||
recordID:widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList.length,
|
||||
serviceID: service.serviceID,
|
||||
serviceName: service.description));
|
||||
else
|
||||
removeSelected(service.serviceID);
|
||||
// widget.patientERInsertPresOrderRequestModel
|
||||
// isPatientInsured = newValue;
|
||||
});
|
||||
}),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(20.0),
|
||||
child: Texts(
|
||||
service.description,
|
||||
fontSize: 15,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
bottomSheet: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.10,
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.9,
|
||||
child: SecondaryButton(
|
||||
label: "Next",
|
||||
disabled: this
|
||||
.widget
|
||||
.patientERInsertPresOrderRequestModel
|
||||
.patientERHHCInsertServicesList
|
||||
.length ==
|
||||
0,
|
||||
textColor: Theme.of(context).backgroundColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
isServiceSelected(int serviceId) {
|
||||
Iterable <PatientERHHCInsertServicesList> patientERHHCInsertServicesList = widget
|
||||
.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList
|
||||
.where((element) => serviceId == element.serviceID);
|
||||
if(patientERHHCInsertServicesList.length > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
removeSelected(int serviceId){
|
||||
Iterable <PatientERHHCInsertServicesList> patientERHHCInsertServicesList = widget
|
||||
.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList
|
||||
.where((element) => serviceId == element.serviceID);
|
||||
|
||||
if(patientERHHCInsertServicesList.length > 0)
|
||||
setState(() {
|
||||
widget.patientERInsertPresOrderRequestModel.patientERHHCInsertServicesList.remove(patientERHHCInsertServicesList);
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,299 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_order_detail_by_order_iD_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/patient_er_insert_pres_order_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/Dialog/confirm_cancel_order_dialog.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../StepsWidget.dart';
|
||||
import 'new_Home_health_care_step_one_page.dart';
|
||||
|
||||
class NewHomeHealthCarePage extends StatefulWidget {
|
||||
NewHomeHealthCarePage({this.model});
|
||||
|
||||
final HomeHealthCareViewModel model;
|
||||
|
||||
@override
|
||||
_NewHomeHealthCarePageState createState() => _NewHomeHealthCarePageState();
|
||||
}
|
||||
|
||||
class _NewHomeHealthCarePageState extends State<NewHomeHealthCarePage>
|
||||
with TickerProviderStateMixin {
|
||||
PageController _controller;
|
||||
int _currentIndex = 1;
|
||||
int pageSelected = 2;
|
||||
|
||||
PatientERInsertPresOrderRequestModel patientERInsertPresOrderRequestModel =
|
||||
new PatientERInsertPresOrderRequestModel();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_controller = new PageController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
_changeCurrentTab(int tab) {
|
||||
setState(() {
|
||||
_currentIndex = tab;
|
||||
});
|
||||
_controller.animateToPage(tab,
|
||||
duration: Duration(milliseconds: 800), curve: Curves.easeOutQuart);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
void showConfirmMessage(HomeHealthCareViewModel model,
|
||||
GetOrderDetailByOrderIDResponseModel order) {
|
||||
showDialog(
|
||||
context: context,
|
||||
child: ConfirmCancelOrderDialog(
|
||||
model: model,
|
||||
onTap: () async {
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||
UpdatePresOrderRequestModel(
|
||||
presOrderID: order.presOrderID,
|
||||
rejectionReason: "",
|
||||
presOrderStatus: 4,
|
||||
editedBy: 3);
|
||||
await model.updateHHCPresOrder(updatePresOrderRequestModel);
|
||||
if (model.state == ViewState.ErrorLocal) {
|
||||
Utils.showErrorToast(model.error);
|
||||
} else {
|
||||
AppToast.showSuccessToast(message: "Done Successfully");
|
||||
await model.getHHCAllPresOrders();
|
||||
// await model.getHHCAllServices();
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
body: SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.8,
|
||||
child: Column(
|
||||
children: [
|
||||
|
||||
Container(
|
||||
margin: EdgeInsets.only(left: MediaQuery.of(context).size.width*0.05, right: MediaQuery.of(context).size.width*0.05),
|
||||
child: StepsWidget(
|
||||
index: _currentIndex,
|
||||
changeCurrentTab: _changeCurrentTab,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: PageView(
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
controller: _controller,
|
||||
onPageChanged: (index) {
|
||||
setState(() {
|
||||
_currentIndex = index;
|
||||
});
|
||||
},
|
||||
scrollDirection: Axis.horizontal,
|
||||
children: <Widget>[
|
||||
widget.model.pendingOrder != null
|
||||
? FractionallySizedBox(
|
||||
widthFactor: 0.9,
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Request ID",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
widget.model.pendingOrder.iD.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Status",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
widget.model.pendingOrder.description,
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Pickup Date",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
DateUtil.getDayMonthYearDateFormatted(
|
||||
DateUtil.convertStringToDate(widget
|
||||
.model.pendingOrder.createdOn)),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
...List.generate(
|
||||
widget.model.hhcAllOrderDetail.length,
|
||||
(index) => Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Service Name",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
widget.model.hhcAllOrderDetail[index]
|
||||
.description,
|
||||
fontSize: 22,
|
||||
bold: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Center(
|
||||
child: Container(
|
||||
width:
|
||||
MediaQuery.of(context).size.width * 0.85,
|
||||
child: SecondaryButton(
|
||||
label: "Cancel".toUpperCase(),
|
||||
onTap: () {
|
||||
showConfirmMessage(widget.model,
|
||||
widget.model.hhcAllOrderDetail[0]);
|
||||
},
|
||||
color: Colors.red[800],
|
||||
disabled: false,
|
||||
textColor:
|
||||
Theme.of(context).backgroundColor),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
: NewHomeHealthCareStepOnePage(
|
||||
changePageViewIndex: _changeCurrentTab,
|
||||
patientERInsertPresOrderRequestModel: patientERInsertPresOrderRequestModel,
|
||||
model: widget.model,
|
||||
),
|
||||
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,181 @@
|
||||
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class StepsWidget extends StatelessWidget {
|
||||
final int index;
|
||||
final Function changeCurrentTab;
|
||||
|
||||
StepsWidget({Key key, this.index, this.changeCurrentTab});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProjectViewModel projectViewModel = Provider.of(context);
|
||||
return projectViewModel.isArabic? Stack(
|
||||
children: [
|
||||
Container(
|
||||
height: 50,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
color: Colors.transparent,
|
||||
child: Center(
|
||||
child: Divider(
|
||||
color: Colors.grey,
|
||||
height: 0.75,
|
||||
thickness: 0.75,
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
left: 0,
|
||||
child: InkWell(
|
||||
onTap: () => changeCurrentTab(0),
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
border: index > 0 ? null:Border.all(color: Colors.black,width: 0.75),
|
||||
shape: BoxShape.circle,
|
||||
color: index == 0 ? Colors.grey[800] : index > 0 ?Colors.green: Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'1',
|
||||
color: index == 0 ? Colors.white : index > 0 ?Colors.white: Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
left: MediaQuery.of(context).size.width * 0.42,
|
||||
child: InkWell(
|
||||
onTap: () => index >= 2 ? changeCurrentTab(1) : null,
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
border: index > 1 ? null:Border.all(color: Colors.black,width: 0.75),
|
||||
shape: BoxShape.circle,
|
||||
color: index == 1 ? Colors.grey[800] : index > 1 ?Colors.green: Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'2',
|
||||
color: index == 1? Colors.white : index > 1 ?Colors.white: Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
right: 0,
|
||||
child: InkWell(
|
||||
onTap: () => index == 2 ?changeCurrentTab(3) : null,
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
border: Border.all(color: Colors.black,width: 0.75),
|
||||
color: index == 2 ? Colors.grey[800] : Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'3',
|
||||
color: index == 2 ? Colors.white : Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
],
|
||||
):Stack(
|
||||
children: [
|
||||
Container(
|
||||
height: 50,
|
||||
width: MediaQuery.of(context).size.width,
|
||||
color: Colors.transparent,
|
||||
child: Center(
|
||||
child: Divider(
|
||||
color: Colors.grey,
|
||||
height: 0.75,
|
||||
thickness: 0.75,
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
right: 0,
|
||||
child: InkWell(
|
||||
onTap: () => changeCurrentTab(0),
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
border: index > 0 ? null:Border.all(color: Colors.black,width: 0.75),
|
||||
shape: BoxShape.circle,
|
||||
color: index == 0 ? Colors.grey[800] : index > 0 ?Colors.green: Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'1',
|
||||
color: index == 0 ? Colors.white : index > 0 ?Colors.white: Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
left: MediaQuery.of(context).size.width * 0.42,
|
||||
child: InkWell(
|
||||
onTap: () => index >= 2 ? changeCurrentTab(1) : null,
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
border: index > 1 ? null:Border.all(color: Colors.black,width: 0.75),
|
||||
shape: BoxShape.circle,
|
||||
color: index == 1 ? Colors.grey[800] : index > 1 ?Colors.green: Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'2',
|
||||
color: index == 1? Colors.white : index > 1 ?Colors.white: Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 10,
|
||||
left: 0,
|
||||
child: InkWell(
|
||||
onTap: () => index == 2 ?changeCurrentTab(3) : null,
|
||||
child: Container(
|
||||
width: 35,
|
||||
height: 35,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
border: Border.all(color: Colors.black,width: 0.75),
|
||||
color: index == 2 ? Colors.grey[800] : Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'3',
|
||||
color: index == 2 ? Colors.white : Colors.grey[800],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hexcolor/hexcolor.dart';
|
||||
|
||||
import 'home_health_care_page.dart';
|
||||
|
||||
class HomeHealthCareIndexPage extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: TranslationBase.of(context).serviceInformation,
|
||||
body: SingleChildScrollView(
|
||||
padding: EdgeInsets.all(12),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Texts(
|
||||
TranslationBase.of(context).homeHealthCare,
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 25,
|
||||
color: Color(0xff60686b),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Texts(
|
||||
TranslationBase.of(context).homeHealthCareText,
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: 17,
|
||||
),
|
||||
SizedBox(
|
||||
height: 22,
|
||||
),
|
||||
Center(
|
||||
child: Image.asset(
|
||||
'assets/images/AlHabibMedicalService/Wifi-AR.png')),
|
||||
SizedBox(
|
||||
height: 77,
|
||||
),
|
||||
],
|
||||
)),
|
||||
bottomSheet: Container(
|
||||
height: MediaQuery.of(context).size.height * 0.10,
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.9,
|
||||
child: SecondaryButton(
|
||||
onTap: () => Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: HomeHealthCarePage(),
|
||||
),
|
||||
),
|
||||
label: TranslationBase.of(context).loginRegister,
|
||||
textColor: Theme.of(context).backgroundColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,132 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'NewHomeHealthCare/new_home_health_care_page.dart';
|
||||
import 'orders_log_details_page.dart';
|
||||
|
||||
class HomeHealthCarePage extends StatefulWidget {
|
||||
@override
|
||||
_HomeHealthCarePageState createState() => _HomeHealthCarePageState();
|
||||
}
|
||||
|
||||
class _HomeHealthCarePageState extends State<HomeHealthCarePage>
|
||||
with SingleTickerProviderStateMixin {
|
||||
TabController _tabController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_tabController = TabController(length: 2, vsync: this);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_tabController.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseView<HomeHealthCareViewModel>(
|
||||
onModelReady: (model){
|
||||
// model.getHHCAllServices();
|
||||
model.getHHCAllPresOrders();
|
||||
},
|
||||
builder: (_, model, widget) => AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: TranslationBase.of(context).homeHealthCare,
|
||||
body: Scaffold(
|
||||
extendBodyBehindAppBar: true,
|
||||
appBar: PreferredSize(
|
||||
preferredSize: Size.fromHeight(65.0),
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
Positioned(
|
||||
bottom: 1,
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||
child: Container(
|
||||
color: Theme.of(context)
|
||||
.scaffoldBackgroundColor
|
||||
.withOpacity(0.8),
|
||||
height: 70.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
Center(
|
||||
child: Container(
|
||||
height: 60.0,
|
||||
margin: EdgeInsets.only(top: 10.0),
|
||||
width: MediaQuery.of(context).size.width * 0.9,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 0.7),
|
||||
),
|
||||
color: Colors.white),
|
||||
child: Center(
|
||||
child: TabBar(
|
||||
isScrollable: true,
|
||||
controller: _tabController,
|
||||
indicatorWeight: 5.0,
|
||||
indicatorSize: TabBarIndicatorSize.label,
|
||||
indicatorColor: Colors.red[800],
|
||||
labelColor: Theme.of(context).primaryColor,
|
||||
labelPadding:
|
||||
EdgeInsets.only(top: 4.0, left: 18.0, right: 18.0),
|
||||
unselectedLabelColor: Colors.grey[800],
|
||||
tabs: [
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.37,
|
||||
child: Center(
|
||||
child: Texts(TranslationBase.of(context).homeHealthCare),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.37,
|
||||
child: Center(
|
||||
child: Texts(TranslationBase.of(context).orderLog),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
controller: _tabController,
|
||||
children: <Widget>[
|
||||
NewHomeHealthCarePage(
|
||||
model: model,
|
||||
),
|
||||
OrdersLogDetailsPage(
|
||||
model: model,
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,251 @@
|
||||
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/get_hhc_all_pres_orders_response_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/HomeHealthCare/update_pres_oreder_request_model.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/AlHabibMedicalService/home_health_care_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'Dialog/confirm_cancel_order_dialog.dart';
|
||||
|
||||
class OrdersLogDetailsPage extends StatelessWidget {
|
||||
final HomeHealthCareViewModel model;
|
||||
|
||||
const OrdersLogDetailsPage({Key key, this.model}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
void showConfirmMessage(
|
||||
HomeHealthCareViewModel model, GetHHCAllPresOrdersResponseModel order) {
|
||||
showDialog(
|
||||
context: context,
|
||||
child: ConfirmCancelOrderDialog(
|
||||
model: model,
|
||||
onTap: () async {
|
||||
UpdatePresOrderRequestModel updatePresOrderRequestModel =
|
||||
UpdatePresOrderRequestModel(
|
||||
presOrderID: order.iD,
|
||||
rejectionReason: "",
|
||||
presOrderStatus: 4, editedBy: 3);
|
||||
await model.updateHHCPresOrder(updatePresOrderRequestModel);
|
||||
if(model.state == ViewState.ErrorLocal) {
|
||||
Utils.showErrorToast(model.error);
|
||||
} else {
|
||||
AppToast.showSuccessToast(message: "Done Successfully");
|
||||
await model.getHHCAllPresOrders();
|
||||
// await model.getHHCAllServices();
|
||||
}
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
return AppScaffold(
|
||||
isShowAppBar: false,
|
||||
baseViewModel: model,
|
||||
body: SingleChildScrollView(
|
||||
physics: ScrollPhysics(),
|
||||
child: Container(
|
||||
margin: EdgeInsets.all(12),
|
||||
child: Center(
|
||||
child: FractionallySizedBox(
|
||||
widthFactor: 0.94,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 50,
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: model.hhcAllPresOrders.map((order) {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
margin: EdgeInsets.only(top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border:
|
||||
Border.all(color: Colors.grey, width: 1),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Request ID",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.iD.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Status",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.description,
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Pickup Date",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
DateUtil.getDayMonthYearDateFormatted(
|
||||
DateUtil.convertStringToDate(
|
||||
order.createdOn)),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.only(
|
||||
left: 15, bottom: 15, top: 15),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey,
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
// borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
"Location",
|
||||
bold: false,
|
||||
fontSize: 13,
|
||||
),
|
||||
SizedBox(
|
||||
height: 4,
|
||||
),
|
||||
Texts(
|
||||
order.nearestProjectDescription
|
||||
.toString() ??
|
||||
order.nearestProjectDescriptionN
|
||||
.toString(),
|
||||
fontSize: 22,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
if (order.status == 1 ||order.status == 2 )
|
||||
Center(
|
||||
child: Container(
|
||||
width: MediaQuery
|
||||
.of(context)
|
||||
.size
|
||||
.width *
|
||||
0.85,
|
||||
child: SecondaryButton(
|
||||
label: "Cancel".toUpperCase(),
|
||||
onTap: () {
|
||||
showConfirmMessage(model, order);
|
||||
}
|
||||
,
|
||||
color: Colors.red[800],
|
||||
disabled: false,
|
||||
textColor: Theme
|
||||
.of(context)
|
||||
.backgroundColor),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 12,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}).toList())
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,233 @@
|
||||
import 'package:diplomaticquarterapp/config/size_config.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/pages/landing/home_page.dart';
|
||||
import 'package:diplomaticquarterapp/pages/pharmacyModule/widgets/BannerPager.dart';
|
||||
import 'package:diplomaticquarterapp/pages/pharmacyModule/widgets/ProductTileItem.dart';
|
||||
import 'package:diplomaticquarterapp/pages/pharmacyModule/widgets/borderedButton.dart';
|
||||
import 'package:diplomaticquarterapp/pages/pharmacyModule/widgets/manufacturerItem.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class PharmacyPage extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseView<PharmacyModuleViewModel>(
|
||||
// onModelReady: (model) => model.getPharmacyHomeData(),
|
||||
onModelReady: (model) => model.getPharmacyHomeData(),
|
||||
builder: (_, model, wi) => AppScaffold(
|
||||
title: "",
|
||||
isShowAppBar: true,
|
||||
isShowDecPage: false,
|
||||
baseViewModel: model,
|
||||
backgroundColor: Colors.white,
|
||||
body: Container(
|
||||
width: double.infinity,
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
BannerPager(model),
|
||||
GridViewButtons(),
|
||||
/*BannerPager(model.getBannerImagesUrl()),*/
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Texts(
|
||||
TranslationBase.of(context).shopByBrands,
|
||||
bold: true,
|
||||
),
|
||||
BorderedButton(
|
||||
TranslationBase.of(context).viewAll,
|
||||
hasBorder: true,
|
||||
vPadding: 6,
|
||||
borderColor: Colors.green,
|
||||
color: Colors.green,
|
||||
handler: () {},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 60,
|
||||
child: ListView.builder(
|
||||
itemBuilder: (ctx, i) =>
|
||||
ManufacturerItem(model.manufacturerList[i]),
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemCount: model.manufacturerList.length,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Texts(
|
||||
TranslationBase.of(context).recentlyViewed,
|
||||
bold: true,
|
||||
),
|
||||
BorderedButton(
|
||||
TranslationBase.of(context).viewAll,
|
||||
hasBorder: true,
|
||||
vPadding: 6,
|
||||
borderColor: Colors.green,
|
||||
color: Colors.green,
|
||||
handler: () {},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(),
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(10, 10, 10, 10),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Texts(
|
||||
TranslationBase.of(context).bestSellers,
|
||||
bold: true,
|
||||
),
|
||||
BorderedButton(
|
||||
TranslationBase.of(context).viewAll,
|
||||
hasBorder: true,
|
||||
borderColor: Colors.green,
|
||||
color: Colors.green,
|
||||
vPadding: 6,
|
||||
handler: () {},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height / 4,
|
||||
child: ListView.builder(
|
||||
itemBuilder: (ctx, i) =>
|
||||
ProductTileItem(model.bestSellerProduct[i]),
|
||||
scrollDirection: Axis.horizontal,
|
||||
itemCount: model.bestSellerProduct.length,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class GridViewButtons extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final gridHeight = (MediaQuery.of(context).size.width * 0.3) * 1.8;
|
||||
return Container(
|
||||
child: SizedBox(
|
||||
height: gridHeight,
|
||||
child: GridView.count(
|
||||
childAspectRatio: 2.2,
|
||||
crossAxisSpacing: 10,
|
||||
mainAxisSpacing: 10,
|
||||
controller: new ScrollController(keepScrollOffset: false),
|
||||
shrinkWrap: true,
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
crossAxisCount: 2,
|
||||
children: [
|
||||
DashboardItem(
|
||||
imageName: 'pharmacy_module/bg_1.png',
|
||||
hasColorFilter: false,
|
||||
opacity: 0.8,
|
||||
child: GridViewCard(
|
||||
TranslationBase.of(context).offersAndPromotions,
|
||||
'assets/images/pharmacy_module/offer_icon.png',
|
||||
() {}),
|
||||
),
|
||||
DashboardItem(
|
||||
imageName: 'pharmacy_module/bg_2.png',
|
||||
opacity: 0,
|
||||
hasColorFilter: false,
|
||||
child: GridViewCard(TranslationBase.of(context).medicationRefill,
|
||||
'assets/images/pharmacy_module/medication_icon.png', () {}),
|
||||
),
|
||||
DashboardItem(
|
||||
imageName: 'pharmacy_module/bg_3.png',
|
||||
opacity: 0,
|
||||
hasColorFilter: false,
|
||||
child: GridViewCard(TranslationBase.of(context).myPrescriptions,
|
||||
'assets/images/pharmacy_module/prescription_icon.png', () {}),
|
||||
),
|
||||
DashboardItem(
|
||||
imageName: 'pharmacy_module/bg_4.png',
|
||||
opacity: 0,
|
||||
hasColorFilter: false,
|
||||
child: GridViewCard(
|
||||
TranslationBase.of(context).searchAndScanMedication,
|
||||
'assets/images/pharmacy_module/search_scan_icon.png',
|
||||
() {}),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class GridViewCard extends StatelessWidget {
|
||||
final String text;
|
||||
final String cardImage;
|
||||
final Function handler;
|
||||
|
||||
GridViewCard(this.text, this.cardImage, this.handler);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: Container(
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 2,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 2,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(6),
|
||||
child: Texts(
|
||||
text,
|
||||
color: Colors.white,
|
||||
fontSize: SizeConfig.textMultiplier * 1.5,
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: BorderedButton(
|
||||
TranslationBase.of(context).viewAll,
|
||||
handler: () {},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Image.asset(
|
||||
cardImage,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,88 @@
|
||||
import 'package:carousel_slider/carousel_slider.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
||||
|
||||
class BannerPager extends StatefulWidget {
|
||||
final PharmacyModuleViewModel _model;
|
||||
|
||||
BannerPager(this._model);
|
||||
|
||||
@override
|
||||
_BannerPagerState createState() => _BannerPagerState();
|
||||
}
|
||||
|
||||
class _BannerPagerState extends State<BannerPager> {
|
||||
int _current = 0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
child: Column(
|
||||
children: [
|
||||
CarouselSlider(
|
||||
options: CarouselOptions(
|
||||
aspectRatio: 7 / 2,
|
||||
enlargeCenterPage: true,
|
||||
enableInfiniteScroll: false,
|
||||
initialPage: 0,
|
||||
autoPlay: true,
|
||||
autoPlayInterval: Duration(seconds: 3),
|
||||
autoPlayAnimationDuration: Duration(milliseconds: 800),
|
||||
autoPlayCurve: Curves.decelerate,
|
||||
onPageChanged: (index, reason) {
|
||||
setState(() {
|
||||
_current = index;
|
||||
});
|
||||
},
|
||||
),
|
||||
items: widget._model
|
||||
.getBannerImagesUrl()
|
||||
.mapIndexed(
|
||||
(item, index) => Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 1.0),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.all(Radius.circular(5.0)),
|
||||
child: Center(
|
||||
child: index == 0
|
||||
? Image.asset(
|
||||
item,
|
||||
fit: BoxFit.cover,
|
||||
)
|
||||
: Image.network(
|
||||
item,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: widget._model
|
||||
.getBannerImagesUrl()
|
||||
.mapIndexed(
|
||||
(item, index) => Container(
|
||||
width: 12.0,
|
||||
height: 4.0,
|
||||
margin:
|
||||
EdgeInsets.symmetric(vertical: 0.0, horizontal: 2.0),
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.rectangle,
|
||||
color: _current == index
|
||||
? Color.fromRGBO(0, 250, 0, 0.9)
|
||||
: Color.fromRGBO(0, 0, 0, 0.4),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
),
|
||||
)
|
||||
],
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,107 @@
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/PharmacyProduct.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/StarRating.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class ProductTileItem extends StatelessWidget {
|
||||
final PharmacyProduct item;
|
||||
|
||||
ProductTileItem(this.item);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProjectViewModel projectProvider = Provider.of(context);
|
||||
return Card(
|
||||
elevation: 2,
|
||||
shape: Border(right: BorderSide(color: Colors.grey.shade300, width: 1)),
|
||||
margin: EdgeInsets.symmetric(
|
||||
horizontal: 8,
|
||||
vertical: 4,
|
||||
),
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 0),
|
||||
width: MediaQuery.of(context).size.width / 3,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Stack(
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.fromLTRB(0, 16, 0, 0),
|
||||
alignment: Alignment.center,
|
||||
child: Image.network(
|
||||
item.images[0].src,
|
||||
fit: BoxFit.cover,
|
||||
height: 80,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: item.rxMessage != null
|
||||
? MediaQuery.of(context).size.width / 5
|
||||
: 0,
|
||||
padding: EdgeInsets.all(4),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xffb23838),
|
||||
borderRadius:
|
||||
BorderRadius.only(topLeft: Radius.circular(6)),
|
||||
),
|
||||
child: Texts(
|
||||
item.rxMessage != null ? item.rxMessage : "",
|
||||
color: Colors.white,
|
||||
regular: true,
|
||||
fontSize: 10,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.symmetric(
|
||||
horizontal: 6,
|
||||
vertical: 0,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
projectProvider.isArabic ? item.name : item.namen,
|
||||
regular: true,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 4, bottom: 4),
|
||||
child: Texts(
|
||||
"SAR ${item.price}",
|
||||
bold: true,
|
||||
fontSize: 14,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
StarRating(
|
||||
totalAverage: item.approvedTotalReviews > 0
|
||||
? (item.approvedRatingSum.toDouble() /
|
||||
item.approvedTotalReviews.toDouble())
|
||||
.toDouble()
|
||||
: 0,
|
||||
forceStars: true),
|
||||
Texts(
|
||||
"(${item.approvedTotalReviews})",
|
||||
regular: true,
|
||||
fontSize: 10,
|
||||
fontWeight: FontWeight.w400,
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
import 'package:diplomaticquarterapp/config/size_config.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class BorderedButton extends StatelessWidget {
|
||||
final String text;
|
||||
final Function handler;
|
||||
final Color color;
|
||||
final bool hasBorder;
|
||||
final Color borderColor;
|
||||
final Color backgroundColor;
|
||||
final double vPadding;
|
||||
final double hPadding;
|
||||
|
||||
BorderedButton(
|
||||
this.text, {
|
||||
this.handler,
|
||||
this.color,
|
||||
this.hasBorder = false,
|
||||
this.borderColor,
|
||||
this.backgroundColor,
|
||||
this.vPadding = 0,
|
||||
this.hPadding = 0,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 4, vertical: 4),
|
||||
child: ButtonTheme(
|
||||
//adds padding inside the button
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
//limits the touch area to the button area
|
||||
minWidth: 0,
|
||||
//wraps child's width
|
||||
height: 0,
|
||||
//wraps child's height
|
||||
child: RaisedButton(
|
||||
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
|
||||
padding: EdgeInsets.symmetric(horizontal: 12, vertical: vPadding),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(4.0),
|
||||
side: BorderSide(color: hasBorder ? borderColor : Colors.white, width: 0.8),),
|
||||
color: backgroundColor ?? Colors.white,
|
||||
textColor: color ?? Color(0xffc4aa54),
|
||||
disabledTextColor: color ?? Colors.black,
|
||||
disabledColor: backgroundColor ?? Colors.white,
|
||||
onPressed: handler,
|
||||
child: Text(
|
||||
text,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: SizeConfig.textMultiplier * 1.6,
|
||||
fontWeight: FontWeight.normal),
|
||||
),
|
||||
), //your original button
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
import 'package:diplomaticquarterapp/core/model/pharmacy_module/Manufacturer.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ManufacturerItem extends StatelessWidget {
|
||||
final Manufacturer item;
|
||||
|
||||
ManufacturerItem(this.item);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Card(
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
|
||||
margin: EdgeInsets.symmetric(
|
||||
horizontal: 8,
|
||||
vertical: 4,
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
right: BorderSide(color: Colors.grey.shade300, width: 1),
|
||||
bottom: BorderSide(color: Colors.grey.shade300, width: 1),
|
||||
left: BorderSide(color: Colors.grey.shade300, width: 1),
|
||||
top: BorderSide(color: Colors.grey.shade300, width: 1)),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 8),
|
||||
child: Image.network(
|
||||
item.image.src,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
import 'package:diplomaticquarterapp/config/config.dart';
|
||||
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/close_back.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_maps_place_picker/google_maps_place_picker.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class PickupLocationFromMap extends StatelessWidget {
|
||||
final Function(PickResult) onPick;
|
||||
final double latitude;
|
||||
final double longitude;
|
||||
|
||||
const PickupLocationFromMap({Key key, this.onPick, this.latitude, this.longitude})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ProjectViewModel projectViewModel = Provider.of(context);
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
elevation: 0,
|
||||
textTheme: TextTheme(
|
||||
headline6:
|
||||
TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
|
||||
),
|
||||
title: Text('Location'),
|
||||
leading: CloseBack(),
|
||||
centerTitle: true,
|
||||
),
|
||||
body: PlacePicker(
|
||||
apiKey: GOOGLE_API_KEY,
|
||||
enableMyLocationButton: true,
|
||||
|
||||
autocompleteLanguage: projectViewModel.currentLanguage,
|
||||
enableMapTypeButton: true,
|
||||
onPlacePicked: (PickResult result) {
|
||||
print(result.adrAddress);
|
||||
onPick(result);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
selectedPlaceWidgetBuilder:
|
||||
(_, selectedPlace, state, isSearchBarFocused) {
|
||||
print("state: $state, isSearchBarFocused: $isSearchBarFocused");
|
||||
return isSearchBarFocused
|
||||
? Container()
|
||||
: FloatingCard(
|
||||
bottomPosition: 0.0,
|
||||
leftPosition: 0.0,
|
||||
rightPosition: 0.0,
|
||||
width: 500,
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
child: state == SearchingState.Searching
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: Container(
|
||||
margin: EdgeInsets.all(12),
|
||||
child: SecondaryButton(
|
||||
color: Colors.grey[800],
|
||||
textColor: Colors.white,
|
||||
onTap: () {
|
||||
onPick(selectedPlace);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
label: TranslationBase.of(context).next,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
initialPosition: LatLng(latitude, longitude),
|
||||
useCurrentLocation: true,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||