From d4a4165ef3abf3591c60fbb61d72b371ed8d75f7 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 8 Sep 2021 12:48:16 +0300 Subject: [PATCH 1/9] Minor fixes in Eye Measurements --- lib/config/localized_values.dart | 2 +- lib/core/viewModels/dashboard_view_model.dart | 18 ++---------------- lib/pages/medical/eye/ClassesPage.dart | 12 +++--------- lib/pages/medical/eye/ContactLensPage.dart | 4 ++-- lib/pages/medical/eye/EyeHomePage.dart | 4 ++-- 5 files changed, 10 insertions(+), 30 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 67f4bb2d..f7967492 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -418,7 +418,7 @@ const Map localizedValues = { "PleaseEnterTheVerificationCode": {"en": "Please enter the verification code send to", "ar": "الرجاء إدخال رمز التحقق المرسل إلى"}, "EyeMeasurements": {"en": "Eye Measurements", "ar": "قياسات النظر"}, "Measurements": {"en": "Measurements", "ar": "قياسات"}, - "Classes": {"en": "Classes", "ar": "نظارات"}, + "Classes": {"en": "Glasses", "ar": "نظارات"}, "ContactLens": {"en": "Contact Lens", "ar": "العدسات اللاصقة"}, "RightEye": {"en": "Right Eye", "ar": "العين اليمين"}, "Sphere": {"en": "Sphere", "ar": "القوة"}, diff --git a/lib/core/viewModels/dashboard_view_model.dart b/lib/core/viewModels/dashboard_view_model.dart index cd34fd70..c2211993 100644 --- a/lib/core/viewModels/dashboard_view_model.dart +++ b/lib/core/viewModels/dashboard_view_model.dart @@ -12,11 +12,10 @@ class DashboardViewModel extends BaseViewModel { String get heightCm => _vitalSignService.heightCm; String booldType = "-"; + DashboardViewModel() { - this.getPatientRadOrders(); + // this.getPatientRadOrders(); } - // ToDoCountProviderModel toDoProvider = - // Provider.of(AppGlobal.context); getPatientRadOrders() async { if (isLogin && _vitalSignService.weightKg.isEmpty) { @@ -31,17 +30,4 @@ class DashboardViewModel extends BaseViewModel { } } } - -// getToDoCount() { -// toDoProvider.setState(0); -// ClinicListService service = new ClinicListService(); -// service.getActiveAppointmentNo(AppGlobal.context).then((res) { -// print(res['AppointmentActiveNumber']); -// if (res['MessageStatus'] == 1) { -// toDoProvider.setState(res['AppointmentActiveNumber']); -// } else {} -// }).catchError((err) { -// print(err); -// }); -// } } diff --git a/lib/pages/medical/eye/ClassesPage.dart b/lib/pages/medical/eye/ClassesPage.dart index 273a8088..563a7ce3 100644 --- a/lib/pages/medical/eye/ClassesPage.dart +++ b/lib/pages/medical/eye/ClassesPage.dart @@ -1,13 +1,7 @@ import 'package:diplomaticquarterapp/core/model/eye/AppoimentAllHistoryResult.dart'; -import 'package:diplomaticquarterapp/core/viewModels/medical/EyeViewModel.dart'; -import 'package:diplomaticquarterapp/pages/base/base_view.dart'; -import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; -import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart'; -import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -135,7 +129,7 @@ class ClassesPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded(flex: 4, child: Text(title,style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, letterSpacing: -0.4),)), + Expanded(flex: 4, child: Text(title,style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: -0.4))), Expanded( flex: 2, child: Row( @@ -143,11 +137,11 @@ class ClassesPage extends StatelessWidget { children: [ Text( val1 == 'null' ? '-' : val1, - style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, letterSpacing: -0.4), + style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: -0.4), ), Text( val2 != 'null' ? '-' : val2, - style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, letterSpacing: -0.4), + style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: -0.4), ), ], ), diff --git a/lib/pages/medical/eye/ContactLensPage.dart b/lib/pages/medical/eye/ContactLensPage.dart index ae00dbfd..feaabc8c 100644 --- a/lib/pages/medical/eye/ContactLensPage.dart +++ b/lib/pages/medical/eye/ContactLensPage.dart @@ -142,7 +142,7 @@ class ContactLensPage extends StatelessWidget { flex: 4, child: Text( title, - style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, letterSpacing: -0.4), + style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: -0.4), )), Expanded( flex: 2, @@ -152,7 +152,7 @@ class ContactLensPage extends StatelessWidget { children: [ Text( val1 == 'null' ? '-' : val1, - style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, letterSpacing: -0.4), + style: TextStyle(fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: -0.4), ), ], ), diff --git a/lib/pages/medical/eye/EyeHomePage.dart b/lib/pages/medical/eye/EyeHomePage.dart index de5c7cba..00111283 100644 --- a/lib/pages/medical/eye/EyeHomePage.dart +++ b/lib/pages/medical/eye/EyeHomePage.dart @@ -120,7 +120,7 @@ class _EyeHomePageState extends State with SingleTickerProviderStat TranslationBase.of(context).classes, style: TextStyle( fontWeight: FontWeight.w600, - fontSize: 12, + // fontSize: 12, letterSpacing: -0.36, ), ), @@ -133,7 +133,7 @@ class _EyeHomePageState extends State with SingleTickerProviderStat TranslationBase.of(context).contactLens, style: TextStyle( fontWeight: FontWeight.w600, - fontSize: 12, + // fontSize: 12, letterSpacing: -0.36, ), ), From 25fb5decc0783c7c8cfe9c1b5f6801792506b5c1 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 8 Sep 2021 15:58:40 +0300 Subject: [PATCH 2/9] Ask Doctor page fixes --- lib/config/localized_values.dart | 4 ++ .../service/medical/ask_doctor_services.dart | 6 +- .../medical/ask_doctor_view_model.dart | 57 +++++++------------ .../BookAppointment/widgets/DoctorView.dart | 2 + lib/pages/landing/landing_page.dart | 4 +- .../medical/ask_doctor/ask_doctor_page.dart | 19 +++++-- .../medical/ask_doctor/request_type.dart | 33 ++++++----- .../radiology/radiology_details_page.dart | 6 -- lib/uitl/translations_delegate_base.dart | 2 + lib/widgets/drawer/app_drawer_widget.dart | 1 + 10 files changed, 68 insertions(+), 66 deletions(-) diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index f7967492..03e966ff 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1457,4 +1457,8 @@ const Map localizedValues = { "en": "This service is designed to help you to set drinking water goals and track the volume of water you are drinking on a daily basis. This service allows for schedule reminders and offers a basic statistical analysis of the amount of what you have consumed over the course of a day, week or month.", "ar": "تم تصميم هذه الخدمة لمساعدتك في تحديد وتتبع كميات المياه التي يتوجب شربها بشكل يومي. كما توفر هذه الخدمة تذكيرات الجدول الزمني وتقدم تحليلًا إحصائيًا لمقدار ما استهلكته خلال اليوم أو الأسبوع أو الشهر." }, + "ask-doc-empty": { + "en": "This service is available to doctors visited during the past 15 days", + "ar": "هذه الخدمة متاحة للاطباء الذين تمت زيارتهم خلال ال 15 يوم الماضية" + }, }; diff --git a/lib/core/service/medical/ask_doctor_services.dart b/lib/core/service/medical/ask_doctor_services.dart index 9a819a6e..57ab856b 100644 --- a/lib/core/service/medical/ask_doctor_services.dart +++ b/lib/core/service/medical/ask_doctor_services.dart @@ -16,14 +16,16 @@ class AskDoctorService extends BaseService { body['DoctorID'] = doctorId; body['ProjectID'] = projectId; + dynamic localRes; + await baseAppClient.post(GET_CALL_INFO_HOURS_RESULT, onSuccess: (dynamic response, int statusCode) { - ///OKAY - var asd=""; + localRes = response; }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; }, body: body); + return Future.value(localRes); } Future getCallRequestTypeLOV() async { diff --git a/lib/core/viewModels/medical/ask_doctor_view_model.dart b/lib/core/viewModels/medical/ask_doctor_view_model.dart index 629df0a9..7890fb3a 100644 --- a/lib/core/viewModels/medical/ask_doctor_view_model.dart +++ b/lib/core/viewModels/medical/ask_doctor_view_model.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/ask_doctor/AskDoctorReqTypes.dart'; import 'package:diplomaticquarterapp/core/model/ask_doctor/DoctorResponse.dart'; @@ -6,51 +7,40 @@ import 'package:diplomaticquarterapp/core/service/medical/my_doctor_service.dart import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; -import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; class AskDoctorViewModel extends BaseViewModel { AskDoctorService _askDoctorService = locator(); MyDoctorService _myDoctorService = locator(); - List patientDoctorAppointmentListHospital = - List(); + List patientDoctorAppointmentListHospital = List(); - List get askDoctorReqTypes => - _askDoctorService.askDoctorReqTypes; + List get askDoctorReqTypes => _askDoctorService.askDoctorReqTypes; - List get doctorResponseList => - _askDoctorService.doctorResponseList; + List get doctorResponseList => _askDoctorService.doctorResponseList; Future getMyDoctor() async { setState(ViewState.Busy); - await _myDoctorService.getPatientDoctorAppointmentList( - top: 25, beforeDays: 15); + await _myDoctorService.getPatientDoctorAppointmentList(top: 25, beforeDays: 15); if (_myDoctorService.hasError) { error = _myDoctorService.error; setState(ViewState.Error); - } else - var asd = ""; - _myDoctorService.patientDoctorAppointmentList.forEach((element) { - List doctorByClinic = - patientDoctorAppointmentListHospital - .where((elementClinic) => - elementClinic.filterName == element.projectName) - .toList(); - - if (doctorByClinic.length != 0) { - patientDoctorAppointmentListHospital[ - patientDoctorAppointmentListHospital.indexOf(doctorByClinic[0])] - .patientDoctorAppointmentList - .add(element); - } else { - patientDoctorAppointmentListHospital.add(PatientDoctorAppointmentList( - filterName: element.projectName, - patientDoctorAppointment: element)); - } + } else if (_myDoctorService.patientDoctorAppointmentList.length != 0) { + _myDoctorService.patientDoctorAppointmentList.forEach((element) { + List doctorByClinic = patientDoctorAppointmentListHospital.where((elementClinic) => elementClinic.filterName == element.projectName).toList(); + if (doctorByClinic.length != 0) { + patientDoctorAppointmentListHospital[patientDoctorAppointmentListHospital.indexOf(doctorByClinic[0])].patientDoctorAppointmentList.add(element); + } else { + patientDoctorAppointmentListHospital.add(PatientDoctorAppointmentList(filterName: element.projectName, patientDoctorAppointment: element)); + } + setState(ViewState.Idle); + }); + } else { setState(ViewState.Idle); - }); + AppToast.showErrorToast(message: TranslationBase.of(AppGlobal.context).askDocEmpty); + } } Future getCallRequestTypeLOVs() async { @@ -66,8 +56,7 @@ class AskDoctorViewModel extends BaseViewModel { Future getCallInfoHoursResult({int projectId, int doctorId}) async { setState(ViewState.Busy); - await _askDoctorService.getCallInfoHoursResult( - projectId: projectId, doctorId: doctorId); + await _askDoctorService.getCallInfoHoursResult(projectId: projectId, doctorId: doctorId); if (_askDoctorService.hasError) { error = _askDoctorService.error; setState(ViewState.ErrorLocal); @@ -95,11 +84,9 @@ class AskDoctorViewModel extends BaseViewModel { setState(ViewState.Idle); } - Future sendRequestLOV( - {DoctorList doctorList, String requestType, String remark}) async { + Future sendRequestLOV({DoctorList doctorList, String requestType, String remark}) async { setState(ViewState.BusyLocal); - await _askDoctorService.sendRequestLOV( - doctorList: doctorList, requestType: requestType, remark: remark); + await _askDoctorService.sendRequestLOV(doctorList: doctorList, requestType: requestType, remark: remark); if (_askDoctorService.hasError) { error = _askDoctorService.error; setState(ViewState.ErrorLocal); diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart index faf8be9e..5e691887 100644 --- a/lib/pages/BookAppointment/widgets/DoctorView.dart +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -135,6 +135,8 @@ class DoctorView extends StatelessWidget { AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); print(err); }); } diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index cc49804d..cc57ba5e 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -232,7 +232,6 @@ class _LandingPageState extends State with WidgetsBindingObserver { locationUtils = new LocationUtils(isShowConfirmDialog: false, context: context); WidgetsBinding.instance.addPostFrameCallback((_) { - locationUtils.getCurrentLocation(); if (projectViewModel.isLogin) { familyFileProvider.getSharedRecordByStatus(); } @@ -249,6 +248,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { } requestPermissions().then((results) { + locationUtils.getCurrentLocation(); _firebaseMessaging.getToken().then((String token) { print("Firebase Token: " + token); sharedPref.setString(PUSH_TOKEN, token); @@ -266,7 +266,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { // if (results[Permission.calendar].isGranted) ; }); - requestPermissions(); + // requestPermissions(); // }); // diff --git a/lib/pages/medical/ask_doctor/ask_doctor_page.dart b/lib/pages/medical/ask_doctor/ask_doctor_page.dart index a06045ec..098f87ea 100644 --- a/lib/pages/medical/ask_doctor/ask_doctor_page.dart +++ b/lib/pages/medical/ask_doctor/ask_doctor_page.dart @@ -1,4 +1,4 @@ -import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/service/medical/ask_doctor_services.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart'; @@ -6,14 +6,16 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/ask_doctor/request_type.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:rating_bar/rating_bar.dart'; class AskDoctorPage extends StatelessWidget { + AskDoctorService service = new AskDoctorService(); + @override Widget build(BuildContext context) { return BaseView( @@ -65,9 +67,10 @@ class AskDoctorPage extends StatelessWidget { doctor: doctorList, isLiveCareAppointment: false, onTap: () { - model.getCallInfoHoursResult(doctorId: _doctor.doctorID, projectId: _doctor.projectID).then((value) { - if (model.state != ViewState.ErrorLocal && model.state != ViewState.Error) { - // Navigator.pop(context); + GifLoaderDialogUtils.showMyDialog(context); + service.getCallInfoHoursResult(doctorId: _doctor.doctorID, projectId: _doctor.projectID).then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['ErrorEndUserMessage'] == null) { Navigator.push( context, FadePage( @@ -75,8 +78,12 @@ class AskDoctorPage extends StatelessWidget { ), ); } else { - AppToast.showErrorToast(message: model.error); + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + if (err != null) AppToast.showErrorToast(message: err); + print(err); }); }, ); diff --git a/lib/pages/medical/ask_doctor/request_type.dart b/lib/pages/medical/ask_doctor/request_type.dart index 0195ee3b..66cd9344 100644 --- a/lib/pages/medical/ask_doctor/request_type.dart +++ b/lib/pages/medical/ask_doctor/request_type.dart @@ -3,9 +3,8 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/ask_doctor_view_mod import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; -import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -32,6 +31,8 @@ class _RequestTypePageState extends State { isShowAppBar: true, appBarTitle: TranslationBase.of(context).requestType, baseViewModel: model, + showNewAppBar: true, + showNewAppBarTitle: true, body: SingleChildScrollView( child: Container( margin: EdgeInsets.all(10), @@ -99,22 +100,24 @@ class _RequestTypePageState extends State { ), bottomSheet: Container( width: double.maxFinite, - // height: MediaQuery.of(context).size.height * 0.1, height: 80.0, child: Padding( padding: const EdgeInsets.all(12.0), - child: SecondaryButton( - label: TranslationBase.of(context).submit, - loading: model.state == ViewState.BusyLocal, - textColor: Colors.white, - onTap: () { - model.sendRequestLOV(doctorList: widget.doctorList, requestType: parameterCode.toString(), remark: question).then((value) { - if (model.state != ViewState.ErrorLocal || model.state != ViewState.Error) { - Navigator.pop(context); - } - }); - }, - color: Colors.grey[800], + child: Container( + width: MediaQuery.of(context).size.width * 0.8, + child: DefaultButton( + TranslationBase.of(context).submit, + () => { + model.sendRequestLOV(doctorList: widget.doctorList, requestType: parameterCode.toString(), remark: question).then((value) { + if (model.state != ViewState.ErrorLocal || model.state != ViewState.Error) { + Navigator.pop(context); + } + }) + }, + color: Color(0xffD02127), + textColor: Colors.white, + disabledColor: Color(0xffEAEAEA), + ), ), ), ), diff --git a/lib/pages/medical/radiology/radiology_details_page.dart b/lib/pages/medical/radiology/radiology_details_page.dart index 951c9709..9779df1b 100644 --- a/lib/pages/medical/radiology/radiology_details_page.dart +++ b/lib/pages/medical/radiology/radiology_details_page.dart @@ -86,12 +86,6 @@ class RadiologyDetailsPage extends StatelessWidget { '${finalRadiology.reportData}', style: TextStyle(fontSize: 12, letterSpacing: -0.48), ), - // Texts( - // '${finalRadiology.reportData}', - // textAlign: TextAlign.start, - // fontSize: 12, - // - // ), mHeight(16), (projectViewModel.havePrivilege(9) || projectViewModel.havePrivilege(8)) ? (finalRadiology.dIAPACSURL != "" && projectViewModel.havePrivilege(9)) diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 63bfed02..b7efad42 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -2162,6 +2162,8 @@ class TranslationBase { localizedValues["child-vaccine-info"][locale.languageCode]; String get h2oInfo => localizedValues["h2o-info"][locale.languageCode]; + String get askDocEmpty => + localizedValues["ask-doc-empty"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index b13a6095..4f817d21 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -504,6 +504,7 @@ class _AppDrawerState extends State { var appLanguage = await sharedPref.getString(APP_LANGUAGE); await sharedPref.clear(); await sharedPref.setString(APP_LANGUAGE, appLanguage); + await sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL); this.user = null; Navigator.of(context).pushNamed(HOME); // projectProvider.platformBridge().unRegisterHmgGeofences(); From ebcc2559ce2936e144a07ad4500d98e1953a0ef9 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 9 Sep 2021 09:39:52 +0300 Subject: [PATCH 3/9] Ask doctor issue resolved, Translation & font family issues resolved --- lib/pages/BookAppointment/DoctorProfile.dart | 1 + .../BookAppointment/widgets/DoctorView.dart | 9 +++++++-- .../MyAppointments/AppointmentDetails.dart | 5 +++-- .../widgets/AppointmentActions.dart | 5 +++-- .../landing/widgets/logged_slider_view.dart | 6 +++--- lib/pages/login/confirm-login.dart | 4 ++-- .../medical/reports/report_list_widget.dart | 9 +++++++-- lib/pages/medical/reports/reports_page.dart | 6 +++--- lib/uitl/date_uitl.dart | 4 ++-- .../LabResult/Lab_Result_details_wideget.dart | 2 +- .../data_display/medical/doctor_card.dart | 16 +++++++++------- lib/widgets/drawer/app_drawer_widget.dart | 8 ++++++++ lib/widgets/drawer/drawer_item_widget.dart | 6 ++++-- lib/widgets/new_design/doctor_header.dart | 18 +++++++++++------- 14 files changed, 64 insertions(+), 35 deletions(-) diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart index 9668482c..4c87ebe4 100644 --- a/lib/pages/BookAppointment/DoctorProfile.dart +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -115,6 +115,7 @@ class _DoctorProfileState extends State with TickerProviderStateM widget.doctor.noOfPatientsRate, "", ), + buttonIcon: 'assets/images/new/Boo_ Appointment.svg', showConfirmMessageDialog: false, onTap: () { Navigator.push( diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart index 5e691887..4ab3f1ca 100644 --- a/lib/pages/BookAppointment/widgets/DoctorView.dart +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; @@ -9,6 +10,7 @@ import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; import '../DoctorProfile.dart'; @@ -21,8 +23,11 @@ class DoctorView extends StatelessWidget { DoctorView({@required this.doctor, @required this.isLiveCareAppointment, this.isShowFlag = true, this.onTap}); + ProjectViewModel projectViewModel; + @override Widget build(BuildContext context) { + projectViewModel = Provider.of(context); return InkWell( onTap: onTap ?? () { @@ -69,8 +74,8 @@ class DoctorView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName), - if (doctor.projectName != null) myRichText(TranslationBase.of(context).hospital + ":", doctor.projectName), + if (doctor.clinicName != null) myRichText(TranslationBase.of(context).clinic + ":", doctor.clinicName, projectViewModel.isArabic), + if (doctor.projectName != null) myRichText(TranslationBase.of(context).hospital + ":", doctor.projectName, projectViewModel.isArabic), if (doctor.speciality != null) Text( getDoctorSpeciality(this.doctor.speciality).trim(), diff --git a/lib/pages/MyAppointments/AppointmentDetails.dart b/lib/pages/MyAppointments/AppointmentDetails.dart index 2c8083f8..7450eae9 100644 --- a/lib/pages/MyAppointments/AppointmentDetails.dart +++ b/lib/pages/MyAppointments/AppointmentDetails.dart @@ -45,6 +45,7 @@ class _AppointmentDetailsState extends State with SingleTick List doctorDetailsList = List(); ToDoCountProviderModel toDoProvider; + ProjectViewModel projectViewModel; DoctorList doctorList = new DoctorList(); @@ -73,7 +74,7 @@ class _AppointmentDetailsState extends State with SingleTick @override Widget build(BuildContext context) { - ProjectViewModel projectViewModel = Provider.of(context); + projectViewModel = Provider.of(context); toDoProvider = Provider.of(context); @@ -158,7 +159,7 @@ class _AppointmentDetailsState extends State with SingleTick child: TabBarView( physics: NeverScrollableScrollPhysics(), children: [ - AppointmentActions(appo: widget.appo, tabController: _tabController, enableFooterButton: enableFooterButton), + AppointmentActions(appo: widget.appo, tabController: _tabController, enableFooterButton: enableFooterButton, projectViewModel: projectViewModel), DocAvailableAppointments(doctor: getDoctorObject(), doctorSchedule: widget.doctorSchedule, isLiveCareAppointment: widget.appo.isLiveCareAppointment) ], controller: _tabController, diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart index 0b70d91f..70ff54d3 100644 --- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart +++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart @@ -37,8 +37,9 @@ class AppointmentActions extends StatefulWidget { TabController tabController; final Function enableFooterButton; MyInAppBrowser browser; + final ProjectViewModel projectViewModel; - AppointmentActions({@required this.appo, @required this.tabController, @required this.enableFooterButton}); + AppointmentActions({@required this.appo, @required this.tabController, @required this.enableFooterButton, this.projectViewModel}); @override _AppointmentActionsState createState() => _AppointmentActionsState(); @@ -104,7 +105,7 @@ class _AppointmentActionsState extends State { DateUtil.convertStringToDate(widget.appo.appointmentDate), widget.appo.doctorNameObj, "", - DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.appo.appointmentDate)), + DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.appo.appointmentDate), widget.projectViewModel.isArabic), DateUtil.formatDateToTime(DateUtil.convertStringToDate(widget.appo.appointmentDate)), onSuccess: () { AppToast.showSuccessToast(message: TranslationBase.of(context).reminderSuccess); diff --git a/lib/pages/landing/widgets/logged_slider_view.dart b/lib/pages/landing/widgets/logged_slider_view.dart index 6570bb18..958135d0 100644 --- a/lib/pages/landing/widgets/logged_slider_view.dart +++ b/lib/pages/landing/widgets/logged_slider_view.dart @@ -148,7 +148,7 @@ class LoggedSliderView extends StatelessWidget { ), mWidth(6), Texts( - "Height: ${model.heightCm} ${TranslationBase.of(context).cm}", + "${TranslationBase.of(context).height}: ${model.heightCm} ${TranslationBase.of(context).cm}", color: Colors.white, fontSize: 10, ) @@ -167,7 +167,7 @@ class LoggedSliderView extends StatelessWidget { height: 12, ), mWidth(6), - Texts('Weight: ${model.weightKg} ${TranslationBase.of(context).kg}', color: Colors.white, fontSize: 10) + Texts('${TranslationBase.of(context).weight}: ${model.weightKg} ${TranslationBase.of(context).kg}', color: Colors.white, fontSize: 10) ], ), ), @@ -183,7 +183,7 @@ class LoggedSliderView extends StatelessWidget { height: 12, ), mWidth(6), - Texts('Blood: ${model.booldType}', color: Colors.white, fontSize: 10) + Texts('${TranslationBase.of(context).bloodD}: ${model.booldType}', color: Colors.white, fontSize: 10) ], ), ), diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 6d271761..a4f9f0b0 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -159,9 +159,9 @@ class _ConfirmLogin extends State { ), Text( user.editedOn != null - ? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.editedOn)) + ? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.editedOn), projectViewModel.isArabic) : user.createdOn != null - ? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.createdOn)) + ? DateUtil.formatDateToDate(DateUtil.convertStringToDate(user.createdOn), projectViewModel.isArabic) : '--', style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48), ), diff --git a/lib/pages/medical/reports/report_list_widget.dart b/lib/pages/medical/reports/report_list_widget.dart index c6dd5c4d..9e6994da 100644 --- a/lib/pages/medical/reports/report_list_widget.dart +++ b/lib/pages/medical/reports/report_list_widget.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/model/reports/Reports.dart'; import 'package:diplomaticquarterapp/core/service/medical/reports_service.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; @@ -12,6 +13,7 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; class ReportListWidget extends StatelessWidget { @@ -20,8 +22,11 @@ class ReportListWidget extends StatelessWidget { ReportListWidget({@required this.reportList, this.emailAddress}); + ProjectViewModel projectViewModel; + @override Widget build(BuildContext context) { + projectViewModel = Provider.of(context); return ListView.separated( physics: BouncingScrollPhysics(), padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21), @@ -69,8 +74,8 @@ class ReportListWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - if (report.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", report.projectName), - if (report.clinicDescription != null) myRichText(TranslationBase.of(context).hospital + ":", report.clinicDescription), + if (report.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", report.projectName, projectViewModel.isArabic), + if (report.clinicDescription != null) myRichText(TranslationBase.of(context).hospital + ":", report.clinicDescription, projectViewModel.isArabic), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisSize: MainAxisSize.max, diff --git a/lib/pages/medical/reports/reports_page.dart b/lib/pages/medical/reports/reports_page.dart index 682e6fe1..2ba14006 100644 --- a/lib/pages/medical/reports/reports_page.dart +++ b/lib/pages/medical/reports/reports_page.dart @@ -76,7 +76,7 @@ class MedicalReports extends StatelessWidget { style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), ), Text( - DateUtil.formatDateToDate(_appointmenHistory.appointmentDate), + DateUtil.formatDateToDate(_appointmenHistory.appointmentDate, projectViewModel.isArabic), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), ], @@ -97,8 +97,8 @@ class MedicalReports extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName), - if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName), + if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic), + if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisSize: MainAxisSize.max, diff --git a/lib/uitl/date_uitl.dart b/lib/uitl/date_uitl.dart index 35891e05..0ee09dd7 100644 --- a/lib/uitl/date_uitl.dart +++ b/lib/uitl/date_uitl.dart @@ -52,8 +52,8 @@ class DateUtil { return start + "$milliseconds" + end; } - static String formatDateToDate(DateTime date) { - return DateFormat('dd MMM yyy').format(date); + static String formatDateToDate(DateTime date, bool isArabic) { + return DateFormat('dd MMM yyy', isArabic ? "ar_SA" : "en_US").format(date); } static String formatDateToTime(DateTime date) { diff --git a/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart b/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart index bc83ae5f..71ebd36d 100644 --- a/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart +++ b/lib/widgets/data_display/medical/LabResult/Lab_Result_details_wideget.dart @@ -49,7 +49,7 @@ class _VitalSignDetailsWidgetState extends State { tableRow.add( TableRow( children: [ - Utils.tableColumnValue(DateUtil.formatDateToDate(DateUtil.convertStringToDate(labOrderResultList[i].verifiedOnDateTime)), isLast: i == (labOrderResultList.length - 1)), + Utils.tableColumnValue(DateUtil.formatDateToDate(DateUtil.convertStringToDate(labOrderResultList[i].verifiedOnDateTime), false), isLast: i == (labOrderResultList.length - 1)), Utils.tableColumnValue(labOrderResultList[i].resultValue, isLast: i == (labOrderResultList.length - 1)), ], ), diff --git a/lib/widgets/data_display/medical/doctor_card.dart b/lib/widgets/data_display/medical/doctor_card.dart index b4f6a92a..74031ce1 100644 --- a/lib/widgets/data_display/medical/doctor_card.dart +++ b/lib/widgets/data_display/medical/doctor_card.dart @@ -46,9 +46,11 @@ class DoctorCard extends StatelessWidget { this.remainingTimeInMinutes, this.isParentAppointment = false}); + ProjectViewModel projectViewModel; + @override Widget build(BuildContext context) { - ProjectViewModel projectViewModel = Provider.of(context); + projectViewModel = Provider.of(context); return Container( height: 120, decoration: BoxDecoration( @@ -127,7 +129,7 @@ class DoctorCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( - DateUtil.formatDateToDate(date), + DateUtil.formatDateToDate(date, projectViewModel.isArabic), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), Text( @@ -155,11 +157,11 @@ class DoctorCard extends StatelessWidget { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - myRichText(isSortByClinic ? TranslationBase.of(context).hospital : TranslationBase.of(context).clinic + ":", subName), + myRichText(isSortByClinic ? TranslationBase.of(context).hospital : TranslationBase.of(context).clinic + ":", subName, projectViewModel.isArabic), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - if (rating == null) myRichText(TranslationBase.of(context).invoiceNo, billNo ?? ""), + if (rating == null) myRichText(TranslationBase.of(context).invoiceNo, billNo ?? "", projectViewModel.isArabic), if (rating != null) Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -216,13 +218,13 @@ class DoctorCard extends StatelessWidget { } // todo 'sikander' move this widget to separate file -Widget myRichText(String title, String value) { +Widget myRichText(String title, String value, bool isArabic) { return RichText( maxLines: 1, - text: TextSpan(text: title, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10), children: [ + text: TextSpan(text: title, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff575757), letterSpacing: -0.4, height: 18 / 10), children: [ TextSpan( text: " $value", - style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, fontFamily: isArabic ? 'Cairo' : 'Poppins', color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ) ]), ); diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 4f817d21..f5e633ec 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -154,6 +154,7 @@ class _AppDrawerState extends State { Padding(child: Image.asset('assets/images/lang.png'), padding: EdgeInsets.all(3)), isImageIcon: true, bottomLine: false, + projectProvider: projectProvider, ), onTap: () { sharedPref.setBool(IS_ROBOT_INIT, null); @@ -181,6 +182,7 @@ class _AppDrawerState extends State { iconColor: Theme.of(context).textTheme.bodyText1.color, sideArrow: true, letterSpacing: -0.84, + projectProvider: projectProvider ), onTap: () { Navigator.of(context).pop(); @@ -312,6 +314,7 @@ class _AppDrawerState extends State { letterSpacing: -0.84, fontSize: 14, fontHeight: projectProvider.isArabic ? 1 : 0.8, + projectProvider: projectProvider ), onTap: () { sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL); @@ -333,6 +336,7 @@ class _AppDrawerState extends State { bottomLine: false, letterSpacing: -0.84, fontSize: 14, + projectProvider: projectProvider, count: notificationCount != null ? new Container( padding: EdgeInsets.all(4), @@ -374,6 +378,7 @@ class _AppDrawerState extends State { bottomLine: false, letterSpacing: -0.84, fontSize: 14, + projectProvider: projectProvider ), onTap: () { Navigator.of(context).pushNamed( @@ -388,6 +393,7 @@ class _AppDrawerState extends State { bottomLine: false, letterSpacing: -0.84, fontSize: 14, + projectProvider: projectProvider ), onTap: () { if (Platform.isIOS) { @@ -405,6 +411,7 @@ class _AppDrawerState extends State { bottomLine: false, letterSpacing: -0.84, fontSize: 14, + projectProvider: projectProvider ), onTap: () { logout(); @@ -420,6 +427,7 @@ class _AppDrawerState extends State { letterSpacing: -0.84, fontSize: 14, bottomLine: false, + projectProvider: projectProvider ), onTap: () { login(); diff --git a/lib/widgets/drawer/drawer_item_widget.dart b/lib/widgets/drawer/drawer_item_widget.dart index 18c24ba6..ea75455c 100644 --- a/lib/widgets/drawer/drawer_item_widget.dart +++ b/lib/widgets/drawer/drawer_item_widget.dart @@ -1,6 +1,7 @@ import 'dart:ui'; import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/material.dart'; @@ -19,9 +20,10 @@ class DrawerItem extends StatefulWidget { final double fontHeight; final double letterSpacing; final double fontSize; + final ProjectViewModel projectProvider; DrawerItem(this.title, this.icon, - {this.fontSize, this.letterSpacing, this.textColor, this.iconColor, this.subTitle = '', this.bottomLine = true, this.count, this.sideArrow = false, this.isImageIcon = false, this.fontHeight}); + {this.fontSize, this.letterSpacing, this.textColor, this.iconColor, this.subTitle = '', this.bottomLine = true, this.count, this.sideArrow = false, this.isImageIcon = false, this.fontHeight, this.projectProvider}); @override _DrawerItemState createState() => _DrawerItemState(); @@ -76,7 +78,7 @@ class _DrawerItemState extends State { ) : SizedBox(), ])), - widget.sideArrow == true ? Expanded(flex: 1, child: Icon(Icons.keyboard_arrow_right, color: Colors.black)) : Expanded(flex: 1, child: SizedBox()), + widget.sideArrow == true ? Expanded(flex: 1, child: Icon(widget.projectProvider.isArabic ? Icons.keyboard_arrow_left : Icons.keyboard_arrow_right, color: Colors.black)) : Expanded(flex: 1, child: SizedBox()), ], ), )); diff --git a/lib/widgets/new_design/doctor_header.dart b/lib/widgets/new_design/doctor_header.dart index 8e4a7c9a..85509abe 100644 --- a/lib/widgets/new_design/doctor_header.dart +++ b/lib/widgets/new_design/doctor_header.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -8,6 +9,7 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_send_email_dialog.d import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; class DoctorHeader extends StatelessWidget { @@ -30,10 +32,12 @@ class DoctorHeader extends StatelessWidget { this.onRatingAndReviewTap}) : super(key: key); + ProjectViewModel projectViewModel; + @override Widget build(BuildContext context) { String _speciality = (headerModel?.speciality ?? []).length > 0 ? headerModel.speciality.first : ""; - + projectViewModel = Provider.of(context); return Container( color: Colors.white, child: Column( @@ -62,8 +66,8 @@ class DoctorHeader extends StatelessWidget { _speciality, style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.48, height: 18 / 12), ), - headerModel.invoiceNo.isNotEmpty ? myRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo) : Container(), - myRichText(TranslationBase.of(context).branch, headerModel.projectName), + headerModel.invoiceNo.isNotEmpty ? myRichText(TranslationBase.of(context).invoiceNo + ":", headerModel.invoiceNo, projectViewModel.isArabic) : Container(), + myRichText(TranslationBase.of(context).branch, headerModel.projectName, projectViewModel.isArabic), ], ), ), @@ -73,7 +77,7 @@ class DoctorHeader extends StatelessWidget { children: [ if (headerModel.date != null) Text( - DateUtil.formatDateToDate(headerModel.date), + DateUtil.formatDateToDate(headerModel.date, projectViewModel.isArabic), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), ), if (headerModel.time != null) @@ -84,7 +88,7 @@ class DoctorHeader extends StatelessWidget { if (headerModel?.nationalityFlagURL != null) Padding( padding: const EdgeInsets.only(top: 8.0), - child: Image.network(headerModel.nationalityFlagURL ?? "", height: 16), + child: Image.network(headerModel.nationalityFlagURL ?? "", height: 20), ), ], ) @@ -139,7 +143,7 @@ class DoctorHeader extends StatelessWidget { }, child: Container( padding: EdgeInsets.only(top: 10, bottom: 10, right: 21, left: 15), - decoration: BoxDecoration(color: Color(0XFFD02127), borderRadius: BorderRadius.only(topLeft: Radius.circular(10))), + decoration: BoxDecoration(color: Color(0XFFD02127), borderRadius: projectViewModel.isArabic ? BorderRadius.only(topRight: Radius.circular(10)) : BorderRadius.only(topLeft: Radius.circular(10))), child: Row( mainAxisSize: MainAxisSize.min, children: [ @@ -147,7 +151,7 @@ class DoctorHeader extends StatelessWidget { SizedBox(width: 6), Text( buttonTitle == null ? TranslationBase.of(context).sendEmail : buttonTitle, - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.64, height: 25 / 16), + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Colors.white, letterSpacing: -0.64, height: 1), ), ], ), From 1db8c96ed7b05d52dd766db431a9f86d15d6cfb7 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 9 Sep 2021 09:41:00 +0300 Subject: [PATCH 4/9] title improvement for book appointment clinic search. --- lib/pages/BookAppointment/Search.dart | 64 +++++++++--------- lib/pages/BookAppointment/SearchResults.dart | 67 ++++++++----------- .../components/SearchByClinic.dart | 41 ++++++------ .../others/app_expandable_notifier.dart | 26 ++++--- 4 files changed, 102 insertions(+), 96 deletions(-) diff --git a/lib/pages/BookAppointment/Search.dart b/lib/pages/BookAppointment/Search.dart index b4e8d43e..497d5388 100644 --- a/lib/pages/BookAppointment/Search.dart +++ b/lib/pages/BookAppointment/Search.dart @@ -32,36 +32,40 @@ class _SearchState extends State with TickerProviderStateMixin { Widget build(BuildContext context) { AppGlobal.context = context; return AppScaffold( - isShowAppBar: false, - isShowDecPage: false, - appBarTitle: TranslationBase.of(context).bookAppo, - backgroundColor: Color(0xFFF7F7F7), - body: Container( - child: Column( - children: [ - TabBar( - tabs: [ - Tab(child: Text(TranslationBase.of(context).clinicName, style: TextStyle(color: Colors.black))), - Tab( - child: Text(TranslationBase.of(context).doctorName, style: TextStyle(color: Colors.black)), - ) - ], - controller: _tabController, - ), - Expanded( - child: new TabBarView( - physics: NeverScrollableScrollPhysics(), - children: [ - SearchByClinic( - clnicIds: widget.clnicIds, - ), - SearchByDoctor() - ], - controller: _tabController, - ), - ) - ], + isShowAppBar: false, + isShowDecPage: false, + appBarTitle: TranslationBase.of(context).bookAppo, + backgroundColor: Color(0xFFF7F7F7), + body: Column( + children: [ + TabBar( + controller: _tabController, + indicatorWeight: 3.0, + indicatorSize: TabBarIndicatorSize.tab, + labelColor: Color(0xff2B353E), + unselectedLabelColor: Color(0xff575757), + labelPadding: EdgeInsets.only(top: 15, bottom: 13, left: 20, right: 20), + labelStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + unselectedLabelStyle: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + tabs: [Text(TranslationBase.of(context).clinicName), Text(TranslationBase.of(context).doctorName)], ), - )); + Expanded( + child: TabBarView( + physics: NeverScrollableScrollPhysics(), + children: [SearchByClinic(clnicIds: widget.clnicIds), SearchByDoctor()], + controller: _tabController, + ), + ) + ], + ), + ); } } diff --git a/lib/pages/BookAppointment/SearchResults.dart b/lib/pages/BookAppointment/SearchResults.dart index f80398f5..76fe2f46 100644 --- a/lib/pages/BookAppointment/SearchResults.dart +++ b/lib/pages/BookAppointment/SearchResults.dart @@ -31,45 +31,36 @@ class _SearchResultsState extends State { isShowAppBar: true, showNewAppBarTitle: true, showNewAppBar: true, - backgroundColor: CustomColors.appBackgroudGreyColor, - body: SingleChildScrollView( + backgroundColor: CustomColors.appBackgroudGrey2Color, + body: ListView.separated( physics: BouncingScrollPhysics(), - child: Column( - children: [ - ListView.separated( - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - // padding: EdgeInsets.only(left: 21, right: 21), - separatorBuilder: (context, index) { - return Container( - height: 1, - margin: EdgeInsets.only(left: 21, right: 21), - color: Color(0xffD9D9D9), - ); - }, - itemBuilder: (context, index) { - return AppExpandableNotifier( - title: - widget.patientDoctorAppointmentListHospital[index].filterName + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km, - bodyWidget: ListView.separated( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21), - itemBuilder: (context, _index) { - //widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index].speciality = null; - return DoctorView( - doctor: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index], - isLiveCareAppointment: widget.isLiveCareAppointment, - ); - }, - separatorBuilder: (context, index) => SizedBox(height: 14), - itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.length), - ); - }, - itemCount: widget.patientDoctorAppointmentListHospital.length, - ), - ], - ), + separatorBuilder: (context, index) { + return Container( + height: 1, + margin: EdgeInsets.only(left: 21, right: 21), + color: Color(0xffD9D9D9), + ); + }, + itemBuilder: (context, index) { + return AppExpandableNotifier( + title: widget.patientDoctorAppointmentListHospital[index].filterName + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km, + isTitleSingleLine: false, + bodyWidget: ListView.separated( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.only(bottom: 14, top: 14, left: 21, right: 21), + itemBuilder: (context, _index) { + //widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index].speciality = null; + return DoctorView( + doctor: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index], + isLiveCareAppointment: widget.isLiveCareAppointment, + ); + }, + separatorBuilder: (context, index) => SizedBox(height: 14), + itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.length), + ); + }, + itemCount: widget.patientDoctorAppointmentListHospital.length, ), ); } diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 3eab535c..067c9d73 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -107,27 +107,28 @@ class _SearchByClinicState extends State { child: Row( children: [ Flexible( - child: Row( - children: [ - Radio( - value: TranslationBase.of(context).female, - groupValue: radioValue, - onChanged: (v) { - setState(() { - radioValue = v; - }); - }, - ), - Text( - TranslationBase.of(context).female, - style: TextStyle( - fontSize: 12, - letterSpacing: -0.48, - fontWeight: FontWeight.w600, + child: Row( + children: [ + Radio( + value: TranslationBase.of(context).female, + groupValue: radioValue, + onChanged: (v) { + setState(() { + radioValue = v; + }); + }, ), - ), - ], - )), + Text( + TranslationBase.of(context).female, + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + ), + ), + ], + ), + ), Flexible( child: Row( children: [ diff --git a/lib/widgets/others/app_expandable_notifier.dart b/lib/widgets/others/app_expandable_notifier.dart index c890dca6..0df1d9dc 100644 --- a/lib/widgets/others/app_expandable_notifier.dart +++ b/lib/widgets/others/app_expandable_notifier.dart @@ -18,7 +18,8 @@ class AppExpandableNotifier extends StatefulWidget { final bool isExpand; bool expandFlag = false; var controller = new ExpandableController(); - AppExpandableNotifier({this.headerWidget, this.bodyWidget, this.title, this.collapsed, this.isExpand = false}); + bool isTitleSingleLine; + AppExpandableNotifier({this.headerWidget, this.bodyWidget, this.title, this.collapsed, this.isExpand = false, this.isTitleSingleLine = true}); _AppExpandableNotifier createState() => _AppExpandableNotifier(); } @@ -48,6 +49,8 @@ class _AppExpandableNotifier extends State { _subTitle = _subTitle.toLowerCase().capitalizeFirstofEach; _title = _title.toLowerCase().capitalizeFirstofEach; } + print("_title:$_title"); + print("_subTitle:$_subTitle"); return ExpandableNotifier( child: Column( children: [ @@ -66,7 +69,7 @@ class _AppExpandableNotifier extends State { header: Padding( padding: const EdgeInsets.only(top: 12, bottom: 12, left: 21, right: 21), child: InkWell( - onTap: (){ + onTap: () { setState(() { widget.expandFlag = !widget.expandFlag; widget.controller.expanded = widget.expandFlag; @@ -80,16 +83,23 @@ class _AppExpandableNotifier extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (_mainTitle.isNotEmpty) + if (_mainTitle.isNotEmpty && widget.isTitleSingleLine) Text( _mainTitle, style: TextStyle(fontSize: 20, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 1), ), - // Text( - // _subTitle, - // maxLines: 1, - // style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24), - // ), + if (_title.isNotEmpty && !widget.isTitleSingleLine) + Text( + _title, + maxLines: 1, + style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: Color(0xff2E303A), letterSpacing: -1.44, height: 25 / 24), + ), + if (_subTitle.isNotEmpty && !widget.isTitleSingleLine) + Text( + _subTitle, + maxLines: 1, + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.72, height: 23 / 12), + ), ], ), ), From a234618df8042824222be09980f20e6e829ddb2e Mon Sep 17 00:00:00 2001 From: "Mirza.Shafique" Date: Thu, 9 Sep 2021 11:34:11 +0300 Subject: [PATCH 5/9] Update, Insurance card and My Balance Design --- .../widgets/AppointmentActions.dart | 2 +- lib/pages/ToDoList/payment_method_select.dart | 99 ++- .../AttachInsuranceCardImageDialog.dart | 86 ++- .../insurance/insurance_card_screen.dart | 258 ++++---- .../insurance_card_update_details.dart | 620 ++++++++++-------- lib/pages/insurance/insurance_details.dart | 4 + lib/pages/insurance/insurance_page.dart | 301 +++------ .../insurance/insurance_update_screen.dart | 208 +++--- .../medical/balance/advance_payment_page.dart | 124 ++-- .../medical/balance/confirm_payment_page.dart | 130 ++-- .../dialogs/SelectBeneficiaryDialog.dart | 52 +- .../balance/dialogs/SelectHospitalDialog.dart | 35 +- .../dialogs/SelectPatientFamilyDialog.dart | 40 +- .../dialogs/SelectPatientInfoDialog.dart | 41 +- .../medical/balance/my_balance_page.dart | 62 +- lib/pages/medical/balance/new_text_Field.dart | 4 +- lib/widgets/buttons/secondary_button.dart | 6 +- lib/widgets/transitions/fade_page.dart | 48 +- 18 files changed, 1099 insertions(+), 1021 deletions(-) diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart index 6fd63f56..9792b4b9 100644 --- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart +++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart @@ -654,7 +654,7 @@ class _AppointmentActionsState extends State { page: VitalSignDetailsScreen( appointmentNo: appoNo, projectID: projectID, - isNotOneAppointment: false, + isNotOneAppointment: true, ))); } diff --git a/lib/pages/ToDoList/payment_method_select.dart b/lib/pages/ToDoList/payment_method_select.dart index 9a22eada..18ec666e 100644 --- a/lib/pages/ToDoList/payment_method_select.dart +++ b/lib/pages/ToDoList/payment_method_select.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; @@ -16,6 +17,9 @@ class _PaymentMethodState extends State { return AppScaffold( appBarTitle: TranslationBase.of(context).paymentMethod, isShowAppBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, + backgroundColor: CustomColors.appBackgroudGreyColor, body: Container( margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), child: SingleChildScrollView( @@ -27,9 +31,7 @@ class _PaymentMethodState extends State { Container( margin: EdgeInsets.fromLTRB(0.0, 15.0, 0.0, 0.0), alignment: Alignment.center, - child: Text(TranslationBase.of(context).selectPaymentOption, - style: TextStyle( - fontSize: 26.0, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).selectPaymentOption, style: TextStyle(fontSize: 26.0, fontWeight: FontWeight.bold)), ), Container( margin: EdgeInsets.only(top: 25.0), @@ -48,18 +50,13 @@ class _PaymentMethodState extends State { color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: selectedPaymentMethod == "MADA" - ? BorderSide( - color: Colors.green, width: 5.0) - : BorderSide( - color: Colors.transparent, width: 0.0), + side: selectedPaymentMethod == "MADA" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset( - "assets/images/new-design/mada.png"), + child: Image.asset("assets/images/new-design/mada.png"), ), ), ), @@ -77,18 +74,13 @@ class _PaymentMethodState extends State { color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: selectedPaymentMethod == "VISA" - ? BorderSide( - color: Colors.green, width: 5.0) - : BorderSide( - color: Colors.transparent, width: 0.0), + side: selectedPaymentMethod == "VISA" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset( - "assets/images/new-design/visa.png"), + child: Image.asset("assets/images/new-design/visa.png"), ), ), ), @@ -114,18 +106,13 @@ class _PaymentMethodState extends State { color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: selectedPaymentMethod == "MASTERCARD" - ? BorderSide( - color: Colors.green, width: 5.0) - : BorderSide( - color: Colors.transparent, width: 0.0), + side: selectedPaymentMethod == "MASTERCARD" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset( - "assets/images/new-design/mastercard.png"), + child: Image.asset("assets/images/new-design/mastercard.png"), ), ), ), @@ -143,18 +130,13 @@ class _PaymentMethodState extends State { color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: selectedPaymentMethod == "Installment" - ? BorderSide( - color: Colors.green, width: 5.0) - : BorderSide( - color: Colors.transparent, width: 0.0), + side: selectedPaymentMethod == "Installment" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset( - "assets/images/new-design/installment.png"), + child: Image.asset("assets/images/new-design/installment.png"), ), ), ), @@ -180,17 +162,12 @@ class _PaymentMethodState extends State { color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), - side: selectedPaymentMethod == "ApplePay" - ? BorderSide( - color: Colors.green, width: 5.0) - : BorderSide( - color: Colors.transparent, width: 0.0), + side: selectedPaymentMethod == "ApplePay" ? BorderSide(color: Colors.green, width: 5.0) : BorderSide(color: Colors.transparent, width: 0.0), ), child: Container( height: 120.0, padding: EdgeInsets.all(20.0), - child: SvgPicture.asset( - "assets/images/new-design/applepay.svg"), + child: SvgPicture.asset("assets/images/new-design/applepay.svg"), ), ), ), @@ -211,25 +188,33 @@ class _PaymentMethodState extends State { ), ), bottomSheet: Container( - width: MediaQuery.of(context).size.width, - height: 50.0, - margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0), - child: ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.height * 0.1, - height: 45.0, - child: RaisedButton( - color: new Color(0xFF60686b), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: new Color(0xFFbcc2c4), - onPressed: () { - Navigator.pop(context, selectedPaymentMethod); - }, - child: Text(TranslationBase.of(context).confirm, - style: TextStyle(fontSize: 18.0)), + padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0), + color: Colors.white, + child: Container( + width: MediaQuery.of(context).size.width, + height: 50.0, + color: Colors.white, + // margin: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 20.0), + child: ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.height * 0.1, + height: 45.0, + child: RaisedButton( + color: CustomColors.accentColor, + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), + onPressed: () { + Navigator.pop(context, selectedPaymentMethod); + }, + child: Text(TranslationBase.of(context).confirm.toUpperCase(), + style: TextStyle( + fontSize: 14.0, + fontWeight: FontWeight.w600, + )), + ), ), ), ), diff --git a/lib/pages/insurance/AttachInsuranceCardImageDialog.dart b/lib/pages/insurance/AttachInsuranceCardImageDialog.dart index 20e17593..adceb0e8 100644 --- a/lib/pages/insurance/AttachInsuranceCardImageDialog.dart +++ b/lib/pages/insurance/AttachInsuranceCardImageDialog.dart @@ -10,17 +10,13 @@ class AttachInsuranceCardImageDialog extends StatefulWidget { final String fileNo; final Function(File file, String image) image; - const AttachInsuranceCardImageDialog( - {Key key, this.name, this.fileNo, this.image}) - : super(key: key); + const AttachInsuranceCardImageDialog({Key key, this.name, this.fileNo, this.image}) : super(key: key); @override - _AttachInsuranceCardImageDialogState createState() => - _AttachInsuranceCardImageDialogState(); + _AttachInsuranceCardImageDialogState createState() => _AttachInsuranceCardImageDialogState(); } -class _AttachInsuranceCardImageDialogState - extends State { +class _AttachInsuranceCardImageDialogState extends State { @override void initState() { super.initState(); @@ -36,19 +32,41 @@ class _AttachInsuranceCardImageDialogState Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Texts(TranslationBase.of(context).attachInsuraceImage), + Text( + TranslationBase.of(context).attachInsuraceImage, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + ), Divider(), - Texts(widget.name), + Padding( + padding: const EdgeInsets.only(left: 8, right: 8), + child: Text( + widget.name, + style: TextStyle( + fontSize: 14, + letterSpacing: -0.48, + ), + ), + ), SizedBox( height: 3, ), - Texts(TranslationBase.of(context).fileNo + " " + widget.fileNo), + Text( + TranslationBase.of(context).fileNo + " " + widget.fileNo, + style: TextStyle( + fontSize: 14, + letterSpacing: -0.48, + ), + ), SizedBox( height: 5.0, ), InkWell( onTap: () { - ImageOptions.showImageOptions(context, (String image,File file) { + ImageOptions.showImageOptions(context, (String image, File file) { setState(() { this.image = image; this.file = file; @@ -57,18 +75,18 @@ class _AttachInsuranceCardImageDialogState }, child: image == null ? Padding( - padding: const EdgeInsets.all(18.0), - child: Container( + padding: const EdgeInsets.all(18.0), + child: Container( width: double.maxFinite, height: 250, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(2), - border: Border.all(color: Colors.grey, width: 1.5)), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(2), border: Border.all(color: Colors.grey, width: 1.5)), child: Column( crossAxisAlignment: CrossAxisAlignment.center, - // mainAxisAlignment: MainAxisAlignment., + // mainAxisAlignment: MainAxisAlignment., children: [ - SizedBox(height: 25,), + SizedBox( + height: 25, + ), Icon( Icons.camera_enhance_rounded, size: 85, @@ -77,17 +95,24 @@ class _AttachInsuranceCardImageDialogState mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.attach_file), - Texts(TranslationBase.of(context).selectAttachment.toUpperCase()) + Text( + TranslationBase.of(context).selectAttachment.toUpperCase(), + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + ), + ) ], ), ], ), ), - ) + ) : Image.file( file, fit: BoxFit.fill, - height: 250, + height: 250, ), ), SizedBox( @@ -106,9 +131,14 @@ class _AttachInsuranceCardImageDialogState padding: const EdgeInsets.all(8.0), child: Container( child: Center( - child: Texts( + child: Text( TranslationBase.of(context).cancel.toUpperCase(), - color: Colors.red, + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + color: Colors.red, + ), ), ), ), @@ -130,9 +160,13 @@ class _AttachInsuranceCardImageDialogState child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts( - TranslationBase.of(context).ok, - fontWeight: FontWeight.w400, + child: Text( + TranslationBase.of(context).ok.toUpperCase(), + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + ), )), ), ), diff --git a/lib/pages/insurance/insurance_card_screen.dart b/lib/pages/insurance/insurance_card_screen.dart index cf58e815..e756e59c 100644 --- a/lib/pages/insurance/insurance_card_screen.dart +++ b/lib/pages/insurance/insurance_card_screen.dart @@ -4,9 +4,11 @@ import 'package:diplomaticquarterapp/core/service/insurance_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -45,142 +47,162 @@ class _InsuranceCardState extends State { description: TranslationBase.of(context).infoInsuranceCards, infoList: TranslationBase.of(context).infoInsuranceCardsPoints, imagesInfo: imagesInfo, - appBarIcons: [ - IconButton( - padding: EdgeInsets.zero, - icon: Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8), - ), - margin: EdgeInsets.only(right: 8), - padding: EdgeInsets.only(right: 4, left: 4), - child: Image.asset( - 'assets/images/medical/insurance_update_icon_.png', - height: SizeConfig.heightMultiplier * 5, - width: SizeConfig.heightMultiplier * 5, - ), + showNewAppBar: true, + showNewAppBarTitle: true, + backgroundColor: CustomColors.appBackgroudGreyColor, + floatingActionButton: FloatingActionButton( + onPressed: () { + Navigator.push(context, FadePage(page: InsuranceUpdate())); + }, + backgroundColor: CustomColors.accentColor, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Image.asset( + 'assets/images/medical/insurance_update_icon_.png', + color: Colors.white, ), - onPressed: () { - Navigator.push(context, FadePage(page: InsuranceUpdate())); - }, ), - ], + ), body: Container( - margin: EdgeInsets.only(left: SizeConfig.screenWidth * 0.004, right: SizeConfig.screenWidth * 0.004, top: SizeConfig.screenWidth * 0.04), - child: ListView.builder( - itemCount: model.insurance == null ? 0 : model.insurance.length, - itemBuilder: (BuildContext context, int index) { - return RoundedContainer( - backgroundColor: Colors.white, + child: ListView.separated( + itemCount: model.insurance == null ? 0 : model.insurance.length, + itemBuilder: (BuildContext context, int index) { + return Container( + width: double.infinity, + padding: EdgeInsets.only( + left: 10, + right: 10, + top: index == 0 ? 10 : 0, + bottom: index == model.insurance.length - 1 ? 100 : 0, + ), + child: Card( + shape: cardRadius(12), + elevation: 2, child: Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.all(12.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ExpansionTile( - title: Container( - height: 65.0, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.symmetric(vertical: 15.0), - child: Texts( - model.insurance[index].groupName, - ), + children: [ + Text( + model.insurance[index].groupName, + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, letterSpacing: -0.64), + ), + mHeight(8), + Text( + TranslationBase.of(context).companyName + model.insurance[index].companyName, + style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.48), + ), + Divider( + thickness: 2, + color: Colors.black, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + TranslationBase.of(context).category, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + Text( + model.insurance[index].subCategoryDesc, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), ), ], ), - ), - children: [ - Container( - padding: EdgeInsets.all(14), - width: double.infinity, - decoration: BoxDecoration(shape: BoxShape.rectangle, border: Border.all(color: Colors.grey, width: 0.2), borderRadius: BorderRadius.all(Radius.circular(2)), boxShadow: [ - BoxShadow( - color: Colors.white70, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + TranslationBase.of(context).expirationDate, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), ), - ]), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - TranslationBase.of(context).companyName + model.insurance[index].companyName, - fontSize: 20.0, - fontWeight: FontWeight.w700, + Text( + convertDateFormat( + model.insurance[index].cardValidTo, ), - Divider( - color: Colors.black, - height: 25.0, - thickness: 0.5, - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [Texts(TranslationBase.of(context).category, fontSize: 18.5), Texts(model.insurance[index].subCategoryDesc, fontSize: 18.5)], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Texts(TranslationBase.of(context).expirationDate, fontSize: 18.5), - Texts( - convertDateFormat( - model.insurance[index].cardValidTo, - ), - fontSize: 18.5), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Texts(TranslationBase.of(context).status + ": ", fontSize: 18.5), - model.insurance[index].isActive == true - ? Texts(TranslationBase.of(context).activeInsurence, color: Colors.green, fontWeight: FontWeight.w900, fontSize: 17.9) - : Texts(TranslationBase.of(context).notActive, color: Colors.red, fontWeight: FontWeight.w900, fontSize: 17.9) - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [Texts(TranslationBase.of(context).patientCard, fontSize: 18.5), Texts(model.insurance[index].patientCardID, fontSize: 18.5)], - ), - Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts( - TranslationBase.of(context).policyNumber, - fontSize: 18.5, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + TranslationBase.of(context).status + ": ", + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + model.insurance[index].isActive == true + ? Text( + TranslationBase.of(context).activeInsurence, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Colors.green), + ) + : Text( + TranslationBase.of(context).notActive, + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.w600, + color: Colors.red, ), - Texts( - model.insurance[index].insurancePolicyNumber, - fontSize: 18.5, - ) - ]), - ], - ), - SizedBox( - height: 14.5, - ), - if (model.insurance[index].isActive == true) - Container( - color: Colors.transparent, - child: SecondaryButton( - onTap: () => {getDetails(model.insurance[index])}, - label: TranslationBase.of(context).seeDetails, - textColor: Colors.white, - ), - width: double.infinity, - ), - ], - ), + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + TranslationBase.of(context).patientCard, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + Text( + model.insurance[index].patientCardID, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + TranslationBase.of(context).policyNumber, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ), + Text( + model.insurance[index].insurancePolicyNumber, + style: TextStyle(fontSize: 10, fontWeight: FontWeight.w600, color: Color(0xFF575757)), + ) + ], ), ], ), + if (model.insurance[index].isActive == true) + SizedBox( + height: 8.5, + ), + if (model.insurance[index].isActive == true) + Container( + color: Colors.transparent, + child: SecondaryButton( + onTap: () => { + getDetails(model.insurance[index]), + }, + label: TranslationBase.of(context).seeDetails, + textColor: Colors.white, + ), + width: double.infinity, + ), ], ), ), - ); - }), + ), + ); + }, + separatorBuilder: (BuildContext context, int index) { + return mHeight(8); + }, + ), ), ), ); diff --git a/lib/pages/insurance/insurance_card_update_details.dart b/lib/pages/insurance/insurance_card_update_details.dart index 87035e0c..af7dbb44 100644 --- a/lib/pages/insurance/insurance_card_update_details.dart +++ b/lib/pages/insurance/insurance_card_update_details.dart @@ -3,9 +3,11 @@ import 'package:diplomaticquarterapp/core/model/insurance/Insurance_card_details import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/theme/colors.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/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -20,13 +22,7 @@ class InsuranceCardUpdateDetails extends StatelessWidget { final int patientID; final String name; - const InsuranceCardUpdateDetails( - {Key key, - this.insuranceCardDetailsModel, - this.patientIdentificationID, - this.patientID, - this.name}) - : super(key: key); + const InsuranceCardUpdateDetails({Key key, this.insuranceCardDetailsModel, this.patientIdentificationID, this.patientID, this.name}) : super(key: key); @override Widget build(BuildContext context) { @@ -36,290 +32,375 @@ class InsuranceCardUpdateDetails extends StatelessWidget { isShowAppBar: true, isShowDecPage: false, appBarTitle: TranslationBase.of(context).cardDetail, - body: SingleChildScrollView( - child: Column( - children: [ - ...List.generate( - insuranceCardDetailsModel.length, - (index) => Padding( - padding: const EdgeInsets.all(8.0), - child: Container( - width: double.maxFinite, - margin: EdgeInsets.only(left: 8, right: 8, top: 8), - height: projectViewModel.isArabic ? 320 : 240, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(25), - color: Color(0xff515B5D), - ), - child: Padding( - padding: const EdgeInsets.all(12.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - insuranceCardDetailsModel[index].memberID, - textScaleFactor: 2.1, - style: TextStyle( - color: Colors.white, - letterSpacing: 8.0, - fontWeight: FontWeight.w400, - fontSize: 15), - ), - SizedBox( - height: 5, - ), - Texts( - insuranceCardDetailsModel[index].companyName, - fontSize: 14, - color: Colors.white, - ), - SizedBox( - height: 25, - ), - Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - TranslationBase.of(context).policyHolder, - color: Colors.white, - fontSize: 14, - ), - Texts( - insuranceCardDetailsModel[index] - .memberName, - color: Colors.white, - fontSize: 14, - ), - ], - ), - ), - Expanded( - child: Column( - children: [ - Texts(TranslationBase.of(context).policyNo, - color: Colors.white), - Texts( - insuranceCardDetailsModel[index] - .policyNumber, - color: Colors.white), - ], - ), - ), - ], - ), - SizedBox( - height: 25, - ), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( + showNewAppBar: true, + showNewAppBarTitle: true, + backgroundColor: CustomColors.appBackgroudGreyColor, + body: Column( + children: [ + Expanded( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + ListView.separated( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (context, index) { + return Container( + width: double.maxFinite, + // height: projectViewModel.isArabic ? 320 : 240, + // decoration: containerRadius(CustomColors.accentColor, 12), + child: Card( + shape: cardRadius(12), + color: CustomColors.accentColor, + elevation: 4, + child: Padding( + padding: const EdgeInsets.all(12.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( - TranslationBase.of(context) - .expiryDateTitle, - color: Colors.white, - fontSize: 12, + Text( + insuranceCardDetailsModel[index].memberID, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 16, + ), ), - Texts( - insuranceCardDetailsModel[index].dOB, - color: Colors.white, - fontSize: 12, + SizedBox( + height: 2, ), - ], - ), - ), - Expanded( - child: Column( - children: [ - Texts( - TranslationBase.of(context).classTitle, - color: Colors.white, - fontSize: 12, + Text( + insuranceCardDetailsModel[index].companyName, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 14, + ), ), - Texts( - insuranceCardDetailsModel[index] - .subCategory, - color: Colors.white, - fontSize: 12, + SizedBox( + height: 14, ), - ], - ), - ), - Expanded( - child: Column( - children: [ - Texts( - TranslationBase.of(context).approval, - color: Colors.white, - fontSize: 12, + Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + TranslationBase.of(context).policyHolder, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 12, + ), + ), + Text( + insuranceCardDetailsModel[index].memberName, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontSize: 12, + ), + ), + ], + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + TranslationBase.of(context).policyNo, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 12, + ), + ), + Text( + insuranceCardDetailsModel[index].policyNumber, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontSize: 12, + ), + ), + ], + ), + ], ), - Texts( - insuranceCardDetailsModel[index] - .approvalLimit - .toString(), - color: Colors.white, - fontSize: 12, + SizedBox( + height: 14, ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + TranslationBase.of(context).expiryDateTitle, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 12, + ), + ), + Text( + insuranceCardDetailsModel[index].effectiveTo, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontSize: 12, + ), + ), + ], + ), + ), + Expanded( + child: Column( + children: [ + Text( + TranslationBase.of(context).classTitle, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 12, + ), + ), + Text( + insuranceCardDetailsModel[index].subCategory, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontSize: 12, + ), + ), + ], + ), + ), + Expanded( + child: Column( + children: [ + Text( + TranslationBase.of(context).approval, + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + fontSize: 12, + ), + ), + Text( + insuranceCardDetailsModel[index].approvalLimit.toString(), + style: TextStyle( + color: Colors.white, + letterSpacing: -0.48, + fontSize: 12, + ), + ), + ], + ), + ), + ], + ) ], ), ), - ], - ) - ], + ), + ); + }, + separatorBuilder: (context, index) { + return mHeight(12); + }, + itemCount: insuranceCardDetailsModel.length, ), - ), - ), - ), - ), - if(insuranceCardDetailsModel.isEmpty) - Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - margin: EdgeInsets.all(10.0), - child: Card( - margin: EdgeInsets.fromLTRB( - 8.0, 16.0, 8.0, 8.0), - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(10), - ), - child: Container( - width: MediaQuery.of(context).size.width, - padding: EdgeInsets.all(10.0), - child: Row( - crossAxisAlignment: - CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - flex: 3, + if (insuranceCardDetailsModel.isEmpty) + Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + child: Card( + color: Colors.white, + shape: cardRadius(12), child: Container( - margin: EdgeInsets.only( - top: 2.0, - left: 10.0, - right: 20.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment - .start, + width: MediaQuery.of(context).size.width, + padding: EdgeInsets.all(10.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, children: [ - Texts( - name, - fontSize: 14, - color: Colors.black, - fontWeight: - FontWeight.w500, - ), - SizedBox( - height: 8, + Expanded( + child: Container( + margin: EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + name, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Text( + TranslationBase.of(context).fileno + ": " + patientID.toString(), + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ) + ], + ), + ), ), - Texts( - TranslationBase.of( - context) - .fileno + - ": " +patientID.toString(), - fontSize: 14, - color: Colors.black, - fontWeight: - FontWeight.w500, - ) ], ), ), ), - ], - ), - ), - ), - ), - SizedBox(height: 150,), - Image.asset('assets/images/no-data-found.png',width: 80,height: 80,), - SizedBox(height: 8,), - Texts(TranslationBase.of(context).noDataAvailable) - ], - ) - ], - ), - ), - bottomSheet: Container( - width: double.infinity, - height:insuranceCardDetailsModel.isEmpty? MediaQuery.of(context).size.height * 0.14:MediaQuery.of(context).size.height * 0.21, - child: Container( - margin: EdgeInsets.only(left: 8, right: 8), - child: Column( - children: [ - SizedBox( - height: 8, - ), - if(insuranceCardDetailsModel.isEmpty) - SecondaryButton( - textColor: Colors.white, - label: TranslationBase.of(context).scanNow.toUpperCase(), - color: Theme.of(context).primaryColor, - small: true, - onTap: () async { - confirmAttachInsuranceCardImageDialogDialog( - context: context, - name: name, - fileNo: patientID.toString(), - model: model); - }, + ), + SizedBox( + height: 150, + ), + Image.asset( + 'assets/images/no-data-found.png', + width: 80, + height: 80, + ), + SizedBox( + height: 8, + ), + Text( + TranslationBase.of(context).noDataAvailable, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), + ) + ], + ) + ], ), - if(insuranceCardDetailsModel.isNotEmpty) - SecondaryButton( - textColor: Colors.white, - label: TranslationBase.of(context).agree.toUpperCase(), - color: Theme.of(context).primaryColor, - onTap: () async { - GifLoaderDialogUtils.showMyDialog(context); - await model.uploadInsuranceCard( - patientIdentificationID: patientIdentificationID, - patientID: patientID); - GifLoaderDialogUtils.hideDialog(context); - if (model.state == ViewState.ErrorLocal) { - AppToast.showErrorToast(message: model.error); - } else { - AppToast.showSuccessToast( - message: TranslationBase.of(context).requestSent); - } - }, - ),if(insuranceCardDetailsModel.isNotEmpty) - SizedBox( - height: 12, - ),if(insuranceCardDetailsModel.isNotEmpty) - SecondaryButton( - textColor: Colors.white, - label: TranslationBase.of(context).disagree.toUpperCase(), - color: Colors.grey[800], - onTap: () async { - confirmAttachInsuranceCardImageDialogDialog( - context: context, - name: name, - fileNo: patientID.toString(), - model: model); - }, - ) - ], + ), + ), + ), + Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + if (insuranceCardDetailsModel.isEmpty) + SecondaryButton( + textColor: Colors.white, + label: TranslationBase.of(context).scanNow.toUpperCase(), + color: CustomColors.accentColor, + small: true, + onTap: () async { + confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model); + }, + ), + if (insuranceCardDetailsModel.isNotEmpty) + SecondaryButton( + textColor: Colors.white, + label: TranslationBase.of(context).agree.toUpperCase(), + color: CustomColors.accentColor, + onTap: () async { + GifLoaderDialogUtils.showMyDialog(context); + await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID); + GifLoaderDialogUtils.hideDialog(context); + if (model.state == ViewState.ErrorLocal) { + AppToast.showErrorToast(message: model.error); + } else { + AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent); + } + }, + ), + if (insuranceCardDetailsModel.isNotEmpty) + SizedBox( + height: 12, + ), + if (insuranceCardDetailsModel.isNotEmpty) + SecondaryButton( + textColor: Colors.white, + label: TranslationBase.of(context).disagree.toUpperCase(), + color: Colors.grey[800], + onTap: () async { + confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model); + }, + ) + ], + ), ), - ), + ], ), + // bottomSheet: Container( + // width: double.infinity, + // height: insuranceCardDetailsModel.isEmpty ? MediaQuery.of(context).size.height * 0.14 : MediaQuery.of(context).size.height * 0.21, + // child: Container( + // margin: EdgeInsets.only(left: 8, right: 8), + // child: Column( + // children: [ + // SizedBox( + // height: 8, + // ), + // if (insuranceCardDetailsModel.isEmpty) + // SecondaryButton( + // textColor: Colors.white, + // label: TranslationBase.of(context).scanNow.toUpperCase(), + // color: Theme.of(context).primaryColor, + // small: true, + // onTap: () async { + // confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model); + // }, + // ), + // if (insuranceCardDetailsModel.isNotEmpty) + // SecondaryButton( + // textColor: Colors.white, + // label: TranslationBase.of(context).agree.toUpperCase(), + // color: Theme.of(context).primaryColor, + // onTap: () async { + // GifLoaderDialogUtils.showMyDialog(context); + // await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID); + // GifLoaderDialogUtils.hideDialog(context); + // if (model.state == ViewState.ErrorLocal) { + // AppToast.showErrorToast(message: model.error); + // } else { + // AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent); + // } + // }, + // ), + // if (insuranceCardDetailsModel.isNotEmpty) + // SizedBox( + // height: 12, + // ), + // if (insuranceCardDetailsModel.isNotEmpty) + // SecondaryButton( + // textColor: Colors.white, + // label: TranslationBase.of(context).disagree.toUpperCase(), + // color: Colors.grey[800], + // onTap: () async { + // confirmAttachInsuranceCardImageDialogDialog(context: context, name: name, fileNo: patientID.toString(), model: model); + // }, + // ) + // ], + // ), + // ), + // ), ), ); } - void confirmAttachInsuranceCardImageDialogDialog( - {BuildContext context, - String name, - String fileNo, - InsuranceViewModel model}) { + void confirmAttachInsuranceCardImageDialogDialog({BuildContext context, String name, String fileNo, InsuranceViewModel model}) { showDialog( context: context, child: AttachInsuranceCardImageDialog( @@ -327,17 +408,12 @@ class InsuranceCardUpdateDetails extends StatelessWidget { name: name, image: (file, image) async { GifLoaderDialogUtils.showMyDialog(context); - await model.uploadInsuranceCard( - patientIdentificationID: patientIdentificationID, - patientID: patientID, - image: image); + await model.uploadInsuranceCard(patientIdentificationID: patientIdentificationID, patientID: patientID, image: image); GifLoaderDialogUtils.hideDialog(context); - if (model.state == ViewState.ErrorLocal || - model.state == ViewState.Error) { + if (model.state == ViewState.ErrorLocal || model.state == ViewState.Error) { AppToast.showErrorToast(message: model.error); } else { - AppToast.showSuccessToast( - message: TranslationBase.of(context).requestSent); + AppToast.showSuccessToast(message: TranslationBase.of(context).requestSent); } Navigator.pop(context); }, diff --git a/lib/pages/insurance/insurance_details.dart b/lib/pages/insurance/insurance_details.dart index 16745e9e..f2fe64cf 100644 --- a/lib/pages/insurance/insurance_details.dart +++ b/lib/pages/insurance/insurance_details.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter_html/flutter_html.dart'; @@ -17,6 +18,9 @@ class InsuranceCardDetails extends StatelessWidget { return AppScaffold( isShowAppBar: true, appBarTitle: TranslationBase.of(context).cardDetail, + showNewAppBarTitle: true, + showNewAppBar: true, + backgroundColor: CustomColors.appBackgroudGreyColor, body: Center( child: SingleChildScrollView( child: Html( diff --git a/lib/pages/insurance/insurance_page.dart b/lib/pages/insurance/insurance_page.dart index a391f554..7b740895 100644 --- a/lib/pages/insurance/insurance_page.dart +++ b/lib/pages/insurance/insurance_page.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/viewModels/insurance_card_View_model.d 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/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -17,223 +18,137 @@ class InsurancePage extends StatelessWidget { InsuranceCardService _insuranceCardService = locator(); InsurancePage({Key key, this.model}) : super(key: key); + @override Widget build(BuildContext context) { return SingleChildScrollView( - child: Column( - children: [ - SizedBox( - height: 65, - ), - Container( - margin: EdgeInsets.all(10.0), - color: Colors.white, - width: MediaQuery.of(context).size.width, - padding: EdgeInsets.all(10.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - if (model.user != null) - Expanded( - flex: 3, - child: Container( - margin: - EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - model.user.firstName + " " + model.user.lastName, - fontSize: 14, - color: Colors.black, - fontWeight: FontWeight.w500, - ), - SizedBox( - height: 8, - ), - Texts( - TranslationBase.of(context).fileno + - ": " + - model.user.patientID.toString(), - fontSize: 14, - color: Colors.black, - fontWeight: FontWeight.w500, - ) - ], - ), - ), - ), - Expanded( - flex: 2, - child: Container( - margin: EdgeInsets.only(top: 2.0), - child: Column( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + children: [ + Container( + width: double.infinity, + child: Card( + shape: cardRadius(12), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: InkWell( + onTap: () { + getDetails( + setupID: '010266', + projectID: 15, + patientIdentificationID: model.user.patientIdentificationNo, + patientID: model.user.patientID, + name: model.user.firstName + " " + model.user.lastName, + context: context, + ); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, children: [ - Container( - child: SecondaryButton( - label: TranslationBase.of(context).fetchData, - small: true, - textColor: Colors.white, - onTap: () { - getDetails( - setupID: '010266', - projectID: 15, - patientIdentificationID: - model.user.patientIdentificationNo, - patientID: model.user.patientID, - name: model.user.firstName + - " " + - model.user.lastName, - context: context); - }, + if (model.user != null) + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + model.user.firstName + " " + model.user.lastName, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Text( + TranslationBase.of(context).fileno + ": " + model.user.patientID.toString(), + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ) + ], + ), ), - ), + Icon(Icons.arrow_forward), ], ), ), - ) - ], + ), + ), ), - ), - if (model.getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList != - null ?? - false) - ...List.generate( - model.getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList.length, - (index) => model.getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[index].status == - 3 - ? Container( - margin: EdgeInsets.all(10.0), - child: Card( - margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), - ), + if (model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList != null ?? false) + ListView.separated( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (context, index) { + return model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].status == 3 + ? InkWell( + onTap: () { + getDetails( + projectID: 15, + patientIdentificationID: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientIdenficationNumber, + setupID: '010266', + patientID: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].responseID, + name: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientName, + context: context); + }, child: Container( - width: MediaQuery.of(context).size.width, - padding: EdgeInsets.all(10.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Expanded( - flex: 3, - child: Container( - margin: EdgeInsets.only( - top: 2.0, left: 10.0, right: 20.0), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Texts( - model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[ - index] - .patientName, - fontSize: 14, - color: Colors.black, - fontWeight: FontWeight.w500, - ), - SizedBox( - height: 8, - ), - Texts( - TranslationBase.of(context).fileno + - ": " + - model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[ - index] - .patientID - .toString(), - fontSize: 14, - color: Colors.black, - fontWeight: FontWeight.w500, - ) - ], - ), - ), - ), - Expanded( - flex: 2, - child: Container( - margin: EdgeInsets.only(top: 2.0), - child: Column( - children: [ - Container( - child: SecondaryButton( - label: TranslationBase.of(context) - .fetchData, - small: true, - textColor: Colors.white, - onTap: () { - getDetails( - projectID: 15, - patientIdentificationID: model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[ - index] - .patientIdenficationNumber, - setupID: '010266', - patientID: model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[ - index] - .responseID, - name: model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList[ - index] - .patientName, - context: context); - }, + width: double.infinity, + child: Card( + shape: cardRadius(12), + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientName, + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, letterSpacing: -0.46), + ), + Text( + TranslationBase.of(context).fileno + ": " + model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientID.toString(), + style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.46), ), - ), - ], + ], + ), ), - ), - ) - ], + Icon(Icons.arrow_forward), + ], + ), + ), ), ), - ), - ) - : Container()), - ], + ) + : Container(); + }, + separatorBuilder: (context, index) { + return mHeight(model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].status == 3 ? 8 : 0); + }, + itemCount: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.length, + ), + ], + ), ), ); } - getDetails( - {String setupID, - int projectID, - String patientIdentificationID, - int patientID, - String name, - BuildContext context}) { + getDetails({String setupID, int projectID, String patientIdentificationID, int patientID, String name, BuildContext context}) { GifLoaderDialogUtils.showMyDialog(context); - _insuranceCardService - .getPatientInsuranceDetails( - setupID: setupID, - projectID: projectID, - patientID: patientID, - patientIdentificationID: patientIdentificationID) - .then((value) { + _insuranceCardService.getPatientInsuranceDetails(setupID: setupID, projectID: projectID, patientID: patientID, patientIdentificationID: patientIdentificationID).then((value) { GifLoaderDialogUtils.hideDialog(context); - if (!_insuranceCardService.hasError && - _insuranceCardService.isHaveInsuranceCard) { + if (!_insuranceCardService.hasError && _insuranceCardService.isHaveInsuranceCard) { Navigator.push( context, FadePage( page: InsuranceCardUpdateDetails( - insuranceCardDetailsModel: - _insuranceCardService.insuranceCardDetailsList, + insuranceCardDetailsModel: _insuranceCardService.insuranceCardDetailsList, patientID: patientID, patientIdentificationID: patientIdentificationID, name: name, diff --git a/lib/pages/insurance/insurance_update_screen.dart b/lib/pages/insurance/insurance_update_screen.dart index 6c3ee61c..dc035859 100644 --- a/lib/pages/insurance/insurance_update_screen.dart +++ b/lib/pages/insurance/insurance_update_screen.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/service/insurance_service.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_details.dart'; +import 'package:diplomaticquarterapp/theme/colors.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'; @@ -23,20 +24,17 @@ class InsuranceUpdate extends StatefulWidget { _InsuranceUpdateState createState() => _InsuranceUpdateState(); } -class _InsuranceUpdateState extends State - with SingleTickerProviderStateMixin { +class _InsuranceUpdateState extends State with SingleTickerProviderStateMixin { TabController _tabController; List imagesInfo = List(); + @override void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); imagesInfo.add(ImagesInfo( - imageEn: - 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png', - imageAr: - 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png')); + imageEn: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/imges-info/insurance-card/ar/0.png')); } void dispose() { @@ -47,8 +45,7 @@ class _InsuranceUpdateState extends State Widget build(BuildContext context) { return BaseView( onModelReady: (model) => model.getInsuranceUpdated(), - builder: (BuildContext context, InsuranceViewModel model, Widget child) => - AppScaffold( + builder: (BuildContext context, InsuranceViewModel model, Widget child) => AppScaffold( appBarTitle: TranslationBase.of(context).insurCards, description: TranslationBase.of(context).infoInsurCards, infoList: TranslationBase.of(context).infoPrescriptionsPoints, @@ -56,79 +53,67 @@ class _InsuranceUpdateState extends State isShowAppBar: true, isShowDecPage: true, baseViewModel: model, - body: Scaffold( - extendBodyBehindAppBar: true, - appBar: PreferredSize( - preferredSize: Size.fromHeight(70.0), - child: Stack( - children: [ - Center( - child: Container( - height: 60.0, - margin: EdgeInsets.only(top: 10.0), - width: MediaQuery.of(context).size.width * 1.9, - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Theme.of(context).dividerColor, - width: 5.7, + showNewAppBarTitle: true, + showNewAppBar: true, + backgroundColor: CustomColors.appBackgroudGreyColor, + body: Column( + children: [ + Container( + height: 45, + child: TabBar( + controller: _tabController, + isScrollable: false, + indicatorWeight: 3.0, + indicatorColor: CustomColors.accentColor, + labelColor: Theme.of(context).primaryColor, + labelPadding: EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0), + unselectedLabelColor: Colors.grey, + tabs: [ + Container( + child: Center( + child: Text( + TranslationBase.of(context).updateInsuranceSubtitle, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, ), ), - color: Colors.white, ), + ), + Container( child: Center( - child: TabBar( - controller: _tabController, - isScrollable: true, - indicatorWeight: 4.0, - indicatorColor: Theme.of(context).primaryColor, - labelColor: Theme.of(context).primaryColor, - labelPadding: EdgeInsets.symmetric( - horizontal: 13.0, vertical: 2.0), - unselectedLabelColor: Colors.grey, - tabs: [ - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context) - .updateInsuranceSubtitle), - ), - ), - Container( - width: MediaQuery.of(context).size.width * 0.35, - child: Center( - child: Texts(TranslationBase.of(context).history), - ), - ), - ], + child: Text( + TranslationBase.of(context).history, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), ), ), ), - ) - ], + ], + ), ), - ), - body: Column( - children: [ - Expanded( - child: TabBarView( - physics: BouncingScrollPhysics(), - controller: _tabController, - children: [ - InsurancePage(model: model), - Container( + Expanded( + child: TabBarView( + physics: BouncingScrollPhysics(), + controller: _tabController, + children: [ + InsurancePage(model: model), + Container( + child: Padding( + padding: const EdgeInsets.all(12.0), child: ListView.builder( - itemCount: model.insuranceUpdate == null - ? 0 - : model.insuranceUpdate.length, + itemCount: model.insuranceUpdate == null ? 0 : model.insuranceUpdate.length, itemBuilder: (BuildContext context, int index) { return Container( - margin: EdgeInsets.all(10.0), child: Card( - margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), color: Colors.white, + elevation: 2, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular(12), ), child: Container( width: MediaQuery.of(context).size.width, @@ -143,47 +128,37 @@ class _InsuranceUpdateState extends State Expanded( flex: 3, child: Container( - margin: EdgeInsets.only( - top: 2.0, - left: 10.0, - right: 20.0), + margin: EdgeInsets.only(top: 2.0, left: 10.0, right: 20.0), child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( - model.user.firstName + - " " + - model.user.lastName, - fontSize: 14, - fontWeight: FontWeight.w500, - color: Colors.black, + Text( + model.user.firstName + " " + model.user.lastName, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), SizedBox( - height: 8, - ), - Texts( - TranslationBase.of(context) - .fileno + - ": " + - model - .insuranceUpdate[ - index] - .patientID - .toString(), - fontSize: 14, - fontWeight: FontWeight.w500, - color: Colors.black, + height: 4, ), - SizedBox( - height: 8, + Text( + TranslationBase.of(context).fileno + ": " + model.insuranceUpdate[index].patientID.toString(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), - Texts( - model.insuranceUpdate[index] - .createdOn, - fontSize: 14, - fontWeight: FontWeight.w500, - color: Colors.black, + + Text( + model.insuranceUpdate[index].createdOn, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), ], ), @@ -195,19 +170,16 @@ class _InsuranceUpdateState extends State margin: EdgeInsets.only(top: 20.0), child: Column( children: [ - Image.asset( - "assets/images/new-design/confirm_button.png", - width: 30.0, - height: 30.0), + Image.asset("assets/images/new-design/confirm_button.png", width: 30.0, height: 30.0), Container( - margin: EdgeInsets.only( - top: 13.5, left: 2.0), - child: Texts( - model.insuranceUpdate[index] - .statusDescription, - textAlign: TextAlign.center, - fontSize: 12, - color: Colors.black, + margin: EdgeInsets.only(top: 6.5, left: 2.0), + child: Text( + model.insuranceUpdate[index].statusDescription, + style: TextStyle( + fontSize: 10, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), ), ], @@ -223,10 +195,10 @@ class _InsuranceUpdateState extends State ); }), ), - ], - )) - ], - ), + ), + ], + )) + ], ), ), ); diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart index d3921d4a..fe7e9423 100644 --- a/lib/pages/medical/balance/advance_payment_page.dart +++ b/lib/pages/medical/balance/advance_payment_page.dart @@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/dialogs/SelectHospitalDialog.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; @@ -57,10 +58,8 @@ class _AdvancePaymentPageState extends State { super.initState(); getAuthUser(); imagesInfo.add(ImagesInfo( - imageEn: - 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png', - imageAr: - 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png')); + imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/en/0.png', + imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/advance-payment/ar/0.png')); } @override @@ -72,6 +71,9 @@ class _AdvancePaymentPageState extends State { imagesInfo: imagesInfo, appBarTitle: TranslationBase.of(context).advancePayment, description: TranslationBase.of(context).infoAdvancePayment, + showNewAppBarTitle: true, + showNewAppBar: true, + backgroundColor: CustomColors.appBackgroudGreyColor, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( @@ -79,9 +81,14 @@ class _AdvancePaymentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( + Text( TranslationBase.of(context).advancePaymentLabel, textAlign: TextAlign.center, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), SizedBox( height: 12, @@ -89,16 +96,21 @@ class _AdvancePaymentPageState extends State { InkWell( onTap: () => confirmSelectBeneficiaryDialog(model), child: Container( - padding: EdgeInsets.all(12), + padding: EdgeInsets.all(8), width: double.infinity, height: 65, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - color: Colors.white), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts(getBeneficiaryType()), + Text( + getBeneficiaryType(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), Icon(Icons.arrow_drop_down) ], ), @@ -114,23 +126,26 @@ class _AdvancePaymentPageState extends State { GifLoaderDialogUtils.showMyDialog(context); model.getFamilyFiles().then((value) { GifLoaderDialogUtils.hideDialog(context); - confirmSelectFamilyDialog(model - .getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList); + confirmSelectFamilyDialog(model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList); }); }, child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - color: Colors.white), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts(getFamilyMembersName()), - Icon(Icons.arrow_drop_down) + Text( + getFamilyMembersName(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Icon(Icons.arrow_drop_down), ], ), ), @@ -151,29 +166,30 @@ class _AdvancePaymentPageState extends State { onTap: () { if (_fileTextController.text.isNotEmpty) { GifLoaderDialogUtils.showMyDialog(context); - model - .getPatientInfoByPatientID( - id: _fileTextController.text) - .then((value) { + model.getPatientInfoByPatientID(id: _fileTextController.text).then((value) { GifLoaderDialogUtils.hideDialog(context); confirmSelectPatientDialog(model.patientInfoList); }); } else - AppToast.showErrorToast( - message: 'Please Enter The File Number'); + AppToast.showErrorToast(message: 'Please Enter The File Number'); }, child: Container( padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - color: Colors.white), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts(getPatientName()), - Icon(Icons.arrow_drop_down) + Text( + getPatientName(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Icon(Icons.arrow_drop_down), ], ), ), @@ -187,14 +203,19 @@ class _AdvancePaymentPageState extends State { padding: EdgeInsets.all(12), width: double.infinity, height: 65, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), - color: Colors.white), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts(getHospitalName()), - Icon(Icons.arrow_drop_down) + Text( + getHospitalName(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Icon(Icons.arrow_drop_down), ], ), ), @@ -237,15 +258,15 @@ class _AdvancePaymentPageState extends State { ), ), bottomSheet: Container( - height: 90, + height: 70, width: double.infinity, - padding: EdgeInsets.all(18), + padding: EdgeInsets.all(12), + color: Colors.white, child: SecondaryButton( textColor: Colors.white, label: TranslationBase.of(context).submit, - disabled: amount.isEmpty || - _fileTextController.text.isEmpty || - _selectedHospital == null, + color: CustomColors.accentColor, + disabled: amount.isEmpty || _fileTextController.text.isEmpty || _selectedHospital == null, onTap: () { var mobileNum; var patientName; @@ -273,15 +294,11 @@ class _AdvancePaymentPageState extends State { advanceModel.mobileNumber = mobileNum; advanceModel.patientName = patientName; GifLoaderDialogUtils.showMyDialog(context); - model - .getPatientInfoByPatientIDAndMobileNumber(advanceModel) - .then((value) { + model.getPatientInfoByPatientIDAndMobileNumber(advanceModel).then((value) { GifLoaderDialogUtils.hideDialog(context); - if (model.state != ViewState.Error && - model.state != ViewState.ErrorLocal) { + if (model.state != ViewState.Error && model.state != ViewState.ErrorLocal) { Utils.hideKeyboard(context); - Navigator.push(context, FadePage(page: PaymentMethod())) - .then( + Navigator.push(context, FadePage(page: PaymentMethod())).then( (value) { Navigator.push( context, @@ -289,8 +306,7 @@ class _AdvancePaymentPageState extends State { page: ConfirmPaymentPage( advanceModel: advanceModel, selectedPaymentMethod: value, - patientInfoAndMobileNumber: - model.patientInfoAndMobileNumber, + patientInfoAndMobileNumber: model.patientInfoAndMobileNumber, authenticatedUser: authUser, ), ), @@ -314,8 +330,7 @@ class _AdvancePaymentPageState extends State { setState(() { if (value == BeneficiaryType.MyAccount) { _fileTextController.text = model.user.patientID.toString(); - advanceModel.depositorName = - model.user.firstName + " " + model.user.lastName; + advanceModel.depositorName = model.user.firstName + " " + model.user.lastName; } else _fileTextController.text = ""; @@ -357,8 +372,7 @@ class _AdvancePaymentPageState extends State { ); } - void confirmSelectFamilyDialog( - List getAllSharedRecordsByStatusList) { + void confirmSelectFamilyDialog(List getAllSharedRecordsByStatusList) { if (getAllSharedRecordsByStatusList.isNotEmpty) showDialog( context: context, @@ -368,8 +382,7 @@ class _AdvancePaymentPageState extends State { onValueSelected: (value) { setState(() { selectedPatientFamily = value; - _fileTextController.text = - selectedPatientFamily.responseID.toString(); + _fileTextController.text = selectedPatientFamily.responseID.toString(); advanceModel.depositorName = value.patientName; }); }, @@ -409,8 +422,7 @@ class _AdvancePaymentPageState extends State { getAuthUser() async { if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); setState(() { authUser = data; }); diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart index eecb6abd..f5d14efe 100644 --- a/lib/pages/medical/balance/confirm_payment_page.dart +++ b/lib/pages/medical/balance/confirm_payment_page.dart @@ -8,6 +8,7 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; @@ -32,11 +33,7 @@ class ConfirmPaymentPage extends StatelessWidget { AppSharedPreferences sharedPref = AppSharedPreferences(); String transID = ""; - ConfirmPaymentPage( - {this.advanceModel, - this.patientInfoAndMobileNumber, - this.selectedPaymentMethod, - this.authenticatedUser}); + ConfirmPaymentPage({this.advanceModel, this.patientInfoAndMobileNumber, this.selectedPaymentMethod, this.authenticatedUser}); @override Widget build(BuildContext context) { @@ -51,11 +48,9 @@ class ConfirmPaymentPage extends StatelessWidget { print("dialog dismissed"); print(value); if (value != null && value) { - AppoitmentAllHistoryResultList appo = - new AppoitmentAllHistoryResultList(); + AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList(); appo.projectID = patientInfoAndMobileNumber.projectID; - openPayment(selectedPaymentMethod, authenticatedUser, - double.parse(advanceModel.amount), null); + openPayment(selectedPaymentMethod, authenticatedUser, double.parse(advanceModel.amount), null); } }); } @@ -64,6 +59,9 @@ class ConfirmPaymentPage extends StatelessWidget { builder: (_, model, w) => AppScaffold( isShowAppBar: true, appBarTitle: TranslationBase.of(context).advancePayment, + showNewAppBarTitle: true, + showNewAppBar: true, + backgroundColor: CustomColors.appBackgroudGreyColor, body: SingleChildScrollView( physics: ScrollPhysics(), child: Container( @@ -71,11 +69,14 @@ class ConfirmPaymentPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( + Text( TranslationBase.of(context).confirmThePayment, textAlign: TextAlign.center, - fontWeight: FontWeight.w500, - fontSize: 24, + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + letterSpacing: -0.48, + ), ), SizedBox( height: 12, @@ -89,10 +90,13 @@ class ConfirmPaymentPage extends StatelessWidget { width: MediaQuery.of(context).size.width * 0.45, child: Image.asset(getImagePath(selectedPaymentMethod)), ), - Texts( + Text( '${advanceModel.amount} SAR', - fontSize: 26, - bold: true, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w900, + letterSpacing: -0.48, + ), ) ], ), @@ -136,11 +140,7 @@ class ConfirmPaymentPage extends StatelessWidget { ), NewTextFields( hintText: TranslationBase.of(context).depositorName, - initialValue: model.user.firstName + - " " + - model.user.middleName + - " " + - model.user.lastName, + initialValue: model.user.firstName + " " + model.user.middleName + " " + model.user.lastName, isEnabled: false, ), SizedBox( @@ -156,26 +156,24 @@ class ConfirmPaymentPage extends StatelessWidget { ), ), bottomSheet: Container( - height: MediaQuery.of(context).size.height * 0.13, - width: double.infinity, - padding: EdgeInsets.all(12), - child: SecondaryButton( - textColor: Colors.white, - color: Theme.of(context).primaryColor, - label: TranslationBase.of(context).confirm.toUpperCase(), - disabled: model.state == ViewState.Busy, - onTap: () { - GifLoaderDialogUtils.showMyDialog(context); - model - .sendActivationCodeForAdvancePayment( - patientID: int.parse(advanceModel.fileNumber), - projectID: advanceModel.hospitalsModel.iD) - .then((value) { - GifLoaderDialogUtils.hideDialog(context); - if (model.state != ViewState.ErrorLocal && - model.state != ViewState.Error) showSMSDialog(); - }); - }, + color: Colors.white, + child: Container( + height: MediaQuery.of(context).size.width * 0.18, + width: double.infinity, + padding: EdgeInsets.all(12), + child: SecondaryButton( + textColor: Colors.white, + color: CustomColors.accentColor, + label: TranslationBase.of(context).confirm.toUpperCase(), + disabled: model.state == ViewState.Busy, + onTap: () { + GifLoaderDialogUtils.showMyDialog(context); + model.sendActivationCodeForAdvancePayment(patientID: int.parse(advanceModel.fileNumber), projectID: advanceModel.hospitalsModel.iD).then((value) { + GifLoaderDialogUtils.hideDialog(context); + if (model.state != ViewState.ErrorLocal && model.state != ViewState.Error) showSMSDialog(); + }); + }, + ), ), ), ), @@ -204,29 +202,13 @@ class ConfirmPaymentPage extends StatelessWidget { return 'assets/images/new-design/mada.png'; } - openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, - double amount, AppoitmentAllHistoryResultList appo) { - browser = new MyInAppBrowser( - onExitCallback: onBrowserExit, - appo: appo, - onLoadStartCallback: onBrowserLoadStart); + openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, AppoitmentAllHistoryResultList appo) { + browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart); - transID = Utils.getAdvancePaymentTransID( - advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); + transID = Utils.getAdvancePaymentTransID(advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); - browser.openPaymentBrowser( - amount, - "Advance Payment", - transID, - advanceModel.hospitalsModel.iD.toString(), - advanceModel.email, - paymentMethod, - patientInfoAndMobileNumber.patientType, - advanceModel.patientName, - advanceModel.fileNumber, - authenticatedUser, - browser, - false); + browser.openPaymentBrowser(amount, "Advance Payment", transID, advanceModel.hospitalsModel.iD.toString(), advanceModel.email, paymentMethod, patientInfoAndMobileNumber.patientType, + advanceModel.patientName, advanceModel.fileNumber, authenticatedUser, browser, false); } onBrowserLoadStart(String url) { @@ -278,23 +260,11 @@ class ConfirmPaymentPage extends StatelessWidget { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); - service.HIS_createAdvancePayment( - appo, - advanceModel.hospitalsModel.iD.toString(), - res['Amount'], - res['Fort_id'], - res['PaymentMethod'], - patientInfoAndMobileNumber.patientType, - advanceModel.patientName, - advanceModel.fileNumber, - AppGlobal.context) + service.HIS_createAdvancePayment(appo, advanceModel.hospitalsModel.iD.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], patientInfoAndMobileNumber.patientType, + advanceModel.patientName, advanceModel.fileNumber, AppGlobal.context) .then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); - addAdvancedNumberRequest( - res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), - paymentReference, - 0, - appo); + addAdvancedNumberRequest(res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), paymentReference, 0, appo); }).catchError((err) { GifLoaderDialogUtils.hideDialog(AppGlobal.context); AppToast.showErrorToast(message: err); @@ -302,13 +272,9 @@ class ConfirmPaymentPage extends StatelessWidget { }); } - addAdvancedNumberRequest(String advanceNumber, String paymentReference, - dynamic appointmentID, AppoitmentAllHistoryResultList appo) { + addAdvancedNumberRequest(String advanceNumber, String paymentReference, dynamic appointmentID, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); - service - .addAdvancedNumberRequest( - advanceNumber, paymentReference, appointmentID, AppGlobal.context) - .then((res) { + service.addAdvancedNumberRequest(advanceNumber, paymentReference, appointmentID, AppGlobal.context).then((res) { print(res); GifLoaderDialogUtils.hideDialog(AppGlobal.context); navigateToHome(AppGlobal.context); diff --git a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart index d7ce3fac..731632c9 100644 --- a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart @@ -10,12 +10,10 @@ class SelectBeneficiaryDialog extends StatefulWidget { final BeneficiaryType beneficiaryType; final Function(BeneficiaryType) onValueSelected; - SelectBeneficiaryDialog( - {Key key, this.beneficiaryType, this.onValueSelected}); + SelectBeneficiaryDialog({Key key, this.beneficiaryType, this.onValueSelected}); @override - _SelectBeneficiaryDialogState createState() => - _SelectBeneficiaryDialogState(this.beneficiaryType); + _SelectBeneficiaryDialogState createState() => _SelectBeneficiaryDialogState(this.beneficiaryType); } class _SelectBeneficiaryDialogState extends State { @@ -42,7 +40,14 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: Text(TranslationBase.of(context).myAccount), + title: Text( + TranslationBase.of(context).myAccount, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: BeneficiaryType.MyAccount, groupValue: beneficiaryType, @@ -72,7 +77,14 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: Text(TranslationBase.of(context).myFamilyFiles), + title: Text( + TranslationBase.of(context).myFamilyFiles, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: BeneficiaryType.MyFamilyFiles, groupValue: beneficiaryType, @@ -102,7 +114,14 @@ class _SelectBeneficiaryDialogState extends State { }); }, child: ListTile( - title: Text(TranslationBase.of(context).otherAccount), + title: Text( + TranslationBase.of(context).otherAccount, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: BeneficiaryType.OtherAccount, groupValue: beneficiaryType, @@ -134,9 +153,14 @@ class _SelectBeneficiaryDialogState extends State { padding: const EdgeInsets.all(8.0), child: Container( child: Center( - child: Texts( + child: Text( TranslationBase.of(context).cancel.toUpperCase(), - color: Colors.red, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: Colors.red, + ), ), ), ), @@ -158,9 +182,13 @@ class _SelectBeneficiaryDialogState extends State { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts( - TranslationBase.of(context).ok, - fontWeight: FontWeight.w400, + child: Text( + TranslationBase.of(context).ok.toUpperCase(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), ), ), diff --git a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart index a9a4fea2..4307637e 100644 --- a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart @@ -11,8 +11,7 @@ class SelectHospitalDialog extends StatefulWidget { final Function(HospitalsModel) onValueSelected; HospitalsModel selectedHospital; - SelectHospitalDialog( - {Key key, this.hospitals, this.onValueSelected, this.selectedHospital}); + SelectHospitalDialog({Key key, this.hospitals, this.onValueSelected, this.selectedHospital}); @override _SelectHospitalDialogState createState() => _SelectHospitalDialogState(); @@ -51,8 +50,14 @@ class _SelectHospitalDialogState extends State { }); }, child: ListTile( - title: Text(widget.hospitals[index].name + - ' ${widget.hospitals[index].distanceInKilometers} KM'), + title: Text( + widget.hospitals[index].name + ' ${widget.hospitals[index].distanceInKilometers} KM', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: widget.hospitals[index], groupValue: widget.selectedHospital, @@ -90,9 +95,14 @@ class _SelectHospitalDialogState extends State { padding: const EdgeInsets.all(8.0), child: Container( child: Center( - child: Texts( + child: Text( TranslationBase.of(context).cancel.toUpperCase(), - color: Colors.red, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: Colors.red + ), ), ), ), @@ -114,10 +124,15 @@ class _SelectHospitalDialogState extends State { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts( - TranslationBase.of(context).ok, - fontWeight: FontWeight.w400, - )), + child: Text( + TranslationBase.of(context).ok, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + ), ), ), ), diff --git a/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart b/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart index ab2b48d5..445eb3c8 100644 --- a/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectPatientFamilyDialog.dart @@ -7,22 +7,21 @@ import 'package:flutter/material.dart'; import '../../../../Constants.dart'; class SelectPatientFamilyDialog extends StatefulWidget { - final List getAllSharedRecordsByStatusList; + final List getAllSharedRecordsByStatusList; final Function(GetAllSharedRecordsByStatusList) onValueSelected; GetAllSharedRecordsByStatusList selectedPatientFamily; - SelectPatientFamilyDialog({Key key, this.getAllSharedRecordsByStatusList, this.onValueSelected,this.selectedPatientFamily}); + SelectPatientFamilyDialog({Key key, this.getAllSharedRecordsByStatusList, this.onValueSelected, this.selectedPatientFamily}); @override _SelectPatientFamilyDialogState createState() => _SelectPatientFamilyDialogState(); } class _SelectPatientFamilyDialogState extends State { - @override void initState() { super.initState(); - widget.selectedPatientFamily = widget.selectedPatientFamily?? widget.getAllSharedRecordsByStatusList[0]; + widget.selectedPatientFamily = widget.selectedPatientFamily ?? widget.getAllSharedRecordsByStatusList[0]; } @override @@ -34,7 +33,7 @@ class _SelectPatientFamilyDialogState extends State { Divider(), ...List.generate( widget.getAllSharedRecordsByStatusList.length, - (index) => Column( + (index) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( @@ -51,7 +50,14 @@ class _SelectPatientFamilyDialogState extends State { }); }, child: ListTile( - title: Text(widget.getAllSharedRecordsByStatusList[index].patientName), + title: Text( + widget.getAllSharedRecordsByStatusList[index].patientName, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: widget.getAllSharedRecordsByStatusList[index], groupValue: widget.selectedPatientFamily, @@ -89,9 +95,14 @@ class _SelectPatientFamilyDialogState extends State { padding: const EdgeInsets.all(8.0), child: Container( child: Center( - child: Texts( + child: Text( TranslationBase.of(context).cancel.toUpperCase(), - color: Colors.red, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: Colors.red, + ), ), ), ), @@ -113,10 +124,15 @@ class _SelectPatientFamilyDialogState extends State { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts( - TranslationBase.of(context).ok, - fontWeight: FontWeight.w400, - )), + child: Text( + TranslationBase.of(context).ok, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + ), ), ), ), diff --git a/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart b/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart index 3cce8e61..614ac86a 100644 --- a/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectPatientInfoDialog.dart @@ -9,22 +9,22 @@ import 'package:flutter/material.dart'; import '../../../../Constants.dart'; class SelectPatientInfoDialog extends StatefulWidget { - final List patientInfoList ; + final List patientInfoList; + final Function(PatientInfo) onValueSelected; PatientInfo selectedPatientInfo; - SelectPatientInfoDialog({Key key, this.patientInfoList, this.onValueSelected,this.selectedPatientInfo}); + SelectPatientInfoDialog({Key key, this.patientInfoList, this.onValueSelected, this.selectedPatientInfo}); @override _SelectPatientInfoDialogState createState() => _SelectPatientInfoDialogState(); } class _SelectPatientInfoDialogState extends State { - @override void initState() { super.initState(); - widget.selectedPatientInfo = widget.selectedPatientInfo?? widget.patientInfoList[0]; + widget.selectedPatientInfo = widget.selectedPatientInfo ?? widget.patientInfoList[0]; } @override @@ -36,7 +36,7 @@ class _SelectPatientInfoDialogState extends State { Divider(), ...List.generate( widget.patientInfoList.length, - (index) => Column( + (index) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( @@ -53,7 +53,14 @@ class _SelectPatientInfoDialogState extends State { }); }, child: ListTile( - title: Text(widget.patientInfoList[index].fullName), + title: Text( + widget.patientInfoList[index].fullName, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), leading: Radio( value: widget.patientInfoList[index], groupValue: widget.selectedPatientInfo, @@ -91,9 +98,14 @@ class _SelectPatientInfoDialogState extends State { padding: const EdgeInsets.all(8.0), child: Container( child: Center( - child: Texts( + child: Text( TranslationBase.of(context).cancel.toUpperCase(), - color: Colors.red, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: Colors.red, + ), ), ), ), @@ -115,10 +127,15 @@ class _SelectPatientInfoDialogState extends State { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts( - TranslationBase.of(context).ok, - fontWeight: FontWeight.w400, - )), + child: Text( + TranslationBase.of(context).ok.toUpperCase(), + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + ), ), ), ), diff --git a/lib/pages/medical/balance/my_balance_page.dart b/lib/pages/medical/balance/my_balance_page.dart index f097bda5..28e1510a 100644 --- a/lib/pages/medical/balance/my_balance_page.dart +++ b/lib/pages/medical/balance/my_balance_page.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; @@ -17,10 +18,7 @@ class MyBalancePage extends StatelessWidget { @override Widget build(BuildContext context) { imagesInfo.add(ImagesInfo( - imageEn: - 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png', - imageAr: - 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png')); + imageEn: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/en/0.png', imageAr: 'https://hmgwebservices.com/Images/MobileApp/images-info-home/my-balance/ar/0.png')); return BaseView( onModelReady: (model) => model.getPatientAdvanceBalanceAmount(), builder: (_, model, w) => AppScaffold( @@ -29,16 +27,22 @@ class MyBalancePage extends StatelessWidget { appBarTitle: TranslationBase.of(context).myBalances, imagesInfo: imagesInfo, description: TranslationBase.of(context).infoMyBalance, + showNewAppBar: true, + showNewAppBarTitle: true, + backgroundColor: CustomColors.appBackgroudGreyColor, body: SingleChildScrollView( child: Container( margin: EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Texts( + Text( TranslationBase.of(context).balanceAmount, - color: Colors.black, - bold: true, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), ), SizedBox( height: 15, @@ -55,15 +59,22 @@ class MyBalancePage extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts( - '${model.totalAdvanceBalanceAmount ?? 0} ' + - TranslationBase.of(context).sar, - color: Colors.white, - bold: true, + Text( + '${model.totalAdvanceBalanceAmount ?? 0} ' + TranslationBase.of(context).sar, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: Colors.white, + ), ), - Texts( + Text( TranslationBase.of(context).totalBalance, - color: Colors.white, + style: TextStyle( + fontSize: 14, + letterSpacing: -0.46, + color: Colors.white, + ), ), ], ), @@ -80,18 +91,26 @@ class MyBalancePage extends StatelessWidget { decoration: BoxDecoration( color: Colors.white, shape: BoxShape.rectangle, - borderRadius: BorderRadius.circular(7), + borderRadius: BorderRadius.circular(12), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Texts( - '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} ' + - TranslationBase.of(context).sar, - bold: true, + Text( + '${model.patientAdvanceBalanceAmountList[index].patientAdvanceBalanceAmount} ' + TranslationBase.of(context).sar, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + ), + ), + Text( + model.patientAdvanceBalanceAmountList[index].projectDescription, + style: TextStyle( + fontSize: 14, + letterSpacing: -0.46, + ), ), - Texts(model.patientAdvanceBalanceAmountList[index] - .projectDescription), ], ), ), @@ -111,6 +130,7 @@ class MyBalancePage extends StatelessWidget { padding: EdgeInsets.all(12), child: SecondaryButton( textColor: Colors.white, + color: CustomColors.accentColor, label: TranslationBase.of(context).createAdvancedPayment, onTap: () { Navigator.push(context, FadePage(page: AdvancePaymentPage())); diff --git a/lib/pages/medical/balance/new_text_Field.dart b/lib/pages/medical/balance/new_text_Field.dart index ec3eaf3b..2d19a2f8 100644 --- a/lib/pages/medical/balance/new_text_Field.dart +++ b/lib/pages/medical/balance/new_text_Field.dart @@ -70,8 +70,8 @@ class NewTextFields extends StatefulWidget { this.prefixIcon, this.bare = false, this.onTap, - this.fontSize = 16.0, - this.fontWeight = FontWeight.w700, + this.fontSize = 14.0, + this.fontWeight = FontWeight.w600, this.autoValidate = false, this.hintColor, this.isEnabled = true,this.counterText=""}) diff --git a/lib/widgets/buttons/secondary_button.dart b/lib/widgets/buttons/secondary_button.dart index 8c4ba851..06b71a61 100644 --- a/lib/widgets/buttons/secondary_button.dart +++ b/lib/widgets/buttons/secondary_button.dart @@ -242,10 +242,8 @@ class _SecondaryButtonState extends State style: TextStyle( color: widget.textColor, fontSize: widget.small ? 12.0 : 14.0, - // fontWeight: FontWeight.w800, - fontFamily: projectViewModel.isArabic - ? 'Cairo' - : 'WorkSans'), + fontWeight: FontWeight.w600, + ), ), ) ], diff --git a/lib/widgets/transitions/fade_page.dart b/lib/widgets/transitions/fade_page.dart index 97a37ce1..a538b1c4 100644 --- a/lib/widgets/transitions/fade_page.dart +++ b/lib/widgets/transitions/fade_page.dart @@ -4,29 +4,27 @@ import 'package:flutter/material.dart'; /// [page] class FadePage extends PageRouteBuilder { final Widget page; + FadePage({this.page}) - : super( - opaque: false, - fullscreenDialog: true, - barrierDismissible: true, - barrierColor: Colors.black.withOpacity(0.8), - pageBuilder: ( - BuildContext context, - Animation animation, - Animation secondaryAnimation, - ) => - page, - transitionDuration: Duration(milliseconds: 300), - transitionsBuilder: ( - BuildContext context, - Animation animation, - Animation secondaryAnimation, - Widget child, - ) { - return FadeTransition( - opacity: animation, - child: child - ); - } - ); -} \ No newline at end of file + : super( + opaque: false, + fullscreenDialog: true, + barrierDismissible: true, + barrierColor: Colors.black.withOpacity(0.8), + pageBuilder: ( + BuildContext context, + Animation animation, + Animation secondaryAnimation, + ) => + page, + transitionDuration: Duration(milliseconds: 300), + transitionsBuilder: ( + BuildContext context, + Animation animation, + Animation secondaryAnimation, + Widget child, + ) { + return FadeTransition(opacity: animation, child: child); + }, + ); +} From afb08fcd0a404ab9e69a005a69ae686e5c977e54 Mon Sep 17 00:00:00 2001 From: "Mirza.Shafique" Date: Thu, 9 Sep 2021 12:21:52 +0300 Subject: [PATCH 6/9] Booking Filters Update --- .../components/SearchByClinic.dart | 237 ++++++++++-------- .../medical/balance/confirm_payment_page.dart | 2 +- 2 files changed, 137 insertions(+), 102 deletions(-) diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 3eab535c..dc983581 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -52,6 +52,7 @@ class _SearchByClinicState extends State { final GlobalKey clinicDropdownKey = GlobalKey(); final GlobalKey projectDropdownKey = GlobalKey(); + TextEditingController ageController = new TextEditingController(); ProjectViewModel projectViewModel; String radioValue = null; @@ -65,124 +66,158 @@ class _SearchByClinicState extends State { @override Widget build(BuildContext context) { projectViewModel = Provider.of(context); - if (radioValue == null) radioValue = TranslationBase.of(context).female; + if (projectViewModel.isLogin) { + if (radioValue == null) { + if (projectViewModel.user.gender == 1) { + radioValue = TranslationBase.of(context).male; + } else { + radioValue = TranslationBase.of(context).female; + } + } + } else if (radioValue == null) { + radioValue = TranslationBase.of(context).female; + } + if (ageController.text.isEmpty) { + ageController.text = projectViewModel.isLogin ? projectViewModel.user.age.toString() : ""; + ageController.selection = TextSelection.fromPosition(TextPosition(offset: ageController.text.length)); + } + return Container( child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.only( - left: 20, - right: 20, - top: 20, - ), - child: Text( - TranslationBase.of(context).doctorFilter, - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - letterSpacing: -0.64, - ), - ), - ), - mHeight(30), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.only(left: 20, right: 20), - child: Text( - TranslationBase.of(context).gender, - style: TextStyle( - fontSize: 12, - letterSpacing: -0.48, - color: Colors.black, - fontWeight: FontWeight.w600, + if (projectViewModel.isLogin) + Column( + children: [ + Padding( + padding: const EdgeInsets.only( + left: 20, + right: 20, + top: 20, + ), + child: Text( + TranslationBase.of(context).doctorFilter, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + letterSpacing: -0.64, + ), ), ), - ), - Container( - padding: EdgeInsets.only(left: 6, right: 6), - child: Row( + mHeight(30), + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Flexible( - child: Row( - children: [ - Radio( - value: TranslationBase.of(context).female, - groupValue: radioValue, - onChanged: (v) { - setState(() { - radioValue = v; - }); - }, + Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: Text( + TranslationBase.of(context).gender, + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + color: Colors.black, + fontWeight: FontWeight.w600, ), - Text( - TranslationBase.of(context).female, - style: TextStyle( - fontSize: 12, - letterSpacing: -0.48, - fontWeight: FontWeight.w600, - ), + ), + ), + Container( + padding: EdgeInsets.only(left: 6, right: 6), + child: Row( + children: [ + Flexible( + child: Row( + children: [ + Radio( + value: TranslationBase.of(context).female, + groupValue: radioValue, + onChanged: (v) { + setState(() { + radioValue = v; + }); + }, + ), + Text( + TranslationBase.of(context).female, + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + ), + ), + ], + )), + Flexible( + child: Row( + children: [ + Radio( + value: TranslationBase.of(context).male, + groupValue: radioValue, + onChanged: (v) { + setState(() { + radioValue = v; + }); + }, + ), + Text( + TranslationBase.of(context).male, + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + fontWeight: FontWeight.w600, + ), + ), + ], + )), + ], + ), + ), + ], + ), + Container( + width: double.infinity, + decoration: containerRadius(Colors.white, 12), + margin: EdgeInsets.only(left: 20, right: 20), + padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 2), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Age", + style: TextStyle( + fontSize: 12, + letterSpacing: -0.48, + color: Colors.black, + fontWeight: FontWeight.w600, ), - ], - )), - Flexible( - child: Row( - children: [ - Radio( - value: TranslationBase.of(context).male, - groupValue: radioValue, - onChanged: (v) { - setState(() { - radioValue = v; - }); - }, + ), + TextField( + controller: ageController, + style: TextStyle( + fontSize: 15, + letterSpacing: -0.59, + color: Colors.black, ), - Text( - TranslationBase.of(context).male, - style: TextStyle( - fontSize: 12, - letterSpacing: -0.48, - fontWeight: FontWeight.w600, + decoration: InputDecoration( + contentPadding: EdgeInsets.zero, + border: OutlineInputBorder( + borderSide: BorderSide.none, ), ), - ], - )), - ], - ), - ), - ], - ), - Container( - width: double.infinity, - decoration: containerRadius(Colors.white, 12), - margin: EdgeInsets.only(left: 20, right: 20), - padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Age", - style: TextStyle( - fontSize: 12, - letterSpacing: -0.48, - color: Colors.black, - fontWeight: FontWeight.w600, - ), - ), - Text( - projectViewModel.isLogin ? projectViewModel.user.age.toString() : "", - style: TextStyle( - fontSize: 15, - letterSpacing: -0.59, - color: Colors.black, + ), + // Text( + // projectViewModel.isLogin ? projectViewModel.user.age.toString() : "", + // style: TextStyle( + // fontSize: 15, + // letterSpacing: -0.59, + // color: Colors.black, + // ), + // ), + ], ), ), ], ), - ), Padding( padding: const EdgeInsets.only(left: 6, right: 6, top: 16), child: Row( diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart index f5d14efe..4414266b 100644 --- a/lib/pages/medical/balance/confirm_payment_page.dart +++ b/lib/pages/medical/balance/confirm_payment_page.dart @@ -208,7 +208,7 @@ class ConfirmPaymentPage extends StatelessWidget { transID = Utils.getAdvancePaymentTransID(advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); browser.openPaymentBrowser(amount, "Advance Payment", transID, advanceModel.hospitalsModel.iD.toString(), advanceModel.email, paymentMethod, patientInfoAndMobileNumber.patientType, - advanceModel.patientName, advanceModel.fileNumber, authenticatedUser, browser, false); + advanceModel.patientName, advanceModel.fileNumber, authenticatedUser, browser, false,null,null); } onBrowserLoadStart(String url) { From 3bb0a8b85bc0d0c9858c0a1b2d39ab877c2b85e6 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 9 Sep 2021 17:47:13 +0300 Subject: [PATCH 7/9] Apple Pay finalized, Translation issues fixed, other updates --- lib/config/config.dart | 6 +- lib/config/localized_values.dart | 12 + .../LiveCare/ApplePayInsertRequest.dart | 152 +++++++++++ lib/pages/Blood/confirm_payment_page.dart | 8 +- lib/pages/BookAppointment/BookSuccess.dart | 51 ++-- .../covid-payment-summary.dart | 119 +++------ lib/pages/ToDoList/ToDo.dart | 4 +- lib/pages/ToDoList/payment_method_select.dart | 6 +- .../fragments/home_page_fragment2.dart | 2 +- lib/pages/landing/home_page.dart | 6 - .../landing/widgets/logged_slider_view.dart | 8 +- lib/pages/livecare/livecare_home.dart | 2 +- .../livecare/widgets/ClinicTimingsDialog.dart | 7 +- .../widgets/LiveCarePaymentDialog.dart | 25 +- lib/pages/livecare/widgets/clinic_list.dart | 19 +- .../medical/balance/advance_payment_page.dart | 2 +- .../medical/balance/confirm_payment_page.dart | 87 ++----- .../medical/labs/passport_update_page.dart | 50 ++-- .../prescriptions_home_page.dart | 7 +- .../medical/reports/monthly_reports.dart | 5 +- .../medical/reports/report_home_page.dart | 7 +- .../livecare_services/livecare_provider.dart | 114 ++++----- lib/uitl/translations_delegate_base.dart | 6 + lib/widgets/in_app_browser/InAppBrowser.dart | 241 ++++++++---------- 24 files changed, 488 insertions(+), 458 deletions(-) create mode 100644 lib/models/LiveCare/ApplePayInsertRequest.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index dd9711b3..329f0314 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -13,8 +13,8 @@ const PACKAGES_CUSTOMER = '/api/customers'; const PACKAGES_SHOPPING_CART = '/api/shopping_cart_items'; const PACKAGES_ORDERS = '/api/orders'; -const BASE_URL = 'https://uat.hmgwebservices.com/'; -// const BASE_URL = 'https://hmgwebservices.com/'; +// const BASE_URL = 'https://uat.hmgwebservices.com/'; +const BASE_URL = 'https://hmgwebservices.com/'; // Pharmacy UAT URLs const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/'; @@ -257,6 +257,8 @@ const GET_LIVECARE_HISTORY = 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtu const CANCEL_LIVECARE_REQUEST = 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; const SEND_LIVECARE_INVOICE_EMAIL = 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; +const APPLE_PAY_INSERT_REQUEST = 'Services/PayFort_Serv.svc/REST/PayFort_ApplePayRequestData_Insert'; + const GET_USER_TERMS = 'Services/Patients.svc/REST/GetUserTermsAndConditions'; const UPDATE_HEALTH_TERMS = 'services/Patients.svc/REST/UpdatePateintHealthSummaryReport'; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 03e966ff..f3005811 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1461,4 +1461,16 @@ const Map localizedValues = { "en": "This service is available to doctors visited during the past 15 days", "ar": "هذه الخدمة متاحة للاطباء الذين تمت زيارتهم خلال ال 15 يوم الماضية" }, + "online-clinics": { + "en": "Online Clinics: ", + "ar": "​العيادات المفتوحة: " + }, + "offline-clinics": { + "en": "Offline Clinics: ", + "ar": "العيادات المغلقة: " + }, + "clinic-schedule": { + "en": "Clinic Schedule", + "ar": "جدول العيادة" + }, }; diff --git a/lib/models/LiveCare/ApplePayInsertRequest.dart b/lib/models/LiveCare/ApplePayInsertRequest.dart new file mode 100644 index 00000000..ab1bd2cc --- /dev/null +++ b/lib/models/LiveCare/ApplePayInsertRequest.dart @@ -0,0 +1,152 @@ +class ApplePayInsertRequest { + String clientRequestID; + int clinicID; + String currency; + String customerEmail; + int customerID; + String customerName; + String deviceToken; + int doctorID; + String projectID; + String serviceID; + int channelID; + int patientID; + int patientTypeID; + int patientOutSA; + dynamic appointmentDate; + int appointmentNo; + String orderDescription; + String liveServiceID; + String latitude; + String longitude; + String amount; + String isSchedule; + String language; + int userName; + String responseContinueURL; + String backClickUrl; + String paymentOption; + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + String sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + + ApplePayInsertRequest( + {this.clientRequestID, + this.clinicID, + this.currency, + this.customerEmail, + this.customerID, + this.customerName, + this.deviceToken, + this.doctorID, + this.projectID, + this.serviceID, + this.channelID, + this.patientID, + this.patientTypeID, + this.patientOutSA, + this.appointmentDate, + this.appointmentNo, + this.orderDescription, + this.liveServiceID, + this.latitude, + this.longitude, + this.amount, + this.isSchedule, + this.language, + this.userName, + this.responseContinueURL, + this.backClickUrl, + this.paymentOption, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID}); + + ApplePayInsertRequest.fromJson(Map json) { + clientRequestID = json['ClientRequestID']; + clinicID = json['ClinicID']; + currency = json['Currency']; + customerEmail = json['CustomerEmail']; + customerID = json['CustomerID']; + customerName = json['CustomerName']; + deviceToken = json['DeviceToken']; + doctorID = json['DoctorID']; + projectID = json['ProjectID']; + serviceID = json['Service_ID']; + channelID = json['Channel_ID']; + patientID = json['PatientID']; + patientTypeID = json['PatientTypeID']; + patientOutSA = json['PatientOutSA']; + appointmentDate = json['AppointmentDate']; + appointmentNo = json['AppointmentNo']; + orderDescription = json['OrderDescription']; + liveServiceID = json['Live_ServiceID']; + latitude = json['Latitude']; + longitude = json['Longitude']; + amount = json['Amount']; + isSchedule = json['IsSchedule']; + language = json['Language']; + userName = json['userName']; + responseContinueURL = json['ResponseContinueURL']; + backClickUrl = json['BackClickUrl']; + paymentOption = json['PaymentOption']; + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + iPAdress = json['IPAdress']; + generalid = json['generalid']; + sessionID = json['SessionID']; + isDentalAllowedBackend = json['isDentalAllowedBackend']; + deviceTypeID = json['DeviceTypeID']; + } + + Map toJson() { + final Map data = new Map(); + data['ClientRequestID'] = this.clientRequestID; + data['ClinicID'] = this.clinicID; + data['Currency'] = this.currency; + data['CustomerEmail'] = this.customerEmail; + data['CustomerID'] = this.customerID; + data['CustomerName'] = this.customerName; + data['DeviceToken'] = this.deviceToken; + data['DoctorID'] = this.doctorID; + data['ProjectID'] = this.projectID; + data['Service_ID'] = this.serviceID; + data['Channel_ID'] = this.channelID; + data['PatientID'] = this.patientID; + data['PatientTypeID'] = this.patientTypeID; + data['PatientOutSA'] = this.patientOutSA; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentNo'] = this.appointmentNo; + data['OrderDescription'] = this.orderDescription; + data['Live_ServiceID'] = this.liveServiceID; + data['Latitude'] = this.latitude; + data['Longitude'] = this.longitude; + data['Amount'] = this.amount; + data['IsSchedule'] = this.isSchedule; + data['Language'] = this.language; + data['userName'] = this.userName; + data['ResponseContinueURL'] = this.responseContinueURL; + data['BackClickUrl'] = this.backClickUrl; + data['PaymentOption'] = this.paymentOption; + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['IPAdress'] = this.iPAdress; + data['generalid'] = this.generalid; + data['SessionID'] = this.sessionID; + data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; + data['DeviceTypeID'] = this.deviceTypeID; + return data; + } +} diff --git a/lib/pages/Blood/confirm_payment_page.dart b/lib/pages/Blood/confirm_payment_page.dart index f3f7bffb..5c70c181 100644 --- a/lib/pages/Blood/confirm_payment_page.dart +++ b/lib/pages/Blood/confirm_payment_page.dart @@ -19,6 +19,7 @@ import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'dialogs/ConfirmSMSDialog.dart'; import 'new_text_Field.dart'; @@ -86,7 +87,7 @@ class ConfirmPaymentPage extends StatelessWidget { height: 100.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset(getImagePath(selectedPaymentMethod)), + child: selectedPaymentMethod == "ApplePay" ? SvgPicture.asset(getImagePath(selectedPaymentMethod)) : Image.asset(getImagePath(selectedPaymentMethod)), ), Texts( '${advanceModel.amount} SAR', @@ -193,6 +194,9 @@ class ConfirmPaymentPage extends StatelessWidget { case "Installment": return 'assets/images/new-design/installment.png'; break; + case "ApplePay": + return 'assets/images/new-design/applepay.svg'; + break; } return 'assets/images/new-design/mada.png'; @@ -219,7 +223,7 @@ class ConfirmPaymentPage extends StatelessWidget { authenticatedUser, browser, false, - null, + "3", null); } diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart index c70932ee..b2cfe74c 100644 --- a/lib/pages/BookAppointment/BookSuccess.dart +++ b/lib/pages/BookAppointment/BookSuccess.dart @@ -20,7 +20,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; -import 'package:intl/intl.dart'; import 'QRCode.dart'; @@ -489,33 +488,28 @@ class _BookSuccessState extends State { } openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, PatientShareResponse patientShareResponse, AppoitmentAllHistoryResultList appo) async { - if (paymentMethod == "ApplePay") { - await widget.chromeBrowser.open( - url: "https://applepay-datatrans-sample.herokuapp.com/", - options: ChromeSafariBrowserClassOptions(android: AndroidChromeCustomTabsOptions(addDefaultShareMenuItem: false), ios: IOSSafariOptions(barCollapsingEnabled: true))); - } else { - widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart); - - widget.browser.openPaymentBrowser( - amount, - "Appointment check in", - Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), - appo.projectID.toString(), - authenticatedUser.emailAddress, - paymentMethod, - authenticatedUser.patientType, - authenticatedUser.firstName, - authenticatedUser.patientID, - authenticatedUser, - widget.browser, - widget.patientShareResponse.isLiveCareAppointment, - null, - null, - widget.patientShareResponse.appointmentDate, - widget.patientShareResponse.appointmentNo, - widget.patientShareResponse.clinicID, - widget.patientShareResponse.doctorID); - } + widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart, context: context); + + widget.browser.openPaymentBrowser( + amount, + "Appointment check in", + Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), + appo.projectID.toString(), + authenticatedUser.emailAddress, + paymentMethod, + authenticatedUser.patientType, + authenticatedUser.firstName, + authenticatedUser.patientID, + authenticatedUser, + widget.browser, + widget.patientShareResponse.isLiveCareAppointment, + "2", + null, + widget.patientShareResponse.appointmentDate, + widget.patientShareResponse.appointmentNo, + widget.patientShareResponse.clinicID, + widget.patientShareResponse.doctorID); + // } } onBrowserLoadStart(String url) { @@ -546,7 +540,6 @@ class _BookSuccessState extends State { GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service.checkPaymentStatus(Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), context).then((res) { - String paymentInfo = res['Response_Message']; if (paymentInfo == 'Success') { createAdvancePayment(res, appo); diff --git a/lib/pages/Covid-DriveThru/covid-payment-summary.dart b/lib/pages/Covid-DriveThru/covid-payment-summary.dart index c3c70578..fa39cdb0 100644 --- a/lib/pages/Covid-DriveThru/covid-payment-summary.dart +++ b/lib/pages/Covid-DriveThru/covid-payment-summary.dart @@ -16,6 +16,7 @@ import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:provider/provider.dart'; class CovidPaymentSummary extends StatefulWidget { @@ -27,8 +28,7 @@ class CovidPaymentSummary extends StatefulWidget { AppSharedPreferences sharedPref = AppSharedPreferences(); String transID = ""; - CovidPaymentSummary( - {@required this.patientShareResponse, this.selectedPaymentMethod}); + CovidPaymentSummary({@required this.patientShareResponse, this.selectedPaymentMethod}); @override _CovidPaymentSummaryState createState() => _CovidPaymentSummaryState(); @@ -64,12 +64,10 @@ class _CovidPaymentSummaryState extends State { height: 100.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: - Image.asset(getImagePath(widget.selectedPaymentMethod)), + child: widget.selectedPaymentMethod == "ApplePay" ? SvgPicture.asset(getImagePath(widget.selectedPaymentMethod)) : Image.asset(getImagePath(widget.selectedPaymentMethod)), ), Texts( - '${widget.patientShareResponse.patientShareWithTax} ' + - TranslationBase.of(context).sar, + '${widget.patientShareResponse.patientShareWithTax} ' + TranslationBase.of(context).sar, fontSize: 26, bold: true, ) @@ -85,8 +83,7 @@ class _CovidPaymentSummaryState extends State { margin: EdgeInsets.all(3), child: NewTextFields( hintText: TranslationBase.of(context).fileNumber, - initialValue: - projectViewModel.user.patientID.toString(), + initialValue: projectViewModel.user.patientID.toString(), isEnabled: false, ), ), @@ -116,11 +113,7 @@ class _CovidPaymentSummaryState extends State { ), NewTextFields( hintText: TranslationBase.of(context).depositorName, - initialValue: projectViewModel.user.firstName + - " " + - projectViewModel.user.middleName + - " " + - projectViewModel.user.lastName, + initialValue: projectViewModel.user.firstName + " " + projectViewModel.user.middleName + " " + projectViewModel.user.lastName, isEnabled: false, ), ], @@ -149,55 +142,31 @@ class _CovidPaymentSummaryState extends State { appo.clinicID = widget.patientShareResponse.clinicID; appo.appointmentNo = widget.patientShareResponse.appointmentNo; - openPayment( - widget.selectedPaymentMethod, - authenticatedUser, - double.parse( - widget.patientShareResponse.patientShareWithTax.toString()), - widget.patientShareResponse, - appo); + openPayment(widget.selectedPaymentMethod, authenticatedUser, double.parse(widget.patientShareResponse.patientShareWithTax.toString()), widget.patientShareResponse, appo); } - openPayment( - String paymentMethod, - AuthenticatedUser authenticatedUser, - double amount, - PatientShareResponse patientShareResponse, - AppoitmentAllHistoryResultList appo) async { - if (paymentMethod == "ApplePay") { - // await widget.chromeBrowser.open( - // url: "https://applepay-datatrans-sample.herokuapp.com/", - // options: ChromeSafariBrowserClassOptions( - // android: AndroidChromeCustomTabsOptions( - // addDefaultShareMenuItem: false), - // ios: IOSSafariOptions(barCollapsingEnabled: true))); - } else { - widget.browser = new MyInAppBrowser( - onExitCallback: onBrowserExit, - appo: appo, - onLoadStartCallback: onBrowserLoadStart); + openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, PatientShareResponse patientShareResponse, AppoitmentAllHistoryResultList appo) async { + widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart, context: context); - widget.browser.openPaymentBrowser( - amount, - "Appointment check in", - Utils.getAppointmentTransID( - appo.projectID, appo.clinicID, appo.appointmentNo), - appo.projectID.toString(), - authenticatedUser.emailAddress, - paymentMethod, - authenticatedUser.patientType, - authenticatedUser.firstName, - authenticatedUser.patientID, - authenticatedUser, - widget.browser, - widget.patientShareResponse.isLiveCareAppointment, - null, - null, - widget.patientShareResponse.appointmentDate, - widget.patientShareResponse.appointmentNo, - widget.patientShareResponse.clinicID, - widget.patientShareResponse.doctorID); - } + widget.browser.openPaymentBrowser( + amount, + "Appointment check in", + Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), + appo.projectID.toString(), + authenticatedUser.emailAddress, + paymentMethod, + authenticatedUser.patientType, + authenticatedUser.firstName, + authenticatedUser.patientID, + authenticatedUser, + widget.browser, + widget.patientShareResponse.isLiveCareAppointment, + "2", + null, + widget.patientShareResponse.appointmentDate, + widget.patientShareResponse.appointmentNo, + widget.patientShareResponse.clinicID, + widget.patientShareResponse.doctorID); } onBrowserLoadStart(String url) { @@ -229,12 +198,7 @@ class _CovidPaymentSummaryState extends State { checkPaymentStatus(AppoitmentAllHistoryResultList appo) { GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); - service - .checkPaymentStatus( - Utils.getAppointmentTransID( - appo.projectID, appo.clinicID, appo.appointmentNo), - context) - .then((res) { + service.checkPaymentStatus(Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), context).then((res) { print("Printing Payment Status Reponse!!!!"); print(res); String paymentInfo = res['Response_Message']; @@ -254,15 +218,9 @@ class _CovidPaymentSummaryState extends State { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); - service - .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], - res['Fort_id'], res['PaymentMethod'], context) - .then((res) { + service.createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], context).then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); - addAdvancedNumberRequest( - res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), - paymentReference, - appo.appointmentNo.toString()); + addAdvancedNumberRequest(res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), paymentReference, appo.appointmentNo.toString()); }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); AppToast.showErrorToast(message: err); @@ -270,13 +228,9 @@ class _CovidPaymentSummaryState extends State { }); } - addAdvancedNumberRequest( - String advanceNumber, String paymentReference, String appointmentID) { + addAdvancedNumberRequest(String advanceNumber, String paymentReference, String appointmentID) { DoctorsListService service = new DoctorsListService(); - service - .addAdvancedNumberRequest( - advanceNumber, paymentReference, appointmentID, context) - .then((res) { + service.addAdvancedNumberRequest(advanceNumber, paymentReference, appointmentID, context).then((res) { print(res); getAppoQR(context); }).catchError((err) { @@ -288,9 +242,7 @@ class _CovidPaymentSummaryState extends State { getAppoQR(context) { DoctorsListService service = new DoctorsListService(); - service - .generateAppointmentQR(widget.patientShareResponse, context) - .then((res) { + service.generateAppointmentQR(widget.patientShareResponse, context).then((res) { print(res); GifLoaderDialogUtils.hideDialog(context); navigateToQR(context, res['AppointmentQR']); @@ -328,6 +280,9 @@ class _CovidPaymentSummaryState extends State { case "Installment": return 'assets/images/new-design/installment.png'; break; + case "ApplePay": + return 'assets/images/new-design/applepay.svg'; + break; } return 'assets/images/new-design/mada.png'; diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index e9c096cf..749ff667 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -597,7 +597,7 @@ class _ToDoState extends State { } openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, PatientShareResponse patientShareResponse, AppoitmentAllHistoryResultList appo) { - widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart); + widget.browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart, context: context); widget.browser.openPaymentBrowser( amount, @@ -612,7 +612,7 @@ class _ToDoState extends State { authenticatedUser, widget.browser, appo.isLiveCareAppointment, - null, + "2", null, appo.appointmentDate, appo.appointmentNo, diff --git a/lib/pages/ToDoList/payment_method_select.dart b/lib/pages/ToDoList/payment_method_select.dart index 9a22eada..f22628f9 100644 --- a/lib/pages/ToDoList/payment_method_select.dart +++ b/lib/pages/ToDoList/payment_method_select.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; @@ -163,7 +165,7 @@ class _PaymentMethodState extends State { ], ), ), - Container( + Platform.isIOS ? Container( margin: EdgeInsets.only(top: 25.0), child: Flex( direction: Axis.horizontal, @@ -201,7 +203,7 @@ class _PaymentMethodState extends State { ), ], ), - ), + ) : Container(), SizedBox( height: 150.0, ), diff --git a/lib/pages/landing/fragments/home_page_fragment2.dart b/lib/pages/landing/fragments/home_page_fragment2.dart index 68bf2ffe..3bb22f75 100644 --- a/lib/pages/landing/fragments/home_page_fragment2.dart +++ b/lib/pages/landing/fragments/home_page_fragment2.dart @@ -509,7 +509,7 @@ class _HomePageFragment2State extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - TranslationBase.of(context).HMGPharmacy, + TranslationBase.of(context).onlinePharmacy, style: TextStyle( color: Colors.black, fontSize: 14, diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index 80dcaa88..65bad5dd 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -524,12 +524,6 @@ class _HomePageState extends State { ) : Column( children: [ - // if (projectViewModel.user != null && model.isLogin && model.user.outSA == 1) - // Image.asset( - // 'assets/images/lock_icon.png', - // width: 50, - // height: 50, - // ), Image.asset( 'assets/images/pharmacy_logo.png', width: 40, diff --git a/lib/pages/landing/widgets/logged_slider_view.dart b/lib/pages/landing/widgets/logged_slider_view.dart index 958135d0..26879420 100644 --- a/lib/pages/landing/widgets/logged_slider_view.dart +++ b/lib/pages/landing/widgets/logged_slider_view.dart @@ -155,9 +155,6 @@ class LoggedSliderView extends StatelessWidget { ], ), ), - SizedBox( - width: 3, - ), Expanded( child: Row( children: [ @@ -171,9 +168,6 @@ class LoggedSliderView extends StatelessWidget { ], ), ), - SizedBox( - width: 3, - ), Expanded( child: Row( children: [ @@ -183,7 +177,7 @@ class LoggedSliderView extends StatelessWidget { height: 12, ), mWidth(6), - Texts('${TranslationBase.of(context).bloodD}: ${model.booldType}', color: Colors.white, fontSize: 10) + Texts('${TranslationBase.of(context).bloodType}: ${model.booldType}', color: Colors.white, fontSize: 10) ], ), ), diff --git a/lib/pages/livecare/livecare_home.dart b/lib/pages/livecare/livecare_home.dart index 31275239..fa0c1b75 100644 --- a/lib/pages/livecare/livecare_home.dart +++ b/lib/pages/livecare/livecare_home.dart @@ -50,7 +50,7 @@ class _LiveCareHomeState extends State with SingleTickerProviderSt @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle: "LiveCare", + appBarTitle: TranslationBase.of(context).livecare, isShowAppBar: true, imagesInfo: imagesInfo, description: TranslationBase.of(context).erConsultation, diff --git a/lib/pages/livecare/widgets/ClinicTimingsDialog.dart b/lib/pages/livecare/widgets/ClinicTimingsDialog.dart index d5fce79e..df0a5286 100644 --- a/lib/pages/livecare/widgets/ClinicTimingsDialog.dart +++ b/lib/pages/livecare/widgets/ClinicTimingsDialog.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/models/LiveCare/ClinicsServiceTimingsResponse.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; class ClinicTimingsDialog extends StatefulWidget { @@ -31,7 +32,7 @@ class _ClinicTimingsDialogState extends State { shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), child: Container( - height: MediaQuery.of(context).size.height * 0.68, + height: 580.0, margin: EdgeInsets.all(20.0), width: 450.0, child: Column( @@ -41,7 +42,7 @@ class _ClinicTimingsDialogState extends State { Container( alignment: Alignment.center, margin: EdgeInsets.only(bottom: 10.0), - child: Text("Clinic Schedule", + child: Text(TranslationBase.of(context).clinicSchedule, textAlign: TextAlign.center, style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), @@ -98,7 +99,7 @@ class _ClinicTimingsDialogState extends State { Navigator.pop(context); }, child: Container( - child: Text("OK", + child: Text(TranslationBase.of(context).ok, textAlign: TextAlign.center, style: TextStyle( fontSize: 18.0, diff --git a/lib/pages/livecare/widgets/LiveCarePaymentDialog.dart b/lib/pages/livecare/widgets/LiveCarePaymentDialog.dart index c06c9464..4f203db2 100644 --- a/lib/pages/livecare/widgets/LiveCarePaymentDialog.dart +++ b/lib/pages/livecare/widgets/LiveCarePaymentDialog.dart @@ -1,7 +1,9 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/LiveCare/ERAppointmentFeesResponse.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class LiveCarePaymentDialog extends StatefulWidget { GetERAppointmentFeesList getERAppointmentFeesList; @@ -20,11 +22,14 @@ class LiveCarePaymentDialog extends StatefulWidget { class _LiveCarePaymentDialogState extends State { int _selected = 0; + ProjectViewModel projectViewModel; + @override Widget build(BuildContext context) { var size = MediaQuery.of(context).size; final double itemHeight = ((size.height - kToolbarHeight - 24) * 0.42) / 2; final double itemWidth = size.width / 2; + projectViewModel = Provider.of(context); return Container( child: Dialog( @@ -66,7 +71,7 @@ class _LiveCarePaymentDialogState extends State { ), ), Expanded( - child: Text(widget.waitingTime.toString() + " Minutes", + child: Text(widget.waitingTime.toString() + " " + TranslationBase.of(context).minute, textAlign: TextAlign.start, style: TextStyle( fontSize: 16.0, @@ -156,7 +161,7 @@ class _LiveCarePaymentDialogState extends State { children: [ Image.asset("assets/images/new-design/alert-triangle.png"), Container( - margin: EdgeInsets.only(left: 10.0), + margin: EdgeInsets.only(left: 10.0, right: 10.0), width: MediaQuery.of(context).size.width * 0.55, child: Text(TranslationBase.of(context).insuredPatient, style: TextStyle(fontSize: 13.0)), @@ -181,14 +186,6 @@ class _LiveCarePaymentDialogState extends State { style: new TextStyle(fontSize: 14.0), ), ), -// Container( -//// alignment: Alignment.centerRight, -// child: new Text( -// 'Click Here', -// textAlign: TextAlign.end, -// style: new TextStyle(fontSize: 16.0), -// ), -// ), ], ), ), @@ -228,7 +225,7 @@ class _LiveCarePaymentDialogState extends State { Navigator.pop(context, false); }, child: Container( - child: Text("Cancel", + child: Text(TranslationBase.of(context).cancel, textAlign: TextAlign.center, style: TextStyle( fontSize: 18.0, color: Colors.red[700])), @@ -247,7 +244,7 @@ class _LiveCarePaymentDialogState extends State { } }, child: Container( - child: Text("Ok", + child: Text(TranslationBase.of(context).ok, textAlign: TextAlign.center, style: TextStyle( fontSize: 18.0, @@ -278,7 +275,7 @@ class _LiveCarePaymentDialogState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 14, - fontFamily: 'Open-Sans', + // fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', letterSpacing: 0.5, color: Colors.black)), ); @@ -291,7 +288,7 @@ class _LiveCarePaymentDialogState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 14, - fontFamily: 'Open-Sans', + // fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins', letterSpacing: 0.5, fontWeight: FontWeight.bold, color: Colors.black)), diff --git a/lib/pages/livecare/widgets/clinic_list.dart b/lib/pages/livecare/widgets/clinic_list.dart index 94bce343..a310f4fd 100644 --- a/lib/pages/livecare/widgets/clinic_list.dart +++ b/lib/pages/livecare/widgets/clinic_list.dart @@ -157,7 +157,6 @@ class _clinic_listState extends State { GifLoaderDialogUtils.showMyDialog(context); service.getERAppointmentTime(selectedClinicID, context).then((res) { GifLoaderDialogUtils.hideDialog(context); - print(res); showLiveCarePaymentDialog(getERAppointmentFeesList, res['WatingtimeInteger']); }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); @@ -236,6 +235,7 @@ class _clinic_listState extends State { appo.clinicID = selectedClinicID; appo.appointmentNo = DateTime.now().millisecondsSinceEpoch; + appo.projectID = 12; if (await this.sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); @@ -253,9 +253,9 @@ class _clinic_listState extends State { } openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, AppoitmentAllHistoryResultList appo) { - browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart); + browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart, context: context); - browser.openPaymentBrowser(amount, "LiveCare Payment", Utils.getAppointmentTransID(12, appo.clinicID, appo.appointmentNo), "12", authenticatedUser.emailAddress, paymentMethod, + browser.openPaymentBrowser(amount, "LiveCare Payment", Utils.getAppointmentTransID(appo.projectID, appo.clinicID, appo.appointmentNo), "12", authenticatedUser.emailAddress, paymentMethod, authenticatedUser.patientType, authenticatedUser.firstName, authenticatedUser.patientID, authenticatedUser, browser, false, "4", selectedClinicID.toString()); } @@ -368,7 +368,6 @@ class _clinic_listState extends State { if (res['MessageStatus'] == 1) { setState(() { liveCareScheduleClinicsListResponse = LiveCareScheduleClinicsListResponse.fromJson(res); - print(liveCareScheduleClinicsListResponse.clinicsHaveScheduleList.length); selectedClinicID = liveCareScheduleClinicsListResponse.clinicsHaveScheduleList[0].serviceID; selectedClinicName = liveCareScheduleClinicsListResponse.clinicsHaveScheduleList[0].clinicDesc; isDataLoaded = true; @@ -432,12 +431,6 @@ class _clinic_listState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ -// Container( -// margin: EdgeInsets.all(15.0), -// child: Text("Online Clinics: ", -// style: TextStyle( -// fontSize: 20.0, fontWeight: FontWeight.bold)), -// ), ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, @@ -505,7 +498,7 @@ class _clinic_listState extends State { children: [ Container( margin: EdgeInsets.all(15.0), - child: Text("Online Clinics: ", style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).onlineClinics, style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), ), ListView.builder( scrollDirection: Axis.vertical, @@ -529,7 +522,7 @@ class _clinic_listState extends State { ), Container( margin: EdgeInsets.all(15.0), - child: Text("Offline Clinics: ", style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), + child: Text(TranslationBase.of(context).offlineClinics, style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), ), ListView.builder( scrollDirection: Axis.vertical, @@ -581,7 +574,7 @@ class _clinic_listState extends State { disabledTextColor: Colors.white, disabledColor: new Color(0xFFbcc2c4), onPressed: startLiveCare, - child: Text("Start", style: TextStyle(fontSize: 18.0)), + child: Text(TranslationBase.of(context).start, style: TextStyle(fontSize: 18.0)), ), ), ), diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart index d1d0293b..5de9c15a 100644 --- a/lib/pages/medical/balance/advance_payment_page.dart +++ b/lib/pages/medical/balance/advance_payment_page.dart @@ -205,7 +205,7 @@ class _AdvancePaymentPageState extends State { ), NewTextFields( hintText: TranslationBase.of(context).amount, - keyboardType: TextInputType.number, + keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), onChanged: (value) { setState(() { amount = value; diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart index 0d2fac93..93fbae87 100644 --- a/lib/pages/medical/balance/confirm_payment_page.dart +++ b/lib/pages/medical/balance/confirm_payment_page.dart @@ -19,6 +19,7 @@ import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'dialogs/ConfirmSMSDialog.dart'; import 'new_text_Field.dart'; @@ -32,11 +33,7 @@ class ConfirmPaymentPage extends StatelessWidget { AppSharedPreferences sharedPref = AppSharedPreferences(); String transID = ""; - ConfirmPaymentPage( - {this.advanceModel, - this.patientInfoAndMobileNumber, - this.selectedPaymentMethod, - this.authenticatedUser}); + ConfirmPaymentPage({this.advanceModel, this.patientInfoAndMobileNumber, this.selectedPaymentMethod, this.authenticatedUser}); @override Widget build(BuildContext context) { @@ -51,11 +48,9 @@ class ConfirmPaymentPage extends StatelessWidget { print("dialog dismissed"); print(value); if (value != null && value) { - AppoitmentAllHistoryResultList appo = - new AppoitmentAllHistoryResultList(); + AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList(); appo.projectID = patientInfoAndMobileNumber.projectID; - openPayment(selectedPaymentMethod, authenticatedUser, - double.parse(advanceModel.amount), null); + openPayment(selectedPaymentMethod, authenticatedUser, double.parse(advanceModel.amount), null); } }); } @@ -87,7 +82,7 @@ class ConfirmPaymentPage extends StatelessWidget { height: 100.0, padding: EdgeInsets.all(7.0), width: MediaQuery.of(context).size.width * 0.45, - child: Image.asset(getImagePath(selectedPaymentMethod)), + child: selectedPaymentMethod == "ApplePay" ? SvgPicture.asset(getImagePath(selectedPaymentMethod)) : Image.asset(getImagePath(selectedPaymentMethod)), ), Texts( '${advanceModel.amount} SAR', @@ -136,11 +131,7 @@ class ConfirmPaymentPage extends StatelessWidget { ), NewTextFields( hintText: TranslationBase.of(context).depositorName, - initialValue: model.user.firstName + - " " + - model.user.middleName + - " " + - model.user.lastName, + initialValue: model.user.firstName + " " + model.user.middleName + " " + model.user.lastName, isEnabled: false, ), SizedBox( @@ -166,14 +157,9 @@ class ConfirmPaymentPage extends StatelessWidget { disabled: model.state == ViewState.Busy, onTap: () { GifLoaderDialogUtils.showMyDialog(context); - model - .sendActivationCodeForAdvancePayment( - patientID: int.parse(advanceModel.fileNumber), - projectID: advanceModel.hospitalsModel.iD) - .then((value) { + model.sendActivationCodeForAdvancePayment(patientID: int.parse(advanceModel.fileNumber), projectID: advanceModel.hospitalsModel.iD).then((value) { GifLoaderDialogUtils.hideDialog(context); - if (model.state != ViewState.ErrorLocal && - model.state != ViewState.Error) showSMSDialog(); + if (model.state != ViewState.ErrorLocal && model.state != ViewState.Error) showSMSDialog(); }); }, ), @@ -199,36 +185,21 @@ class ConfirmPaymentPage extends StatelessWidget { case "Installment": return 'assets/images/new-design/installment.png'; break; + case "ApplePay": + return 'assets/images/new-design/applepay.svg'; + break; } return 'assets/images/new-design/mada.png'; } - openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, - double amount, AppoitmentAllHistoryResultList appo) { - browser = new MyInAppBrowser( - onExitCallback: onBrowserExit, - appo: appo, - onLoadStartCallback: onBrowserLoadStart); + openPayment(String paymentMethod, AuthenticatedUser authenticatedUser, double amount, AppoitmentAllHistoryResultList appo) { + browser = new MyInAppBrowser(onExitCallback: onBrowserExit, appo: appo, onLoadStartCallback: onBrowserLoadStart); - transID = Utils.getAdvancePaymentTransID( - advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); + transID = Utils.getAdvancePaymentTransID(advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); - browser.openPaymentBrowser( - amount, - "Advance Payment", - transID, - advanceModel.hospitalsModel.iD.toString(), - advanceModel.email, - paymentMethod, - patientInfoAndMobileNumber.patientType, - advanceModel.patientName, - advanceModel.fileNumber, - authenticatedUser, - browser, - false, - null, - null); + browser.openPaymentBrowser(amount, "Advance Payment", transID, advanceModel.hospitalsModel.iD.toString(), advanceModel.email, paymentMethod, patientInfoAndMobileNumber.patientType, + advanceModel.patientName, advanceModel.fileNumber, authenticatedUser, browser, false, "3", null); } onBrowserLoadStart(String url) { @@ -280,23 +251,11 @@ class ConfirmPaymentPage extends StatelessWidget { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); - service.HIS_createAdvancePayment( - appo, - advanceModel.hospitalsModel.iD.toString(), - res['Amount'], - res['Fort_id'], - res['PaymentMethod'], - patientInfoAndMobileNumber.patientType, - advanceModel.patientName, - advanceModel.fileNumber, - AppGlobal.context) + service.HIS_createAdvancePayment(appo, advanceModel.hospitalsModel.iD.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], patientInfoAndMobileNumber.patientType, + advanceModel.patientName, advanceModel.fileNumber, AppGlobal.context) .then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); - addAdvancedNumberRequest( - res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), - paymentReference, - 0, - appo); + addAdvancedNumberRequest(res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), paymentReference, 0, appo); }).catchError((err) { GifLoaderDialogUtils.hideDialog(AppGlobal.context); AppToast.showErrorToast(message: err); @@ -304,13 +263,9 @@ class ConfirmPaymentPage extends StatelessWidget { }); } - addAdvancedNumberRequest(String advanceNumber, String paymentReference, - dynamic appointmentID, AppoitmentAllHistoryResultList appo) { + addAdvancedNumberRequest(String advanceNumber, String paymentReference, dynamic appointmentID, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); - service - .addAdvancedNumberRequest( - advanceNumber, paymentReference, appointmentID, AppGlobal.context) - .then((res) { + service.addAdvancedNumberRequest(advanceNumber, paymentReference, appointmentID, AppGlobal.context).then((res) { print(res); GifLoaderDialogUtils.hideDialog(AppGlobal.context); navigateToHome(AppGlobal.context); diff --git a/lib/pages/medical/labs/passport_update_page.dart b/lib/pages/medical/labs/passport_update_page.dart index 1e81b2e5..ad77320f 100644 --- a/lib/pages/medical/labs/passport_update_page.dart +++ b/lib/pages/medical/labs/passport_update_page.dart @@ -28,6 +28,8 @@ class _PassportUpdatePageState extends State { appBarTitle: TranslationBase.of(context).passportNumber, isShowAppBar: true, isBottomBar: true, + showNewAppBar: true, + showNewAppBarTitle: true, body: Container( child: SingleChildScrollView( child: Column( @@ -50,34 +52,34 @@ class _PassportUpdatePageState extends State { onChanged: (value) => {_onPassportTextChanged(value)}, padding: EdgeInsets.only(top: 20, bottom: 20, left: 10, right: 10), hintText: TranslationBase.of(context).passportNumber, - )) + )), + Container( + margin: EdgeInsets.only(top: 30.0, left: 45.0, right: 45.0, bottom: 10.0), + child: ButtonTheme( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + minWidth: MediaQuery.of(context).size.width, + height: 45.0, + child: RaisedButton( + color: new Color(0xFFc5272d), + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: Colors.red[300], + onPressed: () { + if (_isButtonDisabled == false) + updatePassportNumber(); + else + AppToast.showErrorToast(message: TranslationBase.of(context).validPassportNumber); + }, + child: Text(TranslationBase.of(context).submit, style: TextStyle(fontSize: 18.0)), + ), + ), + ), ], ), ), ), - bottomSheet: Container( - margin: EdgeInsets.only(top: 10.0, left: 30.0, right: 30.0, bottom: 10.0), - child: ButtonTheme( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - minWidth: MediaQuery.of(context).size.width, - height: 45.0, - child: RaisedButton( - color: new Color(0xFFc5272d), - textColor: Colors.white, - disabledTextColor: Colors.white, - disabledColor: Colors.red[300], - onPressed: () { - if (_isButtonDisabled == false) - updatePassportNumber(); - else - AppToast.showErrorToast(message: TranslationBase.of(context).validPassportNumber); - }, - child: Text(TranslationBase.of(context).submit, style: TextStyle(fontSize: 18.0)), - ), - ), - ), ); } diff --git a/lib/pages/medical/prescriptions/prescriptions_home_page.dart b/lib/pages/medical/prescriptions/prescriptions_home_page.dart index 7345c3fe..7d65837d 100644 --- a/lib/pages/medical/prescriptions/prescriptions_home_page.dart +++ b/lib/pages/medical/prescriptions/prescriptions_home_page.dart @@ -2,6 +2,7 @@ import 'dart:ui'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_page.dart'; @@ -10,6 +11,7 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import '../../../Constants.dart'; @@ -22,6 +24,8 @@ class _HomePrescriptionsPageState extends State with Sing TabController _tabController; List imagesInfo = List(); + ProjectViewModel projectViewModel; + @override void initState() { super.initState(); @@ -40,6 +44,7 @@ class _HomePrescriptionsPageState extends State with Sing @override Widget build(BuildContext context) { + projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => model.getPrescriptions(), builder: (_, model, widget) => AppScaffold( @@ -71,7 +76,7 @@ class _HomePrescriptionsPageState extends State with Sing fontWeight: FontWeight.w600, letterSpacing: -0.48, ), - tabs: [Text(TranslationBase.of(context).prescriptions), Text(TranslationBase.of(context).history)], + tabs: [Text(TranslationBase.of(context).prescriptions, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans')), Text(TranslationBase.of(context).history, style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'))], ), Expanded( child: TabBarView( diff --git a/lib/pages/medical/reports/monthly_reports.dart b/lib/pages/medical/reports/monthly_reports.dart index f1c1aa08..2a2647f7 100644 --- a/lib/pages/medical/reports/monthly_reports.dart +++ b/lib/pages/medical/reports/monthly_reports.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/reports_monthly_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/user_agreement_page.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; @@ -11,6 +12,7 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class MonthlyReportsPage extends StatefulWidget { @override @@ -36,6 +38,7 @@ class _MonthlyReportsPageState extends State { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return BaseView(builder: (_, model, w) { if (isSummary == null) { isSummary = model.receiveHealthSummaryReport; @@ -184,7 +187,7 @@ class _MonthlyReportsPageState extends State { RichText( text: TextSpan( text: TranslationBase.of(context).toViewTheTermsAndConditions + " ", - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16), + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16, fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'), children: [ TextSpan( text: TranslationBase.of(context).clickHere, diff --git a/lib/pages/medical/reports/report_home_page.dart b/lib/pages/medical/reports/report_home_page.dart index e24e9ac7..6e6d991a 100644 --- a/lib/pages/medical/reports/report_home_page.dart +++ b/lib/pages/medical/reports/report_home_page.dart @@ -3,13 +3,12 @@ import 'dart:ui'; import 'package:diplomaticquarterapp/core/model/ImagesInfo.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/reports_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_list_widget.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/reports_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; -import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; @@ -81,15 +80,19 @@ class _HomeReportPageState extends State with SingleTickerProvid tabs: [ Text( TranslationBase.of(context).requested, + style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'), ), Text( TranslationBase.of(context).ready, + style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'), ), Text( TranslationBase.of(context).completed, + style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'), ), Text( TranslationBase.of(context).cancelled, + style: TextStyle(fontFamily: projectViewModel.isArabic ? 'Cairo' : 'Poppins'), ), ], ), diff --git a/lib/services/livecare_services/livecare_provider.dart b/lib/services/livecare_services/livecare_provider.dart index 285fa0bf..7ae70376 100644 --- a/lib/services/livecare_services/livecare_provider.dart +++ b/lib/services/livecare_services/livecare_provider.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/models/LiveCare/ApplePayInsertRequest.dart'; import 'package:diplomaticquarterapp/models/Request.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; @@ -20,8 +21,7 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -44,8 +44,7 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_LIVECARE_CLINICS, - onSuccess: (response, statusCode) async { + await baseAppClient.post(GET_LIVECARE_CLINICS, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -57,8 +56,7 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -81,12 +79,11 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_LIVECARE_SCHEDULE_CLINICS, - onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + await baseAppClient.post(GET_LIVECARE_SCHEDULE_CLINICS, onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } @@ -94,8 +91,7 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -119,12 +115,11 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST, - onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + await baseAppClient.post(GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST, onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } @@ -132,23 +127,17 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); // Request req = appGlobal.getPublicRequest(); - request = { - "LanguageID": languageID == 'ar' ? 1 : 2, - "TokenID": "", - "SessionID": "YckwoXhUmWBsnHKEKig" - }; + request = {"LanguageID": languageID == 'ar' ? 1 : 2, "TokenID": "", "SessionID": "YckwoXhUmWBsnHKEKig"}; dynamic localRes; - await baseAppClient.post(GET_LIVECARE_HISTORY, - onSuccess: (response, statusCode) async { + await baseAppClient.post(GET_LIVECARE_HISTORY, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -156,13 +145,11 @@ class LiveCareService extends BaseService { return Future.value(localRes); } - Future getLivecareClinicTiming( - int serviceID, BuildContext context) async { + Future getLivecareClinicTiming(int serviceID, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -185,8 +172,7 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_LIVECARE_CLINIC_TIMING, - onSuccess: (response, statusCode) async { + await baseAppClient.post(GET_LIVECARE_CLINIC_TIMING, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -198,8 +184,7 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -225,8 +210,7 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_ER_APPOINTMENT_FEES, - onSuccess: (response, statusCode) async { + await baseAppClient.post(GET_ER_APPOINTMENT_FEES, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -238,8 +222,7 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -265,8 +248,7 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(GET_ER_APPOINTMENT_TIME, - onSuccess: (response, statusCode) async { + await baseAppClient.post(GET_ER_APPOINTMENT_TIME, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -274,8 +256,7 @@ class LiveCareService extends BaseService { return Future.value(localRes); } - Future addNewCallForPatientER( - int serviceID, String clientRequestID, BuildContext context) async { + Future addNewCallForPatientER(int serviceID, String clientRequestID, BuildContext context) async { Map request; String deviceToken; @@ -285,8 +266,7 @@ class LiveCareService extends BaseService { }); if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } @@ -316,8 +296,7 @@ class LiveCareService extends BaseService { dynamic localRes; - await baseAppClient.post(ADD_NEW_CALL_FOR_PATIENT_ER, - onSuccess: (response, statusCode) async { + await baseAppClient.post(ADD_NEW_CALL_FOR_PATIENT_ER, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -334,16 +313,14 @@ class LiveCareService extends BaseService { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } request = {"VCID": vc_id}; dynamic localRes; - await baseAppClient.post(CANCEL_LIVECARE_REQUEST, - onSuccess: (response, statusCode) async { + await baseAppClient.post(CANCEL_LIVECARE_REQUEST, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -351,25 +328,34 @@ class LiveCareService extends BaseService { return Future.value(localRes); } - Future sendLiveCareInvoiceEmail(String appoNo, int projectID, - String emailAddress, BuildContext context) async { + Future applePayInsertRequest(ApplePayInsertRequest applePayInsertRequest, BuildContext context) async { + if (await this.sharedPref.getObject(USER_PROFILE) != null) { + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); + authUser = data; + } + + dynamic localRes; + + await baseAppClient.post(APPLE_PAY_INSERT_REQUEST, onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: applePayInsertRequest.toJson()); + return Future.value(localRes); + } + + Future sendLiveCareInvoiceEmail(String appoNo, int projectID, String emailAddress, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - request = { - "To": emailAddress, - "ProjectID": projectID, - "AppointmentNo": appoNo - }; + request = {"To": emailAddress, "ProjectID": projectID, "AppointmentNo": appoNo}; dynamic localRes; - await baseAppClient.post(SEND_LIVECARE_INVOICE_EMAIL, - onSuccess: (response, statusCode) async { + await baseAppClient.post(SEND_LIVECARE_INVOICE_EMAIL, onSuccess: (response, statusCode) async { localRes = response; }, onFailure: (String error, int statusCode) { throw error; diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index b7efad42..291b2ebe 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -2164,6 +2164,12 @@ class TranslationBase { localizedValues["h2o-info"][locale.languageCode]; String get askDocEmpty => localizedValues["ask-doc-empty"][locale.languageCode]; + String get onlineClinics => + localizedValues["online-clinics"][locale.languageCode]; + String get offlineClinics => + localizedValues["offline-clinics"][locale.languageCode]; + String get clinicSchedule => + localizedValues["clinic-schedule"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/in_app_browser/InAppBrowser.dart b/lib/widgets/in_app_browser/InAppBrowser.dart index f3aed157..d50420ab 100644 --- a/lib/widgets/in_app_browser/InAppBrowser.dart +++ b/lib/widgets/in_app_browser/InAppBrowser.dart @@ -5,17 +5,21 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/order_detail.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/models/LiveCare/ApplePayInsertRequest.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; +import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; enum _PAYMENT_TYPE { PACKAGES, PHARMACY, PATIENT } + var _InAppBrowserOptions = InAppBrowserClassOptions( - inAppWebViewGroupOptions: InAppWebViewGroupOptions( - crossPlatform: InAppWebViewOptions(useShouldOverrideUrlLoading: true)), + inAppWebViewGroupOptions: InAppWebViewGroupOptions(crossPlatform: InAppWebViewOptions(useShouldOverrideUrlLoading: true)), crossPlatform: InAppBrowserOptions(hideUrlBar: true), ios: IOSInAppBrowserOptions( toolbarBottom: false, @@ -23,38 +27,28 @@ var _InAppBrowserOptions = InAppBrowserClassOptions( class MyInAppBrowser extends InAppBrowser { _PAYMENT_TYPE paymentType; + // static String SERVICE_URL = // 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT - static String SERVICE_URL = - 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE + static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE // static String PREAUTH_SERVICE_URL = // 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort PreAuth Payment Gateway URL UAT - static String PREAUTH_SERVICE_URL = - 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort PreAuth Payment Gateway URL Live Store + static String PREAUTH_SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort PreAuth Payment Gateway URL Live Store // static String PRESCRIPTION_PAYMENT_WITH_ORDERID = // 'https://uat.hmgwebservices.com/epharmacy/checkout/OpcCompleteRedirectionPaymentClientbyOrder?orderID='; - static String PRESCRIPTION_PAYMENT_WITH_ORDERID = - 'https://mdlaboratories.com/exacartapi/checkout/OpcCompleteRedirectionPaymentClientbyOrder?orderID='; //Live + static String PRESCRIPTION_PAYMENT_WITH_ORDERID = 'https://mdlaboratories.com/exacartapi/checkout/OpcCompleteRedirectionPaymentClientbyOrder?orderID='; //Live // Packages - static String PACKAGES_REQUEST_PAYMENT_URL = - '$EXA_CART_API_BASE_URL/checkout/OpcCompleteRedirectionPayment1'; - static String PACKAGES_PAYMENT_SUCCESS_URL = - '$EXA_CART_API_BASE_URL/Checkout/MobilePaymentSuccess'; - static String PACKAGES_PAYMENT_FAIL_URL = - '$EXA_CART_API_BASE_URL/Checkout/MobilePaymentFailed'; - - static List successURLS = [ - 'success', - 'PayFortResponse', - 'PayFortSucess', - 'mobilepaymentcomplete' - ]; + static String PACKAGES_REQUEST_PAYMENT_URL = '$EXA_CART_API_BASE_URL/checkout/OpcCompleteRedirectionPayment1'; + static String PACKAGES_PAYMENT_SUCCESS_URL = '$EXA_CART_API_BASE_URL/Checkout/MobilePaymentSuccess'; + static String PACKAGES_PAYMENT_FAIL_URL = '$EXA_CART_API_BASE_URL/Checkout/MobilePaymentFailed'; + + static List successURLS = ['success', 'PayFortResponse', 'PayFortSucess', 'mobilepaymentcomplete']; static List errorURLS = ['PayfortCancel', 'errorpage', 'Failed']; @@ -76,8 +70,7 @@ class MyInAppBrowser extends InAppBrowser { static bool isPaymentDone = false; - MyInAppBrowser( - {this.onExitCallback, this.appo, this.onLoadStartCallback, this.context}); + MyInAppBrowser({this.onExitCallback, this.appo, this.onLoadStartCallback, this.context}); Future onBrowserCreated() async { print("\n\nBrowser Created!\n\n"); @@ -99,8 +92,7 @@ class MyInAppBrowser extends InAppBrowser { } @override - void onProgressChanged(int progress) { - } + void onProgressChanged(int progress) {} @override void onExit() { @@ -109,14 +101,11 @@ class MyInAppBrowser extends InAppBrowser { } @override - Future shouldOverrideUrlLoading( - ShouldOverrideUrlLoadingRequest shouldOverrideUrlLoadingRequest) async { + Future shouldOverrideUrlLoading(ShouldOverrideUrlLoadingRequest shouldOverrideUrlLoadingRequest) async { var url = shouldOverrideUrlLoadingRequest.url; debugPrint("redirecting/overriding to: $url"); - if (paymentType == _PAYMENT_TYPE.PACKAGES && - [PACKAGES_PAYMENT_SUCCESS_URL, PACKAGES_PAYMENT_FAIL_URL] - .contains(url)) { + if (paymentType == _PAYMENT_TYPE.PACKAGES && [PACKAGES_PAYMENT_SUCCESS_URL, PACKAGES_PAYMENT_FAIL_URL].contains(url)) { isPaymentDone = (url == PACKAGES_PAYMENT_SUCCESS_URL); close(); } @@ -135,86 +124,88 @@ class MyInAppBrowser extends InAppBrowser { getPatientData() async { if (await this.sharedPref.getObject(USER_PROFILE) != null) { - var data = AuthenticatedUser.fromJson( - await this.sharedPref.getObject(USER_PROFILE)); + var data = AuthenticatedUser.fromJson(await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - if (await this.sharedPref.getDouble(USER_LAT) != null && - await this.sharedPref.getDouble(USER_LONG) != null) { + if (await this.sharedPref.getDouble(USER_LAT) != null && await this.sharedPref.getDouble(USER_LONG) != null) { lat = await this.sharedPref.getDouble(USER_LAT); long = await this.sharedPref.getDouble(USER_LONG); } } - openPackagesPaymentBrowser( - {@required int customer_id, @required int order_id}) { + openPackagesPaymentBrowser({@required int customer_id, @required int order_id}) { paymentType = _PAYMENT_TYPE.PACKAGES; - var full_url = - '$PACKAGES_REQUEST_PAYMENT_URL?customer_id=$customer_id&order_id=$order_id'; + var full_url = '$PACKAGES_REQUEST_PAYMENT_URL?customer_id=$customer_id&order_id=$order_id'; this.openUrl(url: full_url, options: _InAppBrowserOptions); } - openPaymentBrowser( - double amount, - String orderDesc, - String transactionID, - String projId, - String emailId, - String paymentMethod, - dynamic patientType, - String patientName, - dynamic patientID, - AuthenticatedUser authenticatedUser, - InAppBrowser browser, - bool isLiveCareAppo, - var servID, - var LiveServID, - [var appoDate, - var appoNo, - var clinicID, - var doctorID]) { + openPaymentBrowser(double amount, String orderDesc, String transactionID, String projId, String emailId, String paymentMethod, dynamic patientType, String patientName, dynamic patientID, + AuthenticatedUser authenticatedUser, InAppBrowser browser, bool isLiveCareAppo, var servID, var LiveServID, + [var appoDate, var appoNo, var clinicID, var doctorID]) async { this.browser = browser; - getPatientData(); - generateURL( - amount, - orderDesc, - transactionID, - projId, - emailId, - paymentMethod, - patientType, - patientName, - patientID, - authenticatedUser, - isLiveCareAppo, - servID, - LiveServID, - appoDate, - appoNo, - clinicID, - doctorID) - .then((value) { - paymentType = _PAYMENT_TYPE.PATIENT; - this.browser.openUrl(url: value, options: _InAppBrowserOptions); - }); + await getPatientData(); + if (paymentMethod == "ApplePay") { + MyChromeSafariBrowser safariBrowser = new MyChromeSafariBrowser(new MyInAppBrowser(), onExitCallback: browser.onExit, onLoadStartCallback: this.browser.onLoadStart, appo: this.appo); + + if (context != null) GifLoaderDialogUtils.showMyDialog(context); + + LiveCareService service = new LiveCareService(); + ApplePayInsertRequest applePayInsertRequest = new ApplePayInsertRequest(); + + applePayInsertRequest.clientRequestID = transactionID; + applePayInsertRequest.clinicID = clinicID != null ? clinicID : 0; + applePayInsertRequest.currency = authenticatedUser.outSA == 1 ? "AED" : "SAR"; + applePayInsertRequest.customerEmail = emailId; + applePayInsertRequest.customerID = authenticatedUser.patientID; + applePayInsertRequest.customerName = authenticatedUser.firstName; + applePayInsertRequest.deviceToken = deviceToken; + applePayInsertRequest.doctorID = doctorID != null ? doctorID : 0; + applePayInsertRequest.projectID = projId; + applePayInsertRequest.serviceID = servID; + applePayInsertRequest.channelID = 3; + applePayInsertRequest.patientID = authenticatedUser.patientID; + applePayInsertRequest.patientTypeID = authenticatedUser.patientType; + applePayInsertRequest.patientOutSA = authenticatedUser.outSA; + applePayInsertRequest.appointmentDate = appoDate != null ? appoDate : null; + applePayInsertRequest.appointmentNo = appoNo != null ? appoNo : 0; + applePayInsertRequest.orderDescription = orderDesc; + applePayInsertRequest.liveServiceID = LiveServID; + applePayInsertRequest.latitude = this.lat.toString(); + applePayInsertRequest.longitude = this.long.toString(); + applePayInsertRequest.amount = amount.toString(); + applePayInsertRequest.isSchedule = "0"; + applePayInsertRequest.language = getLanguageID() == 'ar' ? 'AR' : 'EN'; + applePayInsertRequest.userName = authenticatedUser.patientID; + applePayInsertRequest.responseContinueURL = "http://hmg.com/Documents/success.html"; + applePayInsertRequest.backClickUrl = "http://hmg.com/Documents/success.html"; + applePayInsertRequest.paymentOption = "ApplePay"; + + service.applePayInsertRequest(applePayInsertRequest, context).then((res) { + if (context != null) GifLoaderDialogUtils.hideDialog(context); + var url = "https://hmgwebservices.com/HMGApplePayLive/applepay/pay?apq=" + res['result']; + print(url); + safariBrowser.open(url: url); + // this.browser.openUrl(url: url, options: _InAppBrowserOptions); + }).catchError((err) { + print(err); + if (context != null) GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + }); + } else { + generateURL(amount, orderDesc, transactionID, projId, emailId, paymentMethod, patientType, patientName, patientID, authenticatedUser, isLiveCareAppo, servID, LiveServID, appoDate, appoNo, + clinicID, doctorID) + .then((value) { + paymentType = _PAYMENT_TYPE.PATIENT; + this.browser.openUrl(url: value, options: _InAppBrowserOptions); + }); + } } - openPharmacyPaymentBrowser( - OrderDetailModel order, - double amount, - String orderDesc, - String transactionID, - String emailId, - String paymentMethod, - String patientName, - dynamic patientID, - AuthenticatedUser authenticatedUser, - InAppBrowser browser) { + openPharmacyPaymentBrowser(OrderDetailModel order, double amount, String orderDesc, String transactionID, String emailId, String paymentMethod, String patientName, dynamic patientID, + AuthenticatedUser authenticatedUser, InAppBrowser browser) { this.browser = browser; getPatientData(); - generatePharmacyURL(order, amount, orderDesc, transactionID, emailId, - paymentMethod, patientName, patientID, authenticatedUser) - .then((value) { + generatePharmacyURL(order, amount, orderDesc, transactionID, emailId, paymentMethod, patientName, patientID, authenticatedUser).then((value) { this.browser.openUrl(url: value); }); } @@ -224,25 +215,9 @@ class MyInAppBrowser extends InAppBrowser { this.browser.openUrl(url: url, options: _InAppBrowserOptions); } - Future generateURL( - double amount, - String orderDesc, - String transactionID, - String projId, - String emailId, - String paymentMethod, - dynamic patientType, - String patientName, - dynamic patientID, - AuthenticatedUser authUser, - bool isLiveCareAppo, - var servID, - var LiveServID, - [var appoDate, - var appoNo, - var clinicID, - var doctorID, - var patientData]) async { + Future generateURL(double amount, String orderDesc, String transactionID, String projId, String emailId, String paymentMethod, dynamic patientType, String patientName, dynamic patientID, + AuthenticatedUser authUser, bool isLiveCareAppo, var servID, var LiveServID, + [var appoDate, var appoNo, var clinicID, var doctorID, var patientData]) async { getDeviceToken(); String currentLanguageID = getLanguageID() == 'ar' ? 'AR' : 'EN'; String form = isLiveCareAppo ? getLiveCareForm() : getForm(); @@ -256,19 +231,15 @@ class MyInAppBrowser extends InAppBrowser { form = form.replaceFirst('PROJECT_ID_VALUE', projId); form = form.replaceFirst('PAYMENT_OPTION_VALUE', paymentMethod); form = form.replaceFirst('LANG_VALUE', currentLanguageID); - form = form.replaceFirst('PATIENT_OUT_SA', - authUser.outSA == 0 ? false.toString() : true.toString()); - form = form.replaceFirst( - 'PATIENT_TYPE_ID', patientData == null ? patientType.toString() : "1"); + form = form.replaceFirst('PATIENT_OUT_SA', authUser.outSA == 0 ? false.toString() : true.toString()); + form = form.replaceFirst('PATIENT_TYPE_ID', patientData == null ? patientType.toString() : "1"); - form = form.replaceFirst( - 'DEVICE_TOKEN', await sharedPref.getString(PUSH_TOKEN)); + form = form.replaceFirst('DEVICE_TOKEN', await sharedPref.getString(PUSH_TOKEN)); form = form.replaceFirst('LATITUDE_VALUE', this.lat.toString()); form = form.replaceFirst('LONGITUDE_VALUE', this.long.toString()); if (servID == "4") - form = form.replaceFirst( - 'SERVICE_URL_VALUE', MyInAppBrowser.PREAUTH_SERVICE_URL); + form = form.replaceFirst('SERVICE_URL_VALUE', MyInAppBrowser.PREAUTH_SERVICE_URL); else form = form.replaceFirst('SERVICE_URL_VALUE', MyInAppBrowser.SERVICE_URL); @@ -297,19 +268,8 @@ class MyInAppBrowser extends InAppBrowser { } Future generatePharmacyURL( - OrderDetailModel order, - double amount, - String orderDesc, - String transactionID, - String emailId, - String paymentMethod, - String patientName, - dynamic patientID, - AuthenticatedUser authUser) async { - String pharmacyURL = PRESCRIPTION_PAYMENT_WITH_ORDERID + - order.orderGuid + - '&&CustomerId=' + - "${order.customerId}"; + OrderDetailModel order, double amount, String orderDesc, String transactionID, String emailId, String paymentMethod, String patientName, dynamic patientID, AuthenticatedUser authUser) async { + String pharmacyURL = PRESCRIPTION_PAYMENT_WITH_ORDERID + order.orderGuid + '&&CustomerId=' + "${order.customerId}"; return pharmacyURL; } @@ -380,10 +340,18 @@ class MyInAppBrowser extends InAppBrowser { '' + ''; } + + safariCallBack() { + print("Safari CallBack!!!"); + } } class MyChromeSafariBrowser extends ChromeSafariBrowser { - MyChromeSafariBrowser(browserFallback) : super(bFallback: browserFallback); + final Function onExitCallback; + final Function onLoadStartCallback; + AppoitmentAllHistoryResultList appo; + + MyChromeSafariBrowser(browserFallback, {@required this.onExitCallback, @required this.onLoadStartCallback, @required this.appo}) : super(bFallback: browserFallback); @override void onOpened() { @@ -393,10 +361,13 @@ class MyChromeSafariBrowser extends ChromeSafariBrowser { @override void onCompletedInitialLoad() { print("ChromeSafari browser initial load completed"); + onLoadStartCallback("ApplePay"); } @override void onClosed() { print("ChromeSafari browser closed"); + MyInAppBrowser.isPaymentDone = true; + onExitCallback(); } } From aadcfdc7bc94f780759f58b0c22bfdd6d41cb41c Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 12 Sep 2021 14:02:00 +0300 Subject: [PATCH 8/9] Insurance Approval fixes --- .../ReauestInsuranceApprovalModel.dart | 6 +- .../model/insurance/insurance_approval.dart | 4 +- lib/core/service/insurance_service.dart | 14 +- .../MyAppointments/models/ArrivedButtons.dart | 4 +- .../insurance/insurance_approval_screen.dart | 2 + lib/pages/insurance/insurance_page.dart | 2 +- lib/pages/medical/reports/reports_page.dart | 220 ++++++------------ lib/widgets/data_display/text.dart | 2 +- .../others/app_expandable_notifier.dart | 2 - 9 files changed, 91 insertions(+), 165 deletions(-) diff --git a/lib/core/model/insurance/ReauestInsuranceApprovalModel.dart b/lib/core/model/insurance/ReauestInsuranceApprovalModel.dart index 26bf567a..3fa91ecf 100644 --- a/lib/core/model/insurance/ReauestInsuranceApprovalModel.dart +++ b/lib/core/model/insurance/ReauestInsuranceApprovalModel.dart @@ -14,6 +14,7 @@ class RequestInsuranceApprovalModel { int patientType; int eXuldAPPNO; int projectID; + int appointmentNo; RequestInsuranceApprovalModel( {this.versionID, @@ -30,7 +31,8 @@ class RequestInsuranceApprovalModel { this.patientTypeID, this.patientType, this.eXuldAPPNO, - this.projectID}); + this.projectID, + this.appointmentNo}); RequestInsuranceApprovalModel.fromJson(Map json) { versionID = json['VersionID']; @@ -48,6 +50,7 @@ class RequestInsuranceApprovalModel { patientType = json['PatientType']; eXuldAPPNO = json['EXuldAPPNO']; projectID = json['ProjectID']; + appointmentNo = json['AppointmentNo']; } Map toJson() { @@ -67,6 +70,7 @@ class RequestInsuranceApprovalModel { data['PatientType'] = this.patientType; data['EXuldAPPNO'] = this.eXuldAPPNO; data['ProjectID'] = this.projectID; + data['AppointmentNo'] = this.appointmentNo; return data; } } diff --git a/lib/core/model/insurance/insurance_approval.dart b/lib/core/model/insurance/insurance_approval.dart index 27911267..52100514 100644 --- a/lib/core/model/insurance/insurance_approval.dart +++ b/lib/core/model/insurance/insurance_approval.dart @@ -216,7 +216,7 @@ class InsuranceApprovalModel { eApprovalRemarks = json['EApprovalRemarks']; isEmailSentOnDelayApproval = json['IsEmailSentOnDelayApproval']; eAuthorizationID = json['EAuthorizationID']; - if (json['ApporvalDetails'] != null) { + if (json['ApporvalDetails'] != null && json['ApporvalDetails'].length != 0) { apporvalDetails = InsuranceApprovalDetails.fromJson(json['ApporvalDetails'][0]); } approvalStatusDescption = json['ApprovalStatusDescption']; @@ -239,7 +239,7 @@ class InsuranceApprovalModel { projectName = json['ProjectName']; projectNameN = json['ProjectNameN']; qR = json['QR']; - speciality = json['Speciality'].cast(); + if (json['Speciality'] != null) speciality = json['Speciality'].cast(); strApprovalDate = json['StrApprovalDate']; strExpiryDate = json['StrExpiryDate']; strSubmitDate = json['StrSubmitDate']; diff --git a/lib/core/service/insurance_service.dart b/lib/core/service/insurance_service.dart index 6eb1f415..5b78d053 100644 --- a/lib/core/service/insurance_service.dart +++ b/lib/core/service/insurance_service.dart @@ -67,21 +67,19 @@ class InsuranceCardService extends BaseService { Future getInsuranceApproval({int appointmentNo}) async { hasError = false; - // _cardList.clear(); if (appointmentNo != null) { - // _requestInsuranceApprovalModel.appointmentNo = appointmentNo; - _requestInsuranceApprovalModel.eXuldAPPNO = null; - _requestInsuranceApprovalModel.projectID = null; + _requestInsuranceApprovalModel.appointmentNo = appointmentNo; + _requestInsuranceApprovalModel.eXuldAPPNO = 0; + _requestInsuranceApprovalModel.projectID = 0; } else { - // _requestInsuranceApprovalModel.appointmentNo = null; + _requestInsuranceApprovalModel.appointmentNo = 0; _requestInsuranceApprovalModel.eXuldAPPNO = 0; _requestInsuranceApprovalModel.projectID = 0; } + _insuranceApproval.clear(); + _insuranceApproval.length = 0; await baseAppClient.post(GET_PAtIENTS_INSURANCE_APPROVALS, onSuccess: (dynamic response, int statusCode) { - print(response['HIS_Approval_List'].length); - _insuranceApproval.clear(); - _insuranceApproval.length = 0; response['HIS_Approval_List'].forEach((item) { _insuranceApproval.add(InsuranceApprovalModel.fromJson(item)); }); diff --git a/lib/pages/MyAppointments/models/ArrivedButtons.dart b/lib/pages/MyAppointments/models/ArrivedButtons.dart index 302c7211..e8856ddb 100644 --- a/lib/pages/MyAppointments/models/ArrivedButtons.dart +++ b/lib/pages/MyAppointments/models/ArrivedButtons.dart @@ -35,13 +35,13 @@ class ArrivedButtons { }, { "title": TranslationBase.of(AppGlobal.context).insuranceApproval, - "subtitle": TranslationBase.of(AppGlobal.context).insuranceSubtitle, + "subtitle": TranslationBase.of(AppGlobal.context).insuranceApprovalSubtitle, "icon": 'insurance_approval.svg', "caller": "Insurance", }, { "title": TranslationBase.of(AppGlobal.context).askDoctor, - "subtitle": TranslationBase.of(AppGlobal.context).askYourSubtitle, + "subtitle": TranslationBase.of(AppGlobal.context).service, "icon": 'ask_doctor.svg', "caller": "askDoc", }, diff --git a/lib/pages/insurance/insurance_approval_screen.dart b/lib/pages/insurance/insurance_approval_screen.dart index 606966eb..195b6060 100644 --- a/lib/pages/insurance/insurance_approval_screen.dart +++ b/lib/pages/insurance/insurance_approval_screen.dart @@ -32,7 +32,9 @@ class _InsuranceApprovalState extends State { onModelReady: widget.appointmentNo != null ? (model) => model.getInsuranceApproval(appointmentNo: widget.appointmentNo) : (model) => model.getInsuranceApproval(), builder: (BuildContext context, InsuranceViewModel model, Widget child) => AppScaffold( isShowAppBar: true, + showNewAppBar: true, baseViewModel: model, + showNewAppBarTitle: true, appBarTitle: TranslationBase.of(context).approvals, description: TranslationBase.of(context).infoApprovals, infoList: TranslationBase.of(context).infoApprovalPoints, diff --git a/lib/pages/insurance/insurance_page.dart b/lib/pages/insurance/insurance_page.dart index 7b740895..69115842 100644 --- a/lib/pages/insurance/insurance_page.dart +++ b/lib/pages/insurance/insurance_page.dart @@ -113,7 +113,7 @@ class InsurancePage extends StatelessWidget { style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, letterSpacing: -0.46), ), Text( - TranslationBase.of(context).fileno + ": " + model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].patientID.toString(), + TranslationBase.of(context).fileno + ": " + model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList[index].responseID.toString(), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, letterSpacing: -0.46), ), ], diff --git a/lib/pages/medical/reports/reports_page.dart b/lib/pages/medical/reports/reports_page.dart index 2ba14006..c7da70cf 100644 --- a/lib/pages/medical/reports/reports_page.dart +++ b/lib/pages/medical/reports/reports_page.dart @@ -7,7 +7,6 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; -import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -38,96 +37,15 @@ class MedicalReports extends StatelessWidget { showNewAppBarTitle: true, backgroundColor: Color(0xffF7F7F7), body: ListView.separated( - physics: BouncingScrollPhysics(), - itemCount: model.appointHistoryList.length, - padding: EdgeInsets.all(21), - separatorBuilder: (context, index) => SizedBox(height: 14), - itemBuilder: (context, index) { - AppointmentHistory _appointmenHistory = model.appointHistoryList[index]; - - return InkWell( - onTap: () => confirmBox(model.appointHistoryList[index], model), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.all( - Radius.circular(10.0), - ), - boxShadow: [ - BoxShadow( - color: Color(0xff000000).withOpacity(.05), - //spreadRadius: 5, - blurRadius: 27, - offset: Offset(0, -3), - ), - ], - color: Colors.white), - child: Padding( - padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) - Text( - (_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj), - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), - ), - Text( - DateUtil.formatDateToDate(_appointmenHistory.appointmentDate, projectViewModel.isArabic), - style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), - ), - ], - ), - if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) SizedBox(height: 6), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - LargeAvatar( - name: _appointmenHistory.doctorName, - url: _appointmenHistory.doctorImageURL, - width: 48, - height: 48, - ), - SizedBox(width: 11), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic), - if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - RatingBar.readOnly( - initialRating: _appointmenHistory.actualDoctorRate.toDouble(), - size: 16.0, - filledColor: Color(0XFFD02127), - emptyColor: Color(0XFFD02127), - isHalfAllowed: true, - halfFilledIcon: Icons.star_half, - filledIcon: Icons.star, - emptyIcon: Icons.star_border, - ), - Icon(Icons.email, color: Color(0xff2B353E)) - ], - ), - ], - ), - ), - ], - ), - ], - ), - ), - ), - ); - Container( + physics: BouncingScrollPhysics(), + itemCount: model.appointHistoryList.length, + padding: EdgeInsets.all(21), + separatorBuilder: (context, index) => SizedBox(height: 14), + itemBuilder: (context, index) { + AppointmentHistory _appointmenHistory = model.appointHistoryList[index]; + return InkWell( + onTap: () => confirmBox(model.appointHistoryList[index], model), + child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.all( Radius.circular(10.0), @@ -135,74 +53,80 @@ class MedicalReports extends StatelessWidget { boxShadow: [ BoxShadow( color: Color(0xff000000).withOpacity(.05), + //spreadRadius: 5, blurRadius: 27, offset: Offset(0, -3), ), ], color: Colors.white), - child: Row( - children: [ - Container( - margin: EdgeInsets.only(left: 5, right: 5), - child: LargeAvatar( - width: 50, - height: 50, - name: model.appointHistoryList[index].doctorNameObj, - url: model.appointHistoryList[index].doctorImageURL, - ), - ), - Expanded( - flex: 4, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 12, - ), - Texts(model.appointHistoryList[index].projectName), - Texts(model.appointHistoryList[index].clinicName), - Texts(projectViewModel.isArabic - ? DateUtil.getMonthDayYearDateFormattedAr(model.appointHistoryList[index].appointmentDate) - : DateUtil.getMonthDayYearDateFormatted(model.appointHistoryList[index].appointmentDate)), - StarRating(totalAverage: model.appointHistoryList[index].actualDoctorRate.toDouble(), forceStars: true), - SizedBox( - height: 12, + child: Padding( + padding: const EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) + Text( + _appointmenHistory.doctorTitle.toString() + " " + (_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj), + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: Color(0xff2E303A), letterSpacing: -0.64, height: 25 / 16), ), - ], - ), + Text( + DateUtil.formatDateToDate(_appointmenHistory.appointmentDate, projectViewModel.isArabic), + style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.48, height: 18 / 12), + ), + ], ), - ), - InkWell( - onTap: () => confirmBox(model.appointHistoryList[index], model), - child: Container( - width: 120, - height: 50, - decoration: BoxDecoration( - color: Colors.black54, - border: Border.all(color: Colors.transparent, width: 2), - shape: BoxShape.rectangle, - borderRadius: BorderRadius.all( - Radius.circular(8.0), + if ((_appointmenHistory.doctorName ?? _appointmenHistory.doctorNameObj) != null) SizedBox(height: 6), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + LargeAvatar( + name: _appointmenHistory.doctorName, + url: _appointmenHistory.doctorImageURL, + width: 48, + height: 48, ), - ), - child: Center( - child: Texts( - TranslationBase.of(context).requestReport, - fontSize: 12, - color: Colors.white, + SizedBox(width: 11), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + if (_appointmenHistory.projectName != null) myRichText(TranslationBase.of(context).clinic + ":", _appointmenHistory.projectName, projectViewModel.isArabic), + if (_appointmenHistory.clinicName != null) myRichText(TranslationBase.of(context).hospital + ":", _appointmenHistory.clinicName, projectViewModel.isArabic), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + RatingBar.readOnly( + initialRating: _appointmenHistory.actualDoctorRate.toDouble(), + size: 16.0, + filledColor: Color(0XFFD02127), + emptyColor: Color(0XFFD02127), + isHalfAllowed: true, + halfFilledIcon: Icons.star_half, + filledIcon: Icons.star, + emptyIcon: Icons.star_border, + ), + Icon(Icons.email, color: Color(0xff2B353E)) + ], + ), + ], + ), ), - ), + ], ), - ), - SizedBox( - width: 12, - ), - ], + ], + ), ), - ); - }), + ), + ); + }, + ), ), ); } diff --git a/lib/widgets/data_display/text.dart b/lib/widgets/data_display/text.dart index d759190e..4a00c9fe 100644 --- a/lib/widgets/data_display/text.dart +++ b/lib/widgets/data_display/text.dart @@ -237,7 +237,7 @@ class _TextsState extends State { letterSpacing: widget.variant == "overline" ? 1 : null, fontWeight: widget.fontWeight ?? _getFontWeight(), fontFamily: - projectViewModel.isArabic ? 'Cairo' : 'WorkSans'), + projectViewModel.isArabic ? 'Cairo' : 'Poppins'), ), if (widget.readMore && text.length > widget.maxLength && hidden) Positioned( diff --git a/lib/widgets/others/app_expandable_notifier.dart b/lib/widgets/others/app_expandable_notifier.dart index 0df1d9dc..042cad0c 100644 --- a/lib/widgets/others/app_expandable_notifier.dart +++ b/lib/widgets/others/app_expandable_notifier.dart @@ -49,8 +49,6 @@ class _AppExpandableNotifier extends State { _subTitle = _subTitle.toLowerCase().capitalizeFirstofEach; _title = _title.toLowerCase().capitalizeFirstofEach; } - print("_title:$_title"); - print("_subTitle:$_subTitle"); return ExpandableNotifier( child: Column( children: [ From 2669378da422bbfc4975f9d764a2231a88d31f2e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 12 Sep 2021 14:02:28 +0300 Subject: [PATCH 9/9] Insurance Approval API updated --- android/app/src/main/AndroidManifest.xml | 2 +- lib/config/config.dart | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b90d91e3..7d2259c5 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -99,7 +99,7 @@ + android:value="AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8"/>