Merge branch 'development' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into blood_pressure
Conflicts: lib/pages/parent_categorise_page.dart lib/pages/sub_categorise_page.dartmerge-update-with-lab-changes
commit
f1c2dbbbfc
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,85 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"questionEN": "Is the test intended for travel?",
|
||||||
|
"questionAR": "هل تجري التحليل بغرض السفر؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"questionEN": "Coming from outside KSA within last 2 weeks?",
|
||||||
|
"questionAR": "هل قدمت من خارج المملكة خلال الأسبوعين الماضيين؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"questionEN": "Do you currently have fever?",
|
||||||
|
"questionAR": "هل تعاني حاليا من حرارة؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"questionEN": "Did you have fever in last 2 weeks?",
|
||||||
|
"questionAR": "هل عانيت من حرارة في الأسبوعين الماضيين؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"questionEN": "Do you have a sore throat?",
|
||||||
|
"questionAR": "هل لديك التهاب في الحلق؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"questionEN": "Do you have a runny nose?",
|
||||||
|
"questionAR": "هل لديك سيلان بالأنف؟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"questionEN": "Do you have a cough?",
|
||||||
|
"questionAR": "هل لديك سعال؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"questionEN": "Do you have shortness of breath?",
|
||||||
|
"questionAR": "هل تعانين من ضيق في التنفس؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"questionEN": "Do you have nausea?",
|
||||||
|
"questionAR": "هل تعانين من غثيان؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"questionEN": "Do you have vomiting?",
|
||||||
|
"questionAR": "هل تعاني من القيء؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"questionEN": "Do you have a headache?",
|
||||||
|
"questionAR": "هل تعاني من صداع في الرأس؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"questionEN": "Do you have muscle pain?",
|
||||||
|
"questionAR": "هل تعانين من آلام عضلية؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"questionEN": "Do you have joint pain?",
|
||||||
|
"questionAR": "هل تعانين من آلام المفاصل؟",
|
||||||
|
"ans": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"questionEN": "Do you have diarrhea?",
|
||||||
|
"questionAR": "هل لديك اسهال؟",
|
||||||
|
"ans": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
@ -1 +1 @@
|
|||||||
269226e53e3ba1b1460fd3df51f89f77
|
e52eba3667a38bec777870899c15ae7d
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,319 @@
|
|||||||
|
class AmbulanceRequestOrdersModel {
|
||||||
|
String statusText;
|
||||||
|
int paymentStatus;
|
||||||
|
dynamic clientRequestid;
|
||||||
|
dynamic paymentStatusText;
|
||||||
|
dynamic projectName;
|
||||||
|
String nearestProjectName;
|
||||||
|
double paymentAmount;
|
||||||
|
WFOrder wFOrder;
|
||||||
|
String serviceText;
|
||||||
|
bool isSentForApproval;
|
||||||
|
int exaCartOrderId;
|
||||||
|
bool isTimer;
|
||||||
|
int timeSeconds;
|
||||||
|
int totalPendingSeconds;
|
||||||
|
int timeMinute;
|
||||||
|
int timeHour;
|
||||||
|
int timeTotalSeconds;
|
||||||
|
int timeTotalMinute;
|
||||||
|
int timeTotalHour;
|
||||||
|
dynamic approvalStatus;
|
||||||
|
bool isActive;
|
||||||
|
int clickButton;
|
||||||
|
dynamic orderHistory;
|
||||||
|
String pickupLocation;
|
||||||
|
String dropOffLocation;
|
||||||
|
String clinicName;
|
||||||
|
String doctorName;
|
||||||
|
String branch;
|
||||||
|
String time;
|
||||||
|
dynamic notes;
|
||||||
|
int id;
|
||||||
|
String patientId;
|
||||||
|
int patientOutSa;
|
||||||
|
bool isOutPatient;
|
||||||
|
int projectId;
|
||||||
|
int nearestProjectId;
|
||||||
|
dynamic longitude;
|
||||||
|
dynamic latitude;
|
||||||
|
dynamic appointmentNo;
|
||||||
|
dynamic dischargeId;
|
||||||
|
int statusId;
|
||||||
|
int serviceId;
|
||||||
|
int channel;
|
||||||
|
Orderpayment orderpayment;
|
||||||
|
dynamic orderselectedservice;
|
||||||
|
dynamic wforder;
|
||||||
|
dynamic orderapprovalobj;
|
||||||
|
String created;
|
||||||
|
dynamic createdBy;
|
||||||
|
dynamic modified;
|
||||||
|
dynamic modifiedBy;
|
||||||
|
bool isDeleted;
|
||||||
|
|
||||||
|
AmbulanceRequestOrdersModel(
|
||||||
|
{this.statusText,
|
||||||
|
this.paymentStatus,
|
||||||
|
this.clientRequestid,
|
||||||
|
this.paymentStatusText,
|
||||||
|
this.projectName,
|
||||||
|
this.nearestProjectName,
|
||||||
|
this.paymentAmount,
|
||||||
|
this.wFOrder,
|
||||||
|
this.serviceText,
|
||||||
|
this.isSentForApproval,
|
||||||
|
this.exaCartOrderId,
|
||||||
|
this.isTimer,
|
||||||
|
this.timeSeconds,
|
||||||
|
this.totalPendingSeconds,
|
||||||
|
this.timeMinute,
|
||||||
|
this.timeHour,
|
||||||
|
this.timeTotalSeconds,
|
||||||
|
this.timeTotalMinute,
|
||||||
|
this.timeTotalHour,
|
||||||
|
this.approvalStatus,
|
||||||
|
this.isActive,
|
||||||
|
this.clickButton,
|
||||||
|
this.orderHistory,
|
||||||
|
this.pickupLocation,
|
||||||
|
this.dropOffLocation,
|
||||||
|
this.clinicName,
|
||||||
|
this.doctorName,
|
||||||
|
this.branch,
|
||||||
|
this.time,
|
||||||
|
this.notes,
|
||||||
|
this.id,
|
||||||
|
this.patientId,
|
||||||
|
this.patientOutSa,
|
||||||
|
this.isOutPatient,
|
||||||
|
this.projectId,
|
||||||
|
this.nearestProjectId,
|
||||||
|
this.longitude,
|
||||||
|
this.latitude,
|
||||||
|
this.appointmentNo,
|
||||||
|
this.dischargeId,
|
||||||
|
this.statusId,
|
||||||
|
this.serviceId,
|
||||||
|
this.channel,
|
||||||
|
this.orderpayment,
|
||||||
|
this.orderselectedservice,
|
||||||
|
this.wforder,
|
||||||
|
this.orderapprovalobj,
|
||||||
|
this.created,
|
||||||
|
this.createdBy,
|
||||||
|
this.modified,
|
||||||
|
this.modifiedBy,
|
||||||
|
this.isDeleted});
|
||||||
|
|
||||||
|
AmbulanceRequestOrdersModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
statusText = json['statusText'];
|
||||||
|
paymentStatus = json['paymentStatus'];
|
||||||
|
clientRequestid = json['clientRequestid'];
|
||||||
|
paymentStatusText = json['paymentStatusText'];
|
||||||
|
projectName = json['projectName'];
|
||||||
|
nearestProjectName = json['nearestProjectName'];
|
||||||
|
paymentAmount = json['paymentAmount'];
|
||||||
|
wFOrder = json['wF_order'] != null ? new WFOrder.fromJson(json['wF_order']) : null;
|
||||||
|
serviceText = json['serviceText'];
|
||||||
|
isSentForApproval = json['isSentForApproval'];
|
||||||
|
exaCartOrderId = json['exaCart_OrderId'];
|
||||||
|
isTimer = json['isTimer'];
|
||||||
|
timeSeconds = json['timeSeconds'];
|
||||||
|
totalPendingSeconds = json['totalPendingSeconds'];
|
||||||
|
timeMinute = json['timeMinute'];
|
||||||
|
timeHour = json['timeHour'];
|
||||||
|
timeTotalSeconds = json['timeTotalSeconds'];
|
||||||
|
timeTotalMinute = json['timeTotalMinute'];
|
||||||
|
timeTotalHour = json['timeTotalHour'];
|
||||||
|
approvalStatus = json['approvalStatus'];
|
||||||
|
isActive = json['isActive'];
|
||||||
|
clickButton = json['clickButton'];
|
||||||
|
orderHistory = json['orderHistory'];
|
||||||
|
pickupLocation = json['pickupLocation'];
|
||||||
|
dropOffLocation = json['dropOffLocation'];
|
||||||
|
clinicName = json['clinicName'];
|
||||||
|
doctorName = json['doctorName'];
|
||||||
|
branch = json['branch'];
|
||||||
|
time = json['time'];
|
||||||
|
notes = json['notes'];
|
||||||
|
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'];
|
||||||
|
statusId = json['statusId'];
|
||||||
|
serviceId = json['serviceId'];
|
||||||
|
channel = json['channel'];
|
||||||
|
orderpayment = json['orderpayment'] != null ? new Orderpayment.fromJson(json['orderpayment']) : null;
|
||||||
|
orderselectedservice = json['orderselectedservice'];
|
||||||
|
wforder = json['wforder'];
|
||||||
|
orderapprovalobj = json['orderapprovalobj'];
|
||||||
|
created = json['created'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
modified = json['modified'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
isDeleted = json['isDeleted'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['statusText'] = this.statusText;
|
||||||
|
data['paymentStatus'] = this.paymentStatus;
|
||||||
|
data['clientRequestid'] = this.clientRequestid;
|
||||||
|
data['paymentStatusText'] = this.paymentStatusText;
|
||||||
|
data['projectName'] = this.projectName;
|
||||||
|
data['nearestProjectName'] = this.nearestProjectName;
|
||||||
|
data['paymentAmount'] = this.paymentAmount;
|
||||||
|
if (this.wFOrder != null) {
|
||||||
|
data['wF_order'] = this.wFOrder.toJson();
|
||||||
|
}
|
||||||
|
data['serviceText'] = this.serviceText;
|
||||||
|
data['isSentForApproval'] = this.isSentForApproval;
|
||||||
|
data['exaCart_OrderId'] = this.exaCartOrderId;
|
||||||
|
data['isTimer'] = this.isTimer;
|
||||||
|
data['timeSeconds'] = this.timeSeconds;
|
||||||
|
data['totalPendingSeconds'] = this.totalPendingSeconds;
|
||||||
|
data['timeMinute'] = this.timeMinute;
|
||||||
|
data['timeHour'] = this.timeHour;
|
||||||
|
data['timeTotalSeconds'] = this.timeTotalSeconds;
|
||||||
|
data['timeTotalMinute'] = this.timeTotalMinute;
|
||||||
|
data['timeTotalHour'] = this.timeTotalHour;
|
||||||
|
data['approvalStatus'] = this.approvalStatus;
|
||||||
|
data['isActive'] = this.isActive;
|
||||||
|
data['clickButton'] = this.clickButton;
|
||||||
|
data['orderHistory'] = this.orderHistory;
|
||||||
|
data['pickupLocation'] = this.pickupLocation;
|
||||||
|
data['dropOffLocation'] = this.dropOffLocation;
|
||||||
|
data['clinicName'] = this.clinicName;
|
||||||
|
data['doctorName'] = this.doctorName;
|
||||||
|
data['branch'] = this.branch;
|
||||||
|
data['time'] = this.time;
|
||||||
|
data['notes'] = this.notes;
|
||||||
|
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['statusId'] = this.statusId;
|
||||||
|
data['serviceId'] = this.serviceId;
|
||||||
|
data['channel'] = this.channel;
|
||||||
|
if (this.orderpayment != null) {
|
||||||
|
data['orderpayment'] = this.orderpayment.toJson();
|
||||||
|
}
|
||||||
|
data['orderselectedservice'] = this.orderselectedservice;
|
||||||
|
data['wforder'] = this.wforder;
|
||||||
|
data['orderapprovalobj'] = this.orderapprovalobj;
|
||||||
|
data['created'] = this.created;
|
||||||
|
data['createdBy'] = this.createdBy;
|
||||||
|
data['modified'] = this.modified;
|
||||||
|
data['modifiedBy'] = this.modifiedBy;
|
||||||
|
data['isDeleted'] = this.isDeleted;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WFOrder {
|
||||||
|
dynamic wfButtonsDTO;
|
||||||
|
int id;
|
||||||
|
int orderId;
|
||||||
|
int previousStep;
|
||||||
|
int nextStep;
|
||||||
|
int serviceId;
|
||||||
|
dynamic order;
|
||||||
|
String created;
|
||||||
|
dynamic createdBy;
|
||||||
|
dynamic modified;
|
||||||
|
dynamic modifiedBy;
|
||||||
|
bool isDeleted;
|
||||||
|
|
||||||
|
WFOrder({this.wfButtonsDTO, this.id, this.orderId, this.previousStep, this.nextStep, this.serviceId, this.order, this.created, this.createdBy, this.modified, this.modifiedBy, this.isDeleted});
|
||||||
|
|
||||||
|
WFOrder.fromJson(Map<String, dynamic> json) {
|
||||||
|
wfButtonsDTO = json['wf_ButtonsDTO'];
|
||||||
|
id = json['id'];
|
||||||
|
orderId = json['orderId'];
|
||||||
|
previousStep = json['previousStep'];
|
||||||
|
nextStep = json['nextStep'];
|
||||||
|
serviceId = json['serviceId'];
|
||||||
|
order = json['order'];
|
||||||
|
created = json['created'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
modified = json['modified'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
isDeleted = json['isDeleted'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['wf_ButtonsDTO'] = this.wfButtonsDTO;
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['orderId'] = this.orderId;
|
||||||
|
data['previousStep'] = this.previousStep;
|
||||||
|
data['nextStep'] = this.nextStep;
|
||||||
|
data['serviceId'] = this.serviceId;
|
||||||
|
data['order'] = this.order;
|
||||||
|
data['created'] = this.created;
|
||||||
|
data['createdBy'] = this.createdBy;
|
||||||
|
data['modified'] = this.modified;
|
||||||
|
data['modifiedBy'] = this.modifiedBy;
|
||||||
|
data['isDeleted'] = this.isDeleted;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Orderpayment {
|
||||||
|
int id;
|
||||||
|
int orderId;
|
||||||
|
dynamic clientRequestId;
|
||||||
|
double totalAmount;
|
||||||
|
int paymentStatus;
|
||||||
|
dynamic order;
|
||||||
|
String created;
|
||||||
|
dynamic createdBy;
|
||||||
|
dynamic modified;
|
||||||
|
dynamic modifiedBy;
|
||||||
|
bool isDeleted;
|
||||||
|
|
||||||
|
Orderpayment({this.id, this.orderId, this.clientRequestId, this.totalAmount, this.paymentStatus, this.order, this.created, this.createdBy, this.modified, this.modifiedBy, this.isDeleted});
|
||||||
|
|
||||||
|
Orderpayment.fromJson(Map<String, dynamic> json) {
|
||||||
|
id = json['id'];
|
||||||
|
orderId = json['orderId'];
|
||||||
|
clientRequestId = json['clientRequestId'];
|
||||||
|
totalAmount = json['totalAmount'];
|
||||||
|
paymentStatus = json['paymentStatus'];
|
||||||
|
order = json['order'];
|
||||||
|
created = json['created'];
|
||||||
|
createdBy = json['createdBy'];
|
||||||
|
modified = json['modified'];
|
||||||
|
modifiedBy = json['modifiedBy'];
|
||||||
|
isDeleted = json['isDeleted'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['id'] = this.id;
|
||||||
|
data['orderId'] = this.orderId;
|
||||||
|
data['clientRequestId'] = this.clientRequestId;
|
||||||
|
data['totalAmount'] = this.totalAmount;
|
||||||
|
data['paymentStatus'] = this.paymentStatus;
|
||||||
|
data['order'] = this.order;
|
||||||
|
data['created'] = this.created;
|
||||||
|
data['createdBy'] = this.createdBy;
|
||||||
|
data['modified'] = this.modified;
|
||||||
|
data['modifiedBy'] = this.modifiedBy;
|
||||||
|
data['isDeleted'] = this.isDeleted;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,200 @@
|
|||||||
|
import 'package:diplomaticquarterapp/core/model/er/get_all_transportation_method_list_model.dart';
|
||||||
|
|
||||||
|
class PatientER_RC {
|
||||||
|
double versionID;
|
||||||
|
int channel;
|
||||||
|
int languageID;
|
||||||
|
String iPAdress;
|
||||||
|
String generalid;
|
||||||
|
bool patientOutSA;
|
||||||
|
String sessionID;
|
||||||
|
bool isDentalAllowedBackend;
|
||||||
|
int deviceTypeID;
|
||||||
|
String patientID;
|
||||||
|
String tokenID;
|
||||||
|
int patientTypeID;
|
||||||
|
int patientType;
|
||||||
|
int orderServiceID;
|
||||||
|
String patientIdentificationID;
|
||||||
|
dynamic patientOutSa;
|
||||||
|
int projectID;
|
||||||
|
int lineItemNo;
|
||||||
|
TransportationDetails transportationDetails;
|
||||||
|
PatientERTransportationMethod patientERTransportationMethod;
|
||||||
|
|
||||||
|
PatientER_RC(
|
||||||
|
{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.orderServiceID,
|
||||||
|
this.patientIdentificationID,
|
||||||
|
this.patientOutSa,
|
||||||
|
this.projectID,
|
||||||
|
this.lineItemNo,
|
||||||
|
this.transportationDetails});
|
||||||
|
|
||||||
|
PatientER_RC.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'];
|
||||||
|
orderServiceID = json['OrderServiceID'];
|
||||||
|
patientIdentificationID = json['PatientIdentificationID'];
|
||||||
|
patientOutSa = json['patientOutSa'];
|
||||||
|
projectID = json['projectID'];
|
||||||
|
lineItemNo = json['lineItemNo'];
|
||||||
|
transportationDetails = json['transportationDetails'] != null
|
||||||
|
? new TransportationDetails.fromJson(json['transportationDetails'])
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
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['OrderServiceID'] = this.orderServiceID;
|
||||||
|
data['PatientIdentificationID'] = this.patientIdentificationID;
|
||||||
|
data['patientOutSa'] = this.patientOutSa;
|
||||||
|
data['projectID'] = this.projectID;
|
||||||
|
data['lineItemNo'] = this.lineItemNo;
|
||||||
|
if (this.transportationDetails != null) {
|
||||||
|
data['transportationDetails'] = this.transportationDetails.toJson();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TransportationDetails {
|
||||||
|
int direction;
|
||||||
|
int haveAppointment;
|
||||||
|
int tripType;
|
||||||
|
int pickupUrgency;
|
||||||
|
int pickupSpot;
|
||||||
|
String pickupDateTime;
|
||||||
|
String transportationType;
|
||||||
|
int ambulate;
|
||||||
|
String notes;
|
||||||
|
int requesterFileNo;
|
||||||
|
String requesterMobileNo;
|
||||||
|
bool requesterIsOutSA;
|
||||||
|
String pickupLocationName;
|
||||||
|
String dropoffLocationName;
|
||||||
|
String pickupLatitude;
|
||||||
|
String pickupLongitude;
|
||||||
|
String dropoffLatitude;
|
||||||
|
String dropoffLongitude;
|
||||||
|
String appointmentNo;
|
||||||
|
String appointmentClinicName;
|
||||||
|
String appointmentDoctorName;
|
||||||
|
String appointmentBranch;
|
||||||
|
String appointmentTime;
|
||||||
|
|
||||||
|
TransportationDetails(
|
||||||
|
{this.direction,
|
||||||
|
this.haveAppointment,
|
||||||
|
this.tripType,
|
||||||
|
this.pickupUrgency,
|
||||||
|
this.pickupSpot,
|
||||||
|
this.pickupDateTime,
|
||||||
|
this.transportationType,
|
||||||
|
this.ambulate,
|
||||||
|
this.notes,
|
||||||
|
this.requesterFileNo,
|
||||||
|
this.requesterMobileNo,
|
||||||
|
this.requesterIsOutSA,
|
||||||
|
this.pickupLocationName,
|
||||||
|
this.dropoffLocationName,
|
||||||
|
this.pickupLatitude,
|
||||||
|
this.pickupLongitude,
|
||||||
|
this.dropoffLatitude,
|
||||||
|
this.dropoffLongitude,
|
||||||
|
this.appointmentNo,
|
||||||
|
this.appointmentClinicName,
|
||||||
|
this.appointmentDoctorName,
|
||||||
|
this.appointmentBranch,
|
||||||
|
this.appointmentTime});
|
||||||
|
|
||||||
|
TransportationDetails.fromJson(Map<String, dynamic> json) {
|
||||||
|
direction = json['direction'];
|
||||||
|
haveAppointment = json['haveAppointment'];
|
||||||
|
tripType = json['tripType'];
|
||||||
|
pickupUrgency = json['pickupUrgency'];
|
||||||
|
pickupSpot = json['pickupSpot'];
|
||||||
|
pickupDateTime = json['pickupDateTime'];
|
||||||
|
transportationType = json['transportationType'];
|
||||||
|
ambulate = json['ambulate'];
|
||||||
|
notes = json['notes'];
|
||||||
|
requesterFileNo = json['requesterFileNo'];
|
||||||
|
requesterMobileNo = json['requesterMobileNo'];
|
||||||
|
requesterIsOutSA = json['requesterIsOutSA'];
|
||||||
|
pickupLocationName = json['pickupLocationName'];
|
||||||
|
dropoffLocationName = json['dropoffLocationName'];
|
||||||
|
pickupLatitude = json['pickup_Latitude'];
|
||||||
|
pickupLongitude = json['pickup_Longitude'];
|
||||||
|
dropoffLatitude = json['dropoff_Latitude'];
|
||||||
|
dropoffLongitude = json['dropoff_Longitude'];
|
||||||
|
appointmentNo = json['appointmentNo'];
|
||||||
|
appointmentClinicName = json['appointmentClinicName'];
|
||||||
|
appointmentDoctorName = json['appointmentDoctorName'];
|
||||||
|
appointmentBranch = json['appointmentBranch'];
|
||||||
|
appointmentTime = json['appointmentTime'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['direction'] = this.direction;
|
||||||
|
data['haveAppointment'] = this.haveAppointment;
|
||||||
|
data['tripType'] = this.tripType;
|
||||||
|
data['pickupUrgency'] = this.pickupUrgency;
|
||||||
|
data['pickupSpot'] = this.pickupSpot;
|
||||||
|
data['pickupDateTime'] = this.pickupDateTime;
|
||||||
|
data['transportationType'] = this.transportationType;
|
||||||
|
data['ambulate'] = this.ambulate;
|
||||||
|
data['notes'] = this.notes;
|
||||||
|
data['requesterFileNo'] = this.requesterFileNo;
|
||||||
|
data['requesterMobileNo'] = this.requesterMobileNo;
|
||||||
|
data['requesterIsOutSA'] = this.requesterIsOutSA;
|
||||||
|
data['pickupLocationName'] = this.pickupLocationName;
|
||||||
|
data['dropoffLocationName'] = this.dropoffLocationName;
|
||||||
|
data['pickup_Latitude'] = this.pickupLatitude;
|
||||||
|
data['pickup_Longitude'] = this.pickupLongitude;
|
||||||
|
data['dropoff_Latitude'] = this.dropoffLatitude;
|
||||||
|
data['dropoff_Longitude'] = this.dropoffLongitude;
|
||||||
|
data['appointmentNo'] = this.appointmentNo;
|
||||||
|
data['appointmentClinicName'] = this.appointmentClinicName;
|
||||||
|
data['appointmentDoctorName'] = this.appointmentDoctorName;
|
||||||
|
data['appointmentBranch'] = this.appointmentBranch;
|
||||||
|
data['appointmentTime'] = this.appointmentTime;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,79 +1,56 @@
|
|||||||
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
|
||||||
class PatientERTransportationMethod {
|
class PatientERTransportationMethod {
|
||||||
dynamic id;
|
int id;
|
||||||
DateTime createDate;
|
String serviceID;
|
||||||
DateTime lastEditDate;
|
int orderServiceID;
|
||||||
dynamic createdBy;
|
String text;
|
||||||
dynamic lastEditBy;
|
String textN;
|
||||||
bool isActive;
|
|
||||||
String title;
|
|
||||||
String titleAR;
|
|
||||||
dynamic price;
|
dynamic price;
|
||||||
dynamic isDefault;
|
dynamic priceVAT;
|
||||||
dynamic visibility;
|
dynamic priceTotal;
|
||||||
dynamic durationId;
|
bool isEnabled;
|
||||||
String description;
|
int orderId;
|
||||||
String descriptionAR;
|
int quantity;
|
||||||
dynamic totalPrice;
|
|
||||||
dynamic vAT;
|
|
||||||
|
|
||||||
PatientERTransportationMethod(
|
PatientERTransportationMethod(
|
||||||
{
|
{this.id,
|
||||||
this.id,
|
this.serviceID,
|
||||||
this.createDate,
|
this.orderServiceID,
|
||||||
this.lastEditDate,
|
this.text,
|
||||||
this.createdBy,
|
this.textN,
|
||||||
this.lastEditBy,
|
|
||||||
this.isActive,
|
|
||||||
this.title,
|
|
||||||
this.titleAR,
|
|
||||||
this.price,
|
this.price,
|
||||||
this.isDefault,
|
this.priceVAT,
|
||||||
this.visibility,
|
this.priceTotal,
|
||||||
this.durationId,
|
this.isEnabled,
|
||||||
this.description,
|
this.orderId,
|
||||||
this.descriptionAR,
|
this.quantity});
|
||||||
this.totalPrice,
|
|
||||||
this.vAT});
|
|
||||||
|
|
||||||
PatientERTransportationMethod.fromJson(
|
PatientERTransportationMethod.fromJson(Map<String, dynamic> json) {
|
||||||
Map<String, dynamic> json) {
|
id = json['id'];
|
||||||
id = json['Id'];
|
serviceID = json['serviceID'];
|
||||||
createDate = DateUtil.convertStringToDate(json['CreateDate']);
|
orderServiceID = json['orderServiceID'];
|
||||||
lastEditDate = DateUtil.convertStringToDate(json['LastEditDate']);
|
text = json['text'];
|
||||||
createdBy = json['CreatedBy'];
|
textN = json['textN'];
|
||||||
lastEditBy = json['LastEditBy'];
|
price = json['price'];
|
||||||
isActive = json['IsActive'];
|
priceVAT = json['priceVAT'];
|
||||||
title = json['Title'];
|
priceTotal = json['priceTotal'];
|
||||||
titleAR = json['TitleAR'];
|
isEnabled = json['isEnabled'];
|
||||||
price = json['Price'];
|
orderId = json['orderId'];
|
||||||
isDefault = json['isDefault'];
|
quantity = json['quantity'];
|
||||||
visibility = json['Visibility'];
|
|
||||||
durationId = json['DurationId'];
|
|
||||||
description = json['Description'];
|
|
||||||
descriptionAR = json['DescriptionAR'];
|
|
||||||
totalPrice = json['TotalPrice'];
|
|
||||||
vAT = json['VAT'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
data['Id'] = this.id;
|
data['id'] = this.id;
|
||||||
data['CreateDate'] = this.createDate;
|
data['serviceID'] = this.serviceID;
|
||||||
data['LastEditDate'] = this.lastEditDate;
|
data['orderServiceID'] = this.orderServiceID;
|
||||||
data['CreatedBy'] = this.createdBy;
|
data['text'] = this.text;
|
||||||
data['LastEditBy'] = this.lastEditBy;
|
data['textN'] = this.textN;
|
||||||
data['IsActive'] = this.isActive;
|
data['price'] = this.price;
|
||||||
data['Title'] = this.title;
|
data['priceVAT'] = this.priceVAT;
|
||||||
data['TitleAR'] = this.titleAR;
|
data['priceTotal'] = this.priceTotal;
|
||||||
data['Price'] = this.price;
|
data['isEnabled'] = this.isEnabled;
|
||||||
data['isDefault'] = this.isDefault;
|
data['orderId'] = this.orderId;
|
||||||
data['Visibility'] = this.visibility;
|
data['quantity'] = this.quantity;
|
||||||
data['DurationId'] = this.durationId;
|
|
||||||
data['Description'] = this.description;
|
|
||||||
data['DescriptionAR'] = this.descriptionAR;
|
|
||||||
data['TotalPrice'] = this.totalPrice;
|
|
||||||
data['VAT'] = this.vAT;
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
class DentalProceduresModel {
|
||||||
|
List<ListIsPatientHasOnGoingEstimation> listIsPatientHasOnGoingEstimation;
|
||||||
|
|
||||||
|
DentalProceduresModel({this.listIsPatientHasOnGoingEstimation});
|
||||||
|
|
||||||
|
DentalProceduresModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
if (json['List_IsPatientHasOnGoingEstimation'] != null) {
|
||||||
|
listIsPatientHasOnGoingEstimation =
|
||||||
|
new List<ListIsPatientHasOnGoingEstimation>();
|
||||||
|
json['List_IsPatientHasOnGoingEstimation'].forEach((v) {
|
||||||
|
listIsPatientHasOnGoingEstimation
|
||||||
|
.add(new ListIsPatientHasOnGoingEstimation.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
if (this.listIsPatientHasOnGoingEstimation != null) {
|
||||||
|
data['List_IsPatientHasOnGoingEstimation'] = this
|
||||||
|
.listIsPatientHasOnGoingEstimation
|
||||||
|
.map((v) => v.toJson())
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ListIsPatientHasOnGoingEstimation {
|
||||||
|
dynamic setupID;
|
||||||
|
dynamic estimationNo;
|
||||||
|
int projectID;
|
||||||
|
String procedureId;
|
||||||
|
int patientID;
|
||||||
|
int sequenceNo;
|
||||||
|
int neededTime;
|
||||||
|
String procedureName;
|
||||||
|
dynamic procedureNameN;
|
||||||
|
|
||||||
|
ListIsPatientHasOnGoingEstimation(
|
||||||
|
{this.setupID,
|
||||||
|
this.estimationNo,
|
||||||
|
this.projectID,
|
||||||
|
this.procedureId,
|
||||||
|
this.patientID,
|
||||||
|
this.sequenceNo,
|
||||||
|
this.neededTime,
|
||||||
|
this.procedureName,
|
||||||
|
this.procedureNameN});
|
||||||
|
|
||||||
|
ListIsPatientHasOnGoingEstimation.fromJson(Map<String, dynamic> json) {
|
||||||
|
setupID = json['SetupID'];
|
||||||
|
estimationNo = json['EstimationNo'];
|
||||||
|
projectID = json['ProjectID'];
|
||||||
|
procedureId = json['ProcedureId'];
|
||||||
|
patientID = json['PatientID'];
|
||||||
|
sequenceNo = json['sequenceNo'];
|
||||||
|
neededTime = json['NeededTime'];
|
||||||
|
procedureName = json['ProcedureName'];
|
||||||
|
procedureNameN = json['ProcedureNameN'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['SetupID'] = this.setupID;
|
||||||
|
data['EstimationNo'] = this.estimationNo;
|
||||||
|
data['ProjectID'] = this.projectID;
|
||||||
|
data['ProcedureId'] = this.procedureId;
|
||||||
|
data['PatientID'] = this.patientID;
|
||||||
|
data['sequenceNo'] = this.sequenceNo;
|
||||||
|
data['NeededTime'] = this.neededTime;
|
||||||
|
data['ProcedureName'] = this.procedureName;
|
||||||
|
data['ProcedureNameN'] = this.procedureNameN;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||||
|
|
||||||
|
class OrdersPayment extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
_OrdersPaymentState createState() => _OrdersPaymentState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _OrdersPaymentState extends State<OrdersPayment> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,355 @@
|
|||||||
|
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
|
||||||
|
class LiveCareBookAppointment extends StatefulWidget {
|
||||||
|
final dynamic clinicName;
|
||||||
|
final dynamic liveCareClinicID;
|
||||||
|
final dynamic liveCareServiceID;
|
||||||
|
|
||||||
|
LiveCareBookAppointment(
|
||||||
|
{this.clinicName, this.liveCareClinicID, this.liveCareServiceID});
|
||||||
|
|
||||||
|
@override
|
||||||
|
_LiveCareBookAppointmentState createState() =>
|
||||||
|
_LiveCareBookAppointmentState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> {
|
||||||
|
AppSharedPreferences sharedPref = AppSharedPreferences();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return AppScaffold(
|
||||||
|
appBarTitle: TranslationBase.of(context).bookAppo,
|
||||||
|
isShowAppBar: true,
|
||||||
|
isShowDecPage: false,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(5.0),
|
||||||
|
child: Text(TranslationBase.of(context).clinicAcceptLivecare,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.black,
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.5)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(15.0),
|
||||||
|
padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Color(0xff20bc44),
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(8.0))),
|
||||||
|
child: Text(TranslationBase.of(context).livecareModalTop,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: 16.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
letterSpacing: 0.5)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(15.0),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/liveCare_mobile_care.svg",
|
||||||
|
width: 150.0),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 10.0, right: 10.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(bottom: 7.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context).whyLivecare,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 20.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
letterSpacing: 1.0,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/ionic-ios-checkmark-circle.svg"),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
MediaQuery.of(context).size.width * 0.4,
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: 5.0, right: 5.0, bottom: 10.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.livecarePoint1,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/ionic-ios-checkmark-circle.svg"),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
MediaQuery.of(context).size.width * 0.4,
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: 5.0, right: 5.0, bottom: 10.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.livecarePoint5,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/ionic-ios-checkmark-circle.svg"),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
MediaQuery.of(context).size.width * 0.4,
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: 5.0, right: 5.0, bottom: 10.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.livecarePoint2,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/ionic-ios-checkmark-circle.svg"),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
MediaQuery.of(context).size.width * 0.4,
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: 5.0, right: 5.0, bottom: 10.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.livecarePoint3,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/ionic-ios-checkmark-circle.svg"),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width:
|
||||||
|
MediaQuery.of(context).size.width * 0.4,
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(left: 5.0, right: 5.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.livecarePoint4,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
child: Text(TranslationBase.of(context).livecareSummary,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Colors.black)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
sharedPref.setString(
|
||||||
|
LIVECARE_CLINIC_DATA,
|
||||||
|
widget.clinicName +
|
||||||
|
"-" +
|
||||||
|
widget.liveCareClinicID +
|
||||||
|
"-" +
|
||||||
|
widget.liveCareServiceID);
|
||||||
|
Navigator.pop(context, "livecare");
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.grey[700],
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.all(Radius.circular(10.0))),
|
||||||
|
margin: EdgeInsets.only(top: 10.0),
|
||||||
|
padding: EdgeInsets.all(10.0),
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 10.0, right: 10.0),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
"assets/images/new-design/liveCare_logo_icon_white.svg",
|
||||||
|
width: 70),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.58,
|
||||||
|
margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 0.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.fromLTRB(
|
||||||
|
10.0, 0.0, 10.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.bookImmediateLivecare,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.7,
|
||||||
|
color: Colors.white)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin:
|
||||||
|
EdgeInsets.only(top: 5.0, left: 10.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context)
|
||||||
|
.bookVideoLivecare2,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 13.0,
|
||||||
|
color: Colors.white)),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context, "schedule");
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.grey[700],
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.all(Radius.circular(10.0))),
|
||||||
|
margin: EdgeInsets.only(top: 10.0),
|
||||||
|
padding: EdgeInsets.all(10.0),
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(left: 10.0, right: 10.0),
|
||||||
|
child: Image.asset(
|
||||||
|
"assets/images/new-design/doctor_white.png",
|
||||||
|
width: 50),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width * 0.58,
|
||||||
|
margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 0.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: <Widget>[
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.fromLTRB(
|
||||||
|
28.0, 0.0, 28.0, 0.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context).noThankyou,
|
||||||
|
overflow: TextOverflow.clip,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.7,
|
||||||
|
color: Colors.white)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
top: 5.0, left: 28.0, right: 28.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationBase.of(context).visitClinic,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 13.0,
|
||||||
|
color: Colors.white)),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 10.0),
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.pop(context, "false");
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
Text(TranslationBase.of(context).cancel,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.0,
|
||||||
|
letterSpacing: 0.5,
|
||||||
|
color: Color(0xffc5272d))),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,169 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidPaymentInfoResponse.dart';
|
||||||
|
import 'package:diplomaticquarterapp/models/CovidDriveThru/CovidTestProceduresResponse.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/medical/labs/passport_update_page.dart';
|
||||||
|
import 'package:diplomaticquarterapp/services/covid-drivethru/covid-drivethru.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.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 'covid-payment-details.dart';
|
||||||
|
|
||||||
|
class CovidDirveThruQuestions extends StatefulWidget {
|
||||||
|
final String projectId;
|
||||||
|
final List<CovidTestProceduresResponse> proceduresList;
|
||||||
|
|
||||||
|
CovidDirveThruQuestions({@required this.projectId, @required this.proceduresList});
|
||||||
|
|
||||||
|
@override
|
||||||
|
CovidDirveThruQuestionsState createState() => CovidDirveThruQuestionsState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class CovidDirveThruQuestionsState extends State<CovidDirveThruQuestions> {
|
||||||
|
List qa;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
qa = getQuestionsFromJson();
|
||||||
|
}
|
||||||
|
|
||||||
|
TranslationBase localize;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
localize = TranslationBase.of(context);
|
||||||
|
var isArabic = localize.isArabic();
|
||||||
|
return AppScaffold(
|
||||||
|
appBarTitle: TranslationBase.of(context).covidTest,
|
||||||
|
isShowAppBar: true,
|
||||||
|
body: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(20),
|
||||||
|
child: Text(localize.covidSelectProcedure, style: TextStyle(fontSize: 17, letterSpacing: 1, fontWeight: FontWeight.bold)),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ListView.separated(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 20),
|
||||||
|
itemCount: qa.length,
|
||||||
|
itemBuilder: (ctx, idx) {
|
||||||
|
var obj = qa[idx];
|
||||||
|
var qtext = isArabic ? obj["questionAR"] : obj["questionEN"];
|
||||||
|
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(qtext, style: TextStyle(fontSize: 15, letterSpacing: 1.5)),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Radio<int>(
|
||||||
|
value: 1,
|
||||||
|
groupValue: obj["ans"],
|
||||||
|
onChanged: (newValue) {
|
||||||
|
setState(() {
|
||||||
|
obj["ans"] = newValue;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Text(localize.yes),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Radio<int>(
|
||||||
|
value: 0,
|
||||||
|
groupValue: obj["ans"],
|
||||||
|
onChanged: (newValue) {
|
||||||
|
setState(() {
|
||||||
|
obj["ans"] = newValue;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
Text(localize.no),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
separatorBuilder: (ctx, idx) => Divider(height: 0.25, color: Colors.grey.withOpacity(0.5)),
|
||||||
|
)),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
||||||
|
child: FractionallySizedBox(
|
||||||
|
widthFactor: 1,
|
||||||
|
child: MaterialButton(
|
||||||
|
height: 50,
|
||||||
|
color: Theme.of(context).appBarTheme.color,
|
||||||
|
disabledColor: Theme.of(context).appBarTheme.color.withOpacity(0.25),
|
||||||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
||||||
|
child: Text(
|
||||||
|
localize.next,
|
||||||
|
style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),
|
||||||
|
),
|
||||||
|
onPressed: next),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
next() async {
|
||||||
|
bool all = true;
|
||||||
|
qa.forEach((element) {
|
||||||
|
all = all && (element["ans"] == 1 || element["ans"] == 0);
|
||||||
|
});
|
||||||
|
if (all) if (qa[0]["ans"] == 1) {
|
||||||
|
openPassportUpdatePage();
|
||||||
|
} else {
|
||||||
|
getPaymentInfo(context, widget.projectId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
AppToast.showErrorToast(message: localize.pleaseSelectAllQuestionToContinue);
|
||||||
|
}
|
||||||
|
|
||||||
|
openPassportUpdatePage() {
|
||||||
|
Navigator.push(context, FadePage(page: PassportUpdatePage())).then((value) {
|
||||||
|
print(value);
|
||||||
|
if(value != null && value == true) {
|
||||||
|
getPaymentInfo(context, widget.projectId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
List getQuestionsFromJson() {
|
||||||
|
var questionsJson = """
|
||||||
|
[{"id":1,"questionEN":"Is the test intended for travel?","questionAR":"هل تجري التحليل بغرض السفر؟","ans":2},{"id":2,"questionEN":"Coming from outside KSA within last 2 weeks?","questionAR":"هل قدمت من خارج المملكة خلال الأسبوعين الماضيين؟","ans":2},{"id":3,"questionEN":"Do you currently have fever?","questionAR":"هل تعاني حاليا من حرارة؟","ans":2},{"id":4,"questionEN":"Did you have fever in last 2 weeks?","questionAR":"هل عانيت من حرارة في الأسبوعين الماضيين؟","ans":2},{"id":5,"questionEN":"Do you have a sore throat?","questionAR":"هل لديك التهاب في الحلق؟","ans":2},{"id":6,"questionEN":"Do you have a runny nose?","questionAR":"هل لديك سيلان بالأنف؟"},{"id":7,"questionEN":"Do you have a cough?","questionAR":"هل لديك سعال؟","ans":2},{"id":8,"questionEN":"Do you have shortness of breath?","questionAR":"هل تعانين من ضيق في التنفس؟","ans":2},{"id":9,"questionEN":"Do you have nausea?","questionAR":"هل تعانين من غثيان؟","ans":2},{"id":10,"questionEN":"Do you have vomiting?","questionAR":"هل تعاني من القيء؟","ans":2},{"id":11,"questionEN":"Do you have a headache?","questionAR":"هل تعاني من صداع في الرأس؟","ans":2},{"id":12,"questionEN":"Do you have muscle pain?","questionAR":"هل تعانين من آلام عضلية؟","ans":2},{"id":13,"questionEN":"Do you have joint pain?","questionAR":"هل تعانين من آلام المفاصل؟","ans":2},{"id":14,"questionEN":"Do you have diarrhea?","questionAR":"هل لديك اسهال؟","ans":2}]""";
|
||||||
|
var map = json.decode(questionsJson) as List;
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
getPaymentInfo(BuildContext context, String projectID) {
|
||||||
|
CovidDriveThruService service = new CovidDriveThruService();
|
||||||
|
CovidPaymentInfoResponse covidPaymentInfoResponse = new CovidPaymentInfoResponse();
|
||||||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||||||
|
service.getCovidPaymentInformation(context, int.parse(projectID), widget.proceduresList[0].procedureID).then((res) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
if (res['MessageStatus'] == 1) {
|
||||||
|
covidPaymentInfoResponse = CovidPaymentInfoResponse.fromJson(res['COVID19_PatientShare']);
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: CovidPaymentDetails(
|
||||||
|
covidPaymentInfoResponse: covidPaymentInfoResponse,
|
||||||
|
projectID: int.parse(projectID),
|
||||||
|
proceduresList: widget.proceduresList,
|
||||||
|
)));
|
||||||
|
} else {}
|
||||||
|
}).catchError((err) {
|
||||||
|
print(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,257 @@
|
|||||||
|
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/MyAppointments/AppointmentDetails.dart';
|
||||||
|
|
||||||
|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/DoctorScheduleResponse.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/indicator.dart';
|
||||||
|
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/core/viewModels/medical/medical_view_model.dart';
|
||||||
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
||||||
|
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
||||||
|
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
|
||||||
|
|
||||||
|
class SchedulePage extends StatefulWidget {
|
||||||
|
final DoctorList doctorList;
|
||||||
|
final AppoitmentAllHistoryResultList appo;
|
||||||
|
SchedulePage({
|
||||||
|
this.appo,
|
||||||
|
this.doctorList,
|
||||||
|
});
|
||||||
|
@override
|
||||||
|
_SchedulePageState createState() => _SchedulePageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SchedulePageState extends State<SchedulePage> {
|
||||||
|
DoctorsListService service;
|
||||||
|
PageController _pageController = PageController();
|
||||||
|
double currentPage = 0;
|
||||||
|
int selectedindex = 0;
|
||||||
|
List weeks = [];
|
||||||
|
List<DoctorScheduleResponse> doctorScheduleResponse = [];
|
||||||
|
int weekMS = 604800 * 1000;
|
||||||
|
DoctorList doctorList;
|
||||||
|
List<String> freeSlots = [];
|
||||||
|
bool isPageChange = false;
|
||||||
|
|
||||||
|
AppSharedPreferences sharedPref = AppSharedPreferences();
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
this.doctorList = widget.doctorList;
|
||||||
|
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BaseView<MedicalViewModel>(
|
||||||
|
onModelReady: (model) => model.getDoctorSchedule(doctorList),
|
||||||
|
builder: (_, model, widget) => BaseView<MedicalViewModel>(
|
||||||
|
onModelReady: (model2) => model2.getFreeSlots(doctorList),
|
||||||
|
builder: (_, model2, widget2) {
|
||||||
|
if (model.freeSlots.length > 0 && isPageChange == false) {
|
||||||
|
this.freeSlots = model.freeSlots;
|
||||||
|
this.doctorScheduleResponse = model.getDoctorScheduleList;
|
||||||
|
|
||||||
|
this.generateWeeksSchedules();
|
||||||
|
}
|
||||||
|
return AppScaffold(
|
||||||
|
appBarTitle: TranslationBase.of(context).schedule,
|
||||||
|
isShowAppBar: true,
|
||||||
|
baseViewModel: model2,
|
||||||
|
body: SizedBox(
|
||||||
|
height: MediaQuery.of(context).size.height,
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.only(top: 40),
|
||||||
|
child: PageView.builder(
|
||||||
|
controller: _pageController,
|
||||||
|
itemCount: weeks.length,
|
||||||
|
onPageChanged: (index) {
|
||||||
|
setState(() {
|
||||||
|
isPageChange = true;
|
||||||
|
this.currentPage = index.toDouble();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
return Container(
|
||||||
|
child: ListView.builder(
|
||||||
|
itemCount: weeks[index].length,
|
||||||
|
itemBuilder: (context, index2) =>
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
openBookAppointment(
|
||||||
|
weeks[index][index2]);
|
||||||
|
},
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(
|
||||||
|
left: 20),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
Texts(
|
||||||
|
weeks[index][index2]
|
||||||
|
[
|
||||||
|
'DayName'],
|
||||||
|
fontSize:
|
||||||
|
13,
|
||||||
|
),
|
||||||
|
Texts(
|
||||||
|
getDayMonths(
|
||||||
|
DateUtil
|
||||||
|
.convertStringToDate(
|
||||||
|
weeks[index][index2]['Date'],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.bold,
|
||||||
|
fontSize:
|
||||||
|
18,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
])),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 3,
|
||||||
|
child: ClipRRect(
|
||||||
|
borderRadius:
|
||||||
|
const BorderRadius
|
||||||
|
.all(
|
||||||
|
Radius.circular(
|
||||||
|
20.0)),
|
||||||
|
child: Container(
|
||||||
|
padding:
|
||||||
|
EdgeInsets.only(
|
||||||
|
left:
|
||||||
|
10,
|
||||||
|
right:
|
||||||
|
10,
|
||||||
|
top: 20,
|
||||||
|
bottom:
|
||||||
|
20),
|
||||||
|
margin: EdgeInsets.only(
|
||||||
|
left: 20,
|
||||||
|
right: 20,
|
||||||
|
top: 7,
|
||||||
|
bottom: 7),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
boxShadow: [
|
||||||
|
weeks[index][index2]['fullDay'] ==
|
||||||
|
false
|
||||||
|
? BoxShadow(
|
||||||
|
color: Colors.green,
|
||||||
|
offset: Offset(-5, 0))
|
||||||
|
: BoxShadow(),
|
||||||
|
],
|
||||||
|
borderRadius:
|
||||||
|
const BorderRadius.all(Radius.circular(
|
||||||
|
10.0)),
|
||||||
|
color: Colors
|
||||||
|
.white),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child:
|
||||||
|
Texts(
|
||||||
|
weeks[index][index2]
|
||||||
|
[
|
||||||
|
'WorkingHours'],
|
||||||
|
fontWeight:
|
||||||
|
FontWeight.w400,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
))),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
))));
|
||||||
|
},
|
||||||
|
)),
|
||||||
|
PageViewIndicator(
|
||||||
|
isActive: true,
|
||||||
|
currentPage: this.currentPage,
|
||||||
|
length: weeks.length,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)));
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
generateWeeksSchedules() {
|
||||||
|
this.weeks.clear();
|
||||||
|
for (var i = 0; i < 8; i++) {
|
||||||
|
var weekSchedule = generateNewWeekSchedule(i);
|
||||||
|
this.markWeekFreeDays(weekSchedule);
|
||||||
|
this.weeks.add(weekSchedule);
|
||||||
|
}
|
||||||
|
//print(this.weeks);
|
||||||
|
}
|
||||||
|
|
||||||
|
markWeekFreeDays(schedule) {
|
||||||
|
for (var workDay in schedule) {
|
||||||
|
workDay['fullDay'] = !this.hasFreeSlot(workDay['Date']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generateNewWeekSchedule(weekIndex) {
|
||||||
|
var weekMSOffset = weekIndex * weekMS;
|
||||||
|
|
||||||
|
var newWeekSchedule = [];
|
||||||
|
for (var workDay in this.doctorScheduleResponse) {
|
||||||
|
Map<String, dynamic> newWorkDay = Map();
|
||||||
|
newWorkDay['Date'] = DateUtil.convertDateMSToJsonDate(
|
||||||
|
DateUtil.convertStringToDate(workDay.date).millisecondsSinceEpoch +
|
||||||
|
weekMSOffset);
|
||||||
|
newWorkDay['DayName'] = workDay.dayName;
|
||||||
|
newWorkDay['WorkingHours'] = workDay.workingHours;
|
||||||
|
newWeekSchedule.add(newWorkDay);
|
||||||
|
}
|
||||||
|
return newWeekSchedule;
|
||||||
|
}
|
||||||
|
|
||||||
|
hasFreeSlot(String jsonDate) {
|
||||||
|
var date = DateUtil.convertStringToDate(jsonDate);
|
||||||
|
var scheduleDay = date;
|
||||||
|
for (var event in this.freeSlots) {
|
||||||
|
var date = DateUtil.convertStringToDate(event);
|
||||||
|
var nDate = DateTime(date.year, date.month, date.day);
|
||||||
|
|
||||||
|
if (nDate.millisecondsSinceEpoch == scheduleDay.millisecondsSinceEpoch) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
String getDayMonths(DateTime dateTime) {
|
||||||
|
String dateFormat =
|
||||||
|
'${dateTime.day} ${DateUtil.getMonth(dateTime.month).toString().substring(0, 3)}';
|
||||||
|
return dateFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
openBookAppointment(selectedDate) {
|
||||||
|
//sharedPref.setObject(DOCTOR_SCHEDULE_DATE_SEL, selectedDate);
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: AppointmentDetails(
|
||||||
|
appo: widget.appo,
|
||||||
|
doctorSchedule: selectedDate,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
class DoctorScheduleResponse {
|
||||||
|
String clinicName;
|
||||||
|
String date;
|
||||||
|
String dayName;
|
||||||
|
String projectName;
|
||||||
|
String workingHours;
|
||||||
|
|
||||||
|
DoctorScheduleResponse(
|
||||||
|
{this.clinicName,
|
||||||
|
this.date,
|
||||||
|
this.dayName,
|
||||||
|
this.projectName,
|
||||||
|
this.workingHours});
|
||||||
|
|
||||||
|
DoctorScheduleResponse.fromJson(Map<String, dynamic> json) {
|
||||||
|
clinicName = json['ClinicName'];
|
||||||
|
date = json['Date'];
|
||||||
|
dayName = json['DayName'];
|
||||||
|
projectName = json['ProjectName'];
|
||||||
|
workingHours = json['WorkingHours'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['ClinicName'] = this.clinicName;
|
||||||
|
data['Date'] = this.date;
|
||||||
|
data['DayName'] = this.dayName;
|
||||||
|
data['ProjectName'] = this.projectName;
|
||||||
|
data['WorkingHours'] = this.workingHours;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class PageViewIndicator extends StatelessWidget {
|
||||||
|
final bool isActive;
|
||||||
|
final int length;
|
||||||
|
final double currentPage;
|
||||||
|
PageViewIndicator({
|
||||||
|
@required this.isActive,
|
||||||
|
@required this.length,
|
||||||
|
@required this.currentPage,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return _indicator(this.isActive);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _indicator(bool isActive) {
|
||||||
|
return Positioned(
|
||||||
|
top: 20,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.only(top: 0),
|
||||||
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
if (i == currentPage) ...[circleBar(true)] else circleBar(false),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget circleBar(bool isActive) {
|
||||||
|
return AnimatedContainer(
|
||||||
|
duration: Duration(milliseconds: 150),
|
||||||
|
margin: EdgeInsets.symmetric(horizontal: 3),
|
||||||
|
height: isActive ? 12 : 8,
|
||||||
|
width: isActive ? 12 : 8,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: isActive ? Colors.red : Colors.grey,
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(12))),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue