Merge branch 'development' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into foote_in_all_pages

merge-update-with-lab-changes
Elham Rababh 5 years ago
commit 13737548bb

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -17,12 +17,12 @@ const BASE_URL = 'https://uat.hmgwebservices.com/';
// const BASE_URL = 'https://hmgwebservices.com/'; // const BASE_URL = 'https://hmgwebservices.com/';
// Pharmacy UAT URLs // Pharmacy UAT URLs
//const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
//const PHARMACY_BASE_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; const PHARMACY_BASE_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
// Pharmacy Production URLs // Pharmacy Production URLs
const BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapi/api/'; // const BASE_PHARMACY_URL = 'https://mdlaboratories.com/exacartapi/api/';
const PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapi/api/'; // const PHARMACY_BASE_URL = 'https://mdlaboratories.com/exacartapi/api/';
const PING_SERVICE = 'Services/Weather.svc/REST/CheckConnectivity'; const PING_SERVICE = 'Services/Weather.svc/REST/CheckConnectivity';

@ -937,6 +937,7 @@ const Map localizedValues = {
}, },
"offerAndPackages": {"en": "Offers And Packages", "ar": "العروض والباقات"}, "offerAndPackages": {"en": "Offers And Packages", "ar": "العروض والباقات"},
"InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"}, "InvoiceNo": {"en": "Invoice No", "ar": "رقم الفاتورة"},
"InvoiceDate": {"en": "Invoice Date", "ar": "تاريخ الفاتورة"},
"SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"}, "SpecialResult": {"en": " Special Result", "ar": "نتيجة خاصة"},
"GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"}, "GeneralResult": {"en": "General Result", "ar": "نتيجة عامة"},
"show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"}, "show-more-btn": {"en": "Flow Chart", "ar": "النتائج التراكمية"},
@ -1447,12 +1448,13 @@ const Map localizedValues = {
}, },
"verification_message_code": {"en": "Please enter verification code", "ar": "الرجاء إدخال رمز التحقق"}, "verification_message_code": {"en": "Please enter verification code", "ar": "الرجاء إدخال رمز التحقق"},
"select-location": {"en": "Select Location", "ar": "اختر موقعا"}, "select-location": {"en": "Select Location", "ar": "اختر موقعا"},
"result-header": {"en": "Get The Result During 8 Hours", "ar": "احصل على النتيجة خلال 8 ساعة"}, "result-header": {
"en": "Get the result in Few Hours",
"ar": "احصل على النتيجة خلال عدة ساعات"
},
"covid-info": { "covid-info": {
"en": "en": "Dr. Sulaiman Al Habib hospitals are conducting a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes, and obtain the result within several hours. Corona Virus Covid 19 testing service with PCR technology to detect the virus according to the highest international standards and with the latest high-precision RT-PCR devices (American GeneXpert and others), That is approved by the Food and Drug Authority as well as by the Saudi Center for Infectious Diseases Prevention.",
"We are using the advance technology to test COVID-19, The sample for examination is taking between the nose and mouth (nasopharyngeal swab), the examination is done by ELITE In Genius of the company ELITECH GROUP MOLECULAR DIAGNOSTICS, Note that the device belongs to an Italian company and is manufactured in Japan with RC- PCR", "ar": "تجري مستشفيات د. سليمان الحبيب فحص فيروس كورونا المستجد وتصدر شهادات السفر على مدار الساعة، طوال أيام الأسبوع، وبسرعة ودقة عالية. يمكن للراغبين في الاستفادة من هذه الخدمة زيارة أحد فروع مستشفيات د. سليمان الحبيب وإجراء فحص كورونا خلال بضع دقائق والحصول على النتائج خلال عدة ساعات خدمة فحص فيروس كورونا Covid 19 بتقنية PCR للكشف عن الفيروس وفقاً لأعلى المعايير العالمية وبأحدث أجهزة RT-PCR عالية الدقة (GeneXpert الأمريكي وغيره)، وهي طرق معتمدة من قبل هيئة الغذاء والدواء وكذلك من قبل المركز السعودي للوقاية من الأمراض المُعدية"
"ar":
"يتوفر لدينا أحدث جهاز خاص بفحص مرض الكورونا (COVID-19) طريقة الفحص تؤخذ مسحة من البلعوم الأنفي ( عن طريف الأنف) ويتم الفحص بواسطة جهاز ELITE In Genius التابع لشركة ELITECH GROUP MOLECULAR DIAGNOSTICS علما بأن الجهاز تابع لشركة إيطالية ومصنع في اليابان بتقينة RC-PCR"
}, },
"select-appo": { "select-appo": {
"en": "Kindly select one of the available appointments from below:", "en": "Kindly select one of the available appointments from below:",
@ -1597,7 +1599,39 @@ const Map localizedValues = {
"ar": "لا داعي للانتظار او الحضور يمكنك الان الحصول على الاستشارة عن طريق مكالمة الفيديو ( خدمة لايف كير) في العيادة وسوف يقوم الطبيب بالتواصل معك فورا" "ar": "لا داعي للانتظار او الحضور يمكنك الان الحصول على الاستشارة عن طريق مكالمة الفيديو ( خدمة لايف كير) في العيادة وسوف يقوم الطبيب بالتواصل معك فورا"
}, },
"livecareModal-top": { "livecareModal-top": {
"en": "This Clinic is Accepting livecare services", "en": "This Clinic is accepting LiveCare services",
"ar": "هذه العيادة تقدم خدمة لايف كير" "ar": "هذه العيادة تقدم خدمة لايف كير"
}, },
"livecare-point-2": {
"en": "A Specialized doctor will contact you",
"ar": "سوف يقوم بخدمتك طبيب متخصص"
},
"livecare-point-3": {
"en": "A Doctor will be able to see your full medical file history",
"ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كاملا"
},
"livecare-point-4": {
"en": "Free Medicine delivery Available",
"ar": "خدمة توصيل الادوية مجانا"
},
"livecare-point-5": {
"en": "No need to visit the service is in your place",
"ar": "لا داعي للحضور سوف تحصل على الخدمة في مكانك"
},
"book-immediate-livecare": {
"en": "I accept to get the service immediately",
"ar": "موافق اريد الحصول على الخدمة فورا"
},
"book-video-livecare-2": {
"en": "I don't need to visit the clinic",
"ar": "اتصال فيديو لا احتاج الحضور الى العيادة"
},
"no-thankyou": {
"en": "No Thanks",
"ar": "لا شكرا"
},
"visit-clinic": {
"en": "Schedule appointment with the doctor",
"ar": "ارغب في حجز موعد مجدول مع الطبيب"
},
}; };

@ -31,3 +31,4 @@ const PHARMACY_SELECTED_ADDRESS = 'selected-address';
const PHARMACY_AUTORZIE_TOKEN = 'PHARMACY_AUTORZIE_TOKEN'; const PHARMACY_AUTORZIE_TOKEN = 'PHARMACY_AUTORZIE_TOKEN';
const H2O_UNIT = 'H2O_UNIT'; const H2O_UNIT = 'H2O_UNIT';
const H2O_REMINDER = 'H2O_REMINDER'; const H2O_REMINDER = 'H2O_REMINDER';
const LIVECARE_CLINIC_DATA = 'LIVECARE_CLINIC_DATA';

@ -20,6 +20,8 @@ class AncillaryOrdersService extends BaseService {
_ancillaryLists = []; _ancillaryLists = [];
response['AncillaryOrderList'].forEach((item) { response['AncillaryOrderList'].forEach((item) {
ancillaryLists.add(AncillaryOrdersListModel.fromJson(item)); ancillaryLists.add(AncillaryOrdersListModel.fromJson(item));
print("response of ancillary Lists__________");
print(response);
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
@ -27,175 +29,25 @@ class AncillaryOrdersService extends BaseService {
}, body: body); }, body: body);
} }
Future getOrdersDetails(appointmentNo, orderNo) async { Future getOrdersDetails(appointmentNo, orderNo, projectID) async {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['AppointmentNo_Vida'] = appointmentNo;
body['OrderNo'] = orderNo;
body['ProjectID'] = projectID;
// "OrderNo=$orderNo&AppointmentNo_Vida=$appointmentNo&ProjectID=$projectID"
hasError = false; hasError = false;
await baseAppClient.post(GET_ANCILLARY_ORDERS_DETAILS, await baseAppClient.post(GET_ANCILLARY_ORDERS_DETAILS,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_ancillaryProcLists = []; _ancillaryProcLists = [];
response['AncillaryOrderProcList'] = [
{
"AncillaryOrderProcList": [
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 501.3,
"CompanyShareWithTax": 576.5,
"CompanyTaxAmount": 75.19,
"DiscountAmount": 55.7,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": false,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 1,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 557,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02013001",
"ProcedureName": "11-DESOXYCORTISOL (COMPOUND S) - S.O",
"TaxAmount": 75.19,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 90,
"CompanyShareWithTax": 103.5,
"CompanyTaxAmount": 13.5,
"DiscountAmount": 10,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": true,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 4,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 100,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02014011",
"ProcedureName": "CBC (COMPLETE BLOOD COUNT PROFILE)",
"TaxAmount": 13.5,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 347.76,
"CompanyShareWithTax": 399.92,
"CompanyTaxAmount": 52.16,
"DiscountAmount": 38.64,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": false,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 3,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 386.4,
"ProcedureCategoryID": 2,
"ProcedureCategoryName": "LABORATORY",
"ProcedureID": "02019302",
"ProcedureName": "21-HYDROXYLASE ABS - S.O",
"TaxAmount": 52.16,
"TaxPct": 15
},
{
"ApprovalLineItemNo": 0,
"ApprovalNo": 0,
"ApprovalStatus": "",
"ApprovalStatusID": 0,
"CompanyShare": 1323,
"CompanyShareWithTax": 1521.45,
"CompanyTaxAmount": 198.45,
"DiscountAmount": 147,
"DiscountCategory": 1,
"DiscountType": "P",
"DiscountTypeValue": 10,
"IsApprovalCreated": false,
"IsApprovalRequired": true,
"IsCovered": false,
"OrderDate": "/Date(1601758800000+0300)/",
"OrderLineItemNo": 5,
"OrderNo": 2020000001,
"PartnerID": 0,
"PartnerShare": 0,
"PartnerShareType": "P",
"PatientShare": 0,
"PatientShareWithTax": 0,
"PatientTaxAmount": 0,
"ProcPrice": 1470,
"ProcedureCategoryID": 3,
"ProcedureCategoryName": "RADIOLOGY",
"ProcedureID": "03033065",
"ProcedureName": "CT SCAN - ABDOMEN (WITH CONTRAST)",
"TaxAmount": 198.45,
"TaxPct": 15
}
],
"AppointmentDate": "/Date(1601499600000+0300)/",
"AppointmentNo": 2016053756,
"ClinicID": 1,
"ClinicName": "INTERNAL MEDICINE CLINIC",
"CompanyID": 0,
"CompanyName": "Blood Donation Investigation",
"DoctorID": 1485,
"DoctorName": "ANAS ABDULLAH",
"ErrCode": null,
"GroupID": 2,
"InsurancePolicyNo": "45976500",
"Message": "Success",
"PatientCardID": "232332323",
"PatientID": 3072055,
"PatientName": "MAYA KHALED SADDIQ",
"PatientType": 1,
"PolicyID": 2,
"PolicyName": "Test",
"ProjectID": 15,
"SetupID": "010266",
"StatusCode": 1,
"SubCategoryID": 2,
"SubPolicyNo": "234234"
}
];
response['AncillaryOrderProcList'].forEach((item) { response['AncillaryOrderProcList'].forEach((item) {
ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(item)); ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(item));
// ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(response['AncillaryOrderProcList']));
print("----------------------------------");
print("Test data");
print(response);
}); });
//Future.value(_ancillaryProcLists);
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;
super.error = error; super.error = error;

@ -12,8 +12,10 @@ class AnciallryOrdersViewModel extends BaseViewModel {
AncillaryOrdersService _ancillaryService = locator<AncillaryOrdersService>(); AncillaryOrdersService _ancillaryService = locator<AncillaryOrdersService>();
List<AncillaryOrdersListModel> get ancillaryLists => List<AncillaryOrdersListModel> get ancillaryLists =>
_ancillaryService.ancillaryLists; _ancillaryService.ancillaryLists;
List<AncillaryOrdersListProcListModel> get ancillaryListsDetails => List<AncillaryOrdersListProcListModel> get ancillaryListsDetails =>
_ancillaryService.ancillaryProcLists; _ancillaryService.ancillaryProcLists;
Future getOrders() async { Future getOrders() async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.Busy);
@ -25,10 +27,10 @@ class AnciallryOrdersViewModel extends BaseViewModel {
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future getOrdersDetails(appointmentNo, orderNo) async { Future getOrdersDetails(appointmentNo, orderNo, projectID) async {
hasError = false; hasError = false;
setState(ViewState.Busy); setState(ViewState.Busy);
await _ancillaryService.getOrdersDetails(appointmentNo, orderNo); await _ancillaryService.getOrdersDetails(appointmentNo, orderNo, projectID );
if (_ancillaryService.hasError) { if (_ancillaryService.hasError) {
error = _ancillaryService.error; error = _ancillaryService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -1,31 +1,31 @@
class AncillaryOrdersListProcListModel { class AncillaryOrdersListProcListModel {
List<AncillaryOrderProcList> ancillaryOrderProcList; List<AncillaryOrderProcDetailsList> ancillaryOrderProcDetailsList;
String appointmentDate; String appointmentDate;
dynamic appointmentNo; int appointmentNo;
dynamic clinicID; int clinicID;
String clinicName; String clinicName;
dynamic companyID; int companyID;
String companyName; String companyName;
dynamic doctorID; int doctorID;
String doctorName; String doctorName;
Null errCode; Null errCode;
dynamic groupID; int groupID;
String insurancePolicyNo; String insurancePolicyNo;
String message; String message;
String patientCardID; String patientCardID;
dynamic patientID; int patientID;
String patientName; String patientName;
dynamic patientType; int patientType;
dynamic policyID; int policyID;
String policyName; String policyName;
dynamic projectID; int projectID;
String setupID; String setupID;
dynamic statusCode; int statusCode;
dynamic subCategoryID; int subCategoryID;
String subPolicyNo; String subPolicyNo;
AncillaryOrdersListProcListModel( AncillaryOrdersListProcListModel(
{this.ancillaryOrderProcList, {this.ancillaryOrderProcDetailsList,
this.appointmentDate, this.appointmentDate,
this.appointmentNo, this.appointmentNo,
this.clinicID, this.clinicID,
@ -51,10 +51,11 @@ class AncillaryOrdersListProcListModel {
this.subPolicyNo}); this.subPolicyNo});
AncillaryOrdersListProcListModel.fromJson(Map<String, dynamic> json) { AncillaryOrdersListProcListModel.fromJson(Map<String, dynamic> json) {
if (json['AncillaryOrderProcList'] != null) { if (json['AncillaryOrderProcDetailsList'] != null) {
ancillaryOrderProcList = new List<AncillaryOrderProcList>(); ancillaryOrderProcDetailsList = new List<AncillaryOrderProcDetailsList>();
json['AncillaryOrderProcList'].forEach((v) { json['AncillaryOrderProcDetailsList'].forEach((v) {
ancillaryOrderProcList.add(new AncillaryOrderProcList.fromJson(v)); ancillaryOrderProcDetailsList
.add(new AncillaryOrderProcDetailsList.fromJson(v));
}); });
} }
appointmentDate = json['AppointmentDate']; appointmentDate = json['AppointmentDate'];
@ -84,9 +85,9 @@ class AncillaryOrdersListProcListModel {
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>();
if (this.ancillaryOrderProcList != null) { if (this.ancillaryOrderProcDetailsList != null) {
data['AncillaryOrderProcList'] = data['AncillaryOrderProcDetailsList'] =
this.ancillaryOrderProcList.map((v) => v.toJson()).toList(); this.ancillaryOrderProcDetailsList.map((v) => v.toJson()).toList();
} }
data['AppointmentDate'] = this.appointmentDate; data['AppointmentDate'] = this.appointmentDate;
data['AppointmentNo'] = this.appointmentNo; data['AppointmentNo'] = this.appointmentNo;
@ -115,7 +116,7 @@ class AncillaryOrdersListProcListModel {
} }
} }
class AncillaryOrderProcList { class AncillaryOrderProcDetailsList {
dynamic approvalLineItemNo; dynamic approvalLineItemNo;
dynamic approvalNo; dynamic approvalNo;
String approvalStatus; String approvalStatus;
@ -147,7 +148,7 @@ class AncillaryOrderProcList {
dynamic taxAmount; dynamic taxAmount;
dynamic taxPct; dynamic taxPct;
AncillaryOrderProcList( AncillaryOrderProcDetailsList(
{this.approvalLineItemNo, {this.approvalLineItemNo,
this.approvalNo, this.approvalNo,
this.approvalStatus, this.approvalStatus,
@ -179,7 +180,7 @@ class AncillaryOrderProcList {
this.taxAmount, this.taxAmount,
this.taxPct}); this.taxPct});
AncillaryOrderProcList.fromJson(Map<String, dynamic> json) { AncillaryOrderProcDetailsList.fromJson(Map<String, dynamic> json) {
approvalLineItemNo = json['ApprovalLineItemNo']; approvalLineItemNo = json['ApprovalLineItemNo'];
approvalNo = json['ApprovalNo']; approvalNo = json['ApprovalNo'];
approvalStatus = json['ApprovalStatus']; approvalStatus = json['ApprovalStatus'];

@ -95,7 +95,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrders>
.map( .map(
(item) => InkWell( (item) => InkWell(
onTap: () { onTap: () {
ancillaryOrdersDetails(item); ancillaryOrdersDetails(item, model.ancillaryLists[0].projectID);
}, },
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@ -166,11 +166,11 @@ class _AnicllaryOrdersState extends State<AnicllaryOrders>
.toList()); .toList());
} }
ancillaryOrdersDetails(item) { ancillaryOrdersDetails(item, projectId) {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: AnicllaryOrdersDetails(item.appointmentNo, item.orderNo), page: AnicllaryOrdersDetails(item.appointmentNo, item.orderNo,projectId ),
), ),
); );
} }

@ -8,11 +8,15 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ancillary-orders/ordersPayment.dart';
class AnicllaryOrdersDetails extends StatefulWidget { class AnicllaryOrdersDetails extends StatefulWidget {
final dynamic appoNo; final dynamic appoNo;
final dynamic orderNo; final dynamic orderNo;
AnicllaryOrdersDetails(this.appoNo, this.orderNo); final dynamic projectID;
AnicllaryOrdersDetails(this.appoNo, this.orderNo, this.projectID);
@override @override
_AnicllaryOrdersState createState() => _AnicllaryOrdersState(); _AnicllaryOrdersState createState() => _AnicllaryOrdersState();
} }
@ -31,7 +35,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<AnciallryOrdersViewModel>( return BaseView<AnciallryOrdersViewModel>(
onModelReady: (model) => onModelReady: (model) =>
model.getOrdersDetails(widget.appoNo, widget.orderNo), model.getOrdersDetails(widget.appoNo, widget.orderNo, widget.projectID),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
isShowAppBar: true, isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
@ -64,7 +68,12 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
children: [ children: [
Button( Button(
label: TranslationBase.of(context).payNow, label: TranslationBase.of(context).payNow,
onTap: () {}, backgroundColor: Colors.red[800],
onTap: () {
Navigator.push(context,
FadePage(page: OrdersPayment(),
),);
},
) )
], ],
) )
@ -89,7 +98,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
fontSize: 20, fontSize: 20,
), ),
Texts( Texts(
model.ancillaryListsDetails[0].patientID.toString(), model.ancillaryLists[0].patientID.toString(),
) )
], ],
), ),
@ -126,7 +135,8 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
children: [ children: [
Texts( Texts(
TranslationBase.of(context).invoiceNo, TranslationBase.of(context).invoiceNo,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
color: Colors.red[500],
), ),
Texts(" : "), Texts(" : "),
Texts( Texts(
@ -137,8 +147,9 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Row( Row(
children: [ children: [
Texts( Texts(
TranslationBase.of(context).date, TranslationBase.of(context).invoiceDate,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
color: Colors.red[500],
), ),
Texts(" : "), Texts(" : "),
Texts( Texts(
@ -152,8 +163,9 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Row( Row(
children: [ children: [
Texts( Texts(
TranslationBase.of(context).date, TranslationBase.of(context).doctorName,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
color: Colors.red[500],
), ),
Texts(" : "), Texts(" : "),
Texts( Texts(
@ -206,13 +218,49 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
Divider( Divider(
color: Colors.red[800], color: Colors.red[800],
thickness: 3, thickness: 3,
) ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Row(
children: [
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Texts(
TranslationBase.of(context).price,
color: Colors.grey[500],
fontSize: 14,
),
SizedBox(width: 15),
Texts(
TranslationBase.of(context).vat,
color: Colors.grey[500],
fontSize: 14,
),
SizedBox(width: 15),
Texts(
TranslationBase.of(context).total,
color: Colors.grey[500],
fontSize: 14,
),
] ),
],
),
Divider(
color: Colors.black26,
),
], ],
)); ));
} }
Widget getAncillaryDetails(model) { Widget getAncillaryDetails(model) {
Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcList, Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcDetailsList,
(obj) => obj.procedureCategoryName); (obj) => obj.procedureCategoryName);
print(newMap); print(newMap);
@ -247,7 +295,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
String getTotalValue(value) { String getTotalValue(value) {
double total = 0.0; double total = 0.0;
value.ancillaryListsDetails[0].ancillaryOrderProcList value.ancillaryListsDetails[0].ancillaryOrderProcDetailsList
.forEach((result) => {total += result.companyShareWithTax}); .forEach((result) => {total += result.companyShareWithTax});
return total.toStringAsFixed(2); return total.toStringAsFixed(2);
} }
@ -277,4 +325,6 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
}).toList(), }).toList(),
); );
} }
} }

@ -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();
}
}

@ -50,6 +50,15 @@ class _BodyFatState extends State<BodyFat> {
TextEditingController waistController = TextEditingController(); TextEditingController waistController = TextEditingController();
TextEditingController hipController = TextEditingController(); TextEditingController hipController = TextEditingController();
@override
void initState() {
neckController.text = neck.toString();
hipController.text = hip.toString();
waistController.text = waist.toString();
heightController.text = heightCm.toString();
super.initState();
}
void updateColorHeight(int type) { void updateColorHeight(int type) {
//MG/DLT card //MG/DLT card
if (type == 1) { if (type == 1) {
@ -319,11 +328,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: heightController, controller: heightController,
decoration: InputDecoration(
labelText: heightCm.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -350,6 +354,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (heightCm < 250) heightCm++; if (heightCm < 250) heightCm++;
heightController.text = heightCm.toString();
}); });
}, },
), ),
@ -362,6 +367,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (heightCm > 0) heightCm--; if (heightCm > 0) heightCm--;
heightController.text = heightCm.toString();
}); });
}, },
), ),
@ -381,6 +387,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
heightCm = newValue.round(); heightCm = newValue.round();
heightController.text = heightCm.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -492,15 +499,10 @@ class _BodyFatState extends State<BodyFat> {
Expanded( Expanded(
child: Center( child: Center(
child: Padding( child: Padding(
padding: const EdgeInsets.only(left: 10.0), padding: const EdgeInsets.only(left: 15.0, bottom: 0),
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: neckController, controller: neckController,
decoration: InputDecoration(
labelText: neck.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -527,6 +529,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (neck < 60) neck++; if (neck < 60) neck++;
neckController.text = neck.toString();
}); });
}, },
), ),
@ -539,6 +542,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (neck > 5) neck--; if (neck > 5) neck--;
neckController.text = neck.toString();
}); });
}, },
), ),
@ -558,6 +562,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
neck = newValue.round(); neck = newValue.round();
neckController.text = neck.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -673,11 +678,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: waistController, controller: waistController,
decoration: InputDecoration(
labelText: waist.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -704,6 +704,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (waist < 200) waist++; if (waist < 200) waist++;
waistController.text = waist.toString();
}); });
}, },
), ),
@ -716,6 +717,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (waist > 5) waist--; if (waist > 5) waist--;
waistController.text = waist.toString();
}); });
}, },
), ),
@ -735,6 +737,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
waist = newValue.round(); waist = newValue.round();
waistController.text = waist.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),
@ -850,11 +853,6 @@ class _BodyFatState extends State<BodyFat> {
child: TextFormField( child: TextFormField(
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
controller: hipController, controller: hipController,
decoration: InputDecoration(
labelText: hip.toString(),
labelStyle: TextStyle(
color: Colors.black,
)),
), ),
), ),
), ),
@ -881,6 +879,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (hip < 140) hip++; if (hip < 140) hip++;
hipController.text = hip.toString();
}); });
}, },
), ),
@ -893,6 +892,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
if (hip > 5) hip--; if (hip > 5) hip--;
hipController.text = hip.toString();
}); });
}, },
), ),
@ -912,6 +912,7 @@ class _BodyFatState extends State<BodyFat> {
onChanged: (double newValue) { onChanged: (double newValue) {
setState(() { setState(() {
hip = newValue.round(); hip = newValue.round();
hipController.text = hip.toString();
}); });
}, },
activeColor: Color(0xffC5272D), activeColor: Color(0xffC5272D),

@ -19,6 +19,7 @@ class OvulationPeriod extends StatefulWidget {
class _OvulationPeriodState extends State<OvulationPeriod> { class _OvulationPeriodState extends State<OvulationPeriod> {
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
DateTime selectedDateTime = DateTime.now();
int cycleLength = 0; int cycleLength = 0;
int lutealPhaseLength = 0; int lutealPhaseLength = 0;
String selectedDate; String selectedDate;
@ -37,13 +38,30 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
} }
String getDate() { String getDate() {
return "${DateUtil.getMonth(bloodSugarDate.month)} ${bloodSugarDate.day}, ${bloodSugarDate.year}"; return "${DateUtil.getMonth(selectedDateTime.month)} ${selectedDateTime.day}, ${selectedDateTime.year}";
} }
// void calculate() {} // void calculate() {}
// //
// void calculateFertility(DateTime selectedDate) {const diff = Date.} // void calculateFertility(DateTime selectedDate) {const diff = Date.}
calculateBabyInformation() {
setState(() {
bloodSugarDate = selectedDateTime;
dateFrom = selectedDateTime.add(Duration(days: 10));
updatedDt = DateFormat.yMMMEd().format(dateFrom);
dateTo = selectedDateTime.add(Duration(days: 20));
conceivedDate = selectedDateTime.add(Duration(days: 14));
deliveryDue = selectedDateTime.add(Duration(days: 280));
// babyAge = Jiffy([DateTime.now()]).diff(Jiffy([date]), Units.WEEK);
babyAgeWeeks = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([selectedDateTime.year, selectedDateTime.month, dateTo.day]), Units.WEEK);
babyAgeDays = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([selectedDateTime.year, selectedDateTime.month, dateTo.day]), Units.DAY);
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
@ -78,18 +96,7 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
onConfirm: (date) { onConfirm: (date) {
print('confirm $date'); print('confirm $date');
setState(() { setState(() {
bloodSugarDate = date; selectedDateTime = date;
dateFrom = date.add(Duration(days: 10));
updatedDt = DateFormat.yMMMEd().format(dateFrom);
dateTo = date.add(Duration(days: 20));
conceivedDate = date.add(Duration(days: 14));
deliveryDue = date.add(Duration(days: 280));
// babyAge = Jiffy([DateTime.now()]).diff(Jiffy([date]), Units.WEEK);
babyAgeWeeks = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([date.year, date.month, dateTo.day]), Units.WEEK);
babyAgeDays = Jiffy([DateTime.now().year, DateTime.now().month, DateTime.now().day])
.diff(Jiffy([date.year, date.month, dateTo.day]), Units.DAY);
}); });
}, },
currentTime: DateTime.now(), currentTime: DateTime.now(),
@ -321,8 +328,7 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
child: SecondaryButton( child: SecondaryButton(
label: 'CALCULATE', label: 'CALCULATE',
onTap: () { onTap: () {
setState(() { calculateBabyInformation();
{
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
@ -335,8 +341,6 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
babyAgeDays: babyAgeDays, babyAgeDays: babyAgeDays,
)), )),
); );
}
});
}, },
), ),
), ),

@ -78,7 +78,7 @@ class OvulationResult extends StatelessWidget {
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
Texts( Texts(
babyAge.toString() + " Weeks," + "2", babyAge <= 0 ? "baby age is not available" : babyAge.toString() + " Weeks," + "3",
fontWeight: FontWeight.w800, fontWeight: FontWeight.w800,
fontSize: 21.0, fontSize: 21.0,
), ),

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/qr_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -9,11 +10,13 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart'; import 'package:maps_launcher/maps_launcher.dart';
import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart';
import 'package:provider/provider.dart';
import '../../d_q_icons_icons.dart'; import '../../d_q_icons_icons.dart';
class ParkingPage extends StatelessWidget { class ParkingPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context);
return BaseView<QrViewModel>( return BaseView<QrViewModel>(
onModelReady: (model) => model.getIsSaveParking(), onModelReady: (model) => model.getIsSaveParking(),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
@ -21,10 +24,7 @@ class ParkingPage extends StatelessWidget {
appBarTitle: TranslationBase.of(context).parking, appBarTitle: TranslationBase.of(context).parking,
description: TranslationBase.of(context).parkingDescription, description: TranslationBase.of(context).parkingDescription,
imagesInfo: [ imagesInfo: [
ImagesInfo( ImagesInfo(imageAr: 'assets/images/bc_parking.png', imageEn: 'assets/images/bc_parking.png', isAsset: true)
imageAr: 'assets/images/bc_parking.png',
imageEn: 'assets/images/bc_parking.png',
isAsset: true)
], ],
body: SingleChildScrollView( body: SingleChildScrollView(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
@ -50,7 +50,9 @@ class ParkingPage extends StatelessWidget {
Row( Row(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: Container(child: Icon(/*Icons.landscape*/DQIcons.parking_icon,size: 130),), child: Container(
child: Icon(/*Icons.landscape*/ DQIcons.parking_icon, size: 130),
),
), ),
SizedBox( SizedBox(
width: 15, width: 15,
@ -85,15 +87,15 @@ class ParkingPage extends StatelessWidget {
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
height: 70, height: 70,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).showMyPark), Texts(TranslationBase.of(context).showMyPark),
Texts(model.qrParkingModel.floorDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.floorDescriptionN
: model.qrParkingModel.floorDescription),
], ],
), ),
), ),
@ -102,9 +104,7 @@ class ParkingPage extends StatelessWidget {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
@ -112,7 +112,9 @@ class ParkingPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).gate), Texts(TranslationBase.of(context).gate),
Texts(model.qrParkingModel.gateDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.gateDescriptionN
: model.qrParkingModel.gateDescription),
], ],
), ),
), ),
@ -121,9 +123,7 @@ class ParkingPage extends StatelessWidget {
), ),
Container( Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
@ -131,7 +131,9 @@ class ParkingPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).building), Texts(TranslationBase.of(context).building),
Texts(model.qrParkingModel.buildingDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.buildingDescriptionN
: model.qrParkingModel.buildingDescription),
], ],
), ),
), ),
@ -141,16 +143,16 @@ class ParkingPage extends StatelessWidget {
Container( Container(
padding: EdgeInsets.all(8), padding: EdgeInsets.all(8),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10), color: Colors.white, shape: BoxShape.rectangle),
color: Colors.white,
shape: BoxShape.rectangle),
width: double.infinity, width: double.infinity,
height: 70, height: 70,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts(TranslationBase.of(context).branch), Texts(TranslationBase.of(context).branch),
Texts(model.qrParkingModel.branchDescriptionN), Texts(projectViewModel.isArabic
? model.qrParkingModel.branchDescriptionN
: model.qrParkingModel.branchDescription),
], ],
), ),
), ),

@ -1,14 +1,26 @@
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/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class LiveCareBookAppointment extends StatefulWidget { class LiveCareBookAppointment extends StatefulWidget {
final dynamic clinicName;
final dynamic liveCareClinicID;
final dynamic liveCareServiceID;
LiveCareBookAppointment(
{this.clinicName, this.liveCareClinicID, this.liveCareServiceID});
@override @override
_LiveCareBookAppointmentState createState() => _LiveCareBookAppointmentState createState() =>
_LiveCareBookAppointmentState(); _LiveCareBookAppointmentState();
} }
class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> { class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> {
AppSharedPreferences sharedPref = AppSharedPreferences();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppScaffold( return AppScaffold(
@ -34,7 +46,7 @@ class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> {
margin: EdgeInsets.all(15.0), margin: EdgeInsets.all(15.0),
padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.green, color: Color(0xff20bc44),
borderRadius: BorderRadius.all(Radius.circular(8.0))), borderRadius: BorderRadius.all(Radius.circular(8.0))),
child: Text(TranslationBase.of(context).livecareModalTop, child: Text(TranslationBase.of(context).livecareModalTop,
textAlign: TextAlign.center, textAlign: TextAlign.center,
@ -44,6 +56,297 @@ class _LiveCareBookAppointmentState extends State<LiveCareBookAppointment> {
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
letterSpacing: 0.5)), 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))),
],
),
),
),
], ],
), ),
), ),

@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da
import 'package:diplomaticquarterapp/models/Clinics/ClinicListResponse.dart'; import 'package:diplomaticquarterapp/models/Clinics/ClinicListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/DentalComplaints.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/DentalComplaints.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart';
@ -243,27 +244,42 @@ class _SearchByClinicState extends State<SearchByClinic> {
// TODO Mosa_REMARk to come back later // TODO Mosa_REMARk to come back later
getDoctorsList(BuildContext context) { getDoctorsList(BuildContext context) {
GifLoaderDialogUtils.showMyDialog(context);
SearchInfo searchInfo = new SearchInfo(); SearchInfo searchInfo = new SearchInfo();
if (dropdownValue == "17") { if (dropdownValue == "17") {
searchInfo.ProjectID = int.parse(projectDropdownValue); searchInfo.ProjectID = int.parse(projectDropdownValue);
searchInfo.ClinicID = int.parse(dropdownValue); searchInfo.ClinicID = int.parse(dropdownValue);
searchInfo.date = DateTime.now(); searchInfo.date = DateTime.now();
GifLoaderDialogUtils.hideDialog(context);
navigateToDentalComplaints(context, searchInfo); navigateToDentalComplaints(context, searchInfo);
} else if (dropdownValue.split("-")[1] == "true" } else if (dropdownValue.split("-")[1] == "true"
// && // && authProvider.isLogin &&
// authProvider.isLogin &&
// authUser.patientType == 1 // authUser.patientType == 1
) { ) {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: LiveCareBookAppointment(), page: LiveCareBookAppointment(
clinicName: "Family Medicine",
liveCareClinicID: dropdownValue.split("-")[2],
liveCareServiceID: dropdownValue.split("-")[3]),
), ),
); ).then((value) {
print(value);
if (value == "false") dropdownValue = "";
if (value == "livecare") {
Navigator.push(context, FadePage(page: LiveCareHome()));
}
if (value == "schedule") {
callDoctorsSearchAPI();
}
});
} else { } else {
callDoctorsSearchAPI();
}
}
callDoctorsSearchAPI() {
GifLoaderDialogUtils.showMyDialog(context);
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<String> arr = []; List<String> arr = [];
List<String> arrDistance = []; List<String> arrDistance = [];
@ -284,7 +300,6 @@ class _SearchByClinicState extends State<SearchByClinic> {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
setState(() { setState(() {
if (res['DoctorList'].length != 0) { if (res['DoctorList'].length != 0) {
// print(res['DoctorList']);
doctorsList.clear(); doctorsList.clear();
res['DoctorList'].forEach((v) { res['DoctorList'].forEach((v) {
doctorsList.add(new DoctorList.fromJson(v)); doctorsList.add(new DoctorList.fromJson(v));
@ -329,7 +344,6 @@ class _SearchByClinicState extends State<SearchByClinic> {
AppToast.showErrorToast(message: err); AppToast.showErrorToast(message: err);
}); });
} }
}
Future navigateToDentalComplaints( Future navigateToDentalComplaints(
BuildContext context, SearchInfo searchInfo) async { BuildContext context, SearchInfo searchInfo) async {

@ -57,6 +57,8 @@ class _clinic_listState extends State<ClinicList> {
bool isLiveCareTypeSelected = false; bool isLiveCareTypeSelected = false;
String liveCareClinicIDs;
@override @override
void initState() { void initState() {
liveCareClinicsListResponse = new LiveCareClinicsListResponse(); liveCareClinicsListResponse = new LiveCareClinicsListResponse();
@ -64,7 +66,9 @@ class _clinic_listState extends State<ClinicList> {
new LiveCareScheduleClinicsListResponse(); new LiveCareScheduleClinicsListResponse();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
if (!isLiveCareTypeSelected) openLiveCareSelectionDialog(); if (!isLiveCareTypeSelected) {
openLiveCareSelectionDialog();
}
}); });
getLanguageID(); getLanguageID();
@ -420,7 +424,16 @@ class _clinic_listState extends State<ClinicList> {
}); });
} }
openLiveCareSelectionDialog() { openLiveCareSelectionDialog() async {
liveCareClinicIDs = await sharedPref.getString(LIVECARE_CLINIC_DATA);
if (liveCareClinicIDs != null) {
selectedClinicID = int.parse(liveCareClinicIDs.split("-")[2]);
setState(() {
currentSelectedLiveCareType = "immediate";
});
getLiveCareClinicsList();
startLiveCare();
} else {
Navigator.of(context) Navigator.of(context)
.push(new MaterialPageRoute<String>( .push(new MaterialPageRoute<String>(
builder: (BuildContext context) { builder: (BuildContext context) {
@ -448,6 +461,7 @@ class _clinic_listState extends State<ClinicList> {
} }
}); });
} }
}
Widget getLiveCareScheduleClinicList() { Widget getLiveCareScheduleClinicList() {
return Column( return Column(
@ -555,12 +569,14 @@ class _clinic_listState extends State<ClinicList> {
itemBuilder: (context, index) { itemBuilder: (context, index) {
return InkWell( return InkWell(
onTap: () { onTap: () {
if(liveCareClinicsListResponse if (liveCareClinicsListResponse
.patientERGetClinicsList[index].isOnline == 1) { .patientERGetClinicsList[index].isOnline ==
1) {
updateSelectedIndex(liveCareClinicsListResponse updateSelectedIndex(liveCareClinicsListResponse
.patientERGetClinicsList[index]); .patientERGetClinicsList[index]);
} else { } else {
AppToast.showErrorToast(message: "Clinic is offline"); AppToast.showErrorToast(
message: "Clinic is offline");
} }
}, },
child: ClinicCard( child: ClinicCard(

@ -42,7 +42,8 @@ class AddBloodPressurePage extends StatefulWidget {
class _AddBloodPressurePageState extends State<AddBloodPressurePage> { class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
TextEditingController _bloodSystolicValueController = TextEditingController(); TextEditingController _bloodSystolicValueController = TextEditingController();
TextEditingController _bloodDiastolicValueController = TextEditingController(); TextEditingController _bloodDiastolicValueController =
TextEditingController();
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
int measuredArm = 1; int measuredArm = 1;
@ -80,7 +81,9 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: widget.isUpdate ? TranslationBase.of(context).update : TranslationBase.of(context).add, appBarTitle: widget.isUpdate
? TranslationBase.of(context).update
: TranslationBase.of(context).add,
appBarIcons: widget.isUpdate appBarIcons: widget.isUpdate
? [ ? [
IconButton( IconButton(
@ -96,10 +99,14 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
ConfirmDialog.closeAlertDialog(context); ConfirmDialog.closeAlertDialog(context);
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
widget.model.deactivateDiabeticStatus(lineItemNo: widget.lineItemNo).then((value) { widget.model
.deactivateDiabeticStatus(
lineItemNo: widget.lineItemNo)
.then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.ErrorLocal) if (widget.model.state == ViewState.ErrorLocal)
AppToast.showErrorToast(message: widget.model.error); AppToast.showErrorToast(
message: widget.model.error);
else else
Navigator.pop(context); Navigator.pop(context);
}).catchError((e) { }).catchError((e) {
@ -144,13 +151,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
confirmSelectMeasureTimeDialog(projectViewModel.isArabic ? measureTimeArList : measureTimeEnList); confirmSelectMeasureTimeDialog(projectViewModel.isArabic
? measureTimeArList
: measureTimeEnList);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -177,13 +188,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
bloodSugarDate = date; bloodSugarDate = date;
}, },
); );
}, currentTime: bloodSugarDate, locale: projectViewModel.localeType); },
currentTime: bloodSugarDate,
locale: projectViewModel.localeType);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -198,22 +213,30 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
), ),
InkWell( InkWell(
onTap: () { onTap: () {
DatePicker.showTimePicker(context, showTitleActions: true, onConfirm: (date) { DatePicker.showTimePicker(context, showTitleActions: true,
onConfirm: (date) {
setState( setState(
() { () {
timeSugarDate = date; timeSugarDate = date;
}, },
); );
}, currentTime: timeSugarDate, locale: projectViewModel.localeType); },
currentTime: timeSugarDate,
locale: projectViewModel.localeType);
}, },
child: Container( child: Container(
padding: EdgeInsets.all(12), padding: EdgeInsets.all(12),
width: double.infinity, width: double.infinity,
height: 65, height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Texts(TranslationBase.of(context).time), Texts(getTime())], children: [
Texts(TranslationBase.of(context).time),
Texts(getTime())
],
), ),
), ),
), ),
@ -229,7 +252,9 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
widthFactor: 0.9, widthFactor: 0.9,
child: Column( child: Column(
children: [ children: [
SecondaryButton( Container(
height: 50,
child: SecondaryButton(
loading: widget.model.state == ViewState.BusyLocal, loading: widget.model.state == ViewState.BusyLocal,
label: TranslationBase.of(context).save.toUpperCase(), label: TranslationBase.of(context).save.toUpperCase(),
textColor: Colors.white, textColor: Colors.white,
@ -244,14 +269,17 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
isUpdate: widget.isUpdate, isUpdate: widget.isUpdate,
bloodPressureDate: bloodPressureDate:
'${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00', '${bloodSugarDate.year}-${bloodSugarDate.month}-${bloodSugarDate.day} ${timeSugarDate.hour}:${timeSugarDate.minute}:00',
diastolicPressure: _bloodDiastolicValueController.text.toString(), diastolicPressure:
systolicePressure: _bloodSystolicValueController.text.toString(), _bloodDiastolicValueController.text.toString(),
systolicePressure:
_bloodSystolicValueController.text.toString(),
measuredArm: measuredArm, measuredArm: measuredArm,
) )
.then((value) { .then((value) {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
if (widget.model.state == ViewState.BusyLocal) if (widget.model.state == ViewState.BusyLocal)
AppToast.showErrorToast(message: widget.model.error); AppToast.showErrorToast(
message: widget.model.error);
else else
Navigator.pop(context); Navigator.pop(context);
; ;
@ -261,6 +289,7 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
}); });
} }
}), }),
),
], ],
), ),
), ),
@ -295,7 +324,8 @@ class _AddBloodPressurePageState extends State<AddBloodPressurePage> {
} }
void validateForm() { void validateForm() {
print("_bloodSystolicValueController " + _bloodSystolicValueController.text.length.toString()); print("_bloodSystolicValueController " +
_bloodSystolicValueController.text.length.toString());
if (measureTimeSelectedType != 'Left Arm' && if (measureTimeSelectedType != 'Left Arm' &&
_bloodSystolicValueController.text.length > 0 && _bloodSystolicValueController.text.length > 0 &&
_bloodDiastolicValueController.text.length > 0) { _bloodDiastolicValueController.text.length > 0) {

File diff suppressed because it is too large Load Diff

@ -128,7 +128,8 @@ class _MobileNo extends State<MobileNo> {
controller: widget.controller, controller: widget.controller,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
maxLength: 10, maxLength: 10,
inputFormatters: <TextInputFormatter>[ inputFormatters: <TextInputFormatter>
[
FilteringTextInputFormatter.allow(RegExp("[0-9]")), FilteringTextInputFormatter.allow(RegExp("[0-9]")),
], ],
// maxLengthEnforced: true, // maxLengthEnforced: true,

Loading…
Cancel
Save