From 27182ee8db211fd2f19a237c5b33b353fe4e50ec Mon Sep 17 00:00:00 2001 From: Zohaib Kambrani Date: Tue, 1 Dec 2020 10:33:54 +0300 Subject: [PATCH] no message --- android/app/build.gradle | 11 +- android/app/src/main/AndroidManifest.xml | 88 +-- .../diplomaticquarterapp/BaseActivity.kt | 51 -- .../FlutterMainActivity.kt | 93 --- .../diplomaticquarterapp/MainActivity.kt | 22 +- .../diplomaticquarterapp/hmgwifi/HMG_Guest.kt | 177 +++++ .../hmgwifi/{HMG_Wifi.kt => HMG_Internet.kt} | 53 +- .../cloud/diplomaticquarterapp/hmgwifi/WPA.kt | 30 +- .../diplomaticquarterapp/{ => utils}/API.kt | 3 +- .../diplomaticquarterapp/utils/FlutterText.kt | 36 + .../diplomaticquarterapp/utils/HMGUtils.kt | 32 +- .../diplomaticquarterapp/utils/HMG_Wifi_.kt | 542 +++++++------- .../diplomaticquarterapp/utils/HTTPRequest.kt | 3 - .../utils/PlatformBridge.kt | 74 +- .../main/res/layout/activity_flutter_main.xml | 17 - .../app/src/main/res/layout/loading_view.xml | 42 -- android/app/src/main/res/values/strings.xml | 1 - android/build.gradle | 2 +- assets/app_icons/config.json | 136 ++-- assets/app_icons/fonts/DQIcons.ttf | Bin 13824 -> 15048 bytes assets/images/DQ/DQ_logo.png | Bin 0 -> 24910 bytes assets/images/DQ/dq_logo_icon.png | Bin 0 -> 45044 bytes assets/images/Weather_ico.png | Bin 0 -> 2069 bytes assets/images/Weather_img.png | Bin 0 -> 145031 bytes assets/images/ask_doctor.png | Bin 0 -> 27410 bytes assets/images/ask_doctor_bg.png | Bin 0 -> 24645 bytes assets/images/blood-drop.png | Bin 0 -> 445 bytes assets/images/contact_us_bg.png | Bin 48043 -> 29029 bytes assets/images/dq_home_page_bg_image.png | Bin 0 -> 250257 bytes assets/images/height_icon.png | Bin 644 -> 475 bytes assets/images/new-design/height_icon.png | Bin 5375 -> 475 bytes assets/images/new-design/vidamobile.png | Bin 0 -> 18449 bytes assets/images/notf.png | Bin 0 -> 2764 bytes assets/images/online_payment_icon.png | Bin 0 -> 3166 bytes assets/images/online_payments_bg.png | Bin 0 -> 19656 bytes assets/images/progress-loading.gif | Bin 0 -> 142460 bytes assets/images/rectangle.png | Bin 0 -> 31312 bytes assets/images/search_medicine_icon.png | Bin 0 -> 1281 bytes assets/images/test-weight.png | Bin 0 -> 606 bytes assets/images/vital_sign_icon.png | Bin 0 -> 1347 bytes ios/.gitignore | 1 + ios/Flutter/.last_build_id | 2 +- ios/Podfile | 9 +- ios/Podfile.lock | 24 +- ios/Runner/Base.lproj/Main.storyboard | 79 +- ios/Runner/Base.lproj/Main_Custom.storyboard | 102 +++ ios/Runner/Controllers/MainFlutterVC.swift | 127 +++- .../Controllers/MainViewController.swift | 96 --- ios/Runner/GuestPOC_Certificate.cer | Bin 0 -> 1596 bytes ios/Runner/GuestPOC_Certificate.p12 | Bin 0 -> 5413 bytes ios/Runner/Helper/API.swift | 17 + ios/Runner/Helper/Extensions.swift | 118 +++ ios/Runner/Helper/LocalizedFromFlutter.swift | 22 + ios/Runner/Info.plist | 21 +- ios/Runner/Runner.entitlements | 2 + ios/Runner/WifiConnect/HMG_GUEST.swift | 94 +-- ios/Runner/WifiConnect/HMG_GUEST_bkp.swift | 129 ++++ ios/Runner/WifiConnect/HMG_Internet.swift | 193 +++++ ios/Runner/WifiConnect/HMG_Wifi.swift | 172 +++++ lib/config/config.dart | 272 +++---- lib/config/localized_values.dart | 691 ++++++++---------- lib/config/shared_pref_kay.dart | 3 + lib/core/model/insurance/insurance_card.dart | 6 + lib/core/model/labs/lab_result.dart | 11 + lib/core/model/my_balance/AdvanceModel.dart | 6 + .../get_notifications_request_model.dart | 22 + .../get_notifications_response_model.dart | 96 +++ .../mark_message_as_read_request_model.dart | 15 + .../prescriptions/perscription_pharmacy.dart | 2 +- .../request_prescription_report_enh.dart | 4 +- lib/core/model/rate/appointment_details.dart | 14 +- lib/core/service/AuthenticatedUserObject.dart | 4 +- lib/core/service/client/base_app_client.dart | 117 +-- .../service/feedback/feedback_service.dart | 4 +- lib/core/service/insurance_service.dart | 57 +- .../service/medical/BloodPressureService.dart | 4 - .../medical/WeightPressureService.dart | 8 - lib/core/service/medical/labs_service.dart | 12 +- .../service/medical/my_balance_service.dart | 11 +- .../service/medical/my_doctor_service.dart | 20 +- .../medical/prescriptions_service.dart | 206 +++--- .../medical/reports_monthly_service.dart | 13 +- lib/core/service/medical/reports_service.dart | 13 +- lib/core/service/notifications_service.dart | 40 + lib/core/viewModels/base_view_model.dart | 3 + lib/core/viewModels/dashboard_view_model.dart | 2 +- .../feedback/feedback_view_model.dart | 33 +- .../viewModels/insurance_card_View_model.dart | 3 +- .../viewModels/medical/labs_view_model.dart | 20 + .../medical/medical_view_model.dart | 1 - .../medical/my_balance_view_model.dart | 37 +- .../medical/prescriptions_view_model.dart | 17 +- .../viewModels/notifications_view_model.dart | 40 + lib/core/viewModels/project_view_model.dart | 26 +- lib/core/viewModels/qr_view_model.dart | 42 +- lib/d_q_icons_icons.dart | 21 +- lib/locator.dart | 10 +- lib/main.dart | 33 +- .../Appointments/toDoCountProviderModel.dart | 12 + .../Authentication/authenticated_user.dart | 5 +- .../check_activation_code_request.dart | 2 +- .../Authentication/register_user_requet.dart | 16 +- .../send_activation_request.dart | 2 +- .../GetAllSharedRecordByStatusResponse.dart | 230 +++--- .../all_habib_medical_service_page.dart | 197 ++--- .../widgets/h20_floating_action_button.dart | 43 +- lib/pages/Blood/confirm_payment_page.dart | 2 +- lib/pages/Blood/dialogs/ConfirmSMSDialog.dart | 25 +- lib/pages/BookAppointment/BookConfirm.dart | 37 +- lib/pages/BookAppointment/BookSuccess.dart | 110 ++- lib/pages/BookAppointment/BookingOptions.dart | 1 + .../BookAppointment/DentalComplaints.dart | 2 +- lib/pages/BookAppointment/DoctorProfile.dart | 12 +- lib/pages/BookAppointment/QRCode.dart | 13 +- .../components/DocAvailableAppointments.dart | 40 +- .../BookAppointment/components/DocInfo.dart | 37 +- .../components/SearchByClinic.dart | 63 +- .../components/SearchByDoctor.dart | 7 +- .../BookAppointment/widgets/BranchView.dart | 3 +- .../BookAppointment/widgets/CardCommon.dart | 2 +- .../BookAppointment/widgets/DoctorView.dart | 5 +- lib/pages/ContactUs/contact_us_page.dart | 21 +- lib/pages/ContactUs/findus/findus_page.dart | 2 + .../ContactUs/findus/hospitrals_page.dart | 1 + .../ContactUs/findus/pharmacies_page.dart | 1 + .../ContactUs/widgets/card_common_contat.dart | 13 +- .../Covid-DriveThru/Covid-TimeSlots.dart | 7 +- .../family/add-family-member.dart | 23 +- .../family/add-family_type.dart | 0 .../{ => DrawerPages}/family/my-family.dart | 475 ++++++------ .../notification_details_page.dart | 103 +++ .../notifications/notifications_page.dart | 148 ++++ lib/pages/MyAppointments/MyAppointments.dart | 153 ++-- .../widgets/AppointmentActions.dart | 72 +- lib/pages/ToDoList/ToDo.dart | 130 ++-- lib/pages/ToDoList/payment_method_select.dart | 67 +- lib/pages/ToDoList/widgets/paymentDialog.dart | 2 +- lib/pages/ToDoList/widgets/upcomingCard.dart | 4 +- lib/pages/base/base_view.dart | 21 +- lib/pages/feedback/feedback_home_page.dart | 8 +- lib/pages/feedback/send_feedback_page.dart | 45 +- lib/pages/feedback/status_feedback_page.dart | 5 +- .../insurance/insurance_approval_screen.dart | 2 + .../insurance/insurance_card_screen.dart | 21 +- lib/pages/insurance/insurance_details.dart | 35 + .../insurance/insurance_update_screen.dart | 7 +- lib/pages/landing/home_page.dart | 6 +- lib/pages/landing/landing_page.dart | 289 ++++---- lib/pages/livecare/livecare_type_select.dart | 2 +- lib/pages/livecare/widgets/clinic_list.dart | 2 +- lib/pages/login/confirm-login.dart | 451 ++++++------ lib/pages/login/forgot-password.dart | 124 +++- lib/pages/login/login-type.dart | 29 +- lib/pages/login/login.dart | 268 ++++--- lib/pages/login/register-info.dart | 334 +++++++-- lib/pages/login/register.dart | 70 +- lib/pages/login/welcome.dart | 26 +- lib/pages/medical/allergies_page.dart | 1 + .../medical/balance/advance_payment_page.dart | 1 + .../medical/balance/confirm_payment_page.dart | 53 +- .../balance/dialogs/ConfirmSMSDialog.dart | 7 +- .../dialogs/SelectBeneficiaryDialog.dart | 6 +- .../balance/dialogs/SelectHospitalDialog.dart | 2 +- .../medical/doctor/doctor_home_page.dart | 5 +- lib/pages/medical/labs/labs_home_page.dart | 2 +- lib/pages/medical/medical_profile_page.dart | 301 ++++---- .../medical/patient_sick_leave_page.dart | 8 +- .../pharmacy_for_prescriptions_page.dart | 139 ++-- .../prescription_details_page.dart | 25 +- .../prescription_items_page.dart | 16 +- .../prescriptions_history_details_page.dart | 166 +++-- .../prescriptions_home_page.dart | 2 + .../prescriptions/prescriptions_page.dart | 3 +- .../medical/reports/report_home_page.dart | 4 +- lib/pages/medical/reports/reports_page.dart | 18 +- .../vital_sign/vital_sign_details_screen.dart | 16 +- lib/pages/paymentService/payment_service.dart | 1 + .../pharmacies/medicine_search_screen.dart | 16 +- .../screens/pharmacy_module_page.dart | 3 +- .../rate_appointment_doctor.dart | 2 +- lib/pages/settings/general_setting.dart | 434 +++++++++++ lib/pages/settings/profile_setting.dart | 196 +++++ lib/pages/settings/settings.dart | 55 ++ lib/routes.dart | 16 +- .../appointment_services/GetDoctorsList.dart | 114 ++- .../authentication/auth_provider.dart | 196 +++-- .../clinic_services/get_clinic_service.dart | 38 +- .../covid-drivethru/covid-drivethru.dart | 6 +- .../family_files/family_files_provider.dart | 78 +- .../livecare_services/livecare_provider.dart | 16 +- .../permission/permission_service.dart | 39 + .../SmartWatchIntegrationService.dart | 2 +- lib/splashPage.dart | 63 ++ lib/theme/theme_notifier.dart | 15 + lib/theme/theme_value.dart | 129 ++++ lib/uitl/HMGNetworkConnectivity.dart | 120 +++ lib/uitl/PlatformBridge.dart | 102 ++- lib/uitl/date_uitl.dart | 76 ++ lib/uitl/gif_loader_dialog_utils.dart | 13 + lib/uitl/translations_delegate_base.dart | 667 ++++++++--------- lib/uitl/utils.dart | 8 +- lib/widgets/Loader/gif_loader_container.dart | 43 ++ .../bottom_navigation/bottom_nav_bar.dart | 47 +- .../bottom_navigation_item.dart | 154 +++- lib/widgets/buttons/button.dart | 8 +- lib/widgets/buttons/defaultButton.dart | 7 +- lib/widgets/buttons/floatingActionButton.dart | 113 +++ lib/widgets/buttons/mini_button.dart | 7 +- lib/widgets/buttons/secondary_button.dart | 16 +- .../data_display/medical/LabResultWidget.dart | 160 ++++ .../data_display/medical/doctor_card.dart | 9 +- .../medical/laboratory_result_widget.dart | 145 +--- .../medical/medical_profile_item.dart | 49 +- .../medical/time_line_widget.dart | 43 +- lib/widgets/data_display/text.dart | 8 +- lib/widgets/dialogs/confirm_dialog.dart | 7 +- lib/widgets/drawer/app_drawer_widget.dart | 236 ++++-- lib/widgets/in_app_browser/InAppBrowser.dart | 73 +- lib/widgets/input/text_field.dart | 2 +- lib/widgets/mobile-no/mobile_no.dart | 35 +- lib/widgets/others/StarRating.dart | 2 +- .../others/app_expandable_notifier.dart | 2 +- lib/widgets/others/app_scaffold_widget.dart | 70 +- lib/widgets/others/arrow_back.dart | 6 +- .../others/floating_button_search.dart | 2 +- lib/widgets/others/network_base_view.dart | 45 +- lib/widgets/others/not_auh_page.dart | 41 +- lib/widgets/otp/sms-popup.dart | 175 +++-- lib/widgets/text/app_texts_widget.dart | 3 +- pubspec.yaml | 23 +- 230 files changed, 8335 insertions(+), 4769 deletions(-) delete mode 100644 android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/BaseActivity.kt delete mode 100644 android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt create mode 100644 android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Guest.kt rename android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/{HMG_Wifi.kt => HMG_Internet.kt} (66%) rename android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/{ => utils}/API.kt (84%) create mode 100644 android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/FlutterText.kt delete mode 100644 android/app/src/main/res/layout/activity_flutter_main.xml delete mode 100644 android/app/src/main/res/layout/loading_view.xml delete mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 assets/images/DQ/DQ_logo.png create mode 100644 assets/images/DQ/dq_logo_icon.png create mode 100644 assets/images/Weather_ico.png create mode 100644 assets/images/Weather_img.png create mode 100644 assets/images/ask_doctor.png create mode 100644 assets/images/ask_doctor_bg.png create mode 100644 assets/images/blood-drop.png create mode 100644 assets/images/dq_home_page_bg_image.png create mode 100644 assets/images/new-design/vidamobile.png create mode 100644 assets/images/notf.png create mode 100644 assets/images/online_payment_icon.png create mode 100644 assets/images/online_payments_bg.png create mode 100644 assets/images/progress-loading.gif create mode 100644 assets/images/rectangle.png create mode 100644 assets/images/search_medicine_icon.png create mode 100644 assets/images/test-weight.png create mode 100644 assets/images/vital_sign_icon.png create mode 100644 ios/Runner/Base.lproj/Main_Custom.storyboard delete mode 100644 ios/Runner/Controllers/MainViewController.swift create mode 100644 ios/Runner/GuestPOC_Certificate.cer create mode 100644 ios/Runner/GuestPOC_Certificate.p12 create mode 100644 ios/Runner/Helper/API.swift create mode 100644 ios/Runner/Helper/Extensions.swift create mode 100644 ios/Runner/Helper/LocalizedFromFlutter.swift create mode 100644 ios/Runner/WifiConnect/HMG_GUEST_bkp.swift create mode 100644 ios/Runner/WifiConnect/HMG_Internet.swift create mode 100644 ios/Runner/WifiConnect/HMG_Wifi.swift create mode 100644 lib/core/model/notifications/get_notifications_request_model.dart create mode 100644 lib/core/model/notifications/get_notifications_response_model.dart create mode 100644 lib/core/model/notifications/mark_message_as_read_request_model.dart create mode 100644 lib/core/service/notifications_service.dart create mode 100644 lib/core/viewModels/notifications_view_model.dart create mode 100644 lib/models/Appointments/toDoCountProviderModel.dart rename lib/pages/{ => DrawerPages}/family/add-family-member.dart (96%) rename lib/pages/{ => DrawerPages}/family/add-family_type.dart (100%) rename lib/pages/{ => DrawerPages}/family/my-family.dart (57%) create mode 100644 lib/pages/DrawerPages/notifications/notification_details_page.dart create mode 100644 lib/pages/DrawerPages/notifications/notifications_page.dart create mode 100644 lib/pages/insurance/insurance_details.dart create mode 100644 lib/pages/settings/general_setting.dart create mode 100644 lib/pages/settings/profile_setting.dart create mode 100644 lib/pages/settings/settings.dart create mode 100644 lib/services/permission/permission_service.dart create mode 100644 lib/splashPage.dart create mode 100644 lib/theme/theme_notifier.dart create mode 100644 lib/theme/theme_value.dart create mode 100644 lib/uitl/HMGNetworkConnectivity.dart create mode 100644 lib/uitl/gif_loader_dialog_utils.dart create mode 100644 lib/widgets/Loader/gif_loader_container.dart create mode 100644 lib/widgets/buttons/floatingActionButton.dart create mode 100644 lib/widgets/data_display/medical/LabResultWidget.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 92b87fbc..91c15cde 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -78,16 +78,15 @@ dependencies { implementation 'com.google.guava:guava:27.0.1-android' // Dependency on local binaries implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + // Dependency on a remote binary +// implementation 'com.example.android:app-magic:12.3' + + + // Native Dependency implementation "org.jetbrains.anko:anko-commons:0.10.4" implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0' //for Android - implementation 'com.wang.avi:library:2.1.3' - // Dependency on a remote binary -// implementation 'com.example.android:app-magic:12.3' - } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8162b752..9bff802f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,13 +1,10 @@ - - + FlutterApplication and put your custom class here. --> @@ -20,72 +17,38 @@ + + - - - - - - - - - + - - - - - - - - - - - - - - - - - - + android:usesCleartextTraffic="true" + android:label="diplomaticquarterapp"> - - + to determine the Window background behind the Flutter UI. --> - - + Flutter's first frame. --> @@ -94,20 +57,18 @@ - - + + - - + + @@ -115,9 +76,14 @@ - + + + - \ No newline at end of file + + + + + diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/BaseActivity.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/BaseActivity.kt deleted file mode 100644 index 5790abf6..00000000 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/BaseActivity.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.cloud.diplomaticquarterapp - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.widget.RelativeLayout -import android.widget.TextView -import com.cloud.diplomaticquarterapp.utils.PlatformBridge -import com.wang.avi.AVLoadingIndicatorView -import io.flutter.embedding.android.FlutterView -import io.flutter.embedding.engine.FlutterEngine -import io.flutter.embedding.engine.dart.DartExecutor -import io.flutter.plugin.common.MethodChannel -import io.flutter.view.FlutterMain -import org.jetbrains.anko.find -import java.util.ArrayList - -open class BaseActivity : AppCompatActivity() { - - lateinit var loadingView:RelativeLayout - lateinit var lblLoadingView:TextView - lateinit var avLoadingView:AVLoadingIndicatorView - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - } - - override fun setContentView(layoutResID: Int) { - super.setContentView(layoutResID) - - loadingView = find(R.id.loadingView) - lblLoadingView = find(R.id.lblLoadingView) - avLoadingView = find(R.id.avLoadingView) - } - - override fun onResume() { - super.onResume() - } - - override fun onPause() { - super.onPause() - } - - override fun onStop() { - super.onStop() - } - - override fun onDestroy() { - super.onDestroy() - } -} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt deleted file mode 100644 index 387c35a4..00000000 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt +++ /dev/null @@ -1,93 +0,0 @@ -package com.cloud.diplomaticquarterapp - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import com.cloud.diplomaticquarterapp.utils.PlatformBridge -import io.flutter.embedding.android.FlutterView -import io.flutter.embedding.engine.FlutterEngine -import io.flutter.embedding.engine.dart.DartExecutor -import io.flutter.plugin.common.MethodChannel -import io.flutter.view.FlutterMain -import java.util.ArrayList - -class FlutterMainActivity : BaseActivity() { - - - private var flutterView: FlutterView? = null - companion object { - private var flutterEngine: FlutterEngine? = null - - private lateinit var instance:FlutterMainActivity - fun getInstance() : FlutterMainActivity{ - return instance - } - } - - - // to get and check returned intent - private fun getArgsFromIntent(intent: Intent): Array? { - // Before adding more entries to this list, consider that arbitrary - // Android applications can generate intents with extra data and that - // there are many security-sensitive args in the binary. - val args = ArrayList() - if (intent.getBooleanExtra("trace-startup", false)) { - args.add("--trace-startup") - } - if (intent.getBooleanExtra("start-paused", false)) { - args.add("--start-paused") - } - if (intent.getBooleanExtra("enable-dart-profiling", false)) { - args.add("--enable-dart-profiling") - } - if (!args.isEmpty()) { - return args.toTypedArray() - } - return null - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - val args = getArgsFromIntent(intent) - - // check if flutterEngine is null - if (flutterEngine == null) { - println(args) - flutterEngine = FlutterEngine(this, args) - flutterEngine!!.dartExecutor.executeDartEntrypoint( - // set which of dart methode will be used here - DartExecutor.DartEntrypoint(FlutterMain.findAppBundlePath(), "main") - ) - } - - setContentView(R.layout.activity_flutter_main) - - flutterView = findViewById(R.id.flutterView) - flutterView!!.attachToFlutterEngine(flutterEngine!!) - - PlatformBridge(flutterEngine!!.dartExecutor.binaryMessenger, this).create() - } - - - override fun onResume() { - super.onResume() - flutterEngine!!.lifecycleChannel.appIsResumed() - instance = this - } - - override fun onPause() { - super.onPause() - flutterEngine!!.lifecycleChannel.appIsInactive() - } - - override fun onStop() { - super.onStop() - flutterEngine!!.lifecycleChannel.appIsPaused() - } - - override fun onDestroy() { - flutterView!!.detachFromFlutterEngine() - super.onDestroy() - } -} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt index ac33db7c..8b73b0c7 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/MainActivity.kt @@ -1,21 +1,23 @@ package com.cloud.diplomaticquarterapp import android.os.Bundle -import android.os.PersistableBundle +import android.util.Log import androidx.annotation.NonNull; - import io.flutter.embedding.android.FlutterFragmentActivity +import com.cloud.diplomaticquarterapp.utils.FlutterText +import com.cloud.diplomaticquarterapp.utils.PlatformBridge +import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.engine.FlutterEngine - import io.flutter.plugins.GeneratedPluginRegistrant import io.flutter.plugin.common.MethodChannel -import io.flutter.plugin.common.MethodCall +import io.flutter.plugins.GeneratedPluginRegistrant class MainActivity: FlutterFragmentActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + // Create Flutter Platform Bridge + PlatformBridge(flutterEngine.dartExecutor.binaryMessenger, this).create() + } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + override fun onResume() { + super.onResume() } - - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { - GeneratedPluginRegistrant.registerWith(flutterEngine); - } } \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Guest.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Guest.kt new file mode 100644 index 00000000..a60cefb7 --- /dev/null +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Guest.kt @@ -0,0 +1,177 @@ +package com.cloud.diplomaticquarterapp.hmgwifi + +import android.content.Context +import android.net.ConnectivityManager +import android.net.wifi.WifiConfiguration +import android.net.wifi.WifiInfo +import android.net.wifi.WifiManager +import android.os.Build +import android.util.Log +import android.widget.Toast +import com.cloud.diplomaticquarterapp.MainActivity +import com.cloud.diplomaticquarterapp.utils.FlutterText +import com.cloud.diplomaticquarterapp.utils.HMGUtils + + +class HMG_Guest(context: MainActivity) { + private var wifiManager: WifiManager? = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? + private var connectivityManager: ConnectivityManager? = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? + private var context = context + + private val TAG = "HMG_Guest" + private val TEST = false + private var SSID = """"HMG-MobileApp"""" + + private lateinit var completionListener: ((status: Boolean, message: String) -> Unit) + + fun completionOnUiThread(status: Boolean, message: String){ + context.runOnUiThread { + completionListener(status, message) + } + } + + /* + * Helpful: + * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically + */ + fun connectToHMGGuestNetwork(completion: (status: Boolean, message: String) -> Unit) { + wifiManager?.let { wm -> + completionListener = completion + + if (!wm.isWifiEnabled){ + wm.isWifiEnabled = true + HMGUtils.popFlutterText(context,"enablingWifi"); + HMGUtils.timer(2000,false){ + connect() + } + }else{ + connect() + } + + } + + } + + + private fun connect(){ + val security = "OPEN" + val networkPass = "" + Log.d(TAG, "Connecting to SSID \"$SSID\" with password \"$networkPass\" and with security \"$security\" ...") + + // You need to create WifiConfiguration instance like this: + val conf = WifiConfiguration() + conf.SSID = SSID + conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) + conf.networkId = ssidToNetworkId(SSID) + + val wm = wifiManager!! + + if (conf.networkId == -1) { + wm.addNetwork(conf) + } else { + Log.v(TAG, "WiFi found - updating it.\n") + wm.updateNetwork(conf) + } + + conf.networkId = ssidToNetworkId(SSID) + Log.d(TAG, "Network ID: ${conf.networkId}") + + val networkIdToConnect = conf.networkId + if (networkIdToConnect >= 0) { + Log.v(TAG, "Start connecting to $SSID Wifi...") + + // We disable the network before connecting, because if this was the last connection before + // a disconnect(), this will not reconnect. + wm.disableNetwork(networkIdToConnect) + val result = wm.enableNetwork(networkIdToConnect, true) + if(result){ + HMGUtils.timer(8000,false){ + if(wm.getConnectionInfo().getSSID() == SSID){ + FlutterText.with("successConnectingHmgNetwork"){ localized -> + completionOnUiThread(true, localized) + } + }else{ + errorConnecting() + } + } + + }else{ + errorConnecting() + } + + + + }else{ + Log.v(TAG, "Cannot connect to $SSID network") + errorConnecting() + } + } + + private fun errorConnecting(){ + FlutterText.with("errorConnectingHmgNetwork"){ localized -> + completionOnUiThread(false, localized) + } + } + + // If CompileSDK is greater and equals to APILevel 29 + private fun connectNewer(wm:WifiManager){ + +// Log.e(TAG, "connection wifi Q") +// +// val wifiNetworkSpecifier: WifiNetworkSpecifier = WifiNetworkSpecifier.Builder() +// .setSsid(ssid) +// .setWpa2Passphrase(password) +// .build() +// +// val networkRequest: NetworkRequest = NetworkRequest.Builder() +// .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) +// .setNetworkSpecifier(wifiNetworkSpecifier) +// .build() +// +// var connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager +// var networkCallback = object : ConnectivityManager.NetworkCallback() { +// override fun onAvailable(network: Network) { +// super.onAvailable(network) +// connectivityManager.bindProcessToNetwork(network) +// Log.e(TAG, "onAvailable") +// } +// +// override fun onLosing(network: Network, maxMsToLive: Int) { +// super.onLosing(network, maxMsToLive) +// Log.e(TAG, "onLosing") +// } +// +// override fun onLost(network: Network) { +// super.onLost(network) +// Log.e(TAG, "onLosing") +// Log.e(TAG, "losing active connection") +// } +// +// override fun onUnavailable() { +// super.onUnavailable() +// Log.e(TAG, "onUnavailable") +// } +// } +// connectivityManager.requestNetwork(networkRequest, networkCallback) + } + + + /** + * This method takes a given String, searches the current list of configured WiFi + * networks, and returns the networkId for the network if the SSID matches. If not, + * it returns -1. + */ + private fun ssidToNetworkId(ssid: String): Int { + val currentNetworks = wifiManager!!.configuredNetworks + var networkId = -1 + + // For each network in the list, compare the SSID with the given one + for (test in currentNetworks) { + if (test.SSID == ssid) { + networkId = test.networkId + break + } + } + return networkId + } +} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Internet.kt similarity index 66% rename from android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt rename to android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Internet.kt index e594cc83..25ae4617 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Internet.kt @@ -1,21 +1,20 @@ package com.cloud.diplomaticquarterapp.hmgwifi import android.annotation.SuppressLint -import android.util.Log -import com.cloud.diplomaticquarterapp.API -import com.cloud.diplomaticquarterapp.FlutterMainActivity -import com.github.kittinunf.fuel.Fuel +import com.cloud.diplomaticquarterapp.utils.API +import com.cloud.diplomaticquarterapp.MainActivity +import com.cloud.diplomaticquarterapp.utils.FlutterText import com.github.kittinunf.fuel.core.extensions.jsonBody import com.github.kittinunf.fuel.httpGet import com.github.kittinunf.fuel.httpPost -import org.jetbrains.anko.doAsync import org.json.JSONObject +import java.util.* @SuppressLint("MissingPermission") -class HMG_Wifi(flutterMainActivity: FlutterMainActivity) { +class HMG_Internet(flutterMainActivity: MainActivity) { private val TAG = "HMG_Wifi" - private val TEST = true + private val TEST = false private var context = flutterMainActivity; @@ -35,7 +34,7 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) { * Helpful: * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically */ - fun connectToHMGGuestNetwork(patientId: String, completion: (status: Boolean, message: String) -> Unit): HMG_Wifi { + fun connectToHMGGuestNetwork(patientId: String, completion: (status: Boolean, message: String) -> Unit): HMG_Internet { completionListener = completion getWifiCredentials(patientId) { WPA(context,SSID).connect(USER_NAME,PASSWORD) { status, message -> @@ -50,19 +49,27 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) { completion(true) "https://captive.apple.com".httpGet().response { request, response, result -> - val have = response.statusCode == 200 && String(response.data).contains("Success", true) - completion(have) + result.fold(success = { + val html = String(it).toLowerCase(Locale.ENGLISH) + .replace(" ", "", true) + .replace("\n","",true) + val have = html.contains("success", true) + completion(have) + + },failure = { + completion(false) + }) } } - private fun getWifiCredentials(patientId:String, completion: (() -> Unit)){ -// if (TEST){ -// SSID = "GUEST-POC" -// USER_NAME = "0696" -// PASSWORD = "0000" -// completion() -// return -// } + private fun getWifiCredentials(patientId:String, success: (() -> Unit)){ + if (TEST){ + SSID = "GUEST-POC" + USER_NAME = "0696" + PASSWORD = "0000" + success() + return + } val jsonBody = """{"PatientID":$patientId}""" API.WIFI_CREDENTIALS. @@ -83,16 +90,20 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) { if (object_.has("UserName") && object_.has("UserName")){ USER_NAME = object_.getString("UserName") PASSWORD = object_.getString("Password") - completion() + success() }else{ - completionOnUiThread(false, "Failed to get your internet credentials") + FlutterText.with("somethingWentWrong"){localized -> + completionOnUiThread(false, localized) + } } } } } },failure = { error -> - completionOnUiThread(false, error.localizedMessage ) + FlutterText.with("somethingWentWrong"){localized -> + completionOnUiThread(false, error.localizedMessage ) + } }) } } diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt index 18bfc1a7..e5989a49 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt @@ -1,13 +1,17 @@ package com.cloud.diplomaticquarterapp.hmgwifi +import android.annotation.SuppressLint import android.content.Context import android.net.ConnectivityManager import android.net.wifi.* +import android.net.wifi.SupplicantState.ASSOCIATED +import android.net.wifi.SupplicantState.COMPLETED import android.util.Log -import com.cloud.diplomaticquarterapp.FlutterMainActivity +import com.cloud.diplomaticquarterapp.MainActivity +import com.cloud.diplomaticquarterapp.utils.FlutterText import com.cloud.diplomaticquarterapp.utils.HMGUtils -class WPA(mainActivity: FlutterMainActivity, SSID:String) { +class WPA(mainActivity: MainActivity, SSID:String) { private var TAG = "WPA" private var SSID = "GUEST-POC" private var wifiManager_: WifiManager? = null @@ -20,7 +24,9 @@ class WPA(mainActivity: FlutterMainActivity, SSID:String) { fun connect(identity:String, password:String, completion: (status: Boolean, message: String) -> Unit) { if(wifiManager_ == null || connectivityManager_ == null){ - completion(false, "Failed to access system connectivity services") + FlutterText.with("errorConnectingHmgNetwork"){ localized -> + completion(false,localized) + } return } @@ -65,15 +71,24 @@ class WPA(mainActivity: FlutterMainActivity, SSID:String) { HMGUtils.timer(5000,false){ supState = wifiInfo.supplicantState Log.i(TAG, "WifiWizard: Done connect to network : status = $supState") - if (supState == SupplicantState.COMPLETED) - completion(true,"Connected to Wifi") + val successStates = listOf(COMPLETED, ASSOCIATED) + if (successStates.contains(COMPLETED /*supState*/)) + + FlutterText.with("Connected to internet Wifi"){ localized -> + completion(true,localized) + } + else - completion(false,"Failed to connect with HMG network") + FlutterText.with("errorConnectingHmgNetwork"){ localized -> + completion(false,localized) + } } } else { Log.v(TAG, "WifiWizard: cannot connect to network") - completion(false,"Failed to connect to Wifi") + FlutterText.with("errorConnectingHmgNetwork"){ localized -> + completion(false,localized) + } } } @@ -82,6 +97,7 @@ class WPA(mainActivity: FlutterMainActivity, SSID:String) { * networks, and returns the networkId for the network if the SSID matches. If not, * it returns -1. */ + @SuppressLint("MissingPermission") private fun ssidToNetworkId(ssid: String): Int { val currentNetworks = wifiManager_!!.configuredNetworks var networkId = -1 diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/API.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/API.kt similarity index 84% rename from android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/API.kt rename to android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/API.kt index f8cc815e..0d5f1e7e 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/API.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/API.kt @@ -1,9 +1,10 @@ -package com.cloud.diplomaticquarterapp +package com.cloud.diplomaticquarterapp.utils class API { companion object{ private val BASE = "https://uat.hmgwebservices.com" private val SERVICE = "Services/Patients.svc/REST" + val WIFI_CREDENTIALS = "$BASE/$SERVICE/Hmg_SMS_Get_By_ProjectID_And_PatientID" } } \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/FlutterText.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/FlutterText.kt new file mode 100644 index 00000000..419eb340 --- /dev/null +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/FlutterText.kt @@ -0,0 +1,36 @@ +package com.cloud.diplomaticquarterapp.utils + +import io.flutter.plugin.common.MethodChannel +import io.flutter.plugin.common.MethodChannel.Result + +class FlutterText{ + + companion object{ + fun with(key:String, completion:(String)->Unit){ + HMGUtils.getPlatformChannel().invokeMethod("localizedValue",key, object:MethodChannel.Result{ + override fun success(result: Any?) { + val localized = result as String? + if (localized != null){ + completion(localized) + }else{ + completion(key) + } + } + + override fun error(errorCode: String?, errorMessage: String?, errorDetails: Any?) { + completion(key) + require(false){ + "'localizedValue' $errorMessage" + } + } + + override fun notImplemented() { + require(false){ + "'localizedValue' method not implemented at flutter" + } + } + + }) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt index 71488c1d..0b178245 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt @@ -1,15 +1,23 @@ package com.cloud.diplomaticquarterapp.utils -import android.opengl.Visibility import android.view.View import android.widget.Toast -import com.cloud.diplomaticquarterapp.BaseActivity +import com.cloud.diplomaticquarterapp.MainActivity +import io.flutter.plugin.common.MethodChannel import java.util.* import kotlin.concurrent.timerTask class HMGUtils { companion object{ + private lateinit var platformChannel: MethodChannel + fun getPlatformChannel():MethodChannel{ + return platformChannel + } + fun setPlatformChannel(channel:MethodChannel){ + platformChannel = channel + } + fun timer(delay:Long, repeat:Boolean, tick:(Timer)->Unit) : Timer{ val timer = Timer() if(repeat) @@ -24,22 +32,14 @@ class HMGUtils { return timer } - - fun showLoading(context: BaseActivity, show:Boolean = true, message:String = "Please wait"){ - if(show){ - context.loadingView.visibility = View.VISIBLE - context.avLoadingView.smoothToShow() - context.lblLoadingView.text = message - }else{ - context.loadingView.visibility = View.GONE - context.avLoadingView.smoothToHide() - context.lblLoadingView.text = "" - } - + fun popMessage(context:MainActivity, message:String){ + Toast.makeText(context,message,Toast.LENGTH_LONG).show() } - fun showMessage(context:BaseActivity, title:String = "", message:String){ - Toast.makeText(context,message,Toast.LENGTH_LONG).show() + fun popFlutterText(context:MainActivity, key:String){ + FlutterText.with(key){ + Toast.makeText(context,it,Toast.LENGTH_LONG).show() + } } } diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt index 9bb6196e..decc9bdf 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt @@ -1,256 +1,256 @@ -package com.cloud.diplomaticquarterapp.utils - -import android.annotation.SuppressLint -import android.content.Context -import android.net.ConnectivityManager -import android.net.Network -import android.net.NetworkCapabilities -import android.net.NetworkRequest -import android.net.wifi.ScanResult -import android.net.wifi.WifiConfiguration -import android.net.wifi.WifiManager -import android.util.Log -import com.cloud.diplomaticquarterapp.API -import com.cloud.diplomaticquarterapp.FlutterMainActivity -import com.github.kittinunf.fuel.core.extensions.jsonBody -import com.github.kittinunf.fuel.httpGet -import com.github.kittinunf.fuel.httpPost -import org.json.JSONObject -import java.util.* - - -@SuppressLint("MissingPermission") -class HMG_Wifi_(flutterMainActivity: FlutterMainActivity) { - val TAG = "WIFI" - val TEST = true - - var context = flutterMainActivity; - var completionListener: ((status: Boolean, message: String) -> Unit)? = null - - - private var SSID = "HMG-GUEST" - private var USER_NAME = "" - private var PASSWORD = "" - var NETWORK_ID = -1 // HMG-GUEST Assigned Network ID by Android - private lateinit var PATIENT_ID:String - /* - * Helpful: - * http://stackoverflow.com/questions/5452940/how-can-i-get-android-wifi-scan-results-into-a-list - */ - fun triggerWifiScan(context: Context) { - val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager - wifi.startScan() - } - - /* - * Helpful: - * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically - */ - fun connectToWifiNetworkWith(patientId: String): HMG_Wifi_ { - - val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - - PATIENT_ID = patientId - - val security = "OPEN" - val networkPass = "" - Log.d(TAG, "Connecting to SSID \"$SSID\" with password \"$networkPass\" and with security \"$security\" ...") - - // You need to create WifiConfiguration instance like this: - val conf = WifiConfiguration() - conf.SSID = "\"" + SSID + "\"" - - if (security == "OPEN") { - conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) - } else if (security == "WEP") { - conf.wepKeys[0] = "\"" + networkPass + "\"" - conf.wepTxKeyIndex = 0 - conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) - conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40) - } else { - conf.preSharedKey = "\"" + networkPass + "\"" - } - - // Then, you need to add it to Android wifi manager settings: - val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - - NETWORK_ID = wifiManager.addNetwork(conf) - Log.d(TAG, "Network ID: $NETWORK_ID") - - //wifiManager.disconnect(); - val result = wifiManager.enableNetwork(NETWORK_ID, true) - //wifiManager.reconnect(); - wifiManager.saveConfiguration() - - if(result == true){ - authNetworkConnection(NETWORK_ID); - }else{ - completionListener?.let { it(false, "Error connecting to HMG network") } - } - return this - } - - private var authTimer:Timer? = null - fun authNetworkConnection(networkId: Int){ - authTimer = Timer() - authTimer?.scheduleAtFixedRate(object : TimerTask() { - override fun run() { - if (connectedNetworkId() == networkId && connectedNetworkIPAddress() > 0) { - authServerCall() - authTimer?.cancel() - } - } - - }, 2000, 1000) - - // If wifi not connected in 5 sec terminate with fail status - Timer().schedule(object : TimerTask() { - override fun run() { - if (null != authTimer) { - authTimer?.cancel() - completionListener?.let { it(false, "Error connecting to HMG network") } - } - } - }, 5000) - - } - - fun authServerCall(){ - - fun call(){ - - forceNetworkCallOverWifi() - - val params = listOf("cmd" to "authenticate", "password" to PASSWORD, "user" to USER_NAME) - val serverUrl = "https://captiveportal-login.hmg.com/cgi-bin/login" -// val serverUrl = "http://192.168.102.223/cgi-bin/login" - serverUrl - .httpPost(params) - .timeout(10000) - .response { request, response, result -> - Log.v(TAG, response.statusCode.toString()) - - haveInternet { have -> - if(have){ - Log.v(TAG, "Connected to internet via $SSID network at HMG") - completionListener?.let { it(true, "Successfully connected to the internet") } - }else{ - Log.e(TAG, "failed to connect to internet via $SSID network at HMG") - completionListener?.let { it(false, "Authentication failed or you are already using your credentials on another device") } - } - } - } - } - - haveInternet { has -> - if (has){ - getAuthCredentials { - call() - } - }else{ - completionListener?.let { it(false, "You must have active internet connection to connect with HMG Network") } - } - } - } - - fun haveInternet(completion: ((status: Boolean) -> Unit)){ - if (TEST) - completion(true) - - "https://captive.apple.com".httpGet().response { request, response, result -> - val have = response.statusCode == 200 && String(response.data).contains("Success", true) - completion(have) - } - } - - fun getAuthCredentials(completion: (() -> Unit)){ - if (TEST){ - USER_NAME = "2300" - PASSWORD = "1820" - completion() - return - } - - val jsonBody = """{"PatientID":$PATIENT_ID}""" - API.WIFI_CREDENTIALS - .httpPost() - .jsonBody(jsonBody, Charsets.UTF_8) - .response { request, response, result -> - val jsonString = String(response.data) - Log.d(TAG, "JSON $jsonString") - - if (response.statusCode == 200){ - - val jsonObject = JSONObject(jsonString) - if(!jsonObject.getString("ErrorMessage").equals("null")){ - val errorMsg = jsonObject.getString("ErrorMessage") - completionListener?.let { it(false, errorMsg) } - - }else{ - jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array -> - array.getJSONObject(0).let { object_ -> - if (object_.has("UserName") && object_.has("UserName")){ - USER_NAME = object_.getString("UserName") - PASSWORD = object_.getString("Password") - completion() - }else{ - completionListener?.let { it(false, "Failed to get your internet credentials") } - } - } - } - } - - }else{ - completionListener?.let { it(false, "Failed to get your internet credentials") } - } - } - } - - fun forceNetworkCallOverWifi(){ - val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager -// val network = Network -// connectivityManager.activeNetwork - // Exit app if Network disappears. - // Exit app if Network disappears. -// val networkCapabilities: NetworkCapabilities = ConnectivityManager.from(context).getNetworkCapabilities(network) -// val networkCapabilities: NetworkCapabilities = connectivityManager.getNetworkCapabilities(network) - -// if (networkCapabilities == null) { +//package com.cloud.diplomaticquarterapp.utils +// +//import android.annotation.SuppressLint +//import android.content.Context +//import android.net.ConnectivityManager +//import android.net.Network +//import android.net.NetworkCapabilities +//import android.net.NetworkRequest +//import android.net.wifi.ScanResult +//import android.net.wifi.WifiConfiguration +//import android.net.wifi.WifiManager +//import android.util.Log +//import com.cloud.diplomaticquarterapp.utils.API +//import com.cloud.diplomaticquarterapp.FlutterMainActivity +//import com.github.kittinunf.fuel.core.extensions.jsonBody +//import com.github.kittinunf.fuel.httpGet +//import com.github.kittinunf.fuel.httpPost +//import org.json.JSONObject +//import java.util.* +// +// +//@SuppressLint("MissingPermission") +//class HMG_Wifi_(flutterMainActivity: FlutterMainActivity) { +// val TAG = "WIFI" +// val TEST = true +// +// var context = flutterMainActivity; +// var completionListener: ((status: Boolean, message: String) -> Unit)? = null +// +// +// private var SSID = "HMG-GUEST" +// private var USER_NAME = "" +// private var PASSWORD = "" +// var NETWORK_ID = -1 // HMG-GUEST Assigned Network ID by Android +// private lateinit var PATIENT_ID:String +// /* +// * Helpful: +// * http://stackoverflow.com/questions/5452940/how-can-i-get-android-wifi-scan-results-into-a-list +// */ +// fun triggerWifiScan(context: Context) { +// val wifi = context.getSystemService(Context.WIFI_SERVICE) as WifiManager +// wifi.startScan() +// } +// +// /* +// * Helpful: +// * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically +// */ +// fun connectToWifiNetworkWith(patientId: String): HMG_Wifi_ { +// +// val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager +// +// PATIENT_ID = patientId +// +// val security = "OPEN" +// val networkPass = "" +// Log.d(TAG, "Connecting to SSID \"$SSID\" with password \"$networkPass\" and with security \"$security\" ...") +// +// // You need to create WifiConfiguration instance like this: +// val conf = WifiConfiguration() +// conf.SSID = "\"" + SSID + "\"" +// +// if (security == "OPEN") { +// conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) +// } else if (security == "WEP") { +// conf.wepKeys[0] = "\"" + networkPass + "\"" +// conf.wepTxKeyIndex = 0 +// conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) +// conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40) +// } else { +// conf.preSharedKey = "\"" + networkPass + "\"" +// } +// +// // Then, you need to add it to Android wifi manager settings: +// val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager +// +// NETWORK_ID = wifiManager.addNetwork(conf) +// Log.d(TAG, "Network ID: $NETWORK_ID") +// +// //wifiManager.disconnect(); +// val result = wifiManager.enableNetwork(NETWORK_ID, true) +// //wifiManager.reconnect(); +// wifiManager.saveConfiguration() +// +// if(result == true){ +// authNetworkConnection(NETWORK_ID); +// }else{ +// completionListener?.let { it(false, "Error connecting to HMG network") } +// } +// return this +// } +// +// private var authTimer:Timer? = null +// fun authNetworkConnection(networkId: Int){ +// authTimer = Timer() +// authTimer?.scheduleAtFixedRate(object : TimerTask() { +// override fun run() { +// if (connectedNetworkId() == networkId && connectedNetworkIPAddress() > 0) { +// authServerCall() +// authTimer?.cancel() +// } +// } +// +// }, 2000, 1000) +// +// // If wifi not connected in 5 sec terminate with fail status +// Timer().schedule(object : TimerTask() { +// override fun run() { +// if (null != authTimer) { +// authTimer?.cancel() +// completionListener?.let { it(false, "Error connecting to HMG network") } +// } +// } +// }, 5000) +// +// } +// +// fun authServerCall(){ +// +// fun call(){ +// +// forceNetworkCallOverWifi() +// +// val params = listOf("cmd" to "authenticate", "password" to PASSWORD, "user" to USER_NAME) +// val serverUrl = "https://captiveportal-login.hmg.com/cgi-bin/login" +//// val serverUrl = "http://192.168.102.223/cgi-bin/login" +// serverUrl +// .httpPost(params) +// .timeout(10000) +// .response { request, response, result -> +// Log.v(TAG, response.statusCode.toString()) +// +// haveInternet { have -> +// if(have){ +// Log.v(TAG, "Connected to internet via $SSID network at HMG") +// completionListener?.let { it(true, "Successfully connected to the internet") } +// }else{ +// Log.e(TAG, "failed to connect to internet via $SSID network at HMG") +// completionListener?.let { it(false, "Authentication failed or you are already using your credentials on another device") } +// } +// } +// } +// } +// +// haveInternet { has -> +// if (has){ +// getAuthCredentials { +// call() +// } +// }else{ +// completionListener?.let { it(false, "You must have active internet connection to connect with HMG Network") } +// } +// } +// } +// +// fun haveInternet(completion: ((status: Boolean) -> Unit)){ +// if (TEST) +// completion(true) +// +// "https://captive.apple.com".httpGet().response { request, response, result -> +// val have = response.statusCode == 200 && String(response.data).contains("Success", true) +// completion(have) +// } +// } +// +// fun getAuthCredentials(completion: (() -> Unit)){ +// if (TEST){ +// USER_NAME = "2300" +// PASSWORD = "1820" +// completion() // return // } - - val mNetworkCallback = object : ConnectivityManager.NetworkCallback() { - override fun onLost(lostNetwork: Network?) { -// if (network.equals(lostNetwork)){ -// //GlyphLayout.done(false) +// +// val jsonBody = """{"PatientID":$PATIENT_ID}""" +// API.WIFI_CREDENTIALS +// .httpPost() +// .jsonBody(jsonBody, Charsets.UTF_8) +// .response { request, response, result -> +// val jsonString = String(response.data) +// Log.d(TAG, "JSON $jsonString") +// +// if (response.statusCode == 200){ +// +// val jsonObject = JSONObject(jsonString) +// if(!jsonObject.getString("ErrorMessage").equals("null")){ +// val errorMsg = jsonObject.getString("ErrorMessage") +// completionListener?.let { it(false, errorMsg) } +// +// }else{ +// jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array -> +// array.getJSONObject(0).let { object_ -> +// if (object_.has("UserName") && object_.has("UserName")){ +// USER_NAME = object_.getString("UserName") +// PASSWORD = object_.getString("Password") +// completion() +// }else{ +// completionListener?.let { it(false, "Failed to get your internet credentials") } +// } +// } +// } +// } +// +// }else{ +// completionListener?.let { it(false, "Failed to get your internet credentials") } +// } // } - } - } - val builder: NetworkRequest.Builder = NetworkRequest.Builder() -// for (transportType in networkCapabilities.getTransportTypes()) { -// builder.addTransportType(transportType) +// } +// +// fun forceNetworkCallOverWifi(){ +// val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager +//// val network = Network +//// connectivityManager.activeNetwork +// // Exit app if Network disappears. +// // Exit app if Network disappears. +//// val networkCapabilities: NetworkCapabilities = ConnectivityManager.from(context).getNetworkCapabilities(network) +//// val networkCapabilities: NetworkCapabilities = connectivityManager.getNetworkCapabilities(network) +// +//// if (networkCapabilities == null) { +//// return +//// } +// +// val mNetworkCallback = object : ConnectivityManager.NetworkCallback() { +// override fun onLost(lostNetwork: Network?) { +//// if (network.equals(lostNetwork)){ +//// //GlyphLayout.done(false) +//// } +// } // } - connectivityManager.registerNetworkCallback(builder.build(), mNetworkCallback) - } - - /* - * Helpful: - * http://stackoverflow.com/questions/6517314/android-wifi-connection-programmatically - */ - fun getScanResultSecurity(result: ScanResult): String? { - val capabilities: String = result.capabilities - val securityModes = arrayOf("WEP", "PSK", "EAP") - for (securityMode in securityModes) { - if (capabilities.contains(securityMode)) { - return securityMode - } - } - return "OPEN" - } - - //connects to the given ssid - fun connectToWPAWiFi(ssid: String, password: String){ - +// val builder: NetworkRequest.Builder = NetworkRequest.Builder() +//// for (transportType in networkCapabilities.getTransportTypes()) { +//// builder.addTransportType(transportType) +//// } +// connectivityManager.registerNetworkCallback(builder.build(), mNetworkCallback) +// } +// +// /* +// * Helpful: +// * http://stackoverflow.com/questions/6517314/android-wifi-connection-programmatically +// */ +// fun getScanResultSecurity(result: ScanResult): String? { +// val capabilities: String = result.capabilities +// val securityModes = arrayOf("WEP", "PSK", "EAP") +// for (securityMode in securityModes) { +// if (capabilities.contains(securityMode)) { +// return securityMode +// } +// } +// return "OPEN" +// } +// +// //connects to the given ssid +// fun connectToWPAWiFi(ssid: String, password: String){ +// // WifiUtils.withContext(context) // .connectWith(ssid, "") // .setTimeout(40000) @@ -327,25 +327,25 @@ class HMG_Wifi_(flutterMainActivity: FlutterMainActivity) { // Log.v(TAG,"HMG-GUEST failed to connect") // } // } - - } - - fun connectedNetworkId():Int{ - val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - return wm.connectionInfo.networkId - } - - fun connectedNetworkIPAddress():Int{ - val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - return wm.connectionInfo.ipAddress - } - - fun isConnectedTo(bssid: String):Boolean{ - val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - if(wm.connectionInfo.bssid == bssid){ - return true - } - return false - } - -} \ No newline at end of file +// +// } +// +// fun connectedNetworkId():Int{ +// val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager +// return wm.connectionInfo.networkId +// } +// +// fun connectedNetworkIPAddress():Int{ +// val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager +// return wm.connectionInfo.ipAddress +// } +// +// fun isConnectedTo(bssid: String):Boolean{ +// val wm:WifiManager= context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager +// if(wm.connectionInfo.bssid == bssid){ +// return true +// } +// return false +// } +// +//} \ No newline at end of file diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HTTPRequest.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HTTPRequest.kt index 6bc738c8..e34c7c9b 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HTTPRequest.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/HTTPRequest.kt @@ -1,8 +1,5 @@ package com.cloud.diplomaticquarterapp.utils -import android.os.AsyncTask -import android.os.Parcel -import android.os.Parcelable import android.util.Log import java.io.BufferedReader import java.io.InputStreamReader diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt index 22852a56..2033cc03 100644 --- a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt +++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt @@ -1,14 +1,16 @@ package com.cloud.diplomaticquarterapp.utils +import android.content.Context +import android.net.wifi.WifiManager import android.util.Log -import android.widget.Toast -import com.cloud.diplomaticquarterapp.FlutterMainActivity -import com.cloud.diplomaticquarterapp.hmgwifi.HMG_Wifi +import com.cloud.diplomaticquarterapp.MainActivity +import com.cloud.diplomaticquarterapp.hmgwifi.HMG_Guest +import com.cloud.diplomaticquarterapp.hmgwifi.HMG_Internet import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel -class PlatformBridge(binaryMessenger: BinaryMessenger, flutterMainActivity: FlutterMainActivity) { +class PlatformBridge(binaryMessenger: BinaryMessenger, flutterMainActivity: MainActivity) { private var binaryMessenger = binaryMessenger private var mainActivity = flutterMainActivity @@ -16,40 +18,51 @@ class PlatformBridge(binaryMessenger: BinaryMessenger, flutterMainActivity: Flut companion object { private const val CHANNEL = "HMG-Platform-Bridge" - private const val METHOD_CONNECT_WIFI = "connectHMGGuestWifi" - private const val METHOD_SHOW_LOADING = "loading" + private const val HMG_INTERNET_WIFI_CONNECT_METHOD = "connectHMGInternetWifi" + private const val HMG_GUEST_WIFI_CONNECT_METHOD = "connectHMGGuestWifi" + private const val ENABLE_WIFI_IF_NOT = "enableWifiIfNot" + } fun create(){ channel = MethodChannel(binaryMessenger, CHANNEL) + HMGUtils.setPlatformChannel(channel) channel.setMethodCallHandler { methodCall: MethodCall, result: MethodChannel.Result -> - if (methodCall.method == METHOD_CONNECT_WIFI) { + + if (methodCall.method == HMG_INTERNET_WIFI_CONNECT_METHOD) { + connectHMGInternetWifi(methodCall,result) + + }else if (methodCall.method == HMG_GUEST_WIFI_CONNECT_METHOD) { connectHMGGuestWifi(methodCall,result) - }else if (methodCall.method == METHOD_SHOW_LOADING) { - showLoading(methodCall,result) + }else if (methodCall.method == ENABLE_WIFI_IF_NOT) { + enableWifiIfNot(methodCall,result) + }else{ - }else { result.notImplemented() } + } + + val res = channel.invokeMethod("localizedValue","errorConnectingHmgNetwork") + print(res) } - private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result){ + private fun connectHMGInternetWifi(methodCall: MethodCall, result: MethodChannel.Result){ (methodCall.arguments as ArrayList<*>).let { require(it.size > 0 && (it[0] is String),lazyMessage = { "Missing or invalid arguments (Must have one argument 'String at 0'" }) val patientId = it[0].toString() -// HMGUtils.showLoading(mainActivity,true,"Connecting...") - HMG_Wifi(mainActivity) + HMG_Internet(mainActivity) .connectToHMGGuestNetwork(patientId){ status, message -> - HMGUtils.showLoading(mainActivity,false) + result.success(if(status) 1 else 0) + if(status){ - HMGUtils.showMessage(mainActivity,"Error", message) + HMGUtils.popMessage(mainActivity, message) }else{ - HMGUtils.showMessage(mainActivity,"Success",message) + HMGUtils.popMessage(mainActivity,message) } Log.v(this.javaClass.simpleName, "$status | $message") @@ -57,15 +70,28 @@ class PlatformBridge(binaryMessenger: BinaryMessenger, flutterMainActivity: Flut } } - private fun showLoading(methodCall: MethodCall, result: MethodChannel.Result){ - (methodCall.arguments as ArrayList<*>).let { - require(it.size > 1 && (it[0] is String) && (it[1] is Boolean),lazyMessage = { - "Missing or invalid arguments (Must have two argument 'String at 1' and 'Boolean at 1'" - }) - val message = it[0] as String - val show = it[1] as Boolean - HMGUtils.showLoading(mainActivity,show,message) + private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result){ + HMG_Guest(mainActivity).connectToHMGGuestNetwork { status, message -> + result.success(if(status) 1 else 0) + + if(status){ + HMGUtils.popMessage(mainActivity, message) + }else{ + HMGUtils.popMessage(mainActivity,message) + } + Log.v(this.javaClass.simpleName, "$status | $message") + } + } + + private fun enableWifiIfNot(methodCall: MethodCall, result: MethodChannel.Result) { + val wm = mainActivity.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? + if (wm != null){ + if (!wm.isWifiEnabled) + wm.isWifiEnabled = true + result.success(true) + }else{ + result.error("101","Error while opening wifi, Please try to open wifi yourself and try again","'WifiManager' service failed"); } } } \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_flutter_main.xml b/android/app/src/main/res/layout/activity_flutter_main.xml deleted file mode 100644 index bbaac9bb..00000000 --- a/android/app/src/main/res/layout/activity_flutter_main.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/layout/loading_view.xml b/android/app/src/main/res/layout/loading_view.xml deleted file mode 100644 index da629a27..00000000 --- a/android/app/src/main/res/layout/loading_view.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 73862c41..00000000 --- a/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 84dd6f91..8e56476b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.4.10' + ext.kotlin_version = '1.3.50' repositories { google() jcenter() diff --git a/assets/app_icons/config.json b/assets/app_icons/config.json index e0f1051d..0bedcb06 100644 --- a/assets/app_icons/config.json +++ b/assets/app_icons/config.json @@ -133,171 +133,129 @@ ] }, { - "uid": "03df3404af4fa2db99c8dfb9e9729367", - "css": "more_menu_icon", + "uid": "3a1701f9a414e497ab81ae1bb58d3e7c", + "css": "blood_type_icon", "code": 59401, "src": "custom_icons", "selected": true, "svg": { - "path": "", - "width": 222 + "path": "M567.7 248.5A2004.5 2004.5 0 0 0 452.6 80.5C395.1 5.9 378.7 0 363.3 0S331.4 5.9 273.8 80.5A2004.4 2004.4 0 0 0 158.8 248.6C99.6 344.8 0 523.3 0 636.7A363.3 363.3 0 0 0 726.5 636.7C726.5 523.3 627 344.8 567.7 248.5ZM510.7 696.3H392.6V814.4A29.3 29.3 0 1 1 334 814.4V696.3H215.8A29.3 29.3 0 0 1 215.8 637.7H334V519.5A29.3 29.3 0 1 1 392.6 519.5V637.7H510.7A29.3 29.3 0 0 1 510.7 696.3Z", + "width": 727 }, "search": [ - "more_menu_icon" + "blood_type_icon" ] }, { - "uid": "8882d4d64a842809f1cb078522c9b867", - "css": "offer_icon", + "uid": "2073f5ad66d9ab6e47cc1be6e6e20146", + "css": "height_icon", "code": 59402, "src": "custom_icons", "selected": true, "svg": { - "path": "M1089.5 567L1107.2 972.1 1406.5 924.4 1467.7 530ZM1089.5 567L1107.2 972.1 934 924.4 873.6 530ZM856.1 506L865 588.4 1083.3 622.8 1080.4 541.3ZM1495.6 506L1482 588.4 1083.3 622.8 1080.4 541.3ZM856.1 506L1080.4 541.3 1495.5 506 1221.9 481.9ZM994.9 527.4L1351 493.3 1288 487.7 934 518.2ZM1336 519.5L1100 489.9 1059 492.6 1272.6 524.9ZM882.9 591.2L886 611 1092.9 645.6 1455.7 608.2 1458.4 590.4 1092 622.1 1083.4 622.8ZM1308.7 940L1251.5 949.1 1272.6 524.9 1336 519.5ZM1328.3 381.2C1277.7 331.5 1175.8 491.5 1175.8 491.5L1178.7 502.5S1296.2 431.6 1332.9 428.5C1361.9 426 1361.3 449.9 1331.2 461.8 1303.7 472.6 1178.7 502.5 1178.7 502.5A747 747 0 0 0 1274.4 487.3C1351.9 473.5 1369.4 456.8 1369.9 431.4S1349.7 402.1 1328.3 381.2ZM1274.4 487.2C1349.2 473.9 1368.1 457.9 1369.8 434A63.5 63.5 0 0 0 1332.9 428.4C1361.9 425.9 1361.3 449.9 1331.2 461.7 1303.7 472.5 1178.7 502.4 1178.7 502.4H1178.7A880 880 0 0 0 1274.4 487.2ZM1249 462.9S1245.7 453.6 1229.5 452.2 1212.6 441.2 1212.6 441.1A594.4 594.4 0 0 0 1175.8 491.5L1178.7 502.5S1212.2 482.4 1249 463ZM1023.4 381.2C1073.9 331.5 1175.8 491.5 1175.8 491.5L1172.9 502.5S1055.4 431.6 1018.7 428.5C989.8 426 990.3 449.9 1020.5 461.8 1047.9 472.6 1172.9 502.5 1172.9 502.5A747 747 0 0 1 1077.3 487.3C999.8 473.5 982.2 456.8 981.7 431.4S1002 402.1 1023.4 381.2ZM1077.3 487.2C1002.5 473.9 983.5 457.9 981.9 434A63.5 63.5 0 0 1 1018.7 428.4C989.8 425.9 990.3 449.9 1020.5 461.7 1047.9 472.5 1172.9 502.4 1172.9 502.4H1172.9A880 880 0 0 1 1077.3 487.2ZM1102.6 462.9S1105.9 453.6 1122.1 452.2 1139.1 441.2 1139.1 441.1A595 595 0 0 1 1175.8 491.5L1172.9 502.5S1139.4 482.4 1102.6 463ZM1211.9 506H1135.9A5 5 0 0 1 1131.2 500.7H1131.2A16.4 16.4 0 0 1 1146.7 483.6H1201.1A16.4 16.4 0 0 1 1216.6 500.7H1216.6A5 5 0 0 1 1211.9 506ZM233.4 567L251.1 972.1 550.4 924.4 611.6 530ZM233.4 567L251.1 972.1 78 924.4 17.5 530ZM0 506L8.9 588.4 227.1 622.8 224.2 541.3ZM639.5 506L625.9 588.4 227.1 622.8 224.3 541.3ZM0 506L224.2 541.3 639.4 506 365.8 481.9ZM138.8 527.4L494.9 493.3 431.9 487.7 78 518.2ZM479.9 519.5L243.9 489.9 202.9 492.6 416.5 524.9ZM26.8 591.2L29.8 611 236.8 645.6 599.6 608.2 602.3 590.4 235.9 622.1 227.2 622.8ZM452.6 940L395.4 949.1 416.5 524.9 479.9 519.5ZM116.8 935.2L167.5 949.1 138.8 527.4 77.9 518.2ZM472.2 381.2C421.6 331.5 319.8 491.5 319.8 491.5L322.7 502.5S440.1 431.6 476.8 428.5C505.8 426 505.3 449.9 475.1 461.8 447.6 472.6 322.7 502.5 322.7 502.5A747 747 0 0 0 418.3 487.3C495.8 473.5 513.4 456.8 513.8 431.4S493.6 402.1 472.2 381.2ZM418.3 487.2C493.1 473.9 512.1 457.9 513.7 434A63.5 63.5 0 0 0 476.8 428.4C505.8 425.9 505.3 449.9 475.1 461.7 447.6 472.5 322.7 502.4 322.7 502.4H322.7A880 880 0 0 0 418.3 487.2ZM393 462.9S389.7 453.6 373.4 452.2 356.5 441.2 356.5 441.1A595.1 595.1 0 0 0 319.8 491.5L322.7 502.5S356.2 482.4 393 463ZM167.3 381.2C217.8 331.5 319.7 491.5 319.7 491.5L316.8 502.5S199.3 431.6 162.6 428.5C133.6 426 134.2 449.9 164.3 461.8 191.8 472.6 316.8 502.5 316.8 502.5A747 747 0 0 1 221.1 487.3C143.6 473.5 126.1 456.8 125.6 431.4S145.9 402.1 167.3 381.2ZM221.1 487.2C146.3 473.9 127.4 457.9 125.7 434A63.5 63.5 0 0 1 162.7 428.4C133.7 426 134.3 449.9 164.4 461.7 191.9 472.6 316.9 502.5 316.9 502.5H316.9A880.2 880.2 0 0 1 221.1 487.2ZM246.5 462.9S249.8 453.6 266.1 452.2 283 441.2 283 441.1A594.5 594.5 0 0 1 319.8 491.5L316.8 502.5S283.4 482.4 246.6 463ZM355.8 506H279.8A5 5 0 0 1 275.1 500.7H275.1A16.4 16.4 0 0 1 290.6 483.6H345A16.4 16.4 0 0 1 360.6 500.7H360.6A5 5 0 0 1 355.8 506ZM442.3 310.5L747.8 362.8 1053.3 310.5 747.8 276ZM595.1 336.7L747.8 362.9 900.6 336.7 747.8 319.4ZM905 493.5L868 497A388.3 388.3 0 0 1 1017.1 154.2 341.6 341.6 0 0 0 1005.2 189.2 271.6 271.6 0 0 1 1037.7 188.2 345.8 345.8 0 0 0 905 493.5ZM977.3 471.4L937.5 464.6C958 318.6 1048.8 196.5 1174.5 145.9A349.9 349.9 0 0 0 1153.7 179.4 299.7 299.7 0 0 1 1188.3 187.6 354.4 354.4 0 0 0 977.3 471.4ZM811.4 491.9L773.1 489.4A555.9 555.9 0 0 1 946.6 109.9 504.1 504.1 0 0 0 938.1 175.9 517.9 517.9 0 0 0 811.4 491.9ZM562.9 381.4L599.5 374.8A366.4 366.4 0 0 0 378.9 82.6 185.9 185.9 0 0 0 366.4 121.2 326.3 326.3 0 0 1 562.9 381.4ZM535.3 463.1L574.1 451.5C538.7 309 435.9 199.1 305.7 164.6A338.6 338.6 0 0 1 329.9 195.3 302.9 302.9 0 0 0 296.4 207.8 343.9 343.9 0 0 1 535.3 463.1ZM688.7 486.7L726.8 483A552.6 552.6 0 0 0 543.9 109 503.8 503.8 0 0 1 554 174.7 515.1 515.1 0 0 1 688.7 486.7ZM747.8 362.8V1000L985.2 937.7 1053.3 310.5ZM747.8 362.8V1000L510.4 937.7 442.3 310.5ZM973.1 823S943.9 837.1 937.9 904.5A135.6 135.6 0 0 1 925.4 953.4L848 973.7A166.3 166.3 0 0 0 871.7 919C879 883.9 879.9 875.1 879.9 875.1S884.8 854.4 935.2 826.3A61.6 61.6 0 0 1 973.1 823ZM879.9 875.2A105 105 0 0 1 927.1 804.3C1032.3 744.5 1161.9 869.9 1161.9 869.9L1143.7 867.9 1147.7 889.3 1126.3 886.3 1135.7 907 1115.5 902.6 1120.9 918.9 1099.4 912.9 1096.5 938.4S1034.2 853.5 998.2 838.5A100.5 100.5 0 0 0 879.9 875.2ZM522.5 823.1S550.4 840.7 559.5 909A160.3 160.3 0 0 0 570.1 953.4L647.6 973.9A166.4 166.4 0 0 1 623.9 919.1C616.6 884 615.7 875.3 615.7 875.3S610.8 854.6 560.3 826.5A61.6 61.6 0 0 0 522.5 823.1ZM615.7 875.3A105.1 105.1 0 0 0 568.5 804.4C463.3 744.7 333.7 870.1 333.7 870.1L351.9 868.1 347.8 889.5 369.3 886.5 359.9 907.2 380.1 902.8 374.7 919 396.2 913.1 399.1 938.6S463.9 854.9 499.8 839.8A96.5 96.5 0 0 1 615.7 875.3ZM463.6 75.2A38.7 38.7 0 0 0 437.4 56.9L441.1 31.4A62 62 0 0 1 482.9 60.6ZM902.8 42.4A41.8 41.8 0 0 0 882.1 67.7L859.9 59.4A66.8 66.8 0 0 1 893.1 18.9ZM1096.4 123.4A32.9 32.9 0 0 0 1070.9 134.7L1056.2 118.6A52.7 52.7 0 0 1 1096.9 100.4ZM773.5 28.6A41.4 41.4 0 0 0 768.4 58.4L748.3 63.4A66.3 66.3 0 0 1 756.3 15.8ZM632.6 122.7A38.6 38.6 0 0 0 617.6 97.3L629.1 78.3A61.8 61.8 0 0 1 653 118.9ZM206 205.9A34.3 34.3 0 0 0 179.8 193.4Q179.8 181.5 179.8 169.6A55 55 0 0 1 221.6 189.6ZM1171.1 285.2A61.2 61.2 0 0 0 1138.9 287.6 83.4 83.4 0 0 1 1197.3 250.9Q1198.5 262.3 1199.6 273.8A60.3 60.3 0 0 0 1171.1 285.2ZM828.8 208.3A75.2 75.2 0 0 0 810.9 238.1 102.1 102.1 0 0 1 819.9 164.4L837.8 176.3A75.9 75.9 0 0 0 828.8 208.3ZM284 117.2A61.7 61.7 0 0 1 315.8 123.5 85.9 85.9 0 0 0 261.4 79.7L256.8 102.2A61.8 61.8 0 0 1 284 117.2ZM278.4 313.3A59.7 59.7 0 0 1 350.7 314.2L360.8 305.2A64.5 64.5 0 0 0 264.1 293.9ZM221.7 4.5L253 0 274.9 19.2 223.6 20.3ZM728.1 145.8L739 178.5 726.9 206.3 714.7 151.2ZM1240.6 60.6L1209.4 66.5 1193.7 92.1 1243 76.4Z", - "width": 1496 + "path": "M615.2 883H527.3V820.3H566.5A29.3 29.3 0 1 0 566.5 761.7H527.3V703.1H605.6A29.3 29.3 0 0 0 605.6 644.5H527.3V585.9H566.5A29.3 29.3 0 1 0 566.5 527.3H527.3V468.8H605.6A29.3 29.3 0 0 0 605.6 410.2H527.3V351.6H566.5A29.3 29.3 0 1 0 566.5 293H527.3V234.4H605.6A29.3 29.3 0 0 0 605.6 175.7H527.3V117.2H566.5A29.3 29.3 0 1 0 566.5 58.6H527.3V29.3A29.3 29.3 0 1 0 468.7 29.3V883H363L375.5 683.7H152.1L164.6 883H29.3A29.3 29.3 0 0 0 0 912.2V970.8A29.3 29.3 0 0 0 58.6 970.8V941.6H585.9V970.8A29.3 29.3 0 1 0 644.6 970.8V912.1A29.3 29.3 0 0 0 615.2 883ZM146.7 625H381A29.3 29.3 0 0 0 410.2 595.7V400.5A146 146 0 0 0 363.3 293.2 146.1 146.1 0 0 1 164.4 293.2 146 146 0 0 0 117.4 400.6V595.8A29.3 29.3 0 0 0 146.7 625Z", + "width": 645 }, "search": [ - "offer_icon" + "height_icon" ] }, { - "uid": "48bf5922e89257ff0ba5f3ae4a47297d", - "css": "prescription_icon", + "uid": "0f1a73756e84a7173b6426ac45ca4a5a", + "css": "online_payment_icon", "code": 59403, "src": "custom_icons", "selected": true, "svg": { - "path": "M466 297H414.1V245A19.5 19.5 0 1 0 374.9 245V297H323A19.5 19.5 0 0 0 323 336.1H374.9V388A19.5 19.5 0 0 0 414.1 388V336.1H466A19.5 19.5 0 1 0 466 297ZM394.5 144.6A171.9 171.9 0 1 0 566.4 316.5 172.1 172.1 0 0 0 394.5 144.6ZM394.5 449.3A132.8 132.8 0 1 1 527.3 316.5 133 133 0 0 1 394.5 449.3ZM783.4 179.6L609.5 5.7A19.5 19.5 0 0 0 595.7 0H58.6A58.7 58.7 0 0 0 0 58.6V941.4A58.7 58.7 0 0 0 58.6 1000H431.7A19.5 19.5 0 1 0 431.7 960.8H58.6A19.6 19.6 0 0 1 39.2 941.4V58.6A19.6 19.6 0 0 1 58.7 39.1H576.2V154.2A58.7 58.7 0 0 0 634.8 212.8H750.1V560.5A19.5 19.5 0 1 0 789.2 560.5V193.4A19.5 19.5 0 0 0 783.4 179.6ZM634.8 173.8A19.6 19.6 0 0 1 615.2 154.3V66.7L722.4 173.8H634.8ZM644.5 546.9H305.3A19.5 19.5 0 0 0 305.3 586.1H644.5A19.5 19.5 0 0 0 644.5 546.9ZM208.2 546.9H144.5A19.5 19.5 0 0 0 144.5 586.1H208.2A19.5 19.5 0 0 0 208.2 546.9ZM500 656.3H305.3A19.5 19.5 0 0 0 305.3 695.4H500A19.5 19.5 0 1 0 500 656.3ZM208.2 656.3H144.5A19.5 19.5 0 0 0 144.5 695.4H208.2A19.5 19.5 0 0 0 208.2 656.3ZM319.1 771.4A19.5 19.5 0 1 0 324.9 785.2 19.6 19.6 0 0 0 319.1 771.4ZM208.2 765.6H144.5A19.5 19.5 0 1 0 144.5 804.8H208.2A19.5 19.5 0 1 0 208.2 765.6ZM879 757.8A121.3 121.3 0 0 0 862.1 759 121.1 121.1 0 0 0 660.5 638.6L505.8 793.3A121.1 121.1 0 0 0 677 964.5L758 883.6A121.1 121.1 0 1 0 878.9 757.9ZM649.4 936.9A82 82 0 1 1 533.4 820.9L597 757.4 713 873.4ZM740.6 845.8L624.6 729.8 688.1 666.2A82 82 0 1 1 804.1 782.2ZM859.4 958.6A82 82 0 0 1 859.4 799.3ZM898.6 958.6V799.3A82 82 0 0 1 898.6 958.6Z", - "width": 1000 + "path": "M1214.7 273.8L1213.8 274A29 29 0 0 1 1207.2 274.8C1202 274.8 1195.9 272.2 1195.9 259.6 1195.9 253.1 1197 244.7 1206.7 244.7H1206.7A29.1 29.1 0 0 1 1213.7 246L1214.5 246.2V273.8ZM1216.2 211.5L1214.7 211.8V234.9L1213.2 234.5 1212.8 234.4A32.6 32.6 0 0 0 1204.1 232.8C1184.8 232.8 1180.7 247.5 1180.7 259.8A23.9 23.9 0 0 0 1206.6 286.3 52.5 52.5 0 0 0 1224 283.8 7.6 7.6 0 0 0 1230.5 275.5V209.1C1225.9 209.9 1221.1 210.7 1216.5 211.5M1272.2 274.3L1271.4 274.5 1268.4 275.3A30.7 30.7 0 0 1 1261.3 276.4C1256.8 276.4 1254 274.2 1254 270.3 1254 267.8 1255.2 263.6 1262.6 263.6H1272.2ZM1265.4 232.5A65.2 65.2 0 0 0 1245.7 236L1240.8 237.4 1242.4 248.7 1247.3 247.1A56.9 56.9 0 0 1 1263.4 244.3C1265.5 244.3 1272.1 244.3 1272.1 251.4V254.4H1263C1246.6 254.4 1239 259.7 1239 271 1239 280.6 1246 286.3 1257.8 286.3A60.9 60.9 0 0 0 1270.8 284.6L1271.1 284.6 1271.3 284.6 1272.8 284.8C1277.4 285.7 1282.2 286.5 1286.8 287.4V250.5C1286.8 238.6 1279.6 232.5 1265.5 232.5M1157.5 274.3L1156.7 274.5 1153.8 275.3A30.3 30.3 0 0 1 1146.6 276.4C1142.1 276.4 1139.4 274.2 1139.4 270.3 1139.4 267.8 1140.5 263.6 1147.9 263.6H1157.5L1157.5 274.3ZM1150.8 232.5A65 65 0 0 0 1131.1 236L1126.2 237.4 1127.8 248.7 1132.7 247.1A56.9 56.9 0 0 1 1148.8 244.3C1150.9 244.3 1157.5 244.3 1157.5 251.4V254.4H1148.4C1132 254.4 1124.3 259.7 1124.3 271 1124.3 280.6 1131.3 286.3 1143.2 286.3A60.9 60.9 0 0 0 1156.2 284.6L1156.5 284.6 1156.7 284.6 1158.1 284.8C1162.8 285.7 1167.5 286.5 1172.2 287.4V250.6C1172.2 238.5 1165 232.5 1150.9 232.5M1095.4 232.6A39.8 39.8 0 0 0 1079.4 236.2L1078.8 236.5 1078.3 236A24.2 24.2 0 0 0 1063.9 232.6 58.7 58.7 0 0 0 1047 235.1C1042 236.7 1040 239.1 1040 243.6V285.7H1055.7V246.8L1056.5 246.5A20 20 0 0 1 1063.4 245.3 6.2 6.2 0 0 1 1070.3 252.4V285.7H1085.7V251.8A11.4 11.4 0 0 0 1085.2 248.4L1084.7 247.4 1085.8 246.9A18.6 18.6 0 0 1 1093.5 245.3 6.3 6.3 0 0 1 1100.3 252.4V285.7H1115.7V250.9C1115.7 238.6 1109.2 232.7 1095.4 232.7M1260.6 174A53.6 53.6 0 0 1 1251.5 173.1L1250.6 173V150.3A11 11 0 0 0 1250.2 147.1L1249.7 146 1250.7 145.6C1251 145.5 1251.2 145.4 1251.5 145.3L1251.7 145.2 1252.7 144.8A1.5 1.5 0 0 1 1253.1 144.7 36.7 36.7 0 0 1 1261.2 143.8H1261.2C1270.8 143.8 1272 152.4 1272 158.8 1272 171.3 1265.7 174 1260.6 174M1260.6 130.8H1260.2A27.8 27.8 0 0 0 1238.5 138.1 14.7 14.7 0 0 0 1235.7 146.8H1235.7V170.3A6.9 6.9 0 0 1 1235.2 173.3L1234.7 174.2H1206.2V158H1206.2A24.3 24.3 0 0 0 1181 131.3H1166.6C1166 135.5 1165.5 138.5 1165 142.7H1179.2C1186.7 142.7 1190.7 149 1190.7 158.8V175.3L1189.7 174.7A10.9 10.9 0 0 0 1186.3 174.2H1161.7C1161.2 177.4 1160.6 181.4 1159.9 185.5H1235.8C1238.3 185 1241.4 184.5 1244 184.1A42.7 42.7 0 0 0 1259.8 187 25.9 25.9 0 0 0 1287 159 26.1 26.1 0 0 0 1260.6 130.8M1127.6 192.4H1128.3C1144.8 192.4 1152.5 187 1152.5 173.6A17.2 17.2 0 0 0 1133.7 156.2H1118.4A6.5 6.5 0 0 1 1111.2 149.3C1111.2 146.3 1112.3 142.7 1119.7 142.7H1152.9C1153.6 138.4 1154 135.7 1154.6 131.4H1120.2C1104.1 131.4 1096 138.1 1096 149.3S1103.1 166.2 1114.9 166.2H1130.1A7.2 7.2 0 0 1 1137.3 173.6 7.4 7.4 0 0 1 1128.8 181.2H1126.3L1077.7 181.1H1068.9C1061.4 181.1 1056.2 176.7 1056.2 167V160.2C1056.2 150 1060.2 143.6 1068.9 143.6H1083.3C1083.9 139.2 1084.3 136.5 1084.9 132.3H1065.4A24.6 24.6 0 0 0 1040.1 159.3H1040.1V167A23.3 23.3 0 0 0 1065.3 192.3H1079.6L1105.9 192.3H1127.7ZM1266.9 488.1A134.9 134.9 0 1 1 997.1 488.1H997.1A134.9 134.9 0 1 1 1266.9 488.1ZM1132 353.2A135.3 135.3 0 0 1 1266.9 488.1H1266.9A134.9 134.9 0 1 1 997 488.1M1132 353.2A135.3 135.3 0 0 1 1266.9 488.1H1266.9A134.8 134.8 0 0 1 1132 623M950.7 353.2A134.9 134.9 0 0 0 952.1 623 136.5 136.5 0 0 0 1042.8 588H1042.8A128.3 128.3 0 0 0 1056.3 573.8H1028.5A164.7 164.7 0 0 1 1018.5 560.2H1066.3A91.4 91.4 0 0 0 1074.2 545.9H1010.7A85.1 85.1 0 0 1 1004.9 531.6H1079.2A141.7 141.7 0 0 0 1086.3 488.8 184.3 184.3 0 0 0 1083.5 460.2H1000.6A104.3 104.3 0 0 1 1004.2 446H1078.4A85.1 85.1 0 0 0 1072.7 431.7H1009.9A141.6 141.6 0 0 1 1017.8 417.4H1065.6A67.9 67.9 0 0 0 1054.9 403.1H1028.5A121.7 121.7 0 0 1 1042 389.5 131.7 131.7 0 0 0 951.4 354.6C951.4 353.2 951.4 353.2 950.7 353.2ZM817.2 488.1A134.8 134.8 0 0 0 952.1 623 136.5 136.5 0 0 0 1042.7 588H1042.7A128.3 128.3 0 0 0 1056.3 573.8H1028.5A164.7 164.7 0 0 1 1018.5 560.2H1066.3A91.5 91.5 0 0 0 1074.2 545.9H1010.7A85.1 85.1 0 0 1 1004.9 531.6H1079.2A141.8 141.8 0 0 0 1086.3 488.8 184.3 184.3 0 0 0 1083.5 460.2H1000.6A104.3 104.3 0 0 1 1004.1 445.9H1078.4A85.1 85.1 0 0 0 1072.7 431.6H1009.9A141.6 141.6 0 0 1 1017.8 417.3H1065.6A67.9 67.9 0 0 0 1054.9 403.1H1028.5A121.7 121.7 0 0 1 1042 389.5 131.7 131.7 0 0 0 951.4 354.5H950.7M952.1 623A136.5 136.5 0 0 0 1042.8 588H1042.8A128.3 128.3 0 0 0 1056.3 573.8H1028.5A164.7 164.7 0 0 1 1018.5 560.2H1066.3A91.4 91.4 0 0 0 1074.2 545.9H1010.6A85.1 85.1 0 0 1 1004.9 531.6H1079.1A141.7 141.7 0 0 0 1086.3 488.8 184.3 184.3 0 0 0 1083.4 460.2H1000.7A104.3 104.3 0 0 1 1004.2 446H1078.5A85.1 85.1 0 0 0 1072.8 431.7H1009.9A141.6 141.6 0 0 1 1017.8 417.4H1065.6A67.9 67.9 0 0 0 1054.9 403.1H1028.5A121.7 121.7 0 0 1 1042 389.5 131.7 131.7 0 0 0 951.4 354.6H950.7M999.9 522.4L1002.1 510.2A30.9 30.9 0 0 1 998.5 511C993.5 511 992.8 508.1 993.5 506.6L997.9 481.6H1005.7L1007.9 468.1H1000.8L1002.2 459.5H987.9S979.3 506.6 979.3 512.3A10.7 10.7 0 0 0 990.8 524.5 21.9 21.9 0 0 0 999.9 522.4ZM1004.9 499.5A22.7 22.7 0 0 0 1029.9 524.5 37 37 0 0 0 1044.9 522.3L1047.7 508.8A42.8 42.8 0 0 1 1032.7 512.3C1017 512.3 1019.9 500.9 1019.9 500.9H1049.2A92.5 92.5 0 0 0 1051.3 488.1 19.3 19.3 0 0 0 1030.6 467.4C1015.6 466 1004.9 481.7 1004.9 499.5ZM1029.9 478.8C1037.7 478.8 1036.4 488.1 1036.4 488.8H1020.7C1020.6 488.1 1022 478.8 1029.9 478.8ZM1120.6 522.3L1123.4 506.7A35.1 35.1 0 0 1 1111.3 510.2C1101.3 510.2 1097 502.4 1097 493.8 1097 476.7 1105.6 467.4 1115.6 467.4A23.9 23.9 0 0 1 1128.4 471.7L1130.6 456.7A50.2 50.2 0 0 0 1114.2 453.2C1097.8 453.2 1081.3 467.5 1081.3 494.5 1081.3 512.3 1089.9 524.5 1107 524.5A64.1 64.1 0 0 0 1120.6 522.3ZM921.4 466A50.6 50.6 0 0 0 904.3 468.8L902.1 480.9A42.2 42.2 0 0 1 917.8 478.1C922.8 478.1 927.1 478.8 927.1 483.1 927.1 485.9 926.3 486.7 926.3 486.7H919.8C907.7 486.7 894.1 491.7 894.1 508.1 894.1 520.9 902.7 523.8 907.7 523.8A21.5 21.5 0 0 0 922.7 517.2L922 523H934.8L940.5 483.7A16.9 16.9 0 0 0 921.4 466ZM924.2 498.1C924.2 500.3 922.8 511.7 914.2 511.7A5.6 5.6 0 0 1 908.5 505.9C908.5 502.4 910.7 497.4 921.4 497.4A11.3 11.3 0 0 0 924.2 498.1ZM954.2 523.8A18.3 18.3 0 0 0 975.6 505.2C975.6 487.4 958.5 490.9 958.5 483.8 958.5 480.2 961.3 478.8 966.3 478.8 968.5 478.8 976.3 479.5 976.3 479.5L978.5 466.7A54.2 54.2 0 0 0 965 465.2C954.2 465.2 943.5 469.6 943.5 483.8 943.5 500.2 961.4 498.8 961.4 505.2 961.4 509.6 956.4 510.2 952.8 510.2A46.7 46.7 0 0 1 940 508L937.8 520.9C938.5 522.3 942.2 523.8 954.2 523.8ZM1239.1 454.5L1236.2 473.8A19.8 19.8 0 0 0 1222.7 466.7C1209.8 466.7 1198.4 482.4 1198.4 501 1198.4 512.4 1204.1 524.5 1216.2 524.5A19.1 19.1 0 0 0 1229.8 518.8L1229.1 523.8H1243.4L1254.1 455.3ZM1232.5 492.4C1232.5 500.2 1229 510.2 1221.1 510.2 1216.1 510.2 1213.3 505.9 1213.3 498.8 1213.3 487.4 1218.3 480.2 1224.7 480.2 1229.8 480.2 1232.6 483.8 1232.6 492.4ZM843.6 523.1L852.2 471.7 853.6 523.1H863.6L882.2 471.7 874.3 523.1H889.3L900.7 454.5H877.1L862.8 496.7 862.1 454.5H841.4L830 523.1ZM1064.9 523.1C1069.2 499.5 1069.9 480.2 1079.9 483.8A56.1 56.1 0 0 1 1084.9 467.4H1082C1075.5 467.4 1070.6 476 1070.6 476L1072 468.1H1058.5L1049.2 523.8H1064.9ZM1153.4 466A50.6 50.6 0 0 0 1136.3 468.8L1134.1 480.9A42.2 42.2 0 0 1 1149.8 478.1C1154.8 478.1 1159.1 478.8 1159.1 483.1 1159.1 485.9 1158.4 486.7 1158.4 486.7H1151.8C1139.7 486.7 1126.2 491.7 1126.2 508.1 1126.2 520.9 1134.7 523.8 1139.7 523.8A21.5 21.5 0 0 0 1154.7 517.2L1154 523H1166.8L1172.6 483.7A16.7 16.7 0 0 0 1153.4 466ZM1157 498.1C1157 500.3 1155.5 511.7 1147 511.7A5.6 5.6 0 0 1 1141.3 505.9C1141.3 502.4 1143.4 497.4 1154.1 497.4 1156.3 498.1 1156.3 498.1 1157 498.1ZM1184.8 523.1C1189.2 499.5 1189.8 480.2 1199.8 483.8A56 56 0 0 1 1204.8 467.4H1202C1195.4 467.4 1190.5 476 1190.5 476L1192 468.1H1178.4L1169.1 523.8H1184.8ZM977.8 512.4A10.7 10.7 0 0 0 989.2 524.5 27.2 27.2 0 0 0 999.9 522.3L1002.1 510.2A30.9 30.9 0 0 1 998.5 510.9C993.5 510.9 992.8 508.1 993.5 506.6L997.9 481.6H1005.7L1007.9 468H1000.8L1002.2 459.5M1012.1 499.5C1012.1 519.5 1018.6 524.5 1029.9 524.5A37 37 0 0 0 1044.9 522.3L1047.8 508.8A42.8 42.8 0 0 1 1032.8 512.3C1017.1 512.3 1019.9 500.9 1019.9 500.9H1049.2A92.5 92.5 0 0 0 1051.3 488.1 19.3 19.3 0 0 0 1030.7 467.4C1015.6 466 1012.1 481.7 1012.1 499.5ZM1029.9 478.8C1037.8 478.8 1039.2 488.1 1039.2 488.8H1020.6C1020.6 488.1 1022.1 478.8 1029.9 478.8ZM1120.6 522.3L1123.4 506.7A35.1 35.1 0 0 1 1111.3 510.2C1101.3 510.2 1097 502.4 1097 493.8 1097 476.7 1105.6 467.4 1115.6 467.4A23.9 23.9 0 0 1 1128.4 471.7L1130.6 456.7A50.2 50.2 0 0 0 1114.2 453.2C1097.8 453.2 1088.5 467.5 1088.5 494.5 1088.5 512.3 1089.9 524.5 1107 524.5A64.1 64.1 0 0 0 1120.6 522.3ZM902.1 481.7A42.2 42.2 0 0 1 917.8 478.8C922.8 478.8 927.1 479.5 927.1 483.8 927.1 486.7 926.4 487.4 926.4 487.4H919.8C907.7 487.4 894.2 492.4 894.2 508.8 894.2 521.7 902.7 524.5 907.7 524.5A21.5 21.5 0 0 0 922.7 518L922 523.7H934.8L940.6 484.4C940.6 468 926.3 467.3 920.6 467.3M931.3 498A23.4 23.4 0 0 1 914.2 511.6 5.6 5.6 0 0 1 908.5 505.8C908.5 502.3 910.6 497.3 921.3 497.3A58.3 58.3 0 0 0 931.4 498.1ZM938.5 522.3A60.4 60.4 0 0 0 954.9 523.8 18.3 18.3 0 0 0 976.3 505.2C976.3 487.4 959.2 490.9 959.2 483.8 959.2 480.2 962.1 478.8 967.1 478.8 969.2 478.8 977.1 479.5 977.1 479.5L979.2 466.7A54.2 54.2 0 0 0 965.7 465.2C955 465.2 951.4 469.6 951.4 483.8 951.4 500.2 962.1 498.8 962.1 505.2 962.1 509.6 957.1 510.2 953.5 510.2M1236.2 473.8A19.8 19.8 0 0 0 1222.7 466.7C1209.8 466.7 1205.5 482.4 1205.5 501 1205.5 512.4 1204.1 524.5 1216.2 524.5A19.1 19.1 0 0 0 1229.8 518.8L1229.1 523.8H1243.4L1254.1 455.3M1235.5 492.4C1235.5 500.3 1229 510.3 1221.2 510.3 1216.2 510.3 1213.4 505.9 1213.4 498.8 1213.4 487.4 1218.4 480.3 1224.8 480.3A10.9 10.9 0 0 1 1235.5 492.4ZM843.6 523.1L852.2 471.7 853.6 523.1H863.6L882.2 471.7 874.3 523.1H889.3L900.7 454.5H882.8L862.9 496.7 862.2 454.5H854.3L830 523.1ZM1049.9 523.1H1064.9C1069.2 499.5 1069.9 480.2 1079.9 483.8A56 56 0 0 1 1084.9 467.4H1082C1075.5 467.4 1070.6 476 1070.6 476L1072.1 468.1M1134.1 481.7A42.2 42.2 0 0 1 1149.8 478.8C1154.8 478.8 1159.1 479.5 1159.1 483.8 1159.1 486.7 1158.4 487.4 1158.4 487.4H1151.9C1139.7 487.4 1126.2 492.4 1126.2 508.8 1126.2 521.7 1134.7 524.5 1139.7 524.5A21.5 21.5 0 0 0 1154.7 518L1154 523.7H1166.9L1172.6 484.4C1172.6 468 1158.3 467.3 1152.6 467.3M1163.3 498A23.4 23.4 0 0 1 1146.2 511.6 5.6 5.6 0 0 1 1140.5 505.8C1140.5 502.3 1142.7 497.3 1153.3 497.3A62.8 62.8 0 0 0 1163.4 498.1ZM1169.8 523.1H1184.8C1189.2 499.5 1189.8 480.2 1199.8 483.8A56.1 56.1 0 0 1 1204.8 467.4H1202C1195.5 467.4 1190.6 476 1190.6 476L1192 468.1M440.6 102.4C438.6 108.2 405 200.6 393.7 231.3H393.7A0.6 0.6 0 0 1 393.7 231.5 15.2 15.2 0 0 1 380.5 241H362.5C373.4 211.2 398.5 142.3 413 102.4ZM734.2 171.7L722.6 203.4A15.5 15.5 0 0 1 709.2 213.3H690A51.2 51.2 0 0 0 694.9 203.4L706.5 171.7H678.7L667.2 203.4A15.6 15.6 0 0 1 653.8 213.3H634.6A50 50 0 0 0 639.5 203.4L651 171.7H623.3L611.7 203.4A15.5 15.5 0 0 1 598.3 213.3H509.7A48.6 48.6 0 0 0 514.7 203.6L517.6 195.5A25.5 25.5 0 0 0 493.7 157.8H462.2L452.1 185.6H483.7A6.7 6.7 0 0 1 490 195.5L486.9 203.6A15.2 15.2 0 0 1 473.5 213.3H427.9L417.8 241H699.4A59 59 0 0 0 750.3 203.6L762 171.7ZM297.1 241H223.8L233.9 213.3H307.2A15.7 15.7 0 0 0 320.7 203.4L323.5 195.5A6.7 6.7 0 0 0 317.2 185.6H271.7L281.8 157.8H327.3A25.5 25.5 0 0 1 351.2 195.5L348.3 203.4A59.6 59.6 0 0 1 297 241M396 561.7L421.6 417.2H461.8L436.9 561.7ZM396 561.7L428.9 417.2H461.8L436.9 561.7ZM582.2 418.9A101.8 101.8 0 0 0 545.2 412.4C505.1 412.4 476.2 432.4 476.2 461.3 476.2 483.1 496.3 494.2 512.3 501.5S533.2 513.5 533.2 519.9C533.2 529.5 520.3 534.4 509.1 534.4A87.2 87.2 0 0 1 470.6 526.3L465 523.9 459.4 556.8A130.1 130.1 0 0 0 505 564.9C547.6 564.9 575.7 544.8 575.7 514.3 575.7 497.5 565.2 484.6 541.1 474.2 526.7 467 517.8 462.9 517.8 455.7 517.8 449.2 525.1 442.9 541.1 442.9A73.6 73.6 0 0 1 571.6 448.5L575.6 450.1 582.1 418.8ZM582.2 418.9A101.8 101.8 0 0 0 545.2 412.4C505.1 412.4 483.4 432.4 483.4 461.3A42 42 0 0 0 512.3 501.5C528.3 508.7 533.2 513.5 533.2 519.9 533.2 529.5 520.3 534.4 509.1 534.4A87.2 87.2 0 0 1 470.6 526.3L465 523.9 459.4 556.8A130.1 130.1 0 0 0 505 564.9C547.6 564.9 575.7 544.8 575.7 514.3 575.7 497.5 565.2 484.6 541.1 474.2 526.7 467 517.8 462.9 517.8 455.7 517.8 449.2 525.1 442.9 541.1 442.9A73.6 73.6 0 0 1 571.6 448.5L575.6 450.1 582.1 418.8ZM651.2 417.2C641.6 417.2 634.3 418 630.3 427.6L570.1 561.7H613.5L621.5 537.6H672.9L677.7 561.7H716.2L682.5 417.2ZM632.7 513.5C635.2 506.3 648.8 471 648.8 471S652 462.1 654.4 456.5L656.8 470.2S664.8 506.3 666.4 514.3H632.7ZM660.8 417.2C651.2 417.2 644 418 640 427.6L570.1 561.7H613.5L621.5 537.6H672.9L677.7 561.7H716.2L682.5 417.2ZM632.7 513.5C636 505.5 648.8 471 648.8 471S652 462.1 654.4 456.5L656.8 470.2S664.8 506.3 666.4 514.3H632.7ZM322.1 518.3L318.1 497.4A116.3 116.3 0 0 0 261.9 434L298 562.4H341.4L406.4 418H363.1ZM322.1 518.3L318.1 497.4A116.3 116.3 0 0 0 261.9 434L298 562.4H341.4L406.4 418H371.1ZM210.6 417.2L217.8 418.8A135.3 135.3 0 0 1 318.1 497.5L303.7 429.2C301.2 419.6 294 417.2 285.2 417.2ZM210.6 417.2H210.6C261.9 429.2 304.5 460.5 318.1 496.7L304.5 439.7A19.6 19.6 0 0 0 285.2 424.5ZM210.6 417.2H210.6C261.9 429.2 304.5 460.5 318.1 496.7L308.5 465.3A28.3 28.3 0 0 0 291.6 442.1ZM362.3 513.5L335 486.2 322.1 516.7 318.9 496.6A116.3 116.3 0 0 0 262.7 433.2L298.8 561.7H342.2ZM436.9 561.7L402.5 526.3 396 561.7ZM529.2 511.9H529.2C532.4 515.1 534 517.5 533.2 520.7 533.2 530.3 520.4 535.2 509.1 535.2A87.2 87.2 0 0 1 470.6 527.2L465 524.7 459.4 557.5A130.1 130.1 0 0 0 505 565.6 79.5 79.5 0 0 0 563.7 545.5ZM575.8 561.7H613.5L621.5 537.6H672.9L677.7 561.7H716.2L702.5 503 654.4 456.4 656.8 469.3S664.8 505.4 666.4 513.4H632.7C635.9 505.4 648.8 470.9 648.8 470.9S652 462 654.4 456.4M745.6 844.7A15.6 15.6 0 0 1 730 829.2V747.1A15.6 15.6 0 0 1 761.2 747.1V829.2A15.6 15.6 0 0 1 745.6 844.7ZM803.2 844.7A15.6 15.6 0 0 1 787.7 829.2V747.1A15.6 15.6 0 1 1 818.8 747.1V829.2A15.6 15.6 0 0 1 803.2 844.7ZM860.9 844.7A15.6 15.6 0 0 1 845.3 829.2V747.1A15.6 15.6 0 1 1 876.4 747.1V829.2A15.6 15.6 0 0 1 860.9 844.7ZM210.1 698.8A18 18 0 0 1 228.3 680.6 18.2 18.2 0 0 1 246.8 698.8 18.4 18.4 0 0 1 228.3 717.3 18.2 18.2 0 0 1 210.1 698.8ZM214.2 740.7A5.1 5.1 0 0 1 219.3 735.6H238A5.1 5.1 0 0 1 243.1 740.7V837.2A5.3 5.3 0 0 1 238 842.3H219.3A5.3 5.3 0 0 1 214.2 837.2ZM260 740.6A5.1 5.1 0 0 1 265.1 735.5H273.8A4.1 4.1 0 0 1 278.1 738.8L282.1 748.7A43.1 43.1 0 0 1 316.5 733.2C350.5 733.2 359.3 756.1 359.3 782V837.2A5.3 5.3 0 0 1 354.2 842.3H335.5A5.1 5.1 0 0 1 330.4 837.2V782C330.4 768.1 324.9 759.6 311.9 759.6A23.5 23.5 0 0 0 288.8 776.2V837.2C288.8 841.2 287.2 842.3 282.1 842.3H265A5.3 5.3 0 0 1 259.9 837.2ZM371.8 835.2A4.7 4.7 0 0 1 370.5 829.4L377.4 815.5A4 4 0 0 1 383.6 813.7 43.2 43.2 0 0 0 407.2 820.6C415.3 820.6 419 817.6 419 813S413 803.7 398.9 798.2C378.3 790.3 369.1 780.6 369.1 764.4S381.3 733.2 407.4 733.2A58.1 58.1 0 0 1 439.1 741.1 6 6 0 0 1 441.4 748.5L435.4 760.7A5.3 5.3 0 0 1 428.7 762.9 51.1 51.1 0 0 0 407.4 757.6C400.3 757.6 397.3 761 397.3 764.5 397.3 769.4 402.6 771.9 412.5 776.1 433 784.4 447.8 791.8 447.8 813 447.8 829.9 433.5 844.9 406.7 844.9A59.7 59.7 0 0 1 371.8 835.2ZM465 761.4H454.6A5.1 5.1 0 0 1 449.7 756.3V740.6A4.8 4.8 0 0 1 454.6 735.5H465V706A5.3 5.3 0 0 1 470.1 700.9H489A4.9 4.9 0 0 1 493.9 706V735.5H518.8A5 5 0 0 1 523.9 740.6V756.3A5.3 5.3 0 0 1 518.8 761.4H493.8V809.6C493.8 816.8 497.3 818.3 502.5 818.3A70.6 70.6 0 0 0 518.7 814.8 4.1 4.1 0 0 1 524.7 817.6L527.7 831.7A5.2 5.2 0 0 1 524.7 837.9 84.4 84.4 0 0 1 494.7 844.9C470.8 844.9 464.8 828.9 464.8 810.4ZM570.3 774.8A78.3 78.3 0 0 1 590.9 777.8C591.3 764.2 587.4 757.7 576.1 757.7A133.7 133.7 0 0 0 546.1 761.7C542.6 762.8 540.5 760.3 540.1 757L537.8 745A4.9 4.9 0 0 1 541.2 738.5 134.9 134.9 0 0 1 577.7 733.2C611 733.2 618 750.6 618 779.6V837.2A5.1 5.1 0 0 1 612.9 842.2H605C603.2 842.2 601.8 841.5 600.4 838.5L597.4 831.4A46.8 46.8 0 0 1 563.9 844.8 34 34 0 0 1 527.8 808.3C527.8 789.4 543.3 774.8 570.3 774.8ZM571 823.3A22.9 22.9 0 0 0 590.2 812V796.3A42.5 42.5 0 0 0 574.5 793.1C562.2 793.1 555.5 798.8 555.5 808.3A14.1 14.1 0 0 0 571 823.4ZM634.1 685.7A5.5 5.5 0 0 1 639.2 680.6H657.9A5.5 5.5 0 0 1 663 685.7V837.2A5.3 5.3 0 0 1 657.9 842.3H639.2A5.3 5.3 0 0 1 634.1 837.2ZM680.3 685.7A5.5 5.5 0 0 1 685.4 680.6H704.1A5.5 5.5 0 0 1 709.2 685.7V837.2A5.3 5.3 0 0 1 704.1 842.3H685.4A5.3 5.3 0 0 1 680.3 837.2ZM944.7 733.2A47.8 47.8 0 0 1 993.7 782.7C993.7 784.3 993.4 788 993.2 789.6A5.4 5.4 0 0 1 988.1 794.5H919.7A25.7 25.7 0 0 0 946.3 819.2 35.4 35.4 0 0 0 969.2 811.4C971.7 809.2 974.5 809.1 976.1 811.4L985.1 823.4A4.5 4.5 0 0 1 984.7 830.3 60.3 60.3 0 0 1 944.9 844.9 55.8 55.8 0 0 1 944.7 733.3ZM964.5 775.5A19.6 19.6 0 0 0 944 757 21.2 21.2 0 0 0 921.3 775.5ZM1002.7 740.6A5.1 5.1 0 0 1 1007.8 735.5H1016.5A4.1 4.1 0 0 1 1020.8 738.8L1024.7 748.7A43.1 43.1 0 0 1 1059.2 733.2C1093.2 733.2 1101.9 756.1 1101.9 782V837.2A5.3 5.3 0 0 1 1096.8 842.3H1078.1A5.1 5.1 0 0 1 1073 837.2V782C1073 768.1 1067.5 759.6 1054.6 759.6A23.5 23.5 0 0 0 1031.5 776.2V837.2C1031.5 841.2 1029.8 842.3 1024.8 842.3H1007.7A5.3 5.3 0 0 1 1002.6 837.2ZM1124 761.4H1113.6A5.1 5.1 0 0 1 1108.7 756.3V740.6A4.8 4.8 0 0 1 1113.6 735.5H1124V706A5.3 5.3 0 0 1 1129.1 700.9H1148A4.9 4.9 0 0 1 1152.9 706V735.5H1177.8A5 5 0 0 1 1182.9 740.6V756.3A5.3 5.3 0 0 1 1177.8 761.4H1152.9V809.6C1152.9 816.8 1156.3 818.3 1161.6 818.3A70.6 70.6 0 0 0 1177.7 814.8 4.1 4.1 0 0 1 1183.7 817.6L1186.7 831.7A5.2 5.2 0 0 1 1183.7 837.9 84.3 84.3 0 0 1 1153.7 844.9C1129.9 844.9 1123.9 828.9 1123.9 810.4ZM1191 835.2A4.7 4.7 0 0 1 1189.6 829.4L1196.5 815.5A4 4 0 0 1 1202.8 813.7 43.2 43.2 0 0 0 1226.3 820.6C1234.4 820.6 1238.1 817.6 1238.1 813S1232.1 803.7 1218 798.2C1197.5 790.3 1188.2 780.6 1188.2 764.4S1200.5 733.2 1226.6 733.2A58.1 58.1 0 0 1 1258.2 741.1 6 6 0 0 1 1260.5 748.5L1254.5 760.7A5.3 5.3 0 0 1 1247.8 762.9 51.1 51.1 0 0 0 1226.6 757.6C1219.4 757.6 1216.4 761 1216.4 764.5 1216.4 769.4 1221.7 771.9 1231.6 776.1 1252.2 784.4 1267 791.8 1267 813 1267 829.9 1252.7 844.9 1225.8 844.9A59.7 59.7 0 0 1 1191 835.2ZM892.2 863A0.8 0.8 0 0 1 893 862.2H901.7A8.9 8.9 0 1 1 901.7 879.9H895.2V889.3A0.8 0.8 0 0 1 894.4 890H892.9A0.8 0.8 0 0 1 892.2 889.3ZM901.6 877A5.9 5.9 0 0 0 907.6 870.9 5.7 5.7 0 0 0 901.6 865.2H895.3V877ZM922.3 871.3A9.6 9.6 0 1 1 913.1 880.8 9.5 9.5 0 0 1 922.3 871.3ZM922.3 887.8A7 7 0 1 0 916 880.8 6.5 6.5 0 0 0 922.3 887.8ZM947.1 876.2L941.7 890A0.7 0.7 0 0 1 940.9 890.5H940.7A0.8 0.8 0 0 1 939.9 890L934.8 872.6C934.6 872 934.8 871.5 935.5 871.5H936.8A0.8 0.8 0 0 1 937.7 872.1L941 884.5H941L946.2 871.5A0.8 0.8 0 0 1 947 871.1H947.2A0.8 0.8 0 0 1 948 871.5L953.1 884.5H953.1L956.5 872A0.7 0.7 0 0 1 957.3 871.5H958.8C959.5 871.5 959.7 871.9 959.5 872.5L954.5 889.9A0.8 0.8 0 0 1 953.7 890.4H953.5A0.9 0.9 0 0 1 952.7 889.9L947.1 876.2ZM971.7 871.3A8.1 8.1 0 0 1 980 879.6 10.1 10.1 0 0 1 980 880.7 0.8 0.8 0 0 1 979.2 881.5H965.8A6.5 6.5 0 0 0 971.8 887.8 8.5 8.5 0 0 0 976.8 886.3C977.5 885.8 977.7 885.7 978.2 886.4L978.7 887C979.1 887.6 979.2 887.8 978.5 888.3A11.3 11.3 0 0 1 971.8 890.5 9.6 9.6 0 0 1 971.8 871.3ZM977.1 879.2A5.4 5.4 0 0 0 971.7 873.9 6 6 0 0 0 965.8 879.2ZM984.7 872.5A0.9 0.9 0 0 1 985.6 871.7H986.2A0.8 0.8 0 0 1 987 872.3L987.3 873.6A7.3 7.3 0 0 1 993 871.3C994.4 871.3 996.6 871.5 996.2 872.7L995.7 874.2A0.7 0.7 0 0 1 994.6 874.6 4.6 4.6 0 0 0 992.6 874.1 5.8 5.8 0 0 0 987.7 876.4V889.2A0.9 0.9 0 0 1 986.8 890H985.6A0.9 0.9 0 0 1 984.7 889.2ZM1007.3 871.3A8.1 8.1 0 0 1 1015.6 879.6 9.8 9.8 0 0 1 1015.6 880.7 0.8 0.8 0 0 1 1014.8 881.5H1001.4A6.5 6.5 0 0 0 1007.4 887.8 8.5 8.5 0 0 0 1012.4 886.3C1013 885.8 1013.3 885.7 1013.8 886.4L1014.3 887C1014.6 887.6 1014.8 887.8 1014.1 888.3A11.3 11.3 0 0 1 1007.4 890.5 9.6 9.6 0 0 1 1007.4 871.3ZM1012.7 879.2A5.4 5.4 0 0 0 1007.3 873.9 6 6 0 0 0 1001.4 879.2ZM1028 871.3A11.3 11.3 0 0 1 1033.1 872.4V863.1A0.9 0.9 0 0 1 1033.9 862.2H1035A1 1 0 0 1 1036 863.1V889.2A0.9 0.9 0 0 1 1035 890H1034.3C1033.9 890 1033.7 889.7 1033.5 889.3L1033.3 888.1A8.8 8.8 0 0 1 1027.5 890.5 9 9 0 0 1 1019.3 880.8 8.7 8.7 0 0 1 1028 871.3ZM1027.9 887.8A6.8 6.8 0 0 0 1033.1 884.8V875A12.1 12.1 0 0 0 1028.4 873.9 6.3 6.3 0 0 0 1022.2 880.8 6.4 6.4 0 0 0 1027.9 887.8ZM1051.7 863.1A0.9 0.9 0 0 1 1052.6 862.2H1053.8A0.9 0.9 0 0 1 1054.6 863.1V872.4A11.1 11.1 0 0 1 1059.7 871.3 8.7 8.7 0 0 1 1068.4 880.8 9 9 0 0 1 1060.2 890.5 8 8 0 0 1 1054.4 888.1L1054.2 889.3A0.8 0.8 0 0 1 1053.3 890H1052.6A0.9 0.9 0 0 1 1051.8 889.2ZM1059.8 887.8A6.3 6.3 0 0 0 1065.4 880.8 6.3 6.3 0 0 0 1059.3 873.9 10.9 10.9 0 0 0 1054.6 875.1V884.8A6.8 6.8 0 0 0 1059.7 887.8ZM1071.1 872.7C1070.8 872.1 1071.1 871.7 1071.8 871.7H1073.5A0.8 0.8 0 0 1 1074.3 872.2L1079.5 886.8H1079.5L1085.7 872.2A0.8 0.8 0 0 1 1086.5 871.7H1088C1088.7 871.7 1089 872.1 1088.7 872.7L1077.2 898.9A1 1 0 0 1 1076.4 899.5H1075C1074.3 899.5 1073.9 899 1074.2 898.4L1077.8 890ZM1102.1 863A0.8 0.8 0 0 1 1102.8 862.2H1111.5A8.9 8.9 0 1 1 1111.5 879.9H1105V889.3A0.8 0.8 0 0 1 1104.3 890H1102.8A0.8 0.8 0 0 1 1102 889.3ZM1111.4 877A5.9 5.9 0 0 0 1117.5 870.9 5.7 5.7 0 0 0 1111.4 865.2H1105.1V877ZM1120.4 889L1132.5 862.2A0.7 0.7 0 0 1 1133.2 861.8H1133.6A0.7 0.7 0 0 1 1134.2 862.2L1146.2 889A0.7 0.7 0 0 1 1145.6 890H1144A0.7 0.7 0 0 1 1143.3 889.6L1140.4 883H1126.3L1123.4 889.6A0.7 0.7 0 0 1 1122.7 890H1121.1A0.7 0.7 0 0 1 1120.4 889ZM1139.3 880.6C1137.3 876.2 1135.4 871.9 1133.5 867.5H1133.2L1127.3 880.6ZM1154.2 876.7L1144.6 863.4A0.7 0.7 0 0 1 1145.2 862.3H1147.1A0.8 0.8 0 0 1 1147.7 862.6L1155.8 873.7 1163.8 862.6A0.8 0.8 0 0 1 1164.4 862.3H1166.3A0.7 0.7 0 0 1 1166.9 863.4L1157.2 876.7V889.3A0.8 0.8 0 0 1 1156.5 890.1H1154.9A0.8 0.8 0 0 1 1154.2 889.3ZM1171 863A0.8 0.8 0 0 1 1171.7 862.2H1187.4A0.8 0.8 0 0 1 1188.1 863V864.1A0.8 0.8 0 0 1 1187.4 864.9H1174V875.7H1185.4A0.8 0.8 0 0 1 1186.2 876.5V877.7A0.8 0.8 0 0 1 1185.4 878.4H1174V889.3A0.8 0.8 0 0 1 1173.3 890H1171.7A0.8 0.8 0 0 1 1171 889.3ZM1205.5 861.8A14.3 14.3 0 1 1 1191.2 876.2 14.3 14.3 0 0 1 1205.5 861.8ZM1205.5 887.6A11.5 11.5 0 1 0 1194 876.2 11.5 11.5 0 0 0 1205.5 887.6ZM1225.6 863A0.8 0.8 0 0 1 1226.4 862.2H1236.7A8.5 8.5 0 0 1 1245.3 870.7 8.9 8.9 0 0 1 1239.5 878.8L1244.9 888.8A0.8 0.8 0 0 1 1244.2 890H1242.3A0.8 0.8 0 0 1 1241.4 889.4L1236.3 879.1H1228.7V889.3A0.8 0.8 0 0 1 1227.9 890H1226.4A0.8 0.8 0 0 1 1225.6 889.3ZM1236.5 876.5A5.7 5.7 0 1 0 1236.5 865.1H1228.8V876.5ZM1256.1 864.9H1249.2A0.8 0.8 0 0 1 1248.4 864.1V863A0.8 0.8 0 0 1 1249.2 862.2H1266A0.8 0.8 0 0 1 1266.8 863V864.1A0.8 0.8 0 0 1 1266 864.9H1259.1V889.3A0.8 0.8 0 0 1 1258.3 890H1256.8A0.8 0.8 0 0 1 1256.1 889.3Z", + "width": 1478 }, "search": [ - "prescription_icon" + "online_payment_icon" ] }, { - "uid": "fce0d47a8f283966d22c8450b4c63f70", - "css": "search_scan_icon", - "code": 59404, + "uid": "3238628d101e2f79eeaaf407332b3052", + "css": "vital_sign_icon", + "code": 59405, "src": "custom_icons", "selected": true, "svg": { - "path": "M846.2 544.3A19.5 19.5 0 0 1 828.4 532.9 74.4 74.4 0 0 0 729.8 496.2 19.5 19.5 0 0 1 713.5 460.7 113.5 113.5 0 0 1 863.9 516.6 19.5 19.5 0 0 1 846.2 544.3ZM185.6 174.1V500A19.5 19.5 0 0 0 224.7 500V174.1A19.5 19.5 0 0 0 185.6 174.1ZM305.5 465.2V174.1A19.5 19.5 0 0 0 266.4 174.1V465.2A19.5 19.5 0 0 0 305.5 465.2ZM347.2 454.6A19.5 19.5 0 0 0 386.3 454.6V453.1A19.5 19.5 0 1 0 347.2 453.1ZM366.7 389.9A19.5 19.5 0 0 0 386.2 370.4V174.1A19.5 19.5 0 0 0 347.2 174.1V370.4A19.5 19.5 0 0 0 366.7 389.9ZM467 500V174.1A19.5 19.5 0 0 0 428 174.1V500A19.5 19.5 0 1 0 467 500ZM528.3 389.9A19.5 19.5 0 0 0 547.8 370.4V174.1A19.5 19.5 0 1 0 508.7 174.1V370.4A19.5 19.5 0 0 0 528.3 389.9ZM508.7 454.6A19.5 19.5 0 0 0 547.8 454.6V453.1A19.5 19.5 0 1 0 508.7 453.1ZM249.5 96.4A19.5 19.5 0 0 0 230 76.9H96.3A19.5 19.5 0 0 0 76.8 96.4V230.3A19.5 19.5 0 1 0 115.9 230.3V116H230A19.5 19.5 0 0 0 249.5 96.4ZM76.8 597.8A19.5 19.5 0 0 0 96.3 617.3H230A19.5 19.5 0 0 0 230 578.2H115.9V463.9A19.5 19.5 0 1 0 76.8 463.9ZM798.7 249.8A19.5 19.5 0 0 0 818.2 230.3V96.4A19.5 19.5 0 0 0 798.7 76.9H665A19.5 19.5 0 0 0 665 116H779.1V230.3A19.5 19.5 0 0 0 798.7 249.8ZM993.4 896.6L944.6 790.7A19.5 19.5 0 0 0 918.7 781.1L888.1 795.2 859.6 732.9A196 196 0 0 0 895 421.4V52.9A52.9 52.9 0 0 0 842.3 0H52.8A52.9 52.9 0 0 0-0.1 52.9V259.3A19.5 19.5 0 0 0 39 259.3V52.9A13.8 13.8 0 0 1 52.7 39.1H842.3A13.8 13.8 0 0 1 856 52.9V392.8A198.1 198.1 0 0 0 829.1 380.3 193.8 193.8 0 0 0 709.5 374.9V174.1A19.5 19.5 0 1 0 670.4 174.1V390.5A194.3 194.3 0 0 0 628.6 419.9V174.1A19.5 19.5 0 0 0 589.5 174.1V469.9A195.7 195.7 0 0 0 583.2 645.4C584.7 648.7 586.3 651.9 588 655.1H52.8A13.8 13.8 0 0 1 39.1 641.3V434.9A19.5 19.5 0 1 0-0.1 434.9V641.4A52.9 52.9 0 0 0 52.7 694.3H614.8A194.8 194.8 0 0 0 824 749.2L852.5 811.7 821.8 825.9A19.5 19.5 0 0 0 812.3 851.8L861 957.8A72.8 72.8 0 0 0 993.3 896.8ZM826 706.4A156.2 156.2 0 0 1 618.7 629.2 156.9 156.9 0 0 1 695.8 421.5 156.5 156.5 0 0 1 862.7 444.9L863.1 445.3A156.9 156.9 0 0 1 826 706.4ZM941.3 957.8A33.2 33.2 0 0 1 915.7 958.8 33.6 33.6 0 0 1 896.6 941.3L856 853 917.3 824.9 957.8 913A33.9 33.9 0 0 1 941.2 958ZM19.5 366.7A19.5 19.5 0 1 0-0.1 347V347A19.5 19.5 0 0 0 19.5 366.7Z", - "width": 1000 + "path": "M1145 758.4A14.1 14.1 0 0 0 1130.9 772.5 51.9 51.9 0 0 1 1079 824.3H275.7A51.9 51.9 0 0 1 223.9 772.4V232.3A51.9 51.9 0 0 1 275.7 180.5H725.2A14.1 14.1 0 0 0 725.2 152.2H275.7A80.2 80.2 0 0 0 195.7 232.3V772.4A80.2 80.2 0 0 0 275.7 852.5H1079A80.2 80.2 0 0 0 1159.1 772.4 14.1 14.1 0 0 0 1145 758.4ZM1079 152.2H792.5A14.1 14.1 0 0 0 792.5 180.4H1079A51.9 51.9 0 0 1 1130.8 232.3V704.7A14.1 14.1 0 0 0 1159.1 704.7V232.3A80.2 80.2 0 0 0 1079 152.2ZM907.5 585V300.1A36.8 36.8 0 0 0 870.8 263.3H477A14.1 14.1 0 1 0 477 291.6H870.7A8.5 8.5 0 0 1 879.2 300.1V421.1H821.6L799.2 398.7A19.8 19.8 0 0 0 771.2 398.7L712 458 689.3 435.3A19.8 19.8 0 0 0 661.3 435.3L622.9 473.6 521.1 371.8A19.8 19.8 0 0 0 493.1 371.8L443.8 421.1H352.5V300.1A8.5 8.5 0 0 1 361 291.6H406.6A14.1 14.1 0 1 0 406.6 263.3H361A36.8 36.8 0 0 0 324.2 300.1V585A36.8 36.8 0 0 0 361 621.8H870.7A36.8 36.8 0 0 0 907.5 585ZM352.6 585V449.3H447.3A19.6 19.6 0 0 0 461.3 443.5L507.1 397.8 608.9 499.6A19.8 19.8 0 0 0 636.9 499.6L675.2 461.2 697.9 484A19.8 19.8 0 0 0 725.9 484L785.2 424.7 804 443.6A19.6 19.6 0 0 0 818 449.4H879.2V585.1A8.5 8.5 0 0 1 870.7 593.5H361.1A8.5 8.5 0 0 1 352.6 585.1ZM637.6 716.5A57.6 57.6 0 1 0 695.2 658.9 57.7 57.7 0 0 0 637.6 716.5ZM724.5 716.5A29.3 29.3 0 1 1 695.2 687.2 29.4 29.4 0 0 1 724.5 716.5ZM431.7 696.3A57.6 57.6 0 1 0 431.7 736.6 57.6 57.6 0 1 0 431.7 696.3ZM377.8 745.8A29.3 29.3 0 1 1 407.1 716.5 29.4 29.4 0 0 1 377.8 745.8ZM515 716.5A29.3 29.3 0 1 1 485.7 687.2 29.4 29.4 0 0 1 515 716.5Z", + "width": 1348 }, "search": [ - "search_scan_icon" + "vital_sign_icon" ] }, { - "uid": "4aab61c6fa11812333db81c2bb204c83", - "css": "share_icon", - "code": 59405, + "uid": "e714a92298dafff5fead849df18d449b", + "css": "weight_icon", + "code": 59406, "src": "custom_icons", "selected": true, "svg": { - "path": "M872.7 173.8A139.7 139.7 0 1 1 732.9 34.1 139.7 139.7 0 0 1 872.7 173.8ZM313.7 500A139.7 139.7 0 1 1 173.8 360.2 139.7 139.7 0 0 1 313.7 500ZM872.7 826.1A139.7 139.7 0 1 1 732.9 686.4 139.7 139.7 0 0 1 872.7 826.1ZM294.6 570.3L612.8 755.8M612.3 244.2L294.6 429.7", - "width": 907 + "path": "M491.7 0A263 263 0 0 1 716.9 127Q794.5 140.1 882.6 162A131.3 131.3 0 0 1 982.2 303.3L922.3 881.9A132 132 0 0 1 791.4 1000.1H191.9A131.6 131.6 0 0 1 61 881.9L1.1 303.2A118.4 118.4 0 0 1 100.7 162Q184.1 141.4 266.3 127A263 263 0 0 1 491.7 0ZM240.1 185.1Q151.9 203.4 113.1 212.9A79.2 79.2 0 0 0 53.5 297.7L113.4 876.5A79.8 79.8 0 0 0 191.9 947.3H791.7A80.5 80.5 0 0 0 870.2 876.5L929.9 297.7A78.8 78.8 0 0 0 870.1 212.9Q817.9 200.2 743.1 185.2A253.9 253.9 0 0 1 754.8 263.2 263.1 263.1 0 0 1 228.5 263.2 252.6 252.6 0 0 1 240.1 185.1ZM491.7 52.5A210.5 210.5 0 1 0 702.2 263.1 211.1 211.1 0 0 0 491.7 52.5ZM491.7 105.1A27 27 0 0 1 518 131.3V262.9A26.3 26.3 0 0 1 491.7 289.2 25.9 25.9 0 0 1 465.4 262.9V131.6A26.3 26.3 0 0 1 491.7 105.1Z", + "width": 983 }, "search": [ - "share_icon" + "weight_icon" ] }, { - "uid": "65fb587059226e09ea7e14cd39772bb1", - "css": "wishlist_add_icon", - "code": 59406, + "uid": "48c8955311a2a09660e070396941b78b", + "css": "search_medicine_icon", + "code": 59404, "src": "custom_icons", "selected": true, "svg": { - "path": "M785.4 0A320.4 320.4 0 0 0 541.7 114.3 320.4 320.4 0 0 0 297.9 0 294.5 294.5 0 0 0 0 299.7C0 506.8 184.1 673 463 929.4L541.7 1000.3 620.4 929.4C899.2 673.2 1083.4 507.1 1083.4 299.7A294.5 294.5 0 0 0 785.4 0Z", - "width": 1083 + "path": "M442.2 620.3A223.9 223.9 0 1 0 369.1 547.3L195.7 720.8 268.7 793.8ZM559.5 240.6A189.3 189.3 0 1 1 370.2 429.9 189.5 189.5 0 0 1 559.5 240.6ZM389.7 575.4A226.8 226.8 0 0 0 414 599.7L377.3 636.5 353 612.1ZM328.7 636.5L353 660.8 268.7 745.1 244.3 720.8ZM328.7 636.5M571.7 515.1L644.7 442.1A68.8 68.8 0 1 0 547.4 344.7L474.3 417.7A68.8 68.8 0 1 0 571.7 515.1ZM571.7 369.1A34.4 34.4 0 0 1 620.4 417.7L596 442.1 547.4 393.4ZM498.7 442.1L523 417.7 571.7 466.4 547.4 490.8A34.4 34.4 0 0 1 498.7 442.1ZM498.7 442.1", + "width": 1000 }, "search": [ - "wishlist_add_icon" + "search_medicine_icon" ] }, { - "uid": "c752092fa3a1a55f5bc0ae60f4beb4c7", - "css": "wishlist_icon", + "uid": "2cfd058dc6a521015f26957251d5f9dd", + "css": "my_medical_file", "code": 59407, "src": "custom_icons", "selected": true, "svg": { - "path": "M785.4 0A320.4 320.4 0 0 0 541.7 114.3 320.4 320.4 0 0 0 297.9 0 294.5 294.5 0 0 0 0 299.7C0 506.8 184.1 673 463 929.4L541.7 1000.3 620.4 929.4C899.2 673.2 1083.4 507.1 1083.4 299.7A294.5 294.5 0 0 0 785.4 0ZM575 857.5L564 867.7 541.6 888 519.2 867.7 508.2 857.5A3310.1 3310.1 0 0 1 188.7 539.8 382.1 382.1 0 0 1 83.6 299.7 216.7 216.7 0 0 1 145.4 145.3 211.9 211.9 0 0 1 298 83.4 238.8 238.8 0 0 1 478 168L541.7 243.8 605.5 168A237.9 237.9 0 0 1 785.4 83.4 212.9 212.9 0 0 1 938.3 145.3 217.1 217.1 0 0 1 1000.1 299.7 384.1 384.1 0 0 1 894.8 539.8 3316.8 3316.8 0 0 1 575 857.5Z", - "width": 1083 + "path": "M730.5 105.5H609.8A88.9 88.9 0 0 0 531.4 58.6H469.3A78.1 78.1 0 0 0 318.2 58.6H256.1A88.9 88.9 0 0 0 177.7 105.5H58.6A58.8 58.8 0 0 0 0 164.1V941.6A58.8 58.8 0 0 0 58.6 1000.1H730.6A58.8 58.8 0 0 0 789.1 941.6V164.1A58.8 58.8 0 0 0 730.5 105.5ZM206.1 147.4A49.8 49.8 0 0 1 256 97.6H335A19.6 19.6 0 0 0 354.6 78.1 39.1 39.1 0 1 1 432.7 78.1 19.6 19.6 0 0 0 452.2 97.6H531.3A50 50 0 0 1 578.2 130.6C578.2 130.8 578.4 131 578.4 131.4A49.6 49.6 0 0 1 581.3 147.7V178.3A21 21 0 0 1 560.2 199.4H227.3A21 21 0 0 1 206.3 178.3ZM656.1 238.3V869.7H133.4V238.3ZM750 941.6A19.6 19.6 0 0 1 730.5 961.1H58.4A19.6 19.6 0 0 1 38.9 941.6V164.1A19.6 19.6 0 0 1 58.4 144.5H167V178.1A58.6 58.6 0 0 0 171 199.2H113.7A19.6 19.6 0 0 0 94.2 218.7V889.1A19.6 19.6 0 0 0 113.7 908.6H675.7A19.6 19.6 0 0 0 695.2 889.1V218.7A19.6 19.6 0 0 0 675.7 199.4H616.4A58.6 58.6 0 0 0 620.3 178.3V144.7H730.5A19.6 19.6 0 0 1 750 164.2ZM407.3 111.1A19.3 19.3 0 0 0 393.4 105.5 20.5 20.5 0 0 0 379.5 111.1 19.3 19.3 0 0 0 373.9 125 20.5 20.5 0 0 0 379.5 138.9 19.3 19.3 0 0 0 393.4 144.5 20.5 20.5 0 0 0 407.3 138.9 19.8 19.8 0 0 0 407.3 111.1ZM500 753.9H209.6A19.5 19.5 0 1 0 209.6 793H500A19.5 19.5 0 1 0 500 753.9ZM593 759.6A19.3 19.3 0 0 0 579.1 753.9 20.2 20.2 0 0 0 565.2 759.6 19.3 19.3 0 0 0 559.6 773.4 20.2 20.2 0 0 0 565.2 787.3 19.3 19.3 0 0 0 579.1 793 20.2 20.2 0 0 0 593 787.3 19.8 19.8 0 0 0 593 759.6ZM579.5 675.8H209.6A19.5 19.5 0 0 0 209.6 714.8H579.5A19.5 19.5 0 0 0 579.5 675.8ZM511.9 616.4H275.6A40.3 40.3 0 0 1 235.4 576.2V339.8A40.3 40.3 0 0 1 275.6 299.6H511.9A40.3 40.3 0 0 1 552.2 339.8V576.2A40.6 40.6 0 0 1 511.9 616.4ZM300.6 564.7L359.7 564.9C367.1 564.9 372.6 557.2 373 546.4V497.1C373 486.2 377.9 478.3 385.1 477.7L403.2 477.5C410.4 477.9 415.5 486.1 415.5 496.9V546.5C415.9 557.2 420.9 564.5 427.9 564.5L507.6 564.6 507.7 503.5C507.7 492.8 502.6 484.7 495.4 484.3L463.5 484.2C456.1 484.2 450.8 476.5 450.6 465.8L450.4 449.1C450.8 438.5 456.3 430.7 463.5 430.7H495.7C502.6 430.3 507.8 421.9 507.8 411.1V335.3A32.2 32.2 0 0 1 483.3 350.6H429.1C421.7 350.6 416.2 358.6 415.8 369.1V418.2C415.4 428.9 410 436.6 402.9 436.6L386.6 436.4C379.2 436.4 373.9 428.8 373.4 418.3V368.9C373 358.2 367.7 350.8 360.4 350.8H281.8V411.7C281.8 422.8 286.9 430.7 294.2 431.1L326.4 430.9C333.4 431.3 338.9 439.8 338.9 450.4V464.5C338.9 475.3 333.7 483.4 326.6 483.8H294.4C287 484.4 282.1 492.3 282.1 503.2L281.7 564.6Z", + "width": 789 }, "search": [ - "wishlist_icon" + "my_medical_file" ] }, { - "uid": "88b990d06e49752b331bb5c6704b3d42", - "css": "bg_1", + "uid": "40c03b22028e1b34f230c522b40ca125", + "css": "family", "code": 59408, "src": "custom_icons", "selected": true, "svg": { - "path": "M80.6 6.2H2052.5A74.4 74.4 0 0 1 2126.9 80.6V923.9A74.4 74.4 0 0 1 2052.5 998.3H80.6A74.4 74.4 0 0 1 6.2 923.9V80.6A74.4 74.4 0 0 1 80.6 6.2ZM1063.2 993.8H1037.3L1039 992.1 1036 993.8H987.3L1020.5 981.6 889 993.8H29.8A52.5 52.5 0 0 1 6.2 946.5V867.8L1027.4 962.7 6.2 565.1V321L1034.3 947 89.8 6.2H367.8L1039.9 927.1 645.9 6.2H809L1059.9 937.4 996.5 6.2H1136.5L1074.3 920.2V920.2L1335.1 6.2H1499.5L1081.7 942.6 1765.2 6.2H2043.3L1103.6 942.1V942.1L1103.6 942.1 2126.9 344.5V586.4L1102.1 963.1 2126.9 867.9V946.5A52.5 52.5 0 0 1 2103.3 993.8H1243.6L1103.2 980.8 1136.7 993.8H1063.2Z", - "width": 2133 + "path": "M1255.3 571.5A27.7 27.7 0 0 0 1211.5 605.3 207.6 207.6 0 0 1 1255 733.1 27.7 27.7 0 1 0 1310.4 733.1 262.5 262.5 0 0 0 1255.3 571.5ZM1162.3 385.9A210.9 210.9 0 1 0 926.7 385.9 364.6 364.6 0 0 0 813.6 448.4 155.5 155.5 0 0 0 597.6 448.4 364.8 364.8 0 0 0 484.5 385.9 210.9 210.9 0 1 0 248.9 385.9 367.5 367.5 0 0 0 0 732.4C0 732.6 0 732.8 0 733.1 0 775.5 24.1 838.2 139.1 895.7A1060.2 1060.2 0 0 0 464.8 984.6 1904.1 1904.1 0 0 0 946.5 984.6 1059.9 1059.9 0 0 0 1272.3 895.7C1387.3 838.3 1411.4 775.6 1411.4 733.1A367.5 367.5 0 0 0 1162.3 385.9ZM889 211A155.5 155.5 0 1 1 1044.5 366.5 155.5 155.5 0 0 1 889.1 210.9ZM623 503.3A100.5 100.5 0 0 1 788.2 503.3H788.2A100.5 100.5 0 1 1 623 503.3ZM211.1 210.9A155.5 155.5 0 1 1 366.6 366.4 155.5 155.5 0 0 1 211.1 210.9ZM440.8 925.4A960.1 960.1 0 0 1 163.9 846.2C94.1 811.3 55.5 771.3 55.5 733.4 55.5 733.4 55.5 733.4 55.5 733.1A311.3 311.3 0 0 1 565.3 493.2 155.8 155.8 0 0 0 606.4 680.5 265.2 265.2 0 0 0 440.8 925.4ZM915.2 932.8A1857 1857 0 0 1 496.1 932.8V926A209.5 209.5 0 0 1 915.2 926ZM1247.4 846.2A959.9 959.9 0 0 1 970.5 925.4 265.3 265.3 0 0 0 805.1 680.3 155.7 155.7 0 0 0 846.2 493 311.3 311.3 0 0 1 1356 732.9C1356 771.1 1317.4 811.2 1247.4 846.2ZM1172.6 506.5A27.7 27.7 0 0 0 1172.6 561.8 27.7 27.7 0 0 0 1172.6 506.5Z", + "width": 1411 }, "search": [ - "bg_1" + "family" ] }, { - "uid": "ace5228aabf92ff4bf5524cef4c6409f", - "css": "bg_2", + "uid": "28e30de5c20857758e187ef8e56eddc1", + "css": "calendar-(2)", "code": 59409, "src": "custom_icons", "selected": true, "svg": { - "path": "M75 1000A75 75 0 0 1 0 925V75A75 75 0 0 1 75 0H2062.5A75 75 0 0 1 2137.5 75V925A75 75 0 0 1 2062.5 1000ZM2142 792.6C2084.5 793.1 2087.9 773.2 2043.5 760.2S1990.1 764.4 1953.4 739.3 1930.2 698.9 1905.4 667 1863.7 645 1847.6 605.3 1850.5 559.6 1845.2 519.5 1820.1 479 1824.9 436.1 1848.9 397.8 1863.1 360.3 1860.4 312.2 1886.3 277.7 1926 257.1 1960.1 232.7 1984.7 190.3 2031.5 175.4 2082.4 179.8 2136.4 179.3M2141.7 750.7C2091.8 751.2 2095.1 731.3 2057.1 720.2S2009.8 726.4 1977.9 704.4 1959.6 667.4 1938.2 640 1900 622.7 1886 588.1 1890.9 547.8 1886.4 513.3 1862.3 478.7 1866.5 441.5 1889.7 409.1 1902 376.8 1897.2 334 1919.7 304.1 1956 288 1985.3 267.1 2005.1 228.2 2045.8 215.3 2090.2 221.5 2136.6 221.1M2141.3 711.9C2098.5 712.2 2101.8 692.5 2069.6 683S2028.1 690.9 2000.7 672 1987 638.3 1968.8 615 1933.8 601.9 1921.9 572.2 1928.8 536.8 1925 507.6 1901.4 478.2 1905.1 446.4 1927.7 419.2 1938.2 391.9 1931.5 354 1950.6 328.4 1983.7 316.9 2008.8 298.9 2024.1 263.2 2059.1 252.3 2097.8 260.4 2137.1 260M742.2 1004.9C740.7 947.4 760.5 950.5 772.8 905.9S767.6 852.6 792.1 815.5 832 791.6 863.4 766.3 884.6 724.1 924.1 707.4 969.8 709.4 1009.8 703.4 1049.8 677.6 1092.7 681.7 1131.4 704.9 1169.1 718.5 1217.1 714.9 1252.1 740.1 1273.4 779.4 1298.4 813.1 1341.2 837 1356.9 883.4 1353.5 934.3 1354.9 988.3M784 1003.8C782.6 954 802.5 956.9 813 918.7S806 871.7 827.4 839.3 864 820.4 890.9 798.5 907.6 760 941.9 745.4 982.3 749.6 1016.6 744.5 1050.8 719.8 1088 723.3 1120.9 745.9 1153.4 757.6 1196 752.1 1226.4 774 1243.1 810 1264.5 838.9 1303.7 858 1317.4 898.4 1311.9 942.9 1313.1 989.2M822.8 1002.7C821.7 960 841.5 962.9 850.4 930.5S841.7 889.3 860.1 861.5 893.5 847.3 916.5 828.7 929 793.4 958.4 781 993.9 787.3 1023.1 782.9 1052 758.8 1083.9 762 1111.4 784.1 1138.9 794 1176.6 786.6 1202.5 805.4 1214.7 838.2 1233.1 862.9 1269 877.6 1280.6 912.4 1273.2 951.2 1274.3 990.5", - "width": 2138 - }, - "search": [ - "bg_2" - ] - }, - { - "uid": "0887f8af7107badceb2618215c9d8053", - "css": "bg_3", - "code": 59410, - "src": "custom_icons", - "selected": true, - "svg": { - "path": "M808.5 441.7C833.6 416.6 869 452 894.1 426.9S883.8 366.4 908.9 341.3 969.4 351.6 994.5 326.4 984.2 266 1009.4 240.9 1069.8 251.1 1094.9 226 1084.7 165.5 1109.8 140.4 1170.3 150.6 1195.4 125.5 1185.2 65.1 1210.3 39.9 1270.8 50.1 1295.9 25M85.1 848.6C120.5 851.1 117 901 152.4 903.5S191.3 856.1 226.7 858.5 258.7 910.9 294.1 913.4 333 866 368.4 868.4 400.4 920.8 435.8 923.3 474.7 875.9 510.2 878.3 542.1 930.7 577.5 933.2 616.5 885.8 651.9 888.3 683.9 940.6 719.4 943.1", - "width": 2138 - }, - "search": [ - "bg_3" - ] - }, - { - "uid": "15d14398ff70be8823b96215f803bf80", - "css": "bg_4", - "code": 59411, - "src": "custom_icons", - "selected": true, - "svg": { - "path": "M1546 479.2C1571.1 454.1 1606.5 489.5 1631.6 464.4S1621.3 403.9 1646.4 378.8 1706.9 389.1 1732 363.9 1721.7 303.5 1746.9 278.4 1807.3 288.6 1832.4 263.5 1822.2 203 1847.3 177.9 1907.8 188.1 1932.9 163 1922.7 102.6 1947.8 77.4 2008.3 87.6 2033.4 62.5M1354.2 796L1262.5 743.1V849ZM1549.7 796L1458.1 743.1V849ZM1745.3 796L1653.6 743.1V849Z", - "width": 2138 - }, - "search": [ - "bg_4" - ] - }, - { - "uid": "1ad61f1d7131991dd2361861dd272499", - "css": "medication_icon", - "code": 59412, - "src": "custom_icons", - "selected": true, - "svg": { - "path": "M578.7 308A105.9 105.9 0 0 0 476.3 229.1 106.8 106.8 0 0 0 384.1 282.2L317.1 398.2V398.2L250.1 514.2A106.3 106.3 0 0 0 428.9 628.6Q429.2 628.2 429.4 627.8L568.1 388.5A105.3 105.3 0 0 0 578.7 308ZM411.4 616.8A85.1 85.1 0 0 1 268.4 524.8L330.1 418 353 431.2H353L477.4 503ZM549.8 377.9L487.9 484.6 372.7 418.1 402.3 366.9A10.6 10.6 0 0 0 383.9 356.3L354.4 407.6 340.6 399.6 402.3 292.8A85.6 85.6 0 0 1 476.3 250.3 85.1 85.1 0 0 1 549.6 377.8ZM718.7 591.9A407.8 407.8 0 0 0 526.8 591.9C496.1 600.6 480.5 613 480.5 628.6 480.5 628.6 480.5 628.6 480.5 628.6V722.6C480.5 738.4 496 750.6 526.7 759.4A409.2 409.2 0 0 0 718.7 759.4C749.4 750.7 765 738.3 765 722.6V628.6L765 628.6C765 613 749.4 600.7 718.7 591.9ZM532.6 612.2A387.3 387.3 0 0 1 712.8 612.2C738.3 619.5 743.8 627.4 743.8 628.6H743.8C743.8 629.9 738.3 637.7 712.9 645A387.3 387.3 0 0 1 532.6 645C507 637.7 501.6 629.9 501.6 628.6S507 619.5 532.6 612.2ZM743.8 722.7C743.8 724.2 738.3 731.9 712.9 739.1A388.7 388.7 0 0 1 532.5 739.1C507.1 731.9 501.6 724.2 501.6 722.7V655.7A130.1 130.1 0 0 0 526.8 665.4 407.7 407.7 0 0 0 718.7 665.4 130.2 130.2 0 0 0 743.8 655.7V682.1A222 222 0 0 1 688.6 699.8 10.6 10.6 0 1 0 692.6 720.6 257.9 257.9 0 0 0 743.8 705.4ZM414.4 324.9A10.6 10.6 0 0 0 399.9 328.8L399.7 329.1A10.6 10.6 0 1 0 418.1 339.6L418.2 339.3A10.6 10.6 0 0 0 414.4 324.9ZM669.4 713.7A10.6 10.6 0 0 0 657.8 704.2H657.6A10.6 10.6 0 0 0 658.6 725.3L659.6 725.3 659.9 725.3A10.6 10.6 0 0 0 669.4 713.7ZM999.5 500A500 500 0 0 1 499.5 1000 35.7 35.7 0 1 1 499.5 928.6 428.6 428.6 0 0 0 821 217.1V250A35.7 35.7 0 0 1 749.5 250V107.1A35.7 35.7 0 0 1 785.2 71.4H928.1A35.7 35.7 0 1 1 928.1 142.9H820.9V145.7A35.7 35.7 0 0 1 860.2 153.9 496.8 496.8 0 0 1 999.5 500ZM213.8 678.6A35.7 35.7 0 0 0 178.1 714.3V782.9A428.6 428.6 0 0 1 499.5 71.4 35.7 35.7 0 1 0 499.5 0 500 500 0 0 0 116.9 821.4H70.9A35.7 35.7 0 1 0 70.9 892.8H213.8A35.7 35.7 0 0 0 249.6 857.2V714.3A35.7 35.7 0 0 0 213.8 678.6Z", + "path": "M544.9 710.9A78.2 78.2 0 0 0 623 789H714.9A78.2 78.2 0 0 0 793 710.9V619.1A78.2 78.2 0 0 0 714.8 541H623A78.2 78.2 0 0 0 544.9 619.1ZM623 619.1H714.9V710.9H623ZM961 687.5A39 39 0 0 0 1000 648.5V234.4A156.4 156.4 0 0 0 843.8 78.1H793V39A39 39 0 0 0 714.8 39V78.1H537.1V39A39 39 0 1 0 459 39V78.1H283.2V39A39 39 0 1 0 205 39V78.1H156.3A156.4 156.4 0 0 0 0 234.4V843.8A156.4 156.4 0 0 0 156.3 1000H843.8A156.4 156.4 0 0 0 1000 843.8 39 39 0 0 0 921.9 843.8 78.2 78.2 0 0 1 843.7 921.9H156.3A78.2 78.2 0 0 1 78.1 843.8V234.4A78.2 78.2 0 0 1 156.3 156.3H205.1V195.5A39 39 0 0 0 283.2 195.5V156.3H459.1V195.5A39 39 0 0 0 537.2 195.5V156.3H715V195.5A39 39 0 0 0 793.1 195.5V156.3H843.9A78.2 78.2 0 0 1 922 234.4V648.5A39 39 0 0 0 961 687.5Z", "width": 1000 }, "search": [ - "medication_icon" + "calendar-(2)" ] } ] diff --git a/assets/app_icons/fonts/DQIcons.ttf b/assets/app_icons/fonts/DQIcons.ttf index 474ea22c23043d46a05e307809bdb7ba605add04..3cff7aa3aa160db15e3bed25202bd55176c2d0d6 100644 GIT binary patch delta 8388 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 J9YD--^uK)BVV?j1 diff --git a/assets/images/DQ/DQ_logo.png b/assets/images/DQ/DQ_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..993a1bd3babae49f031efe2c6aed478c168b55e4 GIT binary patch literal 24910 zcmZ5|19W6d+iudaZQHh;Ofa!+b7E_Pi6^!>v29Ikqhs67&H29nuK(P-dhM?2uDy5F z>U#M+@9tlU@=^$}xUe7~APCam#Farnz~I07+0c+*?>RitRbLILv$B*ZNYy0%@z)1# zGfipp@83aazxvQ1pkY=Z;QyTRb>My-ARvHT!2kUQ3_cg^|Mo$${~2`p>EsFmA`Bue zE~4rIdfo{ahd=B|nW`ng24c{sh;$+%ZFyoQog9^Cn~-RWgAfPicc_}*o@8VX2SKb7`VN0PPgNO{j&4W*WSd^a=S4Yk;uG!wSfu(!%n^ipb25V6GQ6e zj;o|%KuLV+Gi#p@~ul+#H}H*P7E}(*L73 zmOlp*kj6<;V)Fmohnfq}IGp`4T-sX~x5Kbs1>-D44Uj2if}{B?i9}lW{e#7zj_pM< zFopB4$*Fk&uY~?D#NY#JBzv#2`WWUy4&aF`%ZVpMJ|78>Zz5E)70fQ8p}YUzML91G ze|!`K--Y_(-xP@NYS%Sx9<|V4Wx_QIsfa9ncB-g!%^drk^7@>jK*)NanF0T467d7Q z6%4$bon=3~OJThKna&>@ntI{q&Xqfp-$^!_n^QJH@8iEOVFpl03Dc}}Fn(~UW6FFG zhK+P3V#tZUOP;f(2wGu{!3IY|1KIw2`~S?M_ygQJ$M?WM^vOGSZ^7^(EDFR;`6iL+ zBi1*^*DF?woerK77vKC}KV9w~^t`-p9<9$klB_<0xxYB{^h2AU${SF$EIFH*ja0uy z^J}-T$-u22fd-XNA5NMD$y?nmG$CG3W%U+I!{HLVg|r>2Z*X~j!fH;C`U-3 z>b_ z00hQ(6l`yB>&Qqr2D8AHr2K=43(b*9k6e0ia`8q|Q)8&0Gj`{3BN{kyoGdZ9z`wQZ z+Y@J{Qlo&G5Q+jqYBkT~z6MH|KyM^`O&OoaHiGZU46Te&JzLOEAFiBT@Q7q8#NdU? z6nn8Bln`1*#OPmg&r8f)KzlnPMO#n&oehqK7ZFt8!RIfROj%?tX_D7WwJL6H3%>(D z#&EEutX2_G7d9vsAT>?a&%MfRZ*<%#s>g-o>UK^|ugWeD`dh8|ot6ZMm> z`+w`#mthFZBkh6hSKL16`?sn1XW$LRFskensIYJ+P*G(DjnCgpic1})tr28y+j;NKY z8W}PIv)u0X1vRLA$X$;;ffQGciG*}zxQA2OzJ+45dE&!QD8_T$e&^ec)h~I8m$asz zfndXh@f=>9v{4TXj2DAtgB;Q&RrwRtG=HEq@@DfV{+5$C;EkprH2R+Jl(LZd72p3^ zu)f_qi`jj7-+QvNX>)d#a@7IXJNAwheBMKgE*pIQcrE{-bN)N~4`>1e9+XcxUO3Pe z_H&2&MLi=&|M9#_VS`!?<0G|c_IDLmyhxbx6ZbT3z z_COR>rwVl*EwP&L7FzZ^*d{^SJjuHh0r;pO#+9({-_?&-#4eAI5w>zMV-j_E81d9u z9+INe5-9NRX7(|DCr@}Ijs8xxh`Q=>Q2}emM$p6@(Bk?k1Y#PU;ASEw`63{s;4;Ye za58rvg;dFd>xhA%*1oF{qtN+ApZOEBkIv-OSimM^j-L()7q6edj0~M2K0(Y59~z(I zL(yjc7|8@Sko{W`i zdTX}$u9oPXrx0ezZ9Zh99Qu%(dDN?R=V`&`uGfp|?S}itt=D|7u~qK5iQS2__RB4j zsAky%Y%p7;`v9*iv=0S8lrGdS>$NWa!U4RMue(9s8u(No0u++t2iIN2=tN{_g)0t{ zhn7lm-Pr&$rXpa)q(!8R^s>{NjYHk|*y^20D6tDnsgW1*Shi@tjfy|Zuj_h3g_D`( z?UWx*r!CpZ&Hhf3#s0>$-tKV)K=^rl^+AGrsFeT36gUU# zQSq`X$2DY0#P!HX*mCA+EO3e~RtM`V%PweCe8`RS@}$EW$-r5H&6|H z-9BM(X5BxX{OFckKaE(A5-PD9h*#psRw-F=S-_v9)*TZZc|9Q#`EZ&#B;- zg|%Urj&Wa0qKriTSr~G#xF}|>&qwg(5_dy;J_duSra6}Me2yK&MqH5uKM&kR7zJxa zr=!de*iiGlQ>8^1dtIYQ5i@GPJYq2@=!-h>QTMl9xCN{#&8Z!{wE$n21i$S`FOI%I zbA4oubM~fbTcROa<(|juWz@W6;H7{=8rEg^eeoOgfp8fNuD{p4nbYxFrFlHqf(!Yk z*Bs)tO7l6Y!!l0>V?RjQUkuB~Q+wpgv~H!2^J4ZYslSRngRo+tx$>wZ(_HKes@1hu zu35~vu2{>h?i6L*e<|pPikRL=WQMWGm@lA(NAv)(t{Dm~zIxX+-1lWvQ|xCJE<`W& z4#X{xr-uilU^q*o-un7U=%e(EGsVkUjCT~Xr!em~^*d_C< z7f2FLFDZ$kt*vO#^#DRJ^Q#Q+%{p0pug451Dpin>%WgNlx093{Gz09Q9mhFa3H}a6 zjK{891c-Ul4(U4CS&!}S?y=vIU7!1DbOPoL_agcThg63yZ z8|ubO^q`nYnbF5*XA7IEOHjTZ{QBeD&X542vp(~|8@myd+)L7PE_Ah|Ss~Yl@%Wp; zekI*k4Mr=C5;yR$8)3unDkiNJ3c63B&m-@_%{7OKbPg3SWz3JIRj46-t)3|NVy~j_ z1Tx7^mS)tcpylaOmkX0HsIyKTZ~YyeNq}3az8Q&Bfd}36@$$uaepo3Enun%V4emoKz6nZ~)k6hc@HJHB# z`aNas#4JJRq+qHIanG5B7-a${!LKn}bjU4mTTF6tQ~2}L0xKcwO&2K!y}EUHAY~vI zAtRrC7|b{xmzS|C+_jSStg%;PtPGi|D!a0o@X3d z6M7n;L>Ga`uido!l#POI0Y1K=^Rhk1!S`DiegnyDvL9NG2+*Yr1F^}&#_c=3r?JbT z-*2cMFE8-1b$Sb&INojU-lR9D?XO^#+qWUoE3&G^Wx#CY<{p?E#w7LO-AkN1T;_{6kzQPOFN=w3LY8+Lbo;8Cl?tp_G1PI##3K{v2ZeB zD&MNMPm#S(PAD*d>0Oc(HLR0ohdbgwF>1812Q_)YZz=%yPd0@g1w|avt~dm|;{|?`UmNWz)J2pMCRHf7#;G6i()r8(!Va^tgWt#W-zK~20 z4T(W}W~8y~z<-5T(L4DpDP`?5VHNy5nq}u7V$cR!C9W@o^ z6@e;UJygZ91ovaj16`#_nlz{7UHzkbKSEL+1I;z35mjRfI@>XQkyIsf()4x*s1anV ztoK;usgs!H_eGXCitVT5LKV+f({-MGrgO@pf2^Yu2gKBdk2zaycd5!spdaK**W)N^ zKTu{%w<@-Oepr+GL8B=D600(nbVV&60`*wtpAi;BtQX-lcwb*z%=5EEkC&oc3p(_U z79C9|&F@0Si#fSSOMEyh)#1sF2yuQmVM z2w{D5efAlS$CDk^sFfw;EQYJS?oLGterT2?1e9ccuvY%%@)VgWCL8s11e+^qca@f1q!N38M{okd=6#?t0o+UMBz}7~xNA6EmpShXCuDBB>1;kT zB9U(W?x>pr8x;l#fk~atHLcEjs)1xK5xA;Qn)2TDw>)frnFZlfKeXf#TPtUmTof=M!jTQ$dr)sJW2#P^g?6P7YuPmdQPsmDau#NH`$e1GF85R~Ah_dKj(<+&O8k)?! z(xvBZE231ri1I~*K!UOBCulmX#wj-ZqFT`pGu?L;DFKP1_63HOiXU zYbmZRPfuNz@60+u(5&h`#I>qQb%9-!E7@2^Gs&b+2Nrwv1wDSLeb+VmY4x2{8SM!K ztf{$7#a&46QJPcbOfj&|(P&i;EHVxsqeY^x9@dW|?DjZz+-e4w)Z|!g z*kW%H8t!qII7Jx95+>Y?WrV&bXDhA*j91;IoysWe`UUH_tNIA=<5WYoe=-zZWyY|+ zjQd`sux)C^+!T(?4`J#J{60pfv)Z--Fvw%|7+oX`{vn{ zSI9>Cwj)jfPpNKzz)Kc|rHPH1^^|7^UwW@Z7M54nUn8pNbG;qk(sF7qn4qU@qx$LE z4i2^m1(xF%j&qg@BJW(g;NntGw6R7 z6*gwESU+fNV)gPLe(*cU`#(?qdD6LTV{oVonSOnDFu?eHzx>A^G80b%PX^iMiDdF?vx~zn>W`jGVVTHOx}&yXd4!fy13YJfWka?VUMVg8mO@upgMjrh>eP6AtS`FjSPt+F92tq^<@; zJKdrtCi1?%Ht-`u@`=2y(Oeb8CV5wqb|$MyAxGc8zdH2sa-9e4seY#R3A3*SH-E-8 z{n%4ggkmij*^vgc(m2MI1D;9~7L@4_pI!P0G%cl6N(vG`krCqEhQ+enoljRQwVkk0 zg+MJ%$Z42rEE&@x?P%m$Q2f5Rx9Pzl?*9~?<}732zaB7`XAhGJH9tKAu;>Y0fiQ)X z4jmm_2@I^=9z{XadbzfyDJ4BK#(E3lifNR@oWFnJJY(}%HiIN#?i*;Cra`s1RPkqx zCR>|rtNuCbdDT*%a~G$t&z!%5l<4y(TVm7lI4-a> zFm%{0f6%#(iZ*h7u6~zQSxFpLiA-deLr8|tPlE~5W=idt7t#dv`@l@rh5jdjNR}WCyi{>(279! z=TfIYU}+85K@N8+4DbTNA4kqN7)>2hfG>COyZjxl>>0ofbux*2Hu?gPK2Um^y7weeyNN4id!zR3 zvHho?N-YhilJ03-O~cCn_7$)*aNj*s~DdMX&@lAc;Wj< zz`tj`bjL8gt-=l5<#{r!UZyxAaNSz69ah-!J^GQft_yOZ#ezR0wR~T4tN%?Y;FD`R zwI|YX0MU}pt;=Zh@no&-KC*u=VeCH;dM*|KqB8eb?QB43$}C>`Rc7w`Y@3}AvPbQV z_RcYFdab)fb2w(H=3~V3Mqx;KGOPeXk3H4;G5D{$&M(Q^m&X407pBKxIHNP^OLTqB zq?;6!UB8nF&l?dCzb6|@pp=(VL6ZVd_|l~}jrhUdxbr6Indcr1`DLjaP2`k|`PGTk8qEufM^IuZ^vi_=){5lTaKIDw z^1!<%?&6062XR9UwmINEn@65_;NO*p`(&Otn~{h~>9mOh9%Y?cp1&c7CqmGsK}ykd zqWxZ2$k+&c!GRM%S#%OJMT2V0`Wl=dV@AX@LHrHF_@@CHJkrWLrxq0^RDhOu%kM&< zH1^m8_2fQ{UUP5bv?86IJ05SgG%4i$apw3cuTHoHicO(>hK@NYWQ*lR0-GuS@NMkB zNIf$F^xjVVPZ0{9fNxq12tVuV)s{en>IpP&x1BRfBk8KPUN(*9G`i%j%u2SsC5c4? z))VePt+;<81J9DE1<#o(4zR3ZpG6*>6?8URipd_yeN!4`qqs4?w2T?>PQrZ7D19Y-jMPHdnt8~4_cy_(BDRJL zQ`{K&o^Df{b=zYoP6r~UzB|0v$zg!x8AIrPFHO?1deP8}4_&}!c+e!GLq)Vonk1%a zlsL+w<9<;93Of)T`X}H7Hol5{iYE>kIrtXx8xQf17NB^`wgzqV5Sj%iO$-x>Xi64_ z;Y=TjuS;}IuX`KFmfLUEKzr}t9pv^vh@)us!zu9Nuv?*Xi)wyXdi8Wzx6XWC$`=Xh zbOnKDakAuWhyQ_WDG390(II&ua2UU3V56TRw^eh7X#est919|TP&K$YI7qgdrXqo< z0*s+tnx=&~HX?zYvT6aZd^j}aaEquvQYwD;VE0LRvM>@-Fp|IlW3)dC(>zR+?>!xQA53K!3+^|TP2QgMxo1*B7bMs%6GzErh; zW5l7qgq0$*KR*;YRD5na9dOLmUKmfEfj%Pm?d+XU&F>nAABy~s{Ti=B)nY?Fm;&y^ zlQaK|Z2z-C6jEFJrxU0P#Fxi$KUNkEXpi*v>yBE*E5o(S{>7~Xp!^N!X*Ot0Cb=(7 zIAGX1tPDU8n`*j@JT%y#Ed)`=h7C;m#riM$h8YL?ZDm12M&-8_lR=1)MUirPoBw;r z&L$cie32F8IQ4(TyANg52!^&tDJQ^J_uD$uR%slm1yySoc#l zwY7*{HuOwXj~x#!0+ClggJ+!vcIBM^wcd4~%@SO}6s(xhH0yt@{QngIus|YvyU2yH zjH1%<;Y}|aMxUg(K)9}n&JVB@UuC_=^j zo7xIMNhJo){+Lv|HpqSlyPj#DjBMUq?)LxGm54y<`Y^9O{9Zjqkj1C(9!y*mxL*3w zX?cA|wRwBsSMNUYIO?Y2bIr#TK_}#;cIVA{%gO4u55@G0$^SA;Z*26Ggbv=5WW?p) z1Vt(U{I9_Ac#;q1^2hplHP+`5)g?05)Iq!NalgAdNnAH&wy$8jurHd&a|)4nb&C6(Z0+7a2mx-B0sG7^K3Vr#YTE*)Su3 zrD2C|wYMQ(BGk*_GpWs`YCBz&&jX|`rEhw-2Mfi+Z19|vz5(gHz z%giP|0MP3>{i#{A!P|vICE-XOUBO+I|C&kgL9q6@U!(RS{}oX*J8?(gmJ5@$TsX?_ zBZDbi#s6a?n?KeD;0g47T=F^2iC3PqFjA&*RfBCMDQt^~^$>ghA!cXLo|+=;co_&L z>o~>xJES_C>Z<-%$EoMd7q=oK8yrm4QDEtR-{ASn!R6O!*P%eVdfb}-R*zFhm>F&G z&FiR8rc~G}lAfN$aaIsO72!##{2wwXwXdLU+{=tq;U*>>oXgQ9*1R~*_|Sf&P;Q0MqWeesSQ@FpVov)nqywdHZq2|kH9{B=LN z9)m@El(Xs%>=jdL^Yc%d=`AioxfU1o8bIPLGVD>1B@c5^HJ9*8si%fhrH5H1XIJ;R z$A^LH)Fd&Bos~MK_Lpe7EO@HuUcH%v(wq0BP{u5k+hO=FPB~*rcs27pZQiJu znEb8UMFu|-9P}kA`|rAvn3g6dkPJimksSPvR&dN2clis77y$k*l{wA|uL#yUx|fj+ zLOrQP-7c5|^GA}QxSpl+Pd_xmsdTRZf}Ws3TUk-N$b)UJ`GzIJZJwPeAI=X7k*rTM zTPsPoRn5y^@GbxGzpKbG&=U$4{22q`U@p~3q%E;0eJA_0X?UhRQb2#Jcltov`Or?3 z3v%*#^vc=|`tp%j!nk)oVWs;|=4O94S)^IS0_S^hT>&h%Clj;h0?qy*eH(rK1AX@m zWFn~EO=Rm==AwiPjWK!b$IhU}SOvZ1IKPU=Unq%I@xGVNNGPT_;Weg-jwjN<{mntJ zlrV}G(Z75mW)C`-)I^vm^y1s}-Kkn-=F*okeDzs{ze5=-1aCPzzxbhn6|0DrrQqxn zL#O^NNjA;aM7TU_MP6l?lA!OH{T)AHcYZ^Vo(kJ@Ic4&qr)0+=5M)?LSn&vq+bIopVaP~pmUU+ zz@ab=^3y6DQ%cZOg`D3#)P8k}icvs7cRVJ1-Jbfvf%TE!$=`%CA49vag-)-J^|Y|r z*|S7O1cQNCu6C1^l~3d zBB!RJd*ffRydrnbH_+NakBhG6=O#MOp*7C!h1h@ehKD`dQMDuHZ)w&>as1_O-Qi%1`S&DbZ zUlS#~)#sMt((N%RWQr}`R|Gg7>fsJ8!qs_%PHDkW!H(DBZ?GRvv^0RdL;u$aKH1UE zjPtLM>4y-t5zGO06%bNC6zAk1BeMWlm_F=ebEd1gZ5jEAA%(FBE z1Ym&JURepJ%0PgdoG25L^Im>bl$B?AFAzklS(=!`N_w9m?Gb%)jH0JFW4}woyU=TI zTMzhVkM7bGAu>H*= zJw%!Bcp-WG4xbSd6xEW&4$A?kTxn$fVO+5%Z=X;rKDZ&iOW`4qNgWbJOS3pjaf3h- z^hB8^_Dot^25C+d1M!3uh{BkU46Z+bgOuRb>C*Y;imPeFY(RTn6QC6U;UY*i;Q^a4 zC=?qK&bcA~*n8&_kK}!Io+#wp(Lhf?Jbedg5RjRMG%0++A@v>m+b;w+@?XtR(E4FR zc7`*sTw1XvDHX%^Y@3P%WmV>!dNDXNgAAi`$&{Ij1ByiN0-}Zy`%E&#ELU@Ek%2|* z>MmOLK@VjXX{+>fwSV+5qrGOu=nJE1P|o4;aXA4E0hz1WT8wVpI{i9*2Cw<-{rFgG z6vJYsch1pk%g5D(3OxGm?B14mq~ZNa4vNhB)Jd@!Db*>b!u9OXuc?A`uSw;7$blm2 zt{R76jU=~-@F)|0ei<^AtIsvbhSdZq!vb1Qw!FKS7sk%IAKodhc-~hM=ODqxulc=R z^I)=j3hO&Ezsf}^7uE4`2W0HwnDXk7`-4WO#5{k{QT>QMf&!q0tZFn%Sdw+%#8L9&3$du1QxQci}*TdQZSi&`*2hVpzz|;El@Zw5^iA zfJg1Z9oNM$C)tG)s~1+xA{p$9gFqhqYNyPT3899+E0(sZDKThlbg;K~)nw>xEMeEz zcGcWJBnd!>T#}|4-p9pcAf}?z?!#R$qRLU)4s_W2BRfN2ibba5!Gd0@$zfschDeXU zJPL!c1?L~_Cv8~w`jgb$6Hs2T|DvS5L~i3I5 z*zgO;RR9#ahn7>6hn{|@gc!ZUg%^WqoFWn*$ z_I+lh3I>NiuY%lUV9^l`t(KY4F1&8tbQisKc=EgkFdmz>#2X^h_h)=#ufJQHNQ~$v z=-N2RrC|Q3m!<9@%`-Ih4axKq21l(ow+uT#RQHppT9qKbS%!J)A_H)M5dQZieB+_gJ(0C)4+PbzsXM6vLroH{a#Spg8NVqqMg-oYQeEfe^1)KucV zf5O%%$hr>5oqJ>8du=6G^b$-rDsX9_0;^k5BJbgc2v+ugXpuY2?m2pa>oR(J(4102 zY;aaih(x4Xv5m>0JrG<-A+K}J?Gc#a9#d=-|Gi?B$!Ot%sN^h3DN*Ky)^FEQJ2O<7a1Jh*}dgIC;(rMxmZ* zKdcB{ukWRi;Bgjr@sPSNp6uUjnB}WMf+{ZeGV}QDFfjF+mw!tO9%dh0oXnlMzM@bz zRF~Q~EQht7GGr)bxgBls4BJTN6i4n0!PdUZ@t8yjA=&yd64}+NnU_rZ9WqdO(>`gN;mY~l^Bcc~!M%oAtf9Df++dzwK}#<| zcL;ImO!J9w7nb>Xz*)$IvwAzEl0)f$%Yt=#b$`_DkZleNr`RC{k-xxcg+9!KORsF) zVi&oX^Q%mx1mE}QxCL*I+i{HF^h=t4+O&5iV%so)`-o*o_Ka7p#konh>kEX z#e($QCT*Kekm07=kUjrKjn2xC`Zi+5OBBN#E)t-!>T`1@%@+qIp9ww%OcGb;!mb7*?JwE-*%aenZ7* z8q?fhL2gI-k+>0N+^u<*+|A8O;FzF>p?uE)_*}SRXcwGFCD*q(9>aT~G10=`x0l}F zj}rEr#tqp{S?O*==9##G6n&N3WzFy4Q`_t$_yq0@G0*;e|jcq(^Uo#VI+DE}Tvg zGg;E8=yHT>QEQ7&(m$u;FYz~-n3XU}6(>0y}|tY_z#fo)g1nxG03Vx4Fh8aJN6fTpHT5c*uv%9n3FoKg( z=#7lN^nKcHrkM5H^C<5YFGKmFv2MPdeql!s0;%8_+LK~+`tc2Hf(`0AR&Fj-z06M& zie(Nf1AVhS$*@J@)D7%aiRwp!3I|I(n%Sm=b&u>HqJcA{jBh4;zb>cEjZ}~1@P@>( zE3MUk_cE*|uXN(jfvoCAL@xvTx%D*tPgzj^1&9@M?vEm-M+gFKC`y!Q#+r!F zZA#~>ukvj7p|UwN_^8S>Ko(_4fJE}XV*vXIqKk04G_{)M=$|xso(Ht0;M}5bAcB0J5XK(0sArun)K^sev9%HiS&2x7l~v` z9;k71$a3>g=Y<)@X_{we%M3Cpr&N!$VOK&qp(WJOYjqL*gSl}MR=n?RiP+SW_wvV3 z(Mt@3MGR5$-{*%2Ro2;m$#`)$wL9oHk-y)xokiDx$;ZHKVn@8*Wqxl@n z4m2>+73f{v6s-D2i?6M94Fo4rjTzM?j5RY1`(uQ=rb5pLdM4v~pB27O2+emno^n4B zrJ@V^%dXUh86`gER;mh%^p&MRPlJ3%C=6aWo*b)0tvm+&cq3jF1O6lgNbueCxMpG6 zQglV-&S941vg6CMZAIlX?y43$(#y?G9-In zy1+5DVK%hUCcZj5ayB-{26Y0y5f5S_sOXU*w!K=3p#QRfaKZh?Z-KHk08zX8tB9L_ zkqMzhRzHkj^^DcB7{T{ly2H8SajS2Q$U^{wMzPb8Bm@LgtO92GUBXs9(4+L*CF|^Z zTGzV-$I&Mj0`O!E^YcabQ0AQER+oFnW=wkcYwY?1@3mKp z_WM@jX;I~rqB-{TGdZ}4f*NOizGU*t6EN-Mi{}1Yd~-R!=p9T914xZG$g7l#KKc!1 z6_6W)&&Q)$=6uG!3u1I5u0_vZ07yz?+Cs-WY6wW`Yx~a6w_)7J0q8GHIBj=KI;|sA z=>$9VO?f*;L{h@7G6$v5Sva{Nt@48 z_dSfq9rSM3&Hmy_dDSj)oBahjY#}A=xm-Eirpsuo9=~{AW3iea1lGLbY=bS90$9>= zqVU3e?<;leU6>M|lDaOpIIsN;Is(}HVH=yb3QfF&M;jHSz{ti2xLkEDcp6zl-7$6( zjlmaMUB&djS`tE?68!A1@(21or<1u0Dt$i3c5)DjlI1Hu!3SU1(x;&ODR1@N%XLL! zfLX3`sTF}LO1rcCgNm6sm-Z7oL0H6yp#m0#F$U8{(f%P-0wOEB$z^H61F;#!k-=?f z4lb=pOZA4eLYd)|Pzh-Xxla8x+NPSIp z9hzX_mwN2=8F;~8@rsQ~BJ$K%&4IEm zh+-v9vHUqX7jsEwocgpchRXEyB&S(@E8eA@JFZ7M_a=Hfm|l^)Ss{~4@dULLR2h@7 zp7p^H$enO=PLLZ@z30(kcA_cvA}1~2y~Q)nfnsUX3GeYcCQqjLR?0&M8xD`*xVwHU zrQiKn#*QrT{0zY!>pCXGJ;GqMUT6J2S?{4B@IvT1yE)t$_|)|eR)8dKp_&GlV+0+7 z+wNB)7Pt~abd=4DWY^eS+5`30g2BPrTzK}Rqr*`bMU~dKdFKP7f|^V{v^tuQPXf;9 zJ!@0=E*82Fu6x=%j2o!l1`1#-*K5||O1Z~&6-YPDJ6}Z>)KMrt#s}LLa78+Qfjf8-5Pk!&Fyw>;NvTY@~PXBep+MyxyvVA zxE^Kps^g3}fNnKe)Z>g`_@M_FzMk(-maD-G8<&YZ}zdjug0V!62B&R>(K#~?} zG6WvDAF{DC$<@iIVXwbpA7SvZzQjrcH_&6yb(j7$-2Lc!y?^=6tl<~FT)qBo@3a=} z+&V`9+1rN!S+Y=(JC_W@3=J%=(bi|_#R~;7PEO&F8$~Ow$;!g>S-`5Br6UzEx8{t@ zU1R!QXFunC&gEb2vyB_5Kl0*tu^Mfu!&&V{ma6-PZ!j-|$$^IUg6O5Sj2iJr;B+Q1 zPw}_F{PuOvOqHLBVLl`%Dl6(x2ud3z#>!^t_vuGt)tul~k~qa_=K}cs%Wp9Q%D;cK zDHolgDPt(==DTLFzjXik%7>mwg@Y~$p`VHRf;N#lKFqJXbR1AGLv@tyUAds^X1mXe z33evFiLDh*n&>F4z8?*xMJy{>MP~1|+GXLX zN(ta43dzFrsQoBGbjo&jCtch_#XFKA;Bv&b34D98Ioh_B+m#Fao5=93bu)V~f4@bU z#p>PJ4)IUcy`oEo6x9x zB2||rfj6J`jSi9BuX)W#qLjZ=5R1$Gx7^-SJW^S9V!J=%pZvLUus%`zB@9An;Mt*H zvU!b0NT;#(WSERhr)5;2A_phwumjws8YE|)CC#wzWlx1^o%we5oNFOH;hgeYPEQPS zzUf(lH!`ffNG`f4XaSrd8ATt{lLs?(!F6rGS>w*q(Z$w+-tAl_0>T)JSe0!DCbMq) zZi?Kr;m|_nti@0}6jk#Z%l;nutPNg+G(88@sGTjq%AMuy&E6Oc_$m5ne6n$OU?Kf?UesE)xaMbRNqj~pZD5H!{5#ZgZznOxYaTA1zlw5qfq zq2oqY0vUsN5k6w=Va#*pi@<~t4(5^b@dHjPAP4 z&r!WgLT|Icnu)rJZyFTx4ubZ^lgN%wPUC|_+xpeLrzv9JHcJo3v*NNNHC9S^x5on`&R2rOdt>5WQt~@rRcxO@>7A5*YvrM9s5bH z$)d_1sPxsQv`3|NUDb3ZQNfNkxRwTs+}t;>!8Ji^QI9`nOj5Ei{Xmd$vI+zT#;2*m zWx~jPtNrH0gRYFx((5{s*-%l;qgw$dBH(QdM>#~V&|Co~M7C7;voBOH0g^H^NI2|L zFsp7U#4oIpH`ZmOFP4>fOE>O}8=4hNI*Ywl9;UXc|E+HJdxAclhz$PsLIT5LI+5~# za6|Qh^lSK0EvDR-GRo&3?@f9)6W_iTgFTtMrE2^Ap@Svay7Cz&pcY0wA$dzs)%urw zC>oXVNrrXC<(l2Dq5t9Z$xATDsVL7S5G$Pvay|MX1Srn_?R19sT~v;V=%VdNT=TfugFo)erGzr!9+cT}wkBbYn@Fyj{t zjbJAxpVT_{231?;;Fk7TW{zl@>JQz;$M8pff4z3fed%sAhNa$MM;jc?>AV$A9nfM< z)Ja5FE&=i(GPXUJNv4Q47#;IkwdC2&g^77PaI^@7g> zn&_P7X|_9{*O#J~kQe{v6u+yEIFxg28uf{!<@Y5sfdZ18vevDO)b|S=M2fN7&VBG~ zb#NN=BYdL9d=bP$g+f(BQnM++{vb=`VOc(fl{+cdOU$i=AakL&R^N}tOLrgS^RSjA zD6m_7HW@Qb)eB5ocx%MLVGmrmHh1$AAI#vjx|8K}PIZ|!yrnZ3U#vg~7J_I$6{Syb zi1*)qw~q<2U3@+UEL_|^j!cM0i?il~PSk|!i6`ga_$N@HcAB*iHZ6PmwSweFQwtIa z)ua}yM{7ZOmmXANK;}jKbl2~Al&xf66b)q(J~ED}fQ~j{F~i3B^8Hce@_i}%(%91N z#>!EM%|1`ob9Uxb3^TCV837EY!#v*<`(u`T>jl}lVH9*NX_pkPl}XhXeN;4qAl;1G zjUl+{K(=<87R|2&JJn|S-V!6o8;shnXCr^cD+UBI5Et>Z3?^&Q2Q_42ger%BF8reH z{bi}TvPTFf*?pIoc2pQPiX7sgCzMpsX9an-8+Yag9Fxlgiw>G0k&6aB!Bx7nNCZ-p z;(garp^~+rZte}h^#q=y6*C*^*Dsat{X!7}N#$3S;q)GARWpQ0Qu14fav;QpQvJ0k zgEogr#YEhv&22tn)QL`TX6}i}H{+p-`YGLgPzA@`RI5?&k)I)s-5YQt6^$xk8B(3$ zB=Iw=of1Py@ms1DJ+mh`VZaF7TN+#iMy4<8^uqwDFUrN_7ielnUfLt3vARQqsj`k zgM;Z-J|CVu?%X?w7CeS9+-wnOvERWQbuI@xl9CZ--B{x~=IV#)**F!)l$Dc40-D3< zkko_ZJqMhQZS)7J>cFG%gi~qd(p=RB#N6wFwC@@*^G*btX>)b7ygB4qZTw_;Hm90( zeF+?X$b$>i`8Ly=9A!2;B1DvnS<~qhDY7#D5GeZc5X+CJxh?Ubw1PdfFJ;#04Rdjn z?Ar6=ZSgat3I*8FTFf^U`6inSv`|3udpxVL#M6I2!RMUI|seiq12Ej z89cuV_cC0e6STmM=BUrr5W(_AHoT~mqSm8|NFApG36y$LFF#@?a!bj;hS!7p$`fvC zxO1-=`e4`nmgK;b)w?|cAy7u#bVrd6V%q4l=0(>6#f6XYo3D?wYD@ zvfAU0HlM|d_j!Dv-@tgD9;;zA*KP!?N(ND=O}q_*eD0Y*ZJNUd{(0|1_f&Jwui^vU zfU~)lPaF^s;+B8@3&7VF?)|b}X+~~j$Ay7?2 zjbO%usIN`oX2`+g2if7W?5(7yNdmKYbx>cVJx`K1eTrES_&P-RtWTJ?hg2vA5zOMe zzyG1@p~9vwCER^Lv~t4hWGiO{yQDOknQLZjj=Rc))VLXUa=g{9VVg$&`KL(y1qqy_}{S;i+NgER5Q zNnr(TSmZvb&xkE~>5V!^D6iAs`IhNQWpX zASo>{Gz=ZW&?wR|3=+~UA&qo54BagtARUUt(B1LQIlt$9&UwD>FSF-fYsXsG|Gst^ zgp9HS+YK_$minkfukD|d7(9)r@U>g$_v6YL9(=^UkZmrxDZP)+&OG|+2O6%xh0>|J%fR4^a!-+i2zX8tGT`_hw=H~yK zdW-0Q5)SAZ+0MX0!GfgJf2UCYD{??(cEizr4w80>a^eMb488fE*cl$+!})Ov9yq_0 z6xAg*hr7A`Kl!F2Ac=*^a{`DgyL%~bLIFN+!M}ev0u63M)-8{Al?)oh=}vAXv|c9gE6acIdP-K*7Mr_vt=>Z!oDVGl9elpfqP*`RR#J ztGeg5vN}z9>*ahu;l1?7%nPTz$uX`0iYm?=?_b33MiE{AjgdA1NtgpwdCYT5^wsUi z^~}hZMAzf`3E}f=NjgDs-a%SaIn`^w`hJPJNSOHImF!s-ou^oDOJ8{(Rk8$@;@D6B z)Mx}S(!nSnN>pxV2#Y^d9~EUf(vSR=#QwW~9u>$Y$3WF{7I%I7G#U-C%KS&1F|rVM&WETS|MsXCXelkpiIj%UAo^Gj=91W5 zqC#!3RXpzBtDu^9s0bG8tl}zO-;X?J`}M#ScH(>FF8;9k+T=whfvBOVtEVx4MY?UG z!Q6X~ANbU*^GbVF$|f2bBRMl7;q~8Ev~lU4-~~#m>+Hajw-Y>v3S`1WLQr!?6+ddN zfB^kzjEc1^d+{VdnjXcQ{BzKH2Q^3%8VjwB67Z}Ir!anuFj0(3uEyctbw9ko&?f?e zzZ>ka*=OL*I;3$BlWukDJj>`Xik zEhH4a3VkW}bja(icpCi{QJuB3oLk1$LU(FdlZ{-?d@KGqL0w$(CwmkzgjLCYBhV$7;PC{|%8O9coJlf#u4$@(b26HPvdm`}hSjU3w?=j*T`VJhK7mZQe+IsO+dM(B6 zw@~@Gak_Kz3N`>%d%P_pURFGj6+ZUvf%=gl0`&zONH7ru~LE!!_Xu z+#uVpAT-Nd*FiI}#jzz9T76sp;)f`QzWzH40EMzT4NbOQr@Q^02p%ztD<3m@m|hV*t&vdbRxd21&5goe!6y~@ z%7<^m_D$`?CDZTviCP#_LU+5;N?Z{b2 z$y6x)t5WX?e~0Uu`0=GhNUv#K#0oBX>BgBUGcP8QA#PR!C*ByYnvvwZsEB@qYl=cH za_cQ(QNZIwFc2E>#ZdB;=uUwHXq>cR7UZk2V(`Fhg9HeRqJQy4r$KHyz@o$#IiCiwf(n6duLPz*XHz!^V`~>A%bV${*=iQWC*d(H z3H-G(2xzk|g0b{0vdu(p-kNwwhqIORyMdBIxT>gxM}$e}b%!r5J7vm_MGStRTacnZEb#vmf`v?)f7x!`W#(kA1 zu?wxc|7F`maXJ23lghy>(;O#*2V{!bb>AVk?rr#z6$0W(4G&8=&_MN+(h9W0SB9f3 zsRd+#By}-vVf0+S+9*}c9Vc}b2ELwGjus5`OGvw%Yx+n~YfV06qF6R9)HG zhX}b-pD3cm@$=BWlg&Dd-pWWv60J+wBbHEP4Kw~5RhV&>-rRCT+>hsZ-RLp|@mWX> z09dFRAr!;kVIrtT@AK&XxHZ+7nz&+apad<_`x{q`fR=}{j!_X8&=cIk$n~1;pho_+ zwlG!xLUz|aufvFx-D8K8Wr2Boo^M!RcB~A79y}sxgK*`agOkhI#2c0GP4s*jlX$y; z%}by2XX*148xEdPX;KjTbR!(Jj#{b6V{kPK^>*|^H_bs|-O{W~pHy|a9s=&4@OZTH zER88%m%orf8kPBOAg7IaV66(rE^=A+z?S;G&7or*&2^;;s5$CY$#^1y@2*PD-wL}hz4p?hI;2}E`PwNZQeJ`1FD^mA)UH2|hDMeIG@S*M85riyB1lOM zFg|h`Jca2`OKWnySmYG6?H{EJG7}!^8_330Y4h&qujJ1Nu2-!iIW!+s z`$9HxkP;CA2rR|9xr;gL^QgEG$J?WtL7CM@6-Hxq8Yt%UJ<)igCrrc1BRG3YNa*`1 zL*eX@bPvyCi^|!Ip1WAKCpy0q-DYt-Kj4!twMuaTB&fM8aX(7Oj+No@xn&2DJOk(6 zt}(Qxe#&4VFP5hwSZ*bHs(Kr9h}CI|(#ON{8rlU2JBmaG6DD7x}ja^|YxU%s_z1WWH z%bg>wx&5xW&y@}Zg#=HU?dt0I&nS+>ueBufAKPn?iNBxewcjF1f^g#QIg#%Bq4XU` zcsCRfp&w{M1sG9_eDS^S4Y<}Tmm~S}w&sA;`D{LHO`Y}zs~qzV>0rt(iXQ+z#+j|J zD;OB1vsx}|w0nVynYPQ*q z(*Y18rN$iu~L5464$qtOSrmdm9B-Wp6w;HWj3) z1R6Jda|*v9aDawd35-kqJkkZ7gBnqPsqUnDUvqEMXAFqr2HW?f=H zhp*LZj{vNiGTfn%_0%6;mVi^PPpy*U9vK|a=7v96f#4=De{I5qJhd)|=~n|9UDbx2 z<|qCJ>{q2L>v2>@w87CIQ)OBw^WLgMeY>!(+4Za9k!Sq0zWT>Xs$n5+ z7U)ZPPC4OTXac+JODfGtuF~dB3M5RJ4gQHy<4rKf|aKX@>{Ynsub#3;LqlH za(&4^K`AIRNe{A~W~@o0d2#aj=| zif8XVTi=AS9lI&!gu#9-==L_dFX`dng_*~Jf^%Zh0f?by90tM6)R>?afv>D~mZQ6h zjfri_Ls07i9>ovdZ30pQ((Lq!ouv^<~vl-5pC#9+E$MZc!z4UhKi+TRPF>o`I`G$Zm#HJ_hCL^ zG_yj(8lO+{GQk>MB^=zsske#R&p#H@y3|=nbmD2~z6$DcZxGE=*lAuoP&@f_##R=G znX9<-1v5gj9hla7JoEdd6?s@=Tcj)A!`Mu?y4>*wnajCn{M0GxW=N=)0(A#eDl~Po zBbH8r)bflCs)V%Xb5LfYrwaskdu6WGrO47+nJ5MOSH*NvMICr*5?J4ca~lqPc5UXP z+;ls_jpmu5{?w*vMxIQH+c_7$&md4*w2S;{qHMm*cZ(n0?pbizv|wTaef8<-b2+2&8&bR>%1vv)OGe%; zX)Tu*^?0fYqXSZzgP3$XyeB>qxaYOJR*1%Nw@MpQ|BJ!*2lg*!Dw(dh!XoMwWsyHJ z4@SEi3zBQEPdh}bz(zECu}qo$UZPg|dHPXM@42?e@(W^LS0F1rLzyr1Hm4o?J0YLa zcHWtnwaDRYQ|<9@AZp#XLdfC9KtsFh-!-svnxl*FFxi&srQJlI)y;mMyOc{^lWW|+ z3;{N#5LqHNXn@oqo{YLv1QG%qN0a_3WB5sL^V4mgB-4^X<95LOgN>BOcw3+$P3o~n zIERB#@|;szDQf+Io-PZQK|oIBh``G@Kh>yhLFxTD1Evc-OXw=E?W&e@O!_)JW>~9# zY5uGuetfYBQ@7eIX#VQT z@0Rd#<>Bx-*4+_v4@IN+#7eDEOR(Ae^5y64lCrJ&J2^gHy36MC!ME?qiH4i@rY$bY zzw+A{UPTBmD1|JEN4?8<$7`*NF~gAy;AE=;x2$qf&#KjjGms^q6SN+S$w)AeUzHzr^0(i&aJpYTi=x*IhXD*P0RJzHaO8M#a}h7hd+_6zF=Qubas8bQ07T1 zHy>c_R+^`h3KMC~)lm2;O!e#`fF&xY?9aOcQLh8i`~?%c*2Frq?jD9AkU5}_09}W? z?;!mxkNo^}7IU&(K{PE=%j^SFz*zf@Cl)JDLy$&kpE{YL%^CeCYc>m780LWp$-b-8 z_(a!Pkg9lRtyL$4Y#chBR8R5|Xx7;QZ4|G2NkTmSsr7)n_wbuclJlj;UX^u}yNEnI z5Th&2>RGACZ(jvAu?dj*DbkuWhx{ffa7mSX-sYrnrbgE4Mjb5DJQ^6`;A@#16f!bM zuqa#@<)$Xx+*ml=Q8av7ZnVc>i>p`jp}3bI%KAlD>nEEh>pLpUE;vi)D48nBqQyCO ziY6^rO4GN;W2Sy;3kx*uXM#8zr2%FNHmu{>It#X$qwxFQwBFj6huo;WERq1U3Nto< z4$HQ*KR^@jyYgX*ld1D^5dX8D3aKr_-Y+>+vq~RjHghpYNY2fiutgtBk++gJV%8P? zcn#Qjw<`f-jKH@sf^^L|`Uv+ocn-fMuDgRogc<_qIhcH+1BdE(rDM#4!~_=U9{-M6 z)=a88nZ%Bp^q!Tx1FIQTaQKxJ3QZJZAwv$^Np{$nSJg5_(Xfz5%2WtT=I5#2-O&!d z1FxODIcJd^$+8Bc=uLSsa#`eKBiwZh&82IGkqAcurEEjRl`3dM5HIVUf+saHYKI&W z#5$phFq&%tyM2BqxLImEK&!4qO; znM?Mn&rHd`tki!)wn*KnWb71nhut%E3KWi+B~R!;{*2ZUlnwY`LfCV?kgb;nd{S}@ z)$`?nDANzq*#<=J#ke1K(cDit1?<}; z1?W#Xi*DLuz2@Y&mvj&_c%PPv+UH^fSmmHSs6NKXFeEP1{L(5n1BuUcH>Ej9Ej=3- zI~_bHa$*k1l&<89S@y*GawYO@lrk`VNiNQs0c> zk_JYK6s*j=vDKq>R5wW;{!}8fH2IT3c)jUK$t{kXDx`iWpAq~>?~l!P%gY8@(qb5% z-F=w0d$G{ASc8&us@qBEVS#2!+0OLWJ6%T){d+l*rBaWT$gaD4+h4rN`1+3n)mpwv z>gz*C!=S&xYyq0}@FGJeF^`MjlD7^i1s65GWl@^~k(vtxDGB+`eNuvfLR8(4#{xK& zzfQl3xY+IBW~4Ipp{U_7DCzJWEL^Ga!hWU%y^YEj$HpwDZ`u@SW%|X`7-HlYcrcNO zut+n;WSFj^M_;a}%Ao(&5FywUR;^GZ>mB3Ne_-PJ3@V<5IYmP965^8mNBd-AynDjl zD1xA|=XA@CSLR%PD5+icR_D*|$=ylWa`XZH(ES*E*zMz|6^=Xh?0Y?&SCSOiveuO{ z4`lhhmg51jqZ>rKC7yXLLdw}~j^A=^xqoF`n~sz^8c7-~S~tk7dg6MaBM&bea(iW*0HzeBupG7{NZ3t4Tjm( zDQbFpX*AO4BgQRSyNvdgT5{Zp!oR$Wt@_FO2hBaYkTL1!j2e)gjVgWC!_kZsO@^jgtW9}%&xQQ#Mu~x0LX0SXj z81zSbdpyd0MFr896l88O8IJLWDqe`6pTY_fv5azV_qecj<^pj>m4b2CUBAY;E>@r{ zmioXY9)10R0G@((0J(6qG2RGL7*G0N+yuTz=ub6A`B`>f@l6r{_90x<0TH}K5rp$( zSF`wuowIf=j|Sb@S|f`!ECt7t0p3^V7ot}09>XAdjWr*Hp5lT5h?vx4SkLv4uzY#K?WZW1PWRY%EXB-}trrKL4n;`d-5(_B<=e499bL1IAi&OIa60vf!33hr2f>3f(a`-V*2an=9 zEW{A=Z@2^jZtaGrn3^oimaEHd6)-j(H|0lPq*RiF3jPaV10 zLY~uSWoT&JKSB;y@K5i~jls5=u=ahX=vHTi_Dl5ODxx4?ZSC7J-+f}bJ6l+S@QepN z7~bXIFhs@_!-`Q;^Yxd{#|*6$(tkM8UktF4=rU!}#BX8uY-feqt;ult4b!1-V{==q zQ5?%Pjm!E!rUO$5;bp4~-4&@-{Ro!wq=sv`wHdIGHI%>k83>z~_;2oLS_|Cjez-jZ z3#~LO@FU;@L;Ob$YZenWFjSFg|>E!AxlD?rR;(r+ z#|LC@-@%ovg3N?3UD*GPKJh^4B3Cp8?hT7d!4P3G9aVtX*@gH;QM0%m-x!agAR}sH z;y)js5Ae05A@}_P#O0gt>O5$l>Vb3;tCM1{AgN9Lv@4 zyb0217iG}?ZTlzG|7rW0=WmO2lzt~nU{nm<8uIUxigS6?X;qSKLE2&UBi zCTa{5;EBE|KDIme!qS~6)+%RICc?SsW%hcBJA*>;wi_usX z>D12HFJ?bec}wgADwj7oN)U$q(!5Cfjxq2+5Z;{CpXD&}_je5xWmVslOPdD#A3|@L ATL1t6 literal 0 HcmV?d00001 diff --git a/assets/images/DQ/dq_logo_icon.png b/assets/images/DQ/dq_logo_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..71626bd85396ec58041e3cea23e7175b53c001ce GIT binary patch literal 45044 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%0AvKcOZePnZ_ED(ev?ht$z2jZ;tTc z{S*9)f9W@1xh(MVd?63Thp!&_p+CEa?>@eQ8!|C#oKFk<#?QW?i2!7wCip*o@n>*< zK&#)w@dCz57=M+ z&3^&D{q|dCn>ZXO?Du$o4-v#m={!*qp^`vKviDT(69^y7PzNl#x!)g1VMbb;!E@C? zbU_62KB1>`BO!8!v_qqooj%j1g2H$=V0JJRYb^yS%`6px>Y*g^gP8|jyhe4247(jH zNcyft5|TFsFPMOR!_XD5hdnFaF|wtI(3eYIrNnkJVIgUsQz7YKH_5yK&EQ7ii)DMc z(8GM;Hm~PbUd*1$o$LEG5Cy4FW+6jR*a2ek#8}Q!kd4m5F@z1Cvd;Kt$1 z&$WVTWkM02MY#Td?7dm9ZA+FOG$LlVy1n;lZ&R6B*jXi9mO$9%0ZT~u#ry%D{ZEk) z7=+~)1Q;WWq8iFol{YKzJ?HFZHM5BbG`ffpbFFg|^So!~(Ya@@wbz<6nh~S<#`iJx z7^LzXwY+W(53|o-@N@O|-3q4GWBIk8udknTqHn=8^rFKwE4UT$04@u2z}Yn=P$=tX z5eK>@2pVQ&s4T1$iKh$EZjJ)^Ay`AR%kxFMzhNhuk{D33$#j-FOYvoB*P?~4xGX1Z z=Tzt33omndW+yfxN$J(Y6qf?6qt4QN9JstmDn22YFb4gan<%?npNy0$ou9pcZ4UUh&J&v1N^w7@(bh&H%4pgBynZR<;hZnY{hE_OPj6 zOIP1@%Zb+CTW>o4rASUFIXTqu(9&iA$v|LwKBkG3m8j|Ec!I{W0o?A;nR`PH*7NZr z{XPn)s1uD*-^=k6>8!tfw}U_UgLm-ve)UUw4Vx7I;?Ms*+-;C_{vDB^r!Zz%#ej53 zQ-JNJp=fT4&c7%^z5DJRmD0A`J#4xSynFu!9#0ctb$~M9$j{sozU$-rgOsHBna(dq z8jl~peC7iX$@qPVxUo@zMgr9pdsaNUyE~LaZ#l!Z$4vHyU>!?aXF<8z5OZ0ZqBZ5! zjuS~SyDXs#hFCskg{U&$H`Ws<%~LH9GE(e{fk%@YN2-gkPV78Hp+W?ciJ;Ak8IXlJ zP?ML;JYo`Y7j|mI+1N(Y(B`8JIl(|F@u27XZM!1iQ_A^ZXx>tWCFwKSXU_+bMQs?d z04ol{j(fqlm;ImvDzeAP(4uKsDyC{*t(``D*{V^6OB9Sc-y@XHuqu1&s;02=bA67o zF3NL=s#=1p-&=n{TnRi}Vc}d^dETi)V!K&9;F@o$QAIV+<3Ph!;7VOO?(- zLI&uwVDs{T6|J@-=T@`DcZV%BNSQfrs0sYxuqOb{61K8_dg9D~eqr0NyiBJ502{|0 z-0fO;yWhgy+Yavbdw6@tP&E8b?C}^$`rA__@ZoNo=P)cMQdDGmJ`Ok*2|60VB)b^s zoI+SzCmDaNQf_wxeE;D<36$;7a?qF?Z>14qmls`Fkok>NUN(JD8L4PLFk zTW2obvj#^tum@9t*2K(uecOLC)ZyCqu;1D5+C2YE{awx(YAB!C&VPD*qCf)0&roB) zNzfkzUyK3PLaL0BAe~4L_w@KouRXn>E

!-IlWcyIo6jalaRFw1)vMn+`5hgd@TY zeV3hR919%()8zus$1}uPlD4ylX~2bUn-+XOopf+RjJ*?^Jpw(4Vl{97^%0bBEutLAVsEIJcZlxARKX zE!5sXj_Y}$^LSJx=V{4FQOeqTdv>s$Z;U@fRT7=UZ2QyAbw1zVw7%-+iJbVt<1(7W zP!KxbfNM_@a9XUU3RKHBt+hA19>iOhbA_NEK$Uz}*|b>WC2wuIwG*AoMqkN})g72+ zGwWyc?U270C#&Dd0`-`YZF5BZ+aDj{?#+An>B|c*s*vC~vQeY!j0>};1%JQq;g^5# zJ>2a&f^N{j#s=>0{|Lt8Lb%++T@UZxvhh5=i~!?X7`8iN`DnWUJIwgXz+;AJJRiwn zrL1t*!#Ogp`O{B7Q0Ff$z?btA8R@rg_ql9~_cC9&QR3bGhP!$tlW^HcmSXVm(@&q_ z<#>YKZlB>A*maC0MC1|0AzhZ4w&6yI^qaJU&9;aAcE?fT1Q{2E(?Vq+rwxQi>C)zm zUy3H{;8QNCfWT~Y@p|v8g{

=aALJ9L-~0ZfAu%4^sK69Hyp{^5(KKh&*myb69Fa zOfGh;YnOVrlZ>xqc9Uei1s_Nyyk^zVnjLdxkVt|vb{UcYm7^Sly`vmLx?XiJPjk$;c6wjJ%GQo@EvE}Yolf}xMQBry>@-3tu<}Qa zC4=j!N){oDiB`70F{pXHueI7Nh^^3rH--8&4tUi5G?_&w3p~<6=BTkv%i@TPJ?y!^ z1hdYK*o*BT9Q9oyoBrmoh5Nf5?DtzfBMj#Cbh^-YVuqgEPYPE1e!GS5-W}lM+XFnj z*^slc=@pOfVbbPZE&0lQZLm+LouEaY=!Q9-QAscp}#8N@mYhYrxtc8c!K(609#QYNy zeERY%Dv4N0?Fw^Jbh)x(oBwqp@L94*kOW2=4D0(EVv7jG1cvI#O?Kd$%=m#UFO+## zsEA`oRcs=i;dsAuy9$yF42AAdda^KpD3$+49Ppty?_Ed9ImOIlmtU4|v zJ&ss!_1{^@Z6-W5P(MP+a5Jok*AhLGW?NR(6>EoY{oDGQdX+V1;A7}C=d+E^4^(Vr zKh0EeT1U#82-m8CbFbIy^?JQtuh;AKdc9t+*X#9q{obp}L~F*-Uh8rq+)9V9(&+i$ zhCao)BAKZ^KT{jkYB9GO3ma*6$ytjP78^4g80A#dY6zW(BV{Ot&7LAszWElOPZKd; zASB|j8DN|j;v>dux81|%Pfy@uB+S{})znUonhWm05~6=Nmx zu}g{>4iIzmnXm34Ez4K4DkW=a8g5iAF}lp745pK~&i=p^##ga{GQj42HZ%2gsKL!j zRL(+&N}Z6NFqdNuJrboP!|M0JWch5CfbTPkvfFxm?C)y@3XFY7iUIWex3aqtUoB=x z9l*3w$Ft*Qe{QQBU`lu8Uh`m=XZ9{* z*`~&+^g7cv@px%9P*wMeiW%C!{QHriKw&|QUw~cTa0fo$1(#l36xB*z1+l!$uu zv}7MBJDb@|uuKcE?J)~I(7&AzI1b_R(XE>fBoy&M__dR7+5n72uFeCg%C=u!Pt;^L_?D>h9(GA7UQFSu(a6I;M zR`}e+7lK*;PGMIv57@LfF?A#TEV9;so?Ytmyg6)&-{cE(j6N5>XPk5|%8K?v!AkH+ zv7=^6oM6iJzdK*{an~0AP_yUOUnKlJ!m1KB_2XPwMau>*XKXkOu-|mh3Jq(cnP_C< zLTHsJSNhpk4ff70*>2%}V!xndq6@G2H68N$-wI6y3juMeDk&6z#_lviQMkCVI-_tt zLf_NpUSXmO_10}?dR-o}j*?L^xH$W9zcIoN&JUraN_uqZUzdw!*{O#ZT2;+E!!+ryQ@0Y(IZfC@r(LMV}yrEb&qejJeA?mkn zKgj-Q2#c$Dn8tOP1*6+AEzV^=!#F>|<#~Y9=>?KB;USI&n|kmMVzb9(BAO%m-Qf*f zzI=k;{`d_0-AoIZjGkEaQTR)-dmf=D=ma-9My-cAa=Gl`eg}__TS(r+(DZpzX+Lb& z4=|1OTzKI#oy7Ve6P%70O-G3N@F8J?aUr}nFG`lERiZ3#)`3pa*yA%+&cYj#X(s7q zL9WX!)WEQm4(!r-&4$1!)tbRlWvU_1bEMqOdN^Y+L$pM4m=jmOkv~NXhLlK|VZu}# znWjs$`2)Y2sPV_bQ1lQ&9_Lub((EZ$;lvFihx0-`#NVY`$2JnKOW`2STcI5CxdfhH zPsQ1FW{zOBC+*+mcZL5GO3wo1rm~uZ-*N!w-_P6MVqz=g)|CTI_p##GX56pLkm;P( zb%B3+Y2Kkg8yVLy*o{apRo(*`Ctg3l{kL1wb*`Wrx!f3w?E^#Sv|h_!`>yJ>6`oY> ztEFKiDPU?MWU41UTwCX>0E(F%Y@?9D;DCqCZXl@HUTh{hW(fPj{tdL7e!qhtb_<)S z-34txM~;a)S$$`nqDGkUxY@B$8GK#i9t6%IdorKiUXWWT0Mq282|#IXQ9z9G$kC{4(`uX$l_nx4)v;$-%YAR>4c z@$dFDZqfUCJ?4H4mC#SbPNHkn+8<|njMkWcCv%ixlGMId`aT@vo~V)2$(kv9L+@d! zoOS(PrhBXH->v^%L}KK=AU&HR`cncD!Hwj*ILAl~ddxSWrS z^+(8N8;O|zsgnd7tP3Ia}AT z;_5j7vJ-D@K04G5ey2D7kTlC8hdTPARVLaR|F7W!?WOn|d@l}6GM%)v5O@1Lp*FIp zKhsxEbcFIg8%6?z%lp;Y5?_5Q{DMgBe`Jw;?wu zc4I$2jzl5VwCdDFxNjTcs73bBnvG#csef7Z64s$r=Q44{qW%(3_CWUqd2$$ znVYbiyxrxdL(H&@phwp$C*&8YL|Sqm$Wi+8y|LiuWQz;G$_{N zkw5z@&39n-^vz_fx8JK{E^9?H(Kz4M!LosfUiNj(sxj_Ut0DT)xeX3VZ-=g}@<(~> z0ZN}h)wH#gHGDN*|6j1?=2D79wRNgwrWqa1GJ`0CGVW3R0Vf$PFxYYCqOIq^%PG+H zjH%TCAODR`B|4!aOunQ3xw1Wy8tV@P1L-lPDKMO3_|E%<^9(=Bz|QS_Gof- zNJU*hvCxUBrtp7O@IoB~kgPiX&YQb^-V=HuZukN5&+iU!zvo8DZJXe*NBnW5{ua!V zVXul-x@Z&v2P7j_AqCT0V=)744|_O>zNv~1VW5U|a`?Tp*F!K$oyxJCz}{w%o*L@! zZxUcT3Q~YEcWz=48sg*SY-cMOSj1fp9cM=yPf2mMPFV(P3jBjrx=oaqkaa=8c>Bk$nO0L7hANo|l(15dt8K)3DuB zwjVEao;x>Dg=f+Xri&D4(sz#|?X$*nga0)08sVFcWcx9Qx;tzr&_-u)R&L|qAy5@n z8g;RuuF(o>OA5bO-N0a$5^sH>F+_$g+6ViNXm3G!z*Ku7Q4+=xja@f1x#1iniPv@< z;A&;OVrJmZ)4Le+0fNMdksIWhJe)rHY^-yI&{>G&eq z`-#+qdAKzA;81*=&iSlnUVm@6#3SuSt$bAHPvt<%d1l1?)=7!71|j#;IjAc+{C!SX zPgr0LBoV|cM!`7I#t4Kpb(TC}Qin%7!X@*ekr3Vo9y)pio=&G+@~E>9Wpg`Xy&yO@ z)2wZF`E^{VlNj#2D-4yh*?2Qq7r@)WXcH0r=3J<%8F8&taL;5?pT5#!Pg8;*(= zEQ?}SI5r7*f_A9!IG-IXv4g++?PvJ&KmTi(g*YB*mau&I{@nw7|NUEPa!GN7ZO7v= zpC^(`9Y?0}yG&DA478v->b6g~aqsTn@$m^>o*(n~-remXM$E2n$>>qpMIaeIaDxPO z>-|rgOlGOh98!kb>ZNtB?Gf=l4FObGz~1$ zL7VLqcC>4jJ4nfY$(=?F({QtKfT*XQ*H3O7@D%KHz@c|Cl`-=)FyWpR9biT;9D= zMqOvP8HQt>aDX6=8h`duy_Ux~T?ZWvk$4p$jFk^0?`Z_?v95rn!aeSSQ9Dez(NSR@ zR7%eBxt>@h)Sc_aM(H8w-Bt`FJIm?-=Ia#ox=Yz~B!fY|zRnHk`{C*vaMyffO;q(rwAWJi0(Y3^y)4B+@f{yEN z3f%F(Jf4Z$_@|%7d=DSqza<8kr{g2p>M^SDM#~kaafXP@KiJUJ#R3a*o#dfa{3_&( zjnnLSLi@gDHUQ%^QlJSP+4-T}Qf7Tndx@2VX@QOo_m=Jb;9)BYe8^UT;weL$h-MD+ z4PC>}LzO9{4~^(JZ)HFBSv8IYE;z8p90v+1Scg;R2m=<|91S-h3uwEe*=!te3Jf6% zJB)!=A-(7zf?zIJ7L<4O^kM)2AOJ~3K~x`KsN8_1!?{6BoDC$!!zS68PfVpa)OD+C zSQ8IS?PjYfQb{5~6em*JI#DSHar}MCJ1^GDM-jA0)RYS*SR-XXw-AkK5M{qO79k?0 znB73EmpH*f5QT=$g7GrK2K5vM zg-wj))RC07k8nv$N2aQ#(=x)BBSJ3DL}T~iZ4VCu+e8SUOC33T6Z$ClObAH`DL*^u zPxK8#MerGneRII~5OIA$fPIe;O#a!W8Oe?<0*%^W!>iEEZu)`zAl%;@glG<^>Cln$ z45FWaYi5cOx)3QS9JU*1H4`ncSA5T1&p0=`ZW%tRv~LY12dBBHR+4mCbX3{Ky*deZ zUYo^ll&UsWoXTytqu>x3u+TTgaXVeqiJqxKg=Xx_=|o)H)L=MkC50>Dp7tnG7`Bk~ zwS@(E)OHg43et79vIa#C9)pjj({rFyynW_N=R_+y_-cE|k-uDsy^N|tv<7`%n+U;S zRTR4Ovd$n^Y(pyFm#R)*09}f;M3zLm@i{qNT}pTo0K+X1M?CnyAmRQ z@9Y4cU%pVb0m<@l@#1?gB1(WtTrB50LmCtFFUzESete-UEjs(CkoV;&zz;wChE$S( z6s7Ko6#es;XL$T_Bw1>30^o9iuzNUGZ8yO7ZcosSPRi47-o2%u0-a|f0XMLSNI;Gx zS%1VdPqevqS=lj>aYo3(IGQd~IRyD2P`!T!fB52`^I>VEOg$+>>AF#anhK=D%-<3x zVRO08ni7KourB>A<_@q<>nfwGhgy||ggQv$m&&?Sqn=?E&SpGQUOynpPnx-;gGt6L ztPV>o>qL=-rSDl%=CzGT8gD7Na)hgg+Bze=VtO$As$a`&+Ne24&bP`{RaM8YKq?MY z!uV^YI`fS+jATVyb?bLRRuyE*LA~gZmhn|q4OnrfItk*419-(t3Xmbxosxstue5>Gv)Wh1U z!yX;z!n@7cP+Gsq35$!h)BL`-4;wnLDT@xpSwV3p!Vk_EU?zB)PdVd*wjfAm7VQ!` zAmQ0y*8`XAL(b?M>c$}O5d*)`3XE2SnLciUVc3zAhHyHdtga*V)t8qOQX;UUn**Ul zN~DfNU|4+?Gs`IV55&vg5Dpr-lFVE^?n<4tokryy*v!+_^7jj$6SPIXgQG zb*3%-vKWfmEIJF;eDM0z0_!U08h;KZ#CfkO&Q$DO6lMk!VCSrCh~n5cd9SZ+V1{ah zM1c>(p7eQ`yEqWnc91M8TFBFBCemfM9Iq5Jt%1BF&URG0ebH<{$C+VXur|P+G3U5wXl;6`n>dTA2y7V zM8BwUu$ABrv(6~tO@WnX_yq=)U9Z7i%J>~zoAVNCpNrrKv6A?=^T|C%C7CnNMe2T% zL?|0ZPjjJ(%PCD6F+lWg9YZj+*KBAxF*z@ZaONnZeimw9Wc!&$oTnq4CWOaCa-ip+ zyz88UM!H3}EEQ!R2VIg(qJ8Ad?|_If0rak63IBn$G}L}$bFs~C3f?{3b*;SOVy~*Nl=<3Cqf4)mMGJCCpzkhiS#Q8N8W_g zXn_ybdWmdGW=)lgP+?CqPXMKyiP$lWG_m~g{@uIW9EcB#&3otb3C7Eb4A{GOALzAh zGmyb1$C+qoPIMnX3EdlJC(vm}3>;>3-#*+!Gc}nu2YsdOeg|n>;OWFFRA*5ve0+R{ z!`%ZM_E@$!!k_*7Pw?_`$rb56l+E@=T3~%Xy^x>)Lxd1W#w7^NEaE z9tD)&^`T@<5+7QOLqhHR8M=N;)KnlPGR z-?@wAt{p6L02uDP?Y6(>fPSX-NAZT!_OQGg>9M@vy;+FY>)cfag(U@N?A& zsEmr48pHzQ51zBip5O`5rSbA+Un&YY7{L4;(Y9eltlTFWs1B163p-7iO?Shp%s)zM?>3Y{Zm48`BF7o8-JXS^x+c)!%Br;mR>eckw09JY z_>?oN3(AEXhiHwLEETY8=ut0Vw-x#l&RiXvSJKD3GwDwt8q2Xqmd$={nx z&9;hBg1BtYr4K|wbH(vf$VRxThGekTTGbSaJuX3kIMQj!_r-!LT2X09Mbh?7VDjd? zTsMAMXaHAj7zU9uoZ2(hxLlP||AUkhJX0Q$!|FJbU&bS`?MaFQ58^mVrf~t{f^Ie) z;m*;C)`}|aMIzjGQl)lMWta0p*Gk|(D_~{ALaSnu1VhS_=}BNxp?7e=##5QQhH%fk zrU@!EY|UDXat7CwZMdAM(0liAn53j6DuH@ zXtXEfG`8H#h?(2Vi3Q!xh#U|}cZ7o>g&j720`+qx8ta9s6qpt1xgW|V*3dSG$ZDj) zK^z7`DVKoNFUa52`IFWv?xuyEM%v+mn zZ`tR%zZ!zM;r#17fz#^LRWI!8^?JQtuh;AKdc9t+*X#9qy253f1YqNvL;|PEL|NH=d^*4`{1)n8qx_o-1 ztT2`1kTz0d4cJ<%pNY=)rHmy`xKVFS`wPvs!cjFDjCFe5B@ zeO6}DX1CbN{FV}sl|v?s9fpD?OH*fBQx&o0lB7`SM3cGJvabVf{L9V0n$QGRR@3jl zrL0#nIWA{H_^R0|l8DIIb(%BPg4@-s9ns{uXzsJ%jzO^gtR&TPOl}$$8oFP^|8XWf zKq+rR#!I$R3Kr%K17|4L&%h>jUfOj8*Md!1U_@w$2CMX{fi-($X;;0D1J9bb8G0L`i;p+U@}%ygmPs2n`c zov;>(fRNz*usn*pGL+>v$S140~(j40%<2W z!D$&`(`_M+5gzUi@Q?n}Kc<)N?^>q4LfEPM71`966WiLKK7E0|{ktFG^W!r#?LbvN z?0rGo&%cWlWC%5x$hvo=YQ|N+#a&3D5&w8@=%M$O3f1p{APGZ2gjm@jFxkMIRh7zD zRRw~k+KYuTsL7dVFpw_YKX`;;rZpM4^t^W^vmSyfeKPbZuXzIjK@kq3Rx{5O4f_E8 z&Ul$k^)8xMYHX1St8Mx# zMk8C1nVKl`zk_z@2~&?&BQ7(`*{f17`WQ|aOBUVdF;}~BzhEPwqdp%#7bl^vvMdcw z8#q&8QE{0nRPH^NN_p~nCV*7eIHRcq13?6F?7Vxe?!}pC_&{tSRf$P;w?Hp3TZ=X9 zvc6npBlxUqSh*5xv$rQdtZhs7pRmYkn_5S(L~7y%C*U--?{miJZ+eCZAsQo13eOSb zK*wtzVKY%}&lKnkAp3+BqK@qvO6ThwBNPk27yUl;gYQ!{1~b;eL={D|piq3Q$qitRx6Sg08jJrnw^eY5c2BB;b_ zj*-YBZaUGw|GIskI9GR9Cod&0QsD6n>=q0SVbwhMn;~|&tLTydLK|QfJn(`FI8%WT zpn}lhZcm@J*>X24%2g|t?yzH;8cgM569hI6eEIx4`WfMhFBfVaQVKo>no9>X(ki(P z{kcpI=AVvi*k8D8ahZ`BlZpRL9ho+w`!ozC-4%gyOg{KX=LpGaH|n%W&850^W=IM-uxt7-3+Bk(mSM}`e3Pp0MLT~V?*^Vu$ALa%Lu zbJxzudY%eB-!DHJjsD_tt15n{ER%v)> z+N$ec@6-NWjhkU$0X^JP5{J`OhrUb22~kP=TWf4Rhsa@1Ex2*Mn$LWXP_GU9xgl}$ z7ut z{f*z!vl8o$+%u`oHBE-k#1+>tKuryoR_ot7(RQxD*u?93)cIl-lnO49*R9$cT}%4; z^1jApI7K5G3a+v(vBF^6<KNdtXpnq9InAw)(k~CP(_WIA`b{>>Hu|6A?R1f_cx*nJT}6 zIV+r@S>?UTc9rqmp`ugdrcP9aT*PL(%zs}P#bgegFTCkAq--yvd_KWQ1n-^XT(gOa zEOm`*C#rHTxgIGR%}I!TpI$VzeKnAsfW!LTD~SbryI! zFQgU<)RcIkvpetO#Q5b#DgOk*u|7lNT5@_1 zA^?I^D};k~9d+(HUz!a-44l%cU_7l9dU&B233lOPLo2>Y8HOoAYD@DDNlhYM%H;yb z=VO-jc5))5l&VhFS#ehF2A-csn5W28FgRhY%hX8N1k-mLxZ4ksg>;1f!Rz?>34Zg# z-@%v17wETl5Y8iIsTYaXbOMQsWFazUXa*5P2@9O3nKPN&0j4=Yc)8^9P`<=DFwTjn zU!p8voJhJoW+*_)9DH4yG-zBs<44`fm;w~1%i{8s^E5=usaqNn(^A%lb5Ufn8{$K) z9R=lub%j<;iQZj(2&}WJ)f#Npw2LK6Qx2-)q$*ytc1Y!ULt~m9jl*M{1K)&9zsQY+ zG6LQ(LI`#kBXTbWVGfc-G>w?o*D9b$`IOAhp0kbiXU5r129sIF#F6-k{&$uAgd&?> zvNHC7S>e`wtPaWINY@T#$+Eti=gPIj+b( zpi~Vi688}?chJ=H_?7BHsUY}jE{db$L`20pHZFg!j$Cw&P{MhGbuAcjl(Ajr3uh8d zk1^7O(IF}sH!JW!`%U%>tQt@$`%D25-**yPFJ z_`T@(V(-Z;c*eHt$|poE>wJZAUaD+y zVOqGh0h#g*+|^!NpNC7TD;jhTnu=~RtRL1XycJmK8Hf&tvVbVpEuR4)JJ0$Vmcp); z%q|$rv;BOmz!IjIY*eb8==HtWfY#br&X8KHwIik!`)tSrBqy7>F|_<>pOrT#;G?%Z-U8ADYsj>5705?QUu0q_N6L zn8HkkY!qI^PMTnF-Vmy1o7FL0y`F`AC`+r2a2P16zu+hdNaJIAh4_!oZ;`UlSty`UY~uk?Rkcm7k-B0kr^`fn=Luo+$REA{@W%5Sww1t#WV{e&${l3 zuBj`u5t}wU=B);*tb4+(D^(#@1m4~c@a`?z7}mV7jof(8d+gV+iy7d0k=tv%`E>y} z!wbooAs+bcu7?m1kls>;0O{lUt~gNG#JAhtkune)(ok(yYA%BYCTx^xxfGxa1;s`X zAdXpB{QK^HQyTz`dJ;!Y9N}_y<2+5d(E*J$9WxvdIPM26RKi4(jO=jlnmvxlu42H{&GOP@}I-uoGxhL9xnsK*HI@Ul2j;e`? z#0a&N=W<-OM2oT{a`O4J*~qa`PFJ~GD-1tV_}{Tm8N{(ASwYXPPUoGebtu z$T$*U_I$N}SOG&`PpkJBN7_2xH=F`Cyv0c8rWDFQbCXJM4&Z7&1jd1x6Aorv&Wxe0 z;p{WhG+{P^voPxTYa?o#D+-oTVBLVZ4o18QmOu{N@>r$mlbAx)K05I%_t_W*9M3=NaW;rZqyML1Q6jLw8!^%9jS=vcrj(;Ok;(j z9#}H%I?H0ifsi`Ku7V>4+6TT7=LwuqnUp4;C6O@6`!{#+@#7u1#0dfts|XIzFD6Gx z8n{3b3oZtDcejI&@7}`UaDXq5KW1e(WK_Te3|1nssoeRcR0L$cQ)OR#p^H-I-Y2f4_xiLWnfMpibd9!qaEV|{TqRy}! zg=>^#Agvv77?oa;J@uF=22r3U!y|pj3`QZ<_p0j$nSZ=Eog~(h3iA}+#v(9@9#vbc zmSG-CA$dR-VlHbkNd<|ajJ451|A^okzLDlw5!^8qKaY+p!B3(HF6n0!h#Dp-o0cm` zIbxwPS||XJg=ljm_ibZ~b!!2NyC6|)Gr(uHRd1tp!o&P3mGXx4|L z-B7yN)QPUTL9vvS81I6-%4kHjloG>8-PcnyF($g-tmvNvgM~LeFEoJqIv$?*I|%F8 z9|q=zY*WsFlQSEc@9^a~!tm(}JU%lV<21T#pm2G$qWY!xOt&XIrgw)eynWci-C>`* zJ-O&!^{3}k?y!G)dg2drg}b(g9UEOT?hS1B2Z-{y$lr{M4dq4g zJ)Iay{yD%rUPv`Z%TYw_E*po-j>w&jJk`j3I8p$i_5e2(64X-!n-n+f^I={}?Xn>x z(*S~X3OUM-r88WnDhLgcM#Pv|0*iS~R(Vc;Zk%`0H@y*@t=688t}20P_MmLglm$Di z6U`q|qHX%!Ss^PmZ*$JXCmttqq#BncljTKuEUqS`Wbxe0dt03L8vn{se>9o++a-Rz zm-Wx1ImFl11RYOZe`S13sZ@jD8{#1AD^~Bh3I)o2uI6d&kW*Gpso@%?YEo%#$_`K& zjw>meEwn-lh?Q2S0r^bTiLQ8*J!h?P-D&nz4?PTE)geZloEJ*Tc`9g84V+WuSVQ%C z$;9hisK|yKW){n@PO|59*xXQY0PCowoOSk68B0Fq ztV%2Nes}vV+#l}X{l^{r_`5GuaRXo+;+M})-sR}sOeE>u&>A5E&kGH~!#lE(ZfzKYkV82m87VRxkrOg>e?kc+mjY{wqJbQkoe=xAqbtT_rrEGn6-ie zX6#UBvI@kLqijB6h`j`cd7Kx4O*Sy6Ab9zd<^O1$h@+Yrb-EOx+o(`nPmV5!`6Hx7 z*xr%~J4yKtDhhH%w*(u(F%t)T<4J-aVMxm| zl5T`1L`irl1{kB2{T5?~kuTwy1SexBAV)6-T<@FOiADoE%PN2R!a#qNzwEXE?GOve z{?ZcdN$e0?8mO;`;S*AhLt2=I;UEYdz>RUY;qt)SclWRt67n62p&%xRWGQvx`8a9u zQ0hE9qKc0gBI1>9TXKvGse6r!MW+-0`LN%>`}+emEG%;9qBH8_0MC~ZLTcgkJi+JB z+z5jX`y82!9t|HJCfjYF!RUzdMy^y(a!}jPv zw~P~oq-CFu9Bh;j$Fb)jEKN~ZPS!c`rV&hSpf!4g$#ye5}NSnw!!<=F?C>RSpzW%tcq6Tm9my{Mzur zuZ|r#Y=)CLtxC)#a~d-}V2tX#w$%aaR^?V_|L7c~q6_MUs5ya(lbGNjD)v{(a?V#I z{9HzzX)mL*j19!SSY9lvB0T9bzCb?>v>*1{Ep)p^*8D{4kU4oL8Vjum;i2tCj-NBl zOno#@*{!ENgX(%nwM6(rTC;3J#&{GP=SiBK8*z#`ydbxFrXf>kNy#RXz(nNC5gsPm ze}L;jog2z9IWGrcS>x6Tw(BFwey-iERO9{)iuu3!sZrW`dwkOFgFi-60 z;26H!CHVG_Kjc6hd0YS8|MfzN0BqjF!{PZShFtvm*T072i4{>9E*2;;ph=4<{0R4l zdlHrCT!Oa`Z*n;mGe!8!`&~!$d1!yp0ho-K0yYCWm1Zagk=DyI zc@NL$i>&7jRr$Vr=3lW$L5QftZc6LgbeHEV` zWZEHrb`ZOKS!P(ZA?4@RK!yToxQ3yqDy0nrQCy^LS+EK@g*k`^xo`dtTt6HD)d9K& z{8&+@hBQnBBzr$zvcxPUeVUY%pl1Odm1M@`W}GtREcTgeRuyeE=`yT%{t*(1FeFSu zVdX>j5Z>KHbG8uv)>bS){UX9=CrTyF?q~*48=fun6|!ot@;M~QNNe>8Bx&WnDHnrN zB|I}rjw&rYwz5aGVy#W{m{5`ZYMV2otVJGI#z8lR|Go&NiQtbqy2&=}MI@ z2c*EmxgC!qQR(gb9kiQBRVkoeGB5BV;`APtPNu zA`@c0^LgAy==w-m?|f=#lL(cBz(!;xi?q%(69%jE`2c6}6+x=6QV<72%6jkL!5KC1bqQkjspDvd%5`l+4KW$FDjlXvWDKzrtTtY! z<3y8)_o0rgZ7{OBwO1ZCmMvYOl z4yBil+eXS$7AvOfRiD{8UmX~n?NP9iy~-H=4h31O00MX-bTL8j17+|B%2w@ zBU*hI7(-KM&Pyq`7@g~rac%s)_tpH_jCBrPR?nO7d3AYLB7Do@P-WoEfp5o>y0U@i zWz(vFk`Xm&TIiyO5rfhxz~O$I10f13BRANB@X6vFzrEK(kk{5_9^i7GNTdk=o&`_a zZ8s!Gi-s4o7S3=gbB9u_O2d>DG>vH4!GRzG2$D&Yb*2igP2;OMyPoUYKl}aHO7h(B ziX&SOa;u`M*__5a*35D=!PD~>`0%iY%Q)u1VAyQnm%sW3{_b~=@Z+aP`0(L998bTY z*Z!CP?Z1OR`s4o??%&=Me*J>N3Fw3gi@@N%p`Z~R<$GjH>I$BECry8Cv!U-|;f*4A zkp!Z`Vl4#=3akChEIyGE2o{RtMJk*R-;~9W$bK1qU>gvFWbi^P`zkk~WvGB;nJIh7 z`&PpjJiv+0)<_Sp?Uh!@EQa~&a_S?M`ByduyJz)WBR{}7$?iK-ZK<>DVC(@x8oVgrT0IK&XHVc zMr{$+rOKp|Fl$;Tu$z+gR|Xw~1mhTCvU5kh6#P0?Zl-C5fI;CDNLoDxFJp%yeY_W6 zd7@vh*X#9qy-BoQUa!~dKk%wB(G;BqknE}Y*PLBq4pu3L_k~UcOGQcrL(mK2 zB$ll1EEHnMO*%VL3K|A}4a+cCj+rha>`+_3ZAc{$p&xj?dDs)y8Cfdkgc6w}9FNcZ zy;Fq!_MXA@mO?EwSHe`tfw`Q}=HWS^1f=kurjG~go5oe}J%S~8P zaWbW9Dix=>&Y1d|+J{O#x!EqQ$Oa0FgwKO<9l7hJ_)D&kbd-g*l>p6zhZu5Zo#eh- zZjxD-+##3lqgh)~aN-(CbB0xMzQI5(Fze5HbrShQ85c|*Xyb^MkN7J}qZ+|7B*o$4 zHI~a8$={rnOgG}V2}(0<0uWSnYyI!?s{k?>xLO^Tn7(+BUv|PCg4qS zP8;~^zxgfv@Y6G(nQCKcI&-L`+ST3o4BgSjA>9*<4^0NIPH>vwxy-K^{&3Cgur9-| ze`c>bQ+@q=>;GmO?nyMRWNi~Q(BODu2J+LVN7(I#Y|E#YGj#n1{*QnAze3mF!!LjJ z_u&`6V(82M(8Is_pZ_&9T@U~GAN>=u+yD2U{uzAv@`YaiyWd>k?yiIX;vfG*_|N~z zpTKU{67-C3%)`^mGbEG+rtGt?S~M zUjRz>T<Nn%%D16l|rUl;~@TaW9RBVC~0>(r>Lu8Z9f5U89XKN035s zBxrzDAI^Jg1trV99Vlv$3b(YLFT{`mrT+uZ&}mYwi9mFBu@NGG*2Bgjr!TMDV<;+zEsP+A>FK2Mz zmX1`bL}^8rsQWG@Fu&u-Zv$ZuBj_W7KIWO$M7wE8Hw4JR4cX`LzHsd8_hQDq?YPq2 zdWOzv6%A>-;M7g|0O>Kpz@o?CXPQ7;c z;<8b^@j@6ni^-ExqAZrM6eBdn8ZKhrkDHyPL{s&etPmMr`BGE%V;Ufzos6jxW@BDN6;yTv7?uQ?L>@3=mMvRrO)lu=q($FggR3@iQ)Vhlqp!k7Po4cMUs}nq@)S%%J}8Odj;J93Bs(Avae@cd*rdKq|a~g zGp|3}Rm>o@QC>U9S8$E|xuKE^=ZhIz7#qzFbWn&`5(#?8&2vtKf;w4Sh@XzY4N&7b z!I$SV%!4k!jvBhsGD8Y8+_fm%i)A@!+jiXP?TOEmgV#;lGWHqm0BqpXwxbY-xJR)m zBbS=FsR+fB6w-mtL=J)y;{g~lBIQO|Qu7k%_toH|0d7qocWds-_+1~U>#GD@DLYEQ z$WnPH^C&ySEaQ5~%ngx*M>gAm_?OZ4A|%Fl3N`ED)2C15=>GTr!+#4e#|ggqhWYl< z<~8mP{?-5Zui>x$>@z$)J(C^!_~Bc6{o8Loz<%rD;eJnZfK8%`m84dT=%^XH>@~xy zjr}Tt&w;k9IqC}+a-p(xOUl8rI#tw{(8X#T4whH7P1XTzY}b3(UIZLv6A=Mt_SY- zU{RY$a3Og`=1Hj{Jq2+a6f+X`2_Q~r#X?7d*&woBo%b3g>TMQ$N8nhShZZNhs=szdn`y z9AgPYH4rRExDy=+Pk{kWeb*LPaI>OutpbR|!4FK_kUzOIOp_4=gaT2<9u6WnlKXEZ z&_L{WcA|BGTcUH2NDy(-*u{yR-FS0|ZPEc{b_LJb4=B+J5LkOtHf~enYIO0vgc-W0 z7jiyHrEkOEjSWR_?hbU5=sY7`%XY(`j}LY_PYirdym^v~m7oAoVLFhEqs_2IiI^C8 zKV8mnxt#LLZL_6GpiM*0DH?9bSzgMT5DMDoXJ}jH=|qPe**-jMmIx3UIPLRXoHbS2(M)Mv;V>x^M~nEHUl@#W=Y}~$(UbWc z)mhL;y#D==H(o8&(iyH<&c0h*Fdwk7vK#9STrx)~C8O}g4T6;Q7bVQ0FU_zv15KMZ z7KOD!`cpCt`GCsfp_{jMc3Ga@f=!6nGqM|Y@NfUk z{|W!QFlb=H0`2IZ{Dc1to}Z5J^yvhD_=n%XfB8@UD|-DO{wLpqcMII@8pawg<)`)qa+;up`7OxW;>Q z)$1m3H;Dui8Jm_o7ELqI9Js4-a#E?nWS;IDsfPCr#Mu$vADeUMS(8UxO~#)y!2#0l z;`yvWNrc{Uj}kiOVVv^$qUyl-OpD_LlZ)30jI8#X3P-y5aK6r5mM(DB87m4&L$*l3RSSbHv}s`sZP#sErUZ@|7d{P}_z z?wOjf^@_PFk@!90BP?hz9Mkk=Z@C*vCJtc=+KAT*lLSgV4jbfj#q_rbrnEgp057Kt zoG)j}>eA13Gm=zfD;f>5m^wWmK@OWOZ48vt9;dQke0!o&3f>2H;v@WHzvs-z%gYI# zpUxy(igb64@RA0lFB0BF&Ugjl8qLNl!zx(1dKZSA83y5j#-YnXEWyJZ#^Q8hnF`DI zsQS|;l8vm`N~FmNB{VVcQ22%}0;{66=HVp6gn8~3d57DobW7dC*wCWoD=A0W1dTq%Mw52b@XakLyw z85jh*B6$wJZ9z`_hZ)e9nHrOIJCWLFVzHH~!AqUfT*?hx z9z|wYWwW8?-ieq$N+rM>`{S6g14=Ve?qmgv7}O%p&hMJGj4l1AqFbe+vKd zU;a<<&;Hpzg<+#`uotS5A!X^y!eUrn9F=K|!~@-QiOPfMG%ZuidxF+X%WEWx1hI9Z zE!`n!jzTpbZ4*h0pd}TxNEImh+?b?t!&QPMLX|k6X0>I>3705*zBxOr&Trx%h^l#& z?@@x5Rt{&4?->;lGkhrtt!cf7iY--@I9&ux=hv`6F&mNmUB#&i`MdI3NOk7VXMT89 z|IH)=1IaDDdBSuGhoT(CsJ=Xgx3 zaZWsE$c9knF%hxBfNPDK;ag#2VH>d|W>_Lk2^7ZIBAW+f=YFAQ>naDos?I`bI&~}f zoL(80Vw_d$7&~B&V*dXvJ9-U&yXM!vwhPW_<$0Bq0%Zd#FhSeQPF&1(u9MG64Wg!` z46gEon|V?;om3hXb?t(%B_XqzO%T-kO`AfEUICOO0-oV0W*uXj&vcN)BmS{fW%@i} zXqiF}=MkA`Mi!_;!iPBL&yJ}Cka>MpS$kxvF(N9YoK})-@vIrXHlx8fhWYO%tOOO?W=zq5SPcV&OenI%V)wxvScEieG z9RM|)bnnC<6ikLx#vvBNP&;oH&Y{fKx+zMQo|UX1(<9o?jv3=-9FY(!M{gZDrwWtU z-heL@frR|*I&T#Fv^2Z`1|JB* zys)0*w1V$ADbuc3Kn_$?4xKX31*`8ldq5rL^E5#>curo(+C^WXpVui$h# zLMxS>`~3&%RDXW?1mAxD2L8pr_;2Xvl%b}8MF2X)MGr7yETe~=qYwk74CJuns^uj7 z_&6R-v}Z)gCTkWyGayK{qy(jbC`^+GSD*;PB0>pEBMBd5J0gzo2$yLgsx*+^7S1-Z zSV|C;)0~NhQdvmCxm(oggkwJ|T)M0X2^#1)!4r$U2qtI%`3B8)uN_VvH%=~KUr{i| z+KD2jwN*Kw6-FX2(�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 P00000NkvXXu0mjfuZd${ diff --git a/assets/images/dq_home_page_bg_image.png b/assets/images/dq_home_page_bg_image.png new file mode 100644 index 0000000000000000000000000000000000000000..f70df2ae30788eafb34888c97002221de6eed4f5 GIT binary patch literal 250257 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 z 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

nOWD#~oW(K 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䪒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 z z+Fwvw1~1fbXX~Rb$Jg$3Ztu<7#+CY~YqbN*2wbg;&h1q&Blq(*VLhs^wo!R5XDJLn zvvR_zbL0a3Lpyi?_wsS|va+6-tl%C6SGFm`e6KQU<4;XEsxE|?y5%uRA(|D6pCvN- zC-sXe(1If{pO7ymzqR3W_9aP8y?Lvoo<&J3y*cw&ocQX>0*s~WV>x7zYo>2`4KFyc zZ};+;^ko62Rj!lri8l#~e=Ku(N*S%TtcQfXa-n%cd}~Ux%ISM0gb0SB1srpNQUDot z9iiS#M@Pl3lUi$(s-V8D5xn1&>(b(yJ~b-WD0aF4lUD#oAZJ^5r(hbx2#FeVklXlD zot1f&mR*?9STjot~Drnth` z2!VsO>6nj+d#P0qYvI5!@1}^)wnp)OqwwcmdL?Z@Ot$jONUK0sx_a=rmK+cqjg%kP zm~|qrJoo(JPc1w@lVJMLAOrV^W*)|r&&M<`m;Tk#`9{mcV2iT^ir$5Jy_;pu)FHti z^Jcp(zxwU1N&kBHGCyhwz(wVZ4lWRQ3kEmp1YXgRjtwI}A?niMC(I9-ofp5;_Ruj? zT$8pbt2ywQaIU@-D||!~c!Q>Ese)bpXv4Z>bw0;e1@EfALdD(Lhsl=?7&n~UcUi!) zzqftAcX+Vw&XJq&-n3!6fT+y#$aK(z1XXQ;C8`1BEfY^X5B;bI-Twqw-v; z{x4NGHk)8jX#b*f8bjf$(a_cBI@k1ANAhJq{mo4sfR7;I`&q$7dA3n+%nq~5f|1V= zIXo)|p|H8d+WCuzOC29Kj4mEzn)B+DE(!SK$MyWusu04K_oxhXo+>mm9lHS)i9{I+ zdK~4hZ-E4z;Ao}*$g%ofMjal#a~NJ%T|dAmdrX~8()kU2^wv%Sc9H~#r7TxUrunTWJf6ccprmwbCc}lo1$~0g^8r-4-}$^VIw1q3Qwtw%K*F+rY-H@Zu5n_^B_` z>*_h4J>yeLvFj>~HV=z4PC1apkk}UodVr{mM!kKlUtoa;>iROh{E;?qF8t zbrC_ApTz5!4?g%{;JnesPvt0;=p@Z`8u&kb@%iD!$1gVcT{ldDLI0r4ji%E^h132< zJW$>8DZVgsR%>;C>B{QN<-g%OT{d>*SH{zWh6OVM(gv!%{$22*%ruQ?%eBs6vOL8) zW`q)ErI^1D_QjtG;P*OE{%S|e4eh07isB}8fdDV$iUa;={bp;sZNg%%h7)Dgo6VB6 zV|laz{h(*^E^Enzgm^;kg_|W?!8h$N8hny+%1(kaZQgl2GX_C~FFv+Mq4pZAW>De% zehLQd)OFi7{#X}zH4Wv=L})wyf_)p=gBUab;l4&pDYr1E(ts6; z4T9PTg!ox$Xg`E?X}h4oz=rm4E|cg$-X~^rE3Z6gH6KTRrtg2!<~VhQ2AqjJf@gNq z{`&hDe)042JGQ^tmz%?0OlfoD%4>t`DNlJX#Cjde>&C4su(!yX!8oEMwV^ZFxt4u?IOQ)-WVhX}R&XgV)*)f+b zf&11#5gg%lDkNlYaBCmSt#p?{n9ufo25Naz{Rc0ha~M`>fdk?D220tG=5YzBOAEC8 zj)MG9&#AP*b;=FQf7bBpfnU#wQRc3Gq{jcGqmgd4%)*Ekkqs{XOqy~!R_)j@%T@j* zSP(L1v2*di{JPCm3BEc`i>2Vqd3(>!5z3dyWy>a;1&fhdUM#8)BOVC;jOC9JOyroII zve(+JGOcXb{~~@@uv5P^@#6Gfomal-lhNVmpjCJJJyvC#{|4 zdV`tqmY26Qo`rL}?e|3LM;v9>c68ui`S8OJr?b{}m|bpypmz5D`|r=SnP8HixP-cE zZ@m`NPsmJ*bhY(KH05qqoA^khu#eGt_3C`Y2i5%+B*6vu!tQ#N-_9Ex+nxQi*#asz z>3~~U_?_8@+!$$j+!zP{?&zKYXZ7)*Ht=FR;-xy`Z|a7l)J*Y8$BlZ{7+)?fjfmwa z=UTUDNlTS!x=7K+g#F7BNpuEW!Lqp_VQck$%4XcMh3!S5-2)(67y zq9t(`JOr+Fm9=!#zX6%YNg7*_C8R3HJ3o5o@P~v~m81^8E}W%I=Td$shy4`jnAUH? zU`T`4B{Xju1Q)wU8I@UHU}E@tPUC|6=`t&?3sT@>O^L5flmw`|3DWXc?<16CuO;P# zGpk3x>ubSxru*o>Zf}xVui9gR*l4OJNf*w!p}Lt-R-Wg9A#7O zAeKIn=LC+;XQdJe?*Zcz>s=E9W?4~X4zmetHuqWjSHB!h)27-ru54!P;9=uJI-*gU zIQim28s0ewpv=_;!IHny>NU7|h*I2_&?euM5>=b7N8c_ld!)cyJ-Z0MNu&P(MZ2*>;nau6hd(j11=&3liaV!`ZwmEIzZr&4qvR!%a`1?IV zXXT%;C*kERJo%^hlxL+S-pFF(e@uVk`8m=-);<=09s8-DKvn?|4Da*rey2jDbCP~e zRfsmmZJhUe23U)yY`y{(?e!^kCfU^`Br5$qYQNs=hX(;SW&zMuhW~%f_f~lR}Gi;EbFm?3Tn;x2DF~XNo?su&b zdp>U$A$;4qpWPuUCs;KOOl9oBFw7yhz0U4*Jx5uvc_ElD)Pdg(bz~kl8J%lWfcwzTB-~vr z{0)8yE5k%-JWuejI>hNzC7%1)$~WaH{*{ie*`4E_!oxoa_cs!Lt=GSpkffu!(lqlT z&ehRQr>B0EuXmhi2GDL=k&m6aAAk6VsW;`+(ZT`TY?=VlHelLQ!JD>(-EClpJNj!H0V{v4m=d%-iw zPa3|Z#YlJKl^ZztYftd!Vc%}z?6~ZVoy`2XUt@7+0y=rupap9ZTIye?Az4Qsqx?K#87h8H%tzxFr zFI>_-i!diLD0_ArJmF^Q7#}MA5ll+xgY7$BC* zhU+xVsDo{+vzGAkUu}ZJ78r9`{uAL??qhgycDjR?!mPA+2DSJ4=BHsMwFxwFr74YL z+Fsz5)}*5d{FVP$kX@dMf+nkuojx~djS|9J+~YIp9Nk7h&wb6>E30}iSUR@9-3D_f zUkQgkwS8}N@qJ+x^-KI%l==8){ve29EFG8Pwk3^6hALX8ggEwtVW=RZnmM4pyb!W9 z!qhMwVW!iFDG?km)R4Rhi3r_UTqnpGf{96nJ;?AVqJ0*dQ=I>cIaaGw06-M3NX zNgjP~vyyr0utSZYUD-|>(<`nsyB@PuZh64%!-N)@Xw1*W*skPfsz=xIBu4&1b@76; zBqJh1>6L`|J5jKm=#z7GPFQlb-QA{N+KvqSVF> zJfa=Xo*L!G|5+TKF4v#4!_79+DfF@GY7L&Gsgp+sJ8$1^G1DP&r(H$AJB)Dq5&!ff zFR;pMKfB@Wa68O?3$LxH4>W0Qq4LXP$6=ShhaZ6zjBYKG{_gx|cXYyDv1grAR6I*a z0xB1SpCRd~ch}IK@A3x6q)Bt<1#b3T4sXwfcPz)B)9&J(4l4*ZW`~=Pe%u5m53nyf zjNvv|GOd0g?c~`y%j<;42DBHVyXP);HFE9nal3Udw0z|KmO|KUm|j#dd6G`TZqRZo+iK9w+~{yWwwoPPB2r``6~Qm_qRnS#r7x_0;0 zD=&APVOI&)Ml3NhAgpH(0{l?2V_WrqgzN;w(wS-g$~I8;jRx-$Si-F~6-3orzY1Qz zqK_I*Qo3ufxM-ETFmPJUEAkx4_-%Y*mb(>~8`!mfTIw%T1ibymo1@u<63cgQXE3 zsjQix)laPcYEU_T(pm;zs6_JZ8KE-|G%{)ACM>)E)u*qp6aKWn1Pimx>G-GJw*80S zyYBPd`JN6qaB_H>(cmn1^)*^pVd9nBoko1)V*K&naa(T#dhJjg^|ypl{a*gzL7STA zRGd8!S%amO*TUFoV4vEbN-qJ4q~L9r0pR~^133|%Y28^T5dqO!(3)BV|5^u@Be0RE zBgUI8P&ZosCW87lA>dX=C1D~{;I59)kcFoeMD#i%n{-U!0&jIrrYsW6ZUF^9DF=ulmVkvb{&yv zESsYU+d2b8X%o&BQy>tSF@U(6HuQYj0}I)&sK+*s+z9{lU~>#cY1+7Tx8pu632daJxL7{nYDCHm<~aIdJV4D1^&aoOR=19om6-#Z+5l@%P?vo~$dqt-m%>}H%#)55z! zO2>#7H2Dh|J;d(>MD39lG+~y8%2~c>ns7s7>x~EDAp~;el!vr-ndglTgI`Ogxq6($ zY27?{ErW@x4StkS{37?xEjYyQW3;fy*jmMJ({R3;HXbbrFP+mklMb`p36q4?9cI(j z3iaoIcX;?@;1Jy~{G2xZikMJQ@0-{Xkx`WI;YC$Q{?%evJ+UrtSxVR%R~O#Xea;a zKmDf>dI|Dyw)0qVm%zKjpT+?<;XT~7H#EJq)-<{VAV&kOEEN`hyQ!;zJ2$W+vgs|* zi9RH!Yr*1;CI{CGJ-GSXUvVOY4ZMyhGt(d&w~B2;UN~3z zzB|er612ns7UpD!zBesr8~fyabf0$5-kzOE|S~;#h!5V}cBx zmJPH=Th^1fm15P!3HBz?q*OXj&8CHNS)TLWFnVu66C5*Wss6bEOWRq>KJV~R`Npkw zWdJ(IzU98c?XZ*5z{-84DRWQo_*2#+obw*ooN^5+IfWVg?4L1x#=e{sqi%wm3+#Bu}*fs5sEm#WBP}aO$Loxy=qd ztqWiMzr=fE!ATZH=?zZi9%>rODb1^-Q<^96zF_NdP+xFgIsFN6ldl)tTFv)* z>Ji-=%*MR`S+@#up54`^dRj9?tBCDt~&YGgxTfq?ik!HTwAjzT`=LKl)BxAXZjOdt(`?oWMdW|vKG!h{*r(4Uz?Z; zCAoJ(@82#lI`U@T@nrYlM@Qr%o%0q1oDR9u6=Qh!vw^`a$xX3>YH#8r{Z9#6O)^)W z_aS|6uPFXgjfR{1zLfDK#m%z zDzFJy0j$lERS4JgJPSMlwv`bc3$y`yfaU_*>A*Z-y-mg>495dkfDIY$G;qMNH~u>C zqR8WoIZ?x2V3}k83g`ibiiB51xH@2(V}BC33v>hLQ=xbm;Rb;Zj{PhR!=#kQ7T0h64NTShVvRf&0!wpya2U7=JoQ4c zzzI(lqk;K3&I;o`@WTtmxDvvs+_Pv`>6^2?G2uTYh4YxBVW>}~+i-CNxB*NA-c~96 zTrvKKD*AE288xBpo^UO?tQc0Eb5*U;tQagQ^fNcNetZq+^MpHrZ_3pe?2o>yNoDaG zcoya{;Xdu~aAEy;pTgVYWks`&_5AM|CIBbobrv%<43j;r8s~TLP77_goI0000 diff --git a/assets/images/new-design/height_icon.png b/assets/images/new-design/height_icon.png index a3a8575f416e97961faf1cd20f809f26736f6a32..cca88ac06a16a8e82af637eb00af2f27247f5b25 100644 GIT binary patch literal 475 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 Eg6yB|NdN!< literal 0 HcmV?d00001 diff --git a/assets/images/online_payments_bg.png b/assets/images/online_payments_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..72f8e331ece6a8d245514c2b0b1233fc1cf117b9 GIT binary patch literal 19656 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 P00000NkvXXu0mjf)EUKU literal 0 HcmV?d00001 diff --git a/assets/images/progress-loading.gif b/assets/images/progress-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d7769b732f1fc2da23c751b286be585d5422682 GIT binary patch literal 142460 zcmeFY=T}qT+Ah43kU~dMK?Ds&dWoP^(O5u`7NjdGO7D>l0)}2i6a}OiKzcFKyI`T0 zP^9-7dZ?l2<+snXpL0IE&-nw+*z3z$bFRCtd5^j7F~@a1P*s+ddtpw)0;3!PR4SFb zlf>P%$lbZf-9_T*Bq2LU=i3)}J4tNq3s*WwJY9=OB8jPG{)9^9?OJ4QTe#A-c&2s! zatG;R2Z^(T#N0a1&@yK|zRuG@;%X-`HqRX%pX?oM zPQKH>!qGuGIH7JF9`kmPs>yqLL#rI^3uoIFB)bzKcD)s2(QJGV%x&N?&0{}(T(mUw$4TNw)rz{^Nh{2 z0W+ICT_k?u;`vsRMEBAWmHKz*@O;N&^5PC#8;PZ5zH9q{wUczEWAR4cGIPtE;qaO$ zagn%l_;G&gkV@s~TwFakYTY>y>?E0tu8|Ioo{p^b?jG_I7c-W3WqX!JcMtf8iwO(c zRqK16(;JF?%dzv@#O;IIeamcJBmp96WbbI>@Tg*);y<&=+p+kWv>m&+y}WrOg zvM@wB+@(_2506y`S53#(Cn*Q=y-Qrbuw{VTJdqQp7Iq;a?+&nr?S>DZA-rYJp?%6rmJU-q(KG`{@M$B(< zw=Yy9I5UJ3KkzXd6T=k;K!zczkmD1;|Gy$6Ul^?v919g)Q#Rg`<;GM<+bQ zCF%*4=Txj?;k4j^|KsAO(rYT|>fF17QIZr#K|rUkPNxhtFv$BaTwa{sZ{GI6zA&{l zcR{{1x3qRpk+_Bula!Q4Nz31mLjKpqbL!2>%tHRredYi1bvjby zv2t<2%1cPNySt0KONl!=SxQ`!larG`NlHjcik(V`IeR*|yzmfnaOVBDh5P2trcTya z7i&ic+5ODfPuCMEsPV$o+TouWp?|4pXvnKNIJ>-XFf~`bugG(1MBLiiO#b@ad)Mzs zDa)ah@5o)drgT^Cx{|W&>5R1O4JoDT*Y5mV_r9a4tG&5{%fEHa{fft*Nf6tSB!lEh#SgPWV<>ke`>E zlbw~B@ijdy75^nAIVmyWb9`Lvr;jlo-bcTSdK(!L9u^uB926Mf?}vNi>*M{}%hSW% z&DF)(=@r(|!QRf+#@fo#!raXC4Td2D28ps%N^^GF+`rKzE=_E1&jfwI#5 zdw1`kZ{Je9sUR;WDK3*PfH*va?+{e~$I+ z85U+HMh1F1S_B*hrGbD?_XqBM8d?B21VsPYMgIAV0thNVq2*K|;2Q!Etis04gw$Ul zEW8hsRKBPEiC~wq8EyWa-t-Q6FPu}g=xa-ipiZuFOHoE!9LlscNwqk$BT?3QX|$y{ ztLqCofR5{7Np^R-N{sN+){>mwEKK^thkr8`T+VXnl%+0 zGtDs~&pT@>w-$)$YF{*Kt9F(Li)|-5YpW^ilfNRUSG4MC_P0pAdC$A*Y7Z&onYJ%l zKkAMT_qLWNx_K6@tW<}PXG9U3My8-4$R_3V2U z{+!tl>e7p|F&Jf`xsST~)^nc>Epp~!jolXK;!J{t=Hty`t>-^mW#-H$*p)5LCt@3g z7Lr{0trwC#=5rQOymuEDzTjZOBz)in8&Ya0e=aF4QhJG$9<40A`1PZ{&0f=N-^A^55jv+_4vMax$<+fYrSTkY2e?6x{&7xK3{Z&Fsay3la3 zZQ^}4`|WNOfr9NGb(z)eUd#irojzRy`<=grmIXWg#_p>-112G2yMtzN_Paw?Sp~bp zcIB(PBiJS}%BahLJ!Q;ep@1^(O`)z*CU9`^y~#i}hrOv#fx^A%NSU?0ndk@N`?DVn z9QNnpEerSOlib(#7w{qC2c)lY4hM_bS%n8n`Q>W|%Y-KJ!t=yUhC07V&|^@phkq)Xk}O8NT9A-PF{dbB;@NIl+L_(nZBqO6}*AOjwNtJH%z$T);L9?aHU50fYRu|(o& z1XLR69+Umq+wm}&<_0D&asZMc74bmj=h*~uprCpxok8=@3svMGRAefHrOGdkVREo+ zdn%KA^RLSXJ>tN#@j^Qg3 zuG)N;V>3Eb{VNY!OS7{4=KJW#uY3ZkEe{`Weu!`X$}iK>qUp66gJ;MPe4yI;C}Hzs zwt9xJK})NC)#fKcWQM4vYTM)C&De_e3~~3Cwr2;MarF$Ds1VimmmFL1&FYzwaV_l@ z@>`#Yk(t-CR6A@QZzT-2XG)j1bU1izB~CJA$u_BWIwfo+k<_!~2U?0FJs%RbzY1#PJTz$SiLKhsK)uaTw|v-}Fua{9+mWN`-rAdT zu$_fw%*BK}>`UX=$yU+GeH7Q)mnpxKgL#{)oAvN-?&F@*WSg_Lo)d6ky-x8818>s2biW^ytWYMrj?WJJ|V#W6U>!s}26-*d>H& zWT8=^Kk%|WSX)+ls}Ya5-Hr&JQ(7P@4q zjV(QC&Bc~( z#Bp?d5qHjfV`D8L;+6fQY%?V$+)`kxGAE);I75U3XQ6O71Y)lT@W*!6T8YDhoo>Yi z1*;B@hr{ESaR3b(aJ-!eI)eZp4E2Ds^T-$^o4=;?*umModVDvytYlTp!D->iSRzKI zdWv!Fb;RogDpP$0baFN5LG?tRn@2Gew;t&Jdh}pirmX4MAyQ{#_>dp?m8WPAj!yzO zs3E&jIw_7}wj)zLyL-h?HDAR(Ihx~jcl(pv@#<|`((LF3&qfH==_6axaO+CtpQkDI z@%K1~uTSiE@TP1zUP)fK@ng5kmB}g1;CSl(?aGet_UaIm!klTNl2Yulr%qWQtNTW0$B%oF(j-vY*ik5WfVXV>?s z67MG*<|JMOEst;2!@ahunH`2gZZ9`oQQV?j-fWq9ayUtGWe@RTcJ~OR zI0u!#PF(PK-{efrba~>;tY;<2$ca!2b>EmovttV z`m?>cRgP6?a=IblX&B-GLi@dl^EfBtG0)~BALkr6;7D)aaJ$^$Xx=|6GGK32ibEp&GwL!aj^IBJ?i(0%nqib3gD*Z zLk-=73bH&+NOo<+*B0fkpU0^sqJwAo{oLXlTP$7Q4TM~hb$(wF%2M%$yx@6d&klwM z5=r6jvYje^1IR(YbSuaE&8{CjLV_u;j4MJc*+Uo&?Xwr`peTS253r&mf(<+?Y1~Hi zaSa|3cI95~16XjpvsipUnY$yYJiOe>UL0W$WdT?*AR!jGBnq$yaY&4IyG(KUo9#8I z63R;nctCmgp~6*?EowC+e9j7Mg$RTi08ld6BpUKQ8s>`!iQ=I!0__=-cYO=5!mPqK zWLzbh-=Jk3YT-W32$%QqQH%p`E91NdEbO5e&{;gFn1$g18h(xnfDkP1#RKn644m(J zygM)8ptAR#Q}7k95bz^AJaORFFAul2K|3WQ+*^UyhtdE&3b=y=iA^%TK+-3n;l@Z1 z0{1b>@a-A4D1FMi6N?Yt*`b=&5gP*`!7|Z*1ni5gz%Qc#)=79yG!17x?PVm$7!!Nf z+QEv})u!@YYp4^bo@vG8W3Wn`1{)ZM@Nmj`8&)2bZt!k0-iZeIJQw^Ph5@mlU~-e7 za5RF+gf@+ZRtyUin#6{Nsg3iy*)Er>9@sI&RwtXd^>#jaP7Y$s;f*6TFDiMDj4Y@=Boe@rD z^a5SNK^cbehWJ!Q0*E~!^@;th$|tL zYZ#CYPdz`3XGFm+plD=5GSe``mF&uaq)DE-u!VvU}Ux=8eEEp z1e58q!gF&Ia=(%3gzMo1jy!@5qUdp6kqtr`4-O{K<)dl!i3kZCkd%|GROuMX0^Gqf zpeEry7^aF=+A^EG92-PdYi@xJB4v_RxSpmKLmLOs%A(C8kQqQ#jJ086d0&79yPpv| zSb_k$M`ny8f{2s!b!fV}diuSpZ(niW>T$I7ct+4A0{97mn#%~IXP{G~iwEdxP;m8V zIuRVe17wN|eNwT?mmmUX2;c`;dS^W2JAe*|AmEXwDujCMx832Qy;geBMEXiJ9VZUL zM8(jkNEa5PGv*IISXw96hlYHS_gM1+iQ^GH7#k)cNDT|W%mNj|02iZQ4JZd2UIgfH zDVGWK&L*^4!ZywTR6zu+nD{pAqJxo)J%UWbHVLuAG3Lz!YAj3v1ds*A1tt%K5*W-e zP$U5oF=-P4K&hU9c|^3Hp_+46{AetggTQz%n$B_3rpW|x83ST90WMm9(u)IwOlUTu zX&+%Bh0<_$La{y}tA8*22BKsp-hLJjVq>X{skV8Bgm&ZLq8JceeN1~cpp1uwW2*Bq zi*M%TT#v6PDXAEnuOJIo7B+rKn*=QlRkOkEIRF?EO;2R0eR253j2cn%GyWYku1q(t zoP!9IT&lH4!!*%J{kD!YERZ_{=xsdY9ZPKlhRHOqDn-~&{6U?%wewmWcmq{Uyi}`0 zgwp|#YnTYGkPI*j*a3;KB-7Ti6lS#j01kj1H>cpxh()jPnON`*d>!qIjVcx)2S7N0 z2C-}pZZwFO1(AcH{raRTYoq~|U~efBOdkSpkZXQd+o(oEUroX!@DZ&ZZ=}3|t7N!N z^shXNs-WeDMv~pF{ovL(r>KaZN|81iNSaqBUD7m;q}> zVL+&r;;su|erz)~znLlr{(NBnqB%!%!29DURH(*AgN5-4vN;eQ=__wfj|Q1wz;-OH z@|?7-D6m_!f0}#Qs71(k`o?a0;9C;p4!))M=Ig`8Mm%RzM%j;Jk@m6OU$m4zzAH8w zc&1kXM9T#BfgLQ0ZH_^Am{d3CRu^&~*$p2#j*hmzWM~s5(=@V!Q20PM}qzBPXR?4t-4d?iWV(Z6NT6af@idl6ucuFI#|wWO8NBom<1-k&}R0zr|T0v*=QH_Mpod)yX# zD)<_z*n0iK+qbS3YlFosJS?{?2T=d@)(WVve zf$2mwARimW;Kc9UPwUhBrM}+*^Vb9(a4UK6n6vM*Mb$VFVYWOdFjU3M;Myw-|P-Y?R$0aUT(yb2>{Q@5Aj#3rc0k0LfGFmZfRlo zD~D{GCWQp=^;RV{XGAci8@GxYy^i~6$9yJI?*U-pGn!#B@!1aO%Ab%I=s30?kG@d0 zq|wTM(V3l+^G;ONZk{DDG=!dMB*|i;!#HAmxA$u8V8(?qg}kYj!%k)yRi}Oy0tL8< zo_JH!KfUsL{U&a9cN8r)*2n198`lv%Yf1lprqO=-bL{AJ`w)c^N`szyT-z{?1tKG7 zv&(1wGFj?GhPvi!7{qN%^WhFak8rbFyH)df@owtps=Lp|-tDP0xUuk_*g=uil0*hS zkwGskBXX>{gTE()8u_dHHErG`qZp=1|7~G-pDpbBLT4;E8w)BVGdN==zL>z7eMdsZ z8-43x;dM4Lc$(jn@N>0M?)ejM?=M1MEOx|#SqY%WWLhcMU|9lL`=!vbx#$9tNx1DBh@C^T&|3M%{L&lZYC0^2xs@}33@m=eIj0K?b` zLnzgRMw9^E7;}vAwS`Q1GZ44(^AbTAs3;j!iUSwIXcf@3*T~>&EWn!his*BONRzdY zU4$?ij$)y^77c+9d9mHLJ*?kSlbi8of`}2Id?pY_d_x+HF$E0|z`*$NS;3tED*)0$ z(^N;C(E)N3q~CEJNiRhMG4Fcp~VB z*8ax{x>z)wstIHr3xlIUU~*XS+D^#F_RueZcjK`KNQUzO%#93cq@w85>uKaoAk$y+ zgfS;ot-0RyG=Vs9={s{7B0XO;gLa>TMC&0E0Lu+^wAEA^D=!mpPTXve z$Q>fn@^TR$N<$kH!T#A!^benYj-m8!v$iun{NjCj1dYi>lX_gN=<}j;Nc`NbBstf$ z*`eMAE&QDzrmK(pNZMajKZ%fLEzfU07T%xX z=g;UVn|wzGoM(L$-saQ{nKQm7_aR*MpyBa{uR4T~)nmT~S}GUICSN2fdTMpO^oC>b z)n}u7uV!05Nm!1L?mLsZGqk#dhYws!Y@Sw`Khb%uzWSJkfr#e5a~}CJH`Yqr%Oc^?UJS#| zs6u^siwUtFS7CP0p^z}_6()b-iOYr(yXnVQ${e;O8;#Q(ecIoBN?zyOKW)(0#8v~1 z0T4u379Vs0X%(o7Nc$++Dw$^25K7Oo-w@2|rfYSED+&estl7%vA9@R`&H5SjQX3k} z^`bKHBJ=MGyq|K4nUmJ7C(%ePS}Poy1D8lT zYmS&Bbg|Wk7sk&8T>8W%b{zqYJgnMQwda-YT6Z!+;~zuD3k3%e=~fMCj);P882+4n6%!m)ugGLarr zexSf3O#Gk z&@VQS?n-5t4O(RqfYL?F*kK~-247~uWsY6?bPRl47eog($nj?>39mdtl2lLoJn~GG zzOg%no|}x~_8Y%-<@~em#jD3M{fX`;o}~1+6oCoK$bm<~TQ?>G&mu ztM^#h1o234`b9nO{lPaimt5+y%Bj9bTLZVpHorkOM`pXfX^ZG^JmJ6KC%|U{!w{6H zHTQ#^_s~96)1j7GHigyN`?|wI_;kY}>TQ-_Odv1clnbXI2VI$&%2*y-4>?v5bEl9_ ziU>t%X7ftc{DPwJIFN3|-QTb1wQmnkGQV4hJw3nY#=d$q zcy{z^J#&@EZ?12@LT@E;BeYc#S_R8wd%hE1?c|wW74uY8Kj?@yZAl+1Yiy!FdGAJ- zjYFnlnl*$oneNL%7))3|M8&foMnBA6z8$Y>JpU-JdiJ^S`OO?wIR^zPP$FvX{5P#4 z8uzMuaA6;#3(5pZ_ghD%SAOZY^-wn+C63Hm$e3=c1HhJ*t+6gN#^|>;?2daofkw8i z=;2KangvWAJtHBAu87}?$8TEPKHk^D1w)g*9Q5zz*&2kVpG z0^QALVJP(5v>J1?;(>N_@W-b)zgwml=s5R0-@U4c@V^p&r!GX^?2~T1m6DN1H-N$= zV5h7eC>`kFVW)kvsP)~cPmc!0G-WH&(a1HTU%Whx$4}m8u%G(ZQyU0Z6GL$v-)+8s z-RaJ{d)3yc!%H{`gJz5v zUmN}weib7pWFh)~p=IxrIyIFaRS#EA6|E9CJLA5GKF85rnGUu7ka}O}(dRhBzD)hn zp6YZ>j)>ZrrE8%d?889nEHoF7aJ1Og{JRb;^m2Si2O)%*8Qg04#mTGEHggAO$iQ$C zyLLucQQWP(AYr|y2Gvl+9mGm>00Je%@;lzYI(#zdQW6EWyz}$==wBM+(__&)=)en) z{*JAt(LMQ_W&mHDGX~&>^;ZI>H6QZ*_`PaRc*{@^ra>~qA{Yr`XM#b2+A%CQCux;2 zFs@0ww8W4pQ%m+Qwj~VQ2=$UtBs2KjI55qXI*Is*4xl+_0@r%^$y(#yC%b^0*x8`- z{4J*8Mlf$PK7mSCChBa9Uzn#B^j+3_SSTFY!|P9jxZ7r=3B(G;n2SB10$;C(Tsm9K z3l{~`zLdY8I1(ADQbV61N8f%G@qNiwLek?8$_e?${UuHOXT}C zY;b2HC;hGZK*fws=(B4`_)VHi%)0Emgd8;V3g*RyOfro`&3(G_vQtn)|9ViS3t(&d zWMs%8kX@Z609d&`YNwlXDWXSQE9=SFvh+jh-QMp;F{}rB$wJSfv;(NSBh{c}0A(SGb00CrCWa^}(daL2%3 z>|=&i*CNkEIiR>W?P2gs45@+Rt0WpM{vI?E6@0r|k}k*sWV~eqqIChW_2F`(I8P67 zR=}JI&G-4S+7$J8p7l%TEef zeE{7}JWYk*17_iC(7UpC>C&k`Ng5JRqdvbg&*OhdxQ!t>1yeaJ3H6{y(f+#TYDAgcnf62a4V z`D0N4ge3rk4(2D{=Gp+OkpTZifPMu~^9ZEB8BAXSJ$D)t8G>MefOy1K_h~VZ+vkn% z{C0{p@}qtj_>63T1qK{cnJ$9~yohAJOv*I_zmpUUxB>(YRC7y2L%H!_yGy`| znz*2PdIFi2-}H`1&0YM`xink@9miQnwx3`qM9##&vMOB;5zI}*(P4nc@+nlPV1Ni2 zxVIOlAn*4mx{Mwbz{#E^xQ!S3n!@_??j6qi?}p!{vy?CWOaY?;Bt86?5dmr{8EQa? zEY6P&dFKA-xHv%^O@+UTVUQfI{*o6&ngr%G@lzaS>Ryr)8m&tPc<)9k8Et148PdH? zE0_?(Au0d}62y-ax@QCCCPHMekSlj{HA?&;2pZ|^K;9Z|b(SDzc0U?&(q=$%xrY)d zLCImIvG~#F4`-szh5EtJG{)FK&g);Vl4ul7{OItR(&1q&*nl(feikahmN!#h2?jZ{ z)1W;3pu`k5`GO=ApW{uHz@r@TuZ4{l^Uq-bUNlb25UgF3>e>gPss%m}(n*R%_)TpD zm^24?yC5a911;h~;wr#&tKj+>Nme1zBxFutl4`6a{wEEfdY5rMkcR*j#*kN0q=XIcgrj{WW&q_7Hs zQ|*s&JHN16cY|v9=TB@_IPUCV8FB_c2CgXBTGjWvLJ(jzRDLd2K@1{o%>*9&*f@WHNPI!_v4r|ISB zYVdBV3l(d9?$csg#ryy@P3~zi4&u1kF%v6+oT2`-?43g|F|&4Bs7FCRzOpEUHu&9a zh~LC;jcI3tw8b9N1Luk3qhGHIV%QC}=lsH^X#&`Sh@09$wDx|=1k8+I0ch```?R*$ z*rT^$w6&k(v^O+UM7z25nlx4XcvsukXhBqVz<|XaRGpws?n*A{U#) z`Lml+NQvXlG0|QH;hu9C?Hf=gY1iIa^{ax(I{Qh5-zs}UhIQ0xbstXsoM_gNWNg($ zVfYktHLiE^yY>kx;@~79Q7%Dsdp(2XGa5eh_Yp+Roer($(~aiuiYZaXwP)#lZ;rZN z)MLG6Z#`4R{zXF$4_0mNoxXDwu*(?0MzUdT@~`q3pWqHoWYS-^LpUxz+3vTF8JB^R zM%1cte>^~>&(^Ep>@rqVrrOZfobx-Y5(L+{s)C31&Gz%zi@vPwa$+>}`%5=GbcrS# z)M^L23r*+w3%~!VGBq`exD9!Uq@h0FNtTHxD&uu*-m0(e4KQ*UzUMN^6&x&=9dy+* z)N&2F9yC~B)U{DHpy3q|7|~UHzs<3m_=m?RWz{GPHB^emo#FDg@KAHD`5U596AJBs z1@&qtVG>sjc@7Mt$CSU+KF;^KvsM#7stfs~s0}IbQ*pXS2LwFR$cPNm%B>L)sxGn1 ze{9(PxH9=k3ifLZ9d2|~BfU1ApA-m}#Ykb>%gmdhIM8m5;XtZUsS@Dygs@$s{F}k3 zDtR>jYL-9%t;6TPF!FFvP@3z}6F#M^xR3OYYW43ue3EF+q4gm-N?5MeaYPLkOutJEy0E8sqPu>Z25gI8=;AYq<>tA30@% zpJwP!h>cCUBKtCWwRy$Xh_o$w&o;#j=D8ALxO%_c;4_T(zZD%4GI#Hh(343e_d zl~p;i*ctoCk9h)(Od{%s#z4PoCDspoEc^=e+ z(f9Axad$jAaA9Ydq?o$63IVYME^Fj~t#oeVOb*48l(LQJ8q>I|Oc?4?89QH?K5ZV} zU~)oCIigJ9HqUvo&p%BrKyu@LiUpj-PU(hEsbovPcw0`F$(Ovt#nm~juQ5GdOEjtl z&g^CgH3!mW`?Ira+6pI7Ph0%(KMzXg@vZmPM>%y?eg4$P#*WO`57UkDR;mQb!E{%j_f z78Z(obO31A)0B)sbCTwq6?qd_e;C(UaE;Ar&bQpYJau9X<=^uY%f@jG26A6hd;J0s ziwAhge)n;KGO=?HeWr7GFns2wIq<}{P+ zWf=^#y3AIOXsfbkt5P3a53@Um3;d}J`rQco{cOc}GDwa9GA0KoE7YWLFe~ey{@7t` zhs!nd%XKF!buhbbe!E|{R(^=v{gSrRLxY|pgZK=CjI07_faRg5oW*skex>-&h)dEO z%v30gpRA#uqpbh^J&3ePz-<)=X-weEGY2J1AXn%b*I)pbtiPfP&B`tCbpIMJB4CXP zLhcXJLj>r`LT`qG%_l*MsO*m%z+{c8#)u$NeWDcS3`A2l!hw5Jm=7>m_4z03?j2Qjb*;^-^5$$sL93UR@W zv(yTlGwA&DR~IZdqz22SJT|0crP(kL#yo!k6CA>wPvH|cV`#t`c;%TZo7~JB;+R)g zuzu%mZ@#g8#pbbbKFeP`{*_q_NCEh1yE08TvB~9T%&^XP`%{FuEWpbGeceIm6b zWw0gX=zPO+OZwf`4HUZ0T$r0h-u=Wkc zt`?3BgEPmX5(h7v8Gphi0(7Kp4fl7LkR9=@=#Is0!vSfn2d;W>Fv@C|hW(80P=fmJ z%c|ep6#J1Q`#Km^5Y3=J=boG5-mVxrP>dMhMA_veLR<~p4LopIcXt{L#iPs5;|`)4sm^EOLD@I+Z{H5TuP`BB*|&rA#nwvZZjH>Dc*5&uOZ6J&!&091Itnj+>=o|)O{LGT?aM~KvRySz zn{ImN-OH>-_{RVBz}s%+TjJc^x<`j)Ke}7>BYJ-vH}cvR94Aoyr;i)5EMbK%Lu|fY zmv3Y@9XX^PmmVZk7if*XInk85-{SmroH>m>scX{x$p24TaAf%m{PDrc^jzHYVSnGP z2a*y)m6ylo81D+I%BQE#`pml@UrE>x9=%l5G`jI-WD6eZ1BRa!wIU;b2GX%f+L6fI zzeCRoJj%D);AxEHka1ceZSbl@1IiyntvC5v0>EH`-Qwoe_BgP95hn_t(E$>%ESp{Y zAfWL@%DQ#-b8m)b+AX8AjHnm@^o8c-&vU>h;ht0(Q-?nfZ}1HgUN(IYv)vUPF0mOX zvR~d68?A6!P`+d*rt7i$et3EWD3Y%Nr7M}Q_TP<&)N|Bsz zPmpn5TiKT)5z`*Th=)>2p4NV%oNW~Hyw=|kesQ2=C~nbiv?^J?O#X(G?bo~~vEmL# zvYWH5aZ-+JN1n=kJz5;Ux%M12TR%J>3CylP9LQIi%kQdQdAyy5*o{8jCtO#@ZMU^QJ@H!bD^Cdwy1_rFF7v7B zqX8HHc^vL)f(K8yP;LcJ1mwaV4*(src!u4$VVD^5L~-Y`TJ+zt#}0Gm?!B0Wzwl?e zkGV5uf^iqEdmm}bT||F)Q|fUw*2t#vYTQ#Wf;V0=IG)NC^6Rfky#2Wg=LbV5*M_Fv zkDXT?3bAigKKE|k$ntZX&%wR`-j7b+%EhG4V=~YTY%ya(uxoRY9*X5@M6#fPeQ z!xHm9ZOER-eCc^upVJ|KC|c6}P(eQz#Ze;km1j8QQ-SeRZccDgQGXwyP$+S#Vx!@@ zSoLbvp?FP}eqL_;&}E~qk0OF8>0b#xhNgO;kU^5|p07dgx52Y)62BM~j!?g;9kvBF z&t5zceJ*{m9{nA7z5KoWdfk4a8H>MYQjC;Rjbxix^$}I_DeIMl=s$)pYT_C>OB-6HOwUuJ)w$%?Cvv1~mTT@2Ng=-SOF4O+-K4MIWH*++x7|`$g_K6I zMQ9DwDXiD(_$oZiXj@U(_;cx-44I#n`Ea8{fqHYa<_U)7XWo9Y|`TdU{w@*6*ba}}dcKi|& z%$i+KFmq6=dV-|k6>JDU*ZFEI0SS}JZU{K)!ex#i5%&Ze4qX=mcy4mjLF0wdpHV^L z-l<2kjd#5o2*J|E6HgxoRb1L6gxuO@p7j;{&3*QjoQnw0*_iC#S0%rPX?pXVOBehj z^yquIehtrs;_N?SPTwP*9r3XL5^TKo;d`XTOr`=q#_;aT>|MhgC4(mt73H>$v(#1I)_D;o#<463mzl1tpeJD`%8;T3mm9EBE~bq1C>3cg>JPX&$e<0 zYBx*2`5udyKtu)`&Xy5^6-8gN<_-RlEc+hiBWlJgGSu>@tSGit)Iut6sKcqOIOSN> z>Ym7O_lL5QOhqvpoxI_{MP;RhK4NyJA|pdRWo2cxr%au^k+IFP^15R&Y=Fq<)Y!xW2;W()#JzF9=}A!H$Ift%qvQG_2!N5 z6qVPm`AB%rh)nGFl-KRnO89Q&O&o8Q|2R38z(GVOL97+^uv;j9*8EARR7C@mFDj5% zbc$A|;^&1rRIpV36r*#+ugfQ>(0iiOXJRUT^WVBg4cEz^K3`n%N8I;Xq^ao4#omfW z>AGuC&iON3TNO>WPOe1pKYLZGvPIKZ@?*N_oRCgstA3qiY;pda zm~&;@vlGeqU!wEZVk+A$Zb>Ed=Fi_KuIzB|l}efsU6AXo>~yP>O4-U^P~58Q@;#Bl zL&QjTSgVM^x2~tL7Lb%q;iXZh@KRo}MOB@up4htUnNkId8qQU{DJR#n?};sGpTbKs zZ{5h%DOl1guKHW(dn4aeY}u%{s=uu6Mxk@T^3$!Vfx43$gaEOX7p&ETjklzWVhUEw zrK*QIeWgp%#a69#s)zgQq|1s6R_&duN5)U2D}Jqrt-Xq=9-Y4>Q`K9r=2~1mw&p8S zGb6U{*?WpFt&^$SDp>c~s-8GGk*SA>ll@q0CSkW_f3g;mgQRMvnBK_#<`v%v)2W%h z@I$sys&M12bIr_Us%-N;@y+)!HM9J;)F|{iew-tta3wKM4YgZlKD2&dCQ!0CF*W7+6jBgcEYPV|FeW?nQ5Q)78);ey4~8zTFAFS{xbS&AMBccufXEbm!V#>#%(Q; zvAO%qe+TsXogb}_&MM02b?YaWyz^xL7XhZ@^8X^h=o}6Y7M7J3cdP>H)gvGl9DqOr z*xRpJJ1uahBpG|_H`OCOg_)IK#2i4_>hV*COl|5@$5(J10LD^k;Fs5Y7G94GFvFLPRZ=S_19lJFPhvV+<^0hx4$iC@5j~=Vr-Ecdbc{&(c>-0DA~`zEkd1 zWPt4z@Q`crGyvj&jvkAvb|m+9Ha-|bjGTUH@>k!;NC6Z&{Pj>Q^>26{-AJK2TvL3YE=o&WEU_ks>leefkC69~*?gv$3nY zZ(3x1<}3g@7D$(eW4DJIjOCTNmE)gy2baOn4}%UTA%5i0a74(P-!gBZcqqpy<^+X! zf&u7EfQ<)l29<$Ok2gvNZ>mXwIpr^$?nRprzuy!9c_~+;52Dp0gJS!aGEHME;@f1^#SyUor3>4@O+XfK0KcP;&+h zmhPqrhyer4$2*CCcKV+E*0;&;L^)b!=xt3_3{mzI#Lyo~1|S&F1p>$;n$8tVpN|Gz zFagx}!!(87>NL5DAY9lC0D2ZMG&;`92;j!Wz4narS&YMl#m$z*c@D*SRRYjS>>qd_ zTb47?BK}bDGd8uc5M#i|B}R3n3^2C$5257mqL&L0`u`Cm0!QfCV{_K^@Tyz$73~0G|Q~ zb6XN7=M!Qq18H_dHY}HGn0$6U076sm3jyd4rWCJUnhcF35;UV>GH#112n_{2Qwh2 zqdC5wMSYbN{(49L>j*jB01KcnkTYa^+P!!VYp0nq0D=Nd3W07{eN}G#imqamtx7km zN;d#N=jwrb(J(s}dPf$sN>myx0J6)8V2o2+4Yj8ugC#Lw5d!!!knOhw3KY%`lFtq} z$O?U&jicsf2QGoE$yrxW5FvC5M|9jt7EZhTAFd1w5%CHG_RG!oAI=Ut$j%DS4o-lv zlbNQFba5!NuamUaNEi!}!9K_JjI3v&b;yK;my`^E;6UWmp8{OK(s+n8A-{b%U!I&V zkE0>d74!%f^m-M@pW&L<>7h21x^E1z4~E5q9qN zceW82ClSUu^8NDRcVydlSu8{rN2@bQ`xyt)3Y&SrQui&X6tZknGElHPp-)OrfSy z6lo|@Qj=s04Iz6YWr=EN(dfo)Ip90(~;XbfW#U& zGuBzc;-Ydq z4v6Cz``we^Oi*GQ_uv)@Vq4m)AAIDCY5ViDse)4Hj#Lj+j}55dhl@fel2_nfXG-dan9It7`tT@y@~SZcnH5V96Atth7gHC;U7K9K57YI|A z5rUTpkOM%y%%?IX0(e<>I?IyfoOJhS;2~C`+q6^Zs{h!`TEFXWWPl*TgaAc9coJsy z;G5ixQ&Q(_cUsTfV}YD@ACD)sh*>r4tjOA-mJb=B&!%#k+uq)tje3?56Y6%{{LmMH z3D?9YffGvv|2MB`i;HAm zAHq~znQl*fSs6WN5&}J@m-(^*uFIL~ZjRSn1rNHiSW;~p(XYsDm_1I}uB$WEzZPW( z&>8=tNweiA&27EBPbm!K)a>KeZ+OqpG5Ze>X9*zoW4Rs*vnI@!CJ(A)Y9`jUFLcjc z0Ln-ghRsfPcQ|)vVvK4k@Fegy5t)+zWONN?A@p!Z=i!j*EJcc&WO z?u;SjoC72YkV|aA7;6*-SiYz~HCKwT{`m4rCchJRK!ttwnnKcb>vwSPcStP65re$T z0jm=P0xmqctMK%mJJecEAoF^>4;ihGMd;#LpXgO*LY-UNKE?*{?)pJlJUkc2SM?jE z2EYiV+zOrd_IN~dQ@juvmd*qtNuLDUvtN`sUujsiuBh;P&YMv{I&k7o5RtbTz<1AA zv;KfM3k)TqUAaJWCgcv6Pm%$IkF_H1r5r6^gPr8IIt_kk0{pg#2t}qqCnvs{2~{M* z4Vce+^0JX^h$9}}glAuCLk{4OjsSEQx9854q|KtW7IjQXaS3yx_i+OlLI&>R188IX63Ewk*qLqX88XkiCZX z;ec4h_%H(hGcwwDg7UsXkL}_wRmD>k6Y}g*`2QhAO z^)*lr3tDpo-B{7)9Pl!amf}%QdD}%U18A-=x)S&Ir7()g71+y!e8$1_aF8n8jKQyq z2LgZQ8eqCDk6!zn2pNGy0+@nFn6FVU&s_1ogqab2!kV!Q5^*rRO5YZRFF!L$6BlY!UeempRXm`%H)z=HN zpTpS{xUhQ2+}hH8Q*ndnagjvYb+9XJP-dTwKO{(^t-MlYwJ zDHlH0kcqq|zo{K{TLj4`M4IZ!rO^c(cV5mJ)G>Wv>blCn3R-L&T&bOQ=dEdRf*K-x z-0v)2&<+5@L{4agKmVPx@$SjZm>19gup6AX2NDLMtC>je2 z?v!DI0y|^zb`Yc<11QtsFnG6AXrkI#|J5-%BS$%va?E(`pUGXv%l&ZaMn-`|qGdO- zSp7I)14$K2WJ3hR+%aW@At^f>K4}`hROal-_GO?y7tHahjX{ z-3=pa>HF9Dbw7{3GH4n1Az&$v*w`HqbKzkRPmA1zH&lTr=LaH&se!hIesq`mbJ0}( z2HE|kIol0YyDPKzU%*MuAAswW#=bgc#C_Z<;wc-~=V2BXTYD1LYRA0W)O#E4`lUDh zn_uAmGa3Ft33tBDYz{omxRgJ-vFiT$vZyHyLwjOdf;nz=HgLBs@Dk!0t8^eh>{Mms zG1qczRIt|Nz<$Y4FZye-02#V6U*u8o%+O3pk{LXF@0r9WeyMl9hvj{Jk`;dV*Eh+V zq0rvOS))H6PCQvf5(15AB0>N~uC4=1b021@5|cZ=^n-jIogkkaWayQUYpgjNu$PMV zi#Ti0D5nJUv>?Ano;_r#)4 zo?QS`n~5#9);<>;ADg~q0~OebCnwy!r_Mgmw6Qsv*n0a|?!n33-+v$EytED(3X`|~ z^?H;&mUr)O)Z{fIII$6cYB@?~3u#*8>q})iKFExo)!TtdJl7d?;Tq?3z~P)XRarHz z3!kCqV~HSbKA`x=@fL*CqGm(IN>&oJa$h_XONF-_T5q9goXGijd;j6Xhkt(f2f#c* z-Rpg)mvUib`M|>jf(#i{<_+SD6`+6Zm{u(np-UmD;JcSq?{5UOzKko3eLfP-XSKC$ z!vioe=+X&mpYOYY9}g3N>vE`k@w+fi1Vwd&AzC9smq98+7Nxn}bKmd(Av@9E-(Eat zpKY)D4}j?w6_noJKO!=X*9{|25cv=LLD zH;uJcl26zS0K zT{~>QR%IGT@0!T*On;89f= zV|r}+2jc|XEyhm%CxL$W-NmRwZ@+POIr!Hyj-5??Z6fr;t4g=;><;trpDkJ9F4r*i zv5&*fDgX4T9P({g>5C2&J8xqgin(Z{5`|HvI5X1hFJmjo;&pW#AIE9l=BGt-J>$KN zj()u7er_IG?|sqBtqB%q#$O@%3qHfosCaBS@)J&yFGZiI`9>3knx=Am?~K>&zjXOc zs#@v{6{JW&p!%kEws?uzQjElqxLSyswdk2 zc2&lT?qI*kcHa(<)!XO*GbsR0U?QZP9V1PQig#aU1N=?^rmd8njyvztGLIiZbRQt?V ztaBFZI^kDm5=OR_4OEIIf-+K|u*}}RJN#uiJe^1P z0l2yaODAllPC(KekNQXku3mN%xR2_C6piaYgM2m;-A>+@^0Mv$+-cwF-b``9v2|jT zz4<{g1Oe849Z!agaSUVBWL_D<4`UMQ4EjFFXlt#OkJRq<77 z*s($uGUyEV~6 zrOQEz`-LFsbC1L%)9zO#N%bKG*ld~QkF^=P{fIssoFB)fh3{VCyMOk+Fr6jfRBGoa z$zNUb`2RF?QRKAtDT{?ng|oGoY#teA2N>LaB580|#+* zxhPBME=>xi7o#rpN=ZDM>kSbl!bO0^r~b}(@sO~!I1Msfw~~BGnn+Ga zj6GIJW!Po!b$vT&p~IjyWigi(+K&wosQm)?p%6lmmO8yV1muUs&Q z$ezEvwfj(gZoKW4yw`dLXYbe77w;OZ15EqKC>9=}h=CX@x0IyeK~xhFVeAjW)0z9l zo6P$~R>?FMITiQmVW^1uHibTsc3Db1l>l6{7JP}lE8+quPt`O(=1-Upt7)oO<-t{nL@Z}p>faVBN-0uBu0 zBA`r~`x-5(66zO7+tmSsyR&x@@$hb%dMwoec@DQ!v}>-=nM{@#ChIwadTg9M(gwz5 z@#rUv4)|}Ghvq<&Mxbg0s^u`$iA1w>E|N}%X^~*I42UC(V$X!yOF^Xqf$Wj1FQsK~ z&nf;2wpA~0xwuc@&)$o}qL%?@5Gn=gn?sd|v~UhRcrQ9|PF!dO?oYUf#a{%50eh09 z^Rd!x2%U=H-Me;BLYJg=ciSERLRFrtwCtwH4#T|zK|un-4BL+mRLQp3p{gn%8gJ{A zXaD8VnYO_Ckw+)c8~~?Dj-bQ&FlugisyLm@UkMoFtEO#v$17B6COoOK-fXT=m`)|o z$pBP$%tFbr)yR3#A#7at7g@ly6nBjdN;OiPIq;Wj_TrU=FfQf1u|tmyumeZc-zrjH zvG?wxk)&WMOu(v9H>b+1NV>%Gy~9CEr)w?zT|oP5Q6`#HAVDawCc+ZkRa?FmK}iKW z4{EeX^9FLM1O})~grVG3<)jKlW63bUNPSm*Xa67zqn2LH``e8gj9A;N!(_2WNbD}E z)Vccoc;^F+ARK7VIc3`vNJcTp=0v#q3S*x(T!W{4a8P9fwItT2TE7Y%6bH_U)8!1vmC$mwMUN%LC4izO*WvkTGDvPD1Ktte)lF@1U#`TN3 zZnwLeE?1$e>q>dYLn1h;CQn%Iix?R&GOA=iw#$COGXuG!n5iS+b zBv*~KuukG6ASD?VZX?z1m9AsQjQZOw$pV#y0qll)Gz`h5;1jE;Le+o?WI8diyNvv&rzcdh}R?1rxHvF>hX?do<27vz_M z?d4*k-UG5ss3C(4A}PU_QJH!2H4DYViymL(yu98|jQ*V9y+9y_;`bl3Cs4w<1;M{X zUcT)1BXRUp`UMDwY`Eg}4(1|`#~M|J|3op)duv^I^kcr8Xz% z?FHXIXyIN3r{AAChk7Vrb#C{es*;CTjqj0s6Y6#3U_5=>8nSJZr$G`G$SiJtON5QBbd8}-D`~YXNCv@?G z{a=9xkU-%6H(+}pX+d;t)~B@J34J8QxK2@eaF>JN8&M2&`i=y`sd;UE6) znFwc=2>10~D>$k999(v@3w?Hw8#G%VGKU8He56O6Z`>eF^`3G5*z@AovjwA*$5#IU zcF0+YMoQ{4y&Q1LkUV+N#^NSvdPnGxIGkfNY9=#l#6@vEhfY$|~hWNr>t>g^5?N33>meY+IW&@T-YqAs2BB?ghD zY9bP;kzd5QI)lfI@~JwL2+JC^a2(843ksRjAHG(BPqw!eI&iw|af&El@3`N@Q#F_jql&UKq-x8WI3| z#*;@u+MrpH!pL$5T+WZED7OD_Fu{L!SE0HX;e+H-$m5Y3)YAegPHq#e;5NS4to z$YnykoE^Q_3qvxWBt3tu_0uz4y^ACin=rBT$0O=sO}(KiRgOiLAz!|GE2t;}K#?ii zq8y$%*_T)ZsPzpWK5KbZB$jc*pDH9#;25p3UKq3n^sgHMsWCT|07NXXn_i?!p3f@+ ztlzANt;hWM+R6AE=icmHn{>5F55P%1+rCh*g)frB(CQ&`*GX{L99fV=o#}cb?hG8r z4y*2Gt`P+?pz*ibd|RJ|rEwt+67}I+s4$KyLV|lZj9>y|J1)Z$!Y1-&f>XztuD=Fv z{Y}`d_u-ERsNX>r=78Q^;Jz)G$?*BT^Uu`ImSVV|42P;nUjbsrih(C)`GO3cy0=MUqDAjFxL#kJ% z^jFy?3R&8+H*gI6T!8@zX4C#Oj6 zjRhNjA^T!e_N^3p55p{h0x164r2ct0Rs|~saS4R0udTkXNsgx{8(|CHsTY{6twO>{ zj)BlMp_Fx@lrIt~>#K!Pjj(tE%^3$`D?Q47ioX;}z3q@}tiPjs3FKYdg||QrO~ft+ zY!^LMviOTs1ys_YDB?6tk(25|f<){vmH3{js8|%i22>u9BiG2rqyi%xMeT?9jXLzH zIgNP$IVgNsNb}ZK$tE z>h3*Hy%uC=mB?~kRIige^htN1I1?MQDJan^@ls0S-8L8iO@^8q($hB+L0ku7gA%o& zTM0+Xi3|%OJE%OE|C~(5Yh-v`JZ%@_W&gP>VOsEc?6>Ct^ru8Y0wd{1hC4*({O%Xu zPECAWdLE|71(EF2g0aBsDHxsh568CJvT`*B6vNB$X#H0ZFNNT?6rx15Kk(yYj3>j&j?XWky*r|29$P6%EGjbSv(kH)2yOM28%BG*#D)8Dm8qj)M z+Su4loOds?b19CJ@*_y?KzaL>7}s$zsXp{e7W#G$=Kc@fkI?NLAz7QqFD&NZwXUw} zi?cZx*}nR1+{Mp1=-UN~2Y*&MMa`Skn_65wla+JhNY1clBji&5oz}rI<@coA*Y_X> z-4W7j%F&BPH%7hZZ>%1_aq}1Z@6X&WtWweXrPDhveNjZ;SeWDmR2nieI$`#f#* zsVRMN;;$MysSSDfp3LF5CvY#nE4@0hb5GFWrOm&egon0HAO0$AaZlgEx3*?am+FWu z=X@dVQhVL^*{?w0_&sesyWT&aA#~mYEKxB{E)f8KN&IgB%rHaQ>0badTCN??@-Kj? zG>S=s5x=TWR$FLD=w=h}51IT&6y&gCjT{={r08$ybYL$PTB_EU)DM?8G5WlacVMAL5BEK(;YGedsAb#M+LsSd&Cd#4i@*O9 zz-Y&rVLdT|cb_Q+t0rn`DnL4o#!onx2agcH=!b|KYxU9f_bX_8j&uGuz+p9CVpC~Q~17?&Bp%%FjUjV%0l&w#;T*e zKjdj&JEavapY;AFRal;UzP5QJP6oJQ{bi{9>Yz-nZp(=F2a#(uQ?bk0E=u2&4mb&k zDbm|SP4-2e$Q-OnTL`OMXmxmvY(8+``<<9=p-u*WOXCTXg}kqBVlSKG{T#sn+-W7pDxITu&T9nTc%k*wu;3HKY%zSp zq3qrMmFQCAnSBX8CbL5C+%MVxMIC58;A@Bh=SzO(2F`zz&f#`(&(9loY3n>Td7ks3 z$E+p%^Z2ulqm=sSr-#9h2ghAKCYTSP(rnmWLcbr*M356H`0+`^Rf^92V zh5rJWu#YRo@#miX7l6@g^TeLL@h^b+rT_F3w4eU|^Pubz%k^mZ&1WUw)weA-rrg4( z*RPno__#5ja4&!3NpQ;U!Nrn2)<16LrpRnrRNS-v^(iaA_uaeV&(?pwExf?}UbwZg z{r%6MU)x8nu2<~%aaEX%u*5>#H1Lvl^eIAlJRYvXmJuNx7U|{zn3Za{5h-2fHxIxB zp8p+s;>bS$W^ZHnSHXt`+IdRo{n?_QU#}(@bt?%SY&`k;zzEIaw-Tlx`|j*Kj_zn# zhYoeNf2+g;F!m8(=fHpl55Pzb)by}oc>qR)a{1+sFI_wU1Hl>8J(8FH2f!q+c<#5B~?i{0G4N2f+M)0ARNN{{mpP290~a96w_DO2y#E$ll)dv-d3D7~lM%J#n!2 zYt6Rhik-pFsnfk14STHK@4fl+$?e{6H;!0++;8w}e!6$F?L`#+KmC~h^ke?hkNHnO z=0E+I|MX-2ujt48U%+Q7-}_eO!l?0M$V9#{@3#_tKU9UH|x%Lo^twO_X92 za{t`YGywl`c0-a+Wo5J6Yk{H*Q~eg;C|Sv(K%nBkd2a>o=k310&13z^O--OD13?#4O_t6 z>z)s&NvbojUahDwUswoDrBwZW@ypY^yH;WRVZq_G{8`g?DvC*zT&r)HF}v>u3+K>` zLpL`~cjGQitR7yl{`mZP&l4-5^|*V_maBz(W(&f9vtRys3VD&WJ@DmtYOU9=int@D z&_}|nZ&m(&VSWGgt26A-VpH$0vWJ;l@FTe;Rf^o+^yD*=xl5V(5fvHgPKV8%(k#pl z>p#eDs5tVyIA<46N$}-~#T=d-N>iG3gKuRrvr=Y;a?U?U5^T(ODo+0RJ^k+YBf0Hq z0mamBW;rTZSwdNqXpNN9SF*b|D2Z26dt#D0HIft_WQ)ff)SONJmYKErHdp#edYIFp zo9+2t6-R{VNe90t&K9RBw7ZD~9t?e(D-?4izk+dj00m%LgeF-&0R#r+#T8pG6*(sXW^KJvXZ(S%jP1 zvULbu;f5d{dYyIbM+5EJa4I{iAWoCM^(JkIPJuH()LJQuT*B9pbeHZH?wllQPH~*e zSTsL+(<$8qNxQ8{wQEc%uAtZk@P@eoaRz9Fg$i(!(OBTCRF2<+q^|U`=UGQ(ky(%Y zkDu=-Sn9~yOV9rL{n%U1((24mbcqaR%)cZDN3D3l04~0G_z?N z9n`GKJQa9>1_L~Qn47`Zw5%<;X?qjl*6BiL+Hkx>Z&-gSMs>rNZD)Ck5m3aS zqi{k1UhqBv%By-D$w{VM&DAL`+-l&3Z4mspYCi&;p9p`jtGZtc!ILo)IRJIhfVLhfF}yh;2^_St0S@1 zeptldKDY`N;ZKC17|?Po-%&i$9026WFi#8=gQ=;?PU#xR`OyI2fD6i4$Wtvu2o@sS zRVyiT0V`9djH<(vFD#5)m}LTt#ZQ1_h@bWQ zT^mA1>!nByaq$gNT@4A^d}>TSJreKX5D<4X9l8bx0MGyo6pQCm#WW@zYe;-w?@4M* zvOpIdYE<233iXj-HM|rb7qB_YlwvbI&lg9SrF7cU-gQuV=5rxD$%KbLB%m??zH43A zu8&@`TD!*U$Fx{9S>X|FPobu4L^>0pOoW33K%f5{b|#jzAQ?spaW4 z&b4c|0KOI+{2&v>VO+M^M52D4VjnC2B2kIDT3Fkatwe+fa{00VbQqCeW9`P8%+0k? za3kpE=AoP4pZ>#PlE_dw0PRLZ+T) zWIqv{#q-_dfc^=s&P}arlDQst3wF;YY4KzR4oV=lUGawcY>x^4`Ge_Vv8}MUwX3m}yCxALkhz7o^p`I^NtA96JL%!b; z$F*lH!~;0KJ_gjAdH1a&Aj5{(G5Djn@aAZN`t95|FJyZKkEO`Xow0e_(dU%>@k8&LZ2V;w%9pp- zm{}(`a+X(-q4H8WB$x}(!~F%V)UIU~v%NI{B&WArpr@B9kWGN@C{44MPWz`HgA;Hf z@pA-FjevIp63dAr$gWtKYg8^Lioz)m^- zT=IRM3#t!>9>72h0~rPnx^m64=-Bqt*W+__hoY{JS$A9 z8O?0qR$lxW-61aw*kpd6A3w}-8}+Ns3XM6Us+&CYd$7DzXmou1ZNoh(FU7?f^Q~@s z{QL5g%!yo{$I2VOe0IE&SB1fYgz=%N#MXxD+d)?*y<}49Yp|^92bDz-=f%4RJ|6tq zJ?4a;j1lM;3}U}_J|x>YZ1@}S!k~-^LXglnO%g0-4dz8eRJ$`EjIsE{hrYj02@u#R z^SOFvQ~e=Rn!mf7w~HVVT!;Zi_<41{n#X-C22to9pYogY`fdj^sHFo|&+EQOluhky zjyLsy8}O=!f@!ZzAF2SO==^xa(pH_&$5$7saC(PAET?7l;!Hn5yqMD}p+^FH`szLo z)qiN#^~gW9(h+5qlXSuh)<+(ruqzm5Yx{ z;)KT@R(LzWn{c<0k7pC1dx(>Lu7%EJ|1g(R!v|f9kv6!_Y;@0=KM$5Q($2}l3!lx` z6!Du9&^tKDm%FJ?77Nevq|2>i^U)7Ze~P=snr_qPn1$&+np{EGY5XMzI&HVD# zXyJ%O&21+@7(3#XA3v5fHrbrnDfjG>`?F{QVy^7u@x>}Y(U6Ts=|3-*YwWI|3c!4O<8 zTywmzg3CiLX#J6==qG>lmP(zEf)&rf8}S#L=LTe#*-py^4Vdb&bD1CcUV6mqlujSX zJNsui{cFgav_gE>AE*p>0o|B&JHPkXKmuRt3l5Klkm2PlRLq}P(?3&o&x>P9s|^pw zvzd@V?o#|%O8o_A-(-yc-$X6m@^dbvi_Fi;pZ3DMar~4BCqk;q9ufYacm{=!&^NU$ zdAPJS&d-{3BN+TQeFd>|d+x-X$*bwQ=L$aThIaJC@giA@YmnZq$;XW=dygl;zvRHz zAd*<<5(DNynC{|25J}IUW-iI0dvXAw7zSWKKBZ(mUYs7^lwAJ-UC5KXff&B?n5yPY zwqD5CL{GujJV22kR08ze!t&cN0FZ@dIM@3mI}dqc)XZu|lYvMgLI;3ra^mG#0>&8L z=fwwx6L7r~!i&B%XF_jc_<3u-ZV(q=t-j%LmLU51(hrFU9Eih0RSA4&6nLCPfTxBH zh&}m#oA|JxCkr927+=9ag>nEfCLiCvZk4c){P%ykMu;}Y!ml&_iM&|iz|MzI879!k1W)ebP0oWxY?M2uJF*Dc&4AIc@X3p4 z8W%}ppg9-OISf7;gU=NQ_t_@H5?PP}EFu}GIq@RP>)pDq0fzkGnC^?i_uhA^X+z^U zeEYC4dpztSY1^K|_e&Ua{%5RcC4YdK_udYWILBGCqu;Y1NmZ*Ytb|FMIF8Kq_d_gd zST?HrS_&=&Eip3QtG;5mRqEd!A73AzQ$iosF3%BR|I?45pfGED+1CH3e$4-yYE zjGJVf_eJQ2jM_1?#&A7IBnwxIEv}IZPE(zk?no61IP}qdh6vc#xe2`=E%Z%*_h_Ql zWdh$A7w~qJ`!D9)?o{Q|ns61v-*LFLowQJr`dOj;5*{vLi2&sFTW@;R<$Uiy@IU%7 zSHhnC%=kEeC#8M$>94HftRwIB6z~A$)zFc;a01bmDk1vHtS;i#;2#~m8~8clKI%zL zYocIxvHllT0e>86nGYddZZEp)u(^G?YBH8lD_c&0!48x*dRb#$mw5FWs!A0gcB-1Q zX@G>L0eNZD=%zvUBNYQ+HSKY#lS1ys7bk3iSemo)ox5wpU7I5DF1?TT8v)R|omeV( zxipQ8yu4F|imYjbsH!tyY>E@_KbW6a7qExhp>qaL2UIq~WG0UL7M>L+#L-+4@ZDvD%1^=Mdp^Px`*-s*KHjv6s$dK4tB^ zb5_Z-Oy}CorC42wDH$7&ojgvFT?^lR7zaC_pr~Dk47~2p4=q7+66R{@%4G7FWZG1) z`gd{eAhXeAi%8qypB+&otI!ncaYoK;D!EhKbtu(t0$U)ZS;;<;B0fle?L-`_#$u$~n8QYNKzW?)XiT`L!7~r&X!F62&I; zmF>DhnE&7M*z*ylV*BilNaQBAjG6vQyj9;zT1hEWFn>o#x}L_;bFQ>a@(A``5;Gy= zl%N$>9+@wq`VNaG4eSWWOC6GZA(FDz;#cl+4?SzTzjx^6qcS;XEG*6N#23{vJz{p> z&6lwoW^bMx-BIoGV1Gq^=F^1sd~Ht8!WGLt{+OJRSGbza1L}f}l!F@95C7N(J1SXG zB(uFdzs*E^3^0)Keke7+aQFM)+_n2D**_*SQ;ZHSYZP_y>#7ZXcws3*7&P?Y zc4+`Z2qDf6c#n6$0g)-uH>>4r1@;RiQsUjREwsT zafSFg>HMn$2Khh696uRq-Lrc-du)D>-2ql|Qt2i^-^(f!bv}rv zcE=UcAqG+~ow_zoQ8k&rL8>3rWErJ--e6vOD(Q5ht?N>$Z=;>sHG`xMF;eFgAr$u7 z^N2YpxW(L2L5{Oa=F&-A5aP{wT1&dBfTONgvUTEl{g@eT1wSnpwWopSo*G<15KAEd zD2w%eQp6-mQkXUn49Tjl`C%GNt|^ssC~!dCKTj}f6wu1-3^~=b9r8K|pR1lbpH_&4 z-N**ewzq8LiOPG0)@_A;)T*q%NJCf+9Gz#xxt5t}e#zH`o$|4KjMU$H8<| zR={x_m0I?WbPidBB>_jNVu$@%whRwEsJfR7_ueLg0%1&m4GxCYv`l$vjA~x9A7=-@ zNvpV8z-^$5-|$L11@dCDHsv5BgiJoK#ECXDi=4pl@(`v(7@P)!I|sq^R8tX(9c(xy zvk#MpqbW5;ASrCJ=4PG}-*|+iLI+jk29^qq3YtE*xdv*E$B7WQBj11XL!V0OZyXTH z`m~RXn?SvG0+8l{CDC}QuiO%HHvuL)hewy}uoHRGk*(eP zMbLq6E76TVC3%^B43bDh`!|yLi5Qx?*$=q5Gh1Aj1K&Ha40ECmDmSJUCu3FAhqqux z3>%s!#^zlIp-bx#9xlkn@BD3Ka^}tzyGCvqH~8(L+0#ZwSJAA%9T}p~FeYenxmLyk zJD_%oL(>|_=igg7u=v)x&=o_)xNJEz>4Sx$I@N6jh1TY}^mlstV5^%@!hg!34xxlgY@SHPTJ!C$xKDDxPLkeb_cAzD7&i+`Ij_u%i7nL5{BZ=|## zEG}TgplM2M8wv(i-k00blzDm4acgf$kQ{B#?`d-oWv*0=*1UxH3{}~zZn2zy8@>&j^!3Y@y|FP2K#48F z%)*nb+8w+k%J4t6Vd}ZdysI~Q1wIqcv~4Whi6iSYQZQSpHas*=p7dKPX@)^Ubf1BJThp$_H+0*zF;HTL`Yl3pT8 z*vLjBufL_Mwi#=(r@tD~$UC~>4V1!shLwHD5bbQLB<_x6Z6(N~Am(J}4(Lf~ zW2weJsaf;_7}NIbJ3XyYyF2ggyyXU$WbSI~9uv!^AP5D~!=<{m6dZ|yY6PY@SO4-; zkUErjdY`T<)k+gIBZF|+ni9~#O4T9C-SIXA|6$i4=8zDGQ1fW>426SbLgR#7p0OZ$C)m%tlspX~PXxG|-%O_Oj za?#9WIjCy~v^>w@OdhC!*1$_p>qQU@*JlEm+V^=tn@^Syrx3%-kNVVIR?gJs%t2=qs zI5J-&AW#W5xVtDek~QeS&)ve1?2*dr1IEkbL@ekVOS!Rp@e51j7VW`6h{w!^!X>2Y zH{>xfBz2hP7GFAuZ3M?dtn!Zzh;ZC`TWhz&HQ`e*cMTEdVd=`HIljzzkGFZA4-5wd zPI(A6PIR=^#$O*FMV{$d^XTbzT~hUgV?BJd>tDxuuDE-B)0KU<6IEL|fv5zdJ3NJ{ z4xe5Pw0)WEvAnc2;Ia%Rv*u4lC~h8xF-qjF9R+Tn#Sd4dT|o9dnasVWixOM9af%nZbua7Wc8IU4)XbdT?(8K^2^ykI}Qe*5ab)J8RS^ z4|n!>C}u+h34l+6a$Uz*ck8I}&ndk#fIYWPd%>{oIYB5beU`1#_gJKYaK8 z8u8pw$vLv?O2zLXL90vtSWo?)y)!P_a($0Idi+B2g*t9Y!?LMQ^I*0n6q$}IFXhz0 zj^OK;!0A@6N5()#Uuhv85~e(*ryKKv)eNE=O;fm{S*?Exy~ma07C=;iu*c`9AKm z=ZWI(Mjr(1Nzh@3Fj*?ieg$H-HQzQh&hWc$m3>v|J^5V;h-5sWHDNDdY+f#h{hjdp z?59|VEpEFWd_gbVfdDnbKl%2o0?rIQ_i+m06QDt-=&-`0`oeYh+u}Zi3(Y)k?tHE; z!jpfH=1{ns`6Y+gBJ)NnKh}Q&J@Pz?0z<+gF%Pyby!bhx0ZbE{KM)mHr=8?(tJwfu zg^=|mtU)E!6Up;<1s~&@jH5ss^8(M6!orRS4d(OE*B7pzzN7dz(x_flU1?d=I`S8< z^RfkQ!y6&vi#OYqQ3x&t8wl*eLxkoQqc4!LPYeuPj~{{V#tB6kioaCyA8bAl+MP;P zZ7dQc;}Fim47oEmUx7OTN{}WO8BNu7T+sgbvM%sWf=HCN^&_T-VlWH^BRE)c;P(Eq zLi9pKe4!Ng)VnE3ZUnE21*kA6dt%FEhk&0MA}klTURKXFPK&o^^bV`?UhJZe@_tLY zw{Q^6uM*Uy12JvB8@Fxf-nmV&rBq!i89MbUsvi~kQO{f}B&NueP7dF)N7pVYo20Fc7(Dg?QZebg3vgj{f?r?7YI0DKb=wYK?=bvOw{< zxSHp2*4zRUZ%|e$zHSD*)COKMjaTJ>srXQyaB;s ziu4*;d<_`*3-J0egZ_yF*1R^%NAb$U(VCAt8$XJ7d>q>(;~6}RN|oBu(LNv#rCY$I zsQXAChoTc_tP_VbKaCzw9KZ2#XGbDth3Y}F-{4>HT1?n}G2~ylneg-4IYn1MCKlL< zhw4f}1!BoBg$fO0$vbSIGL6X}Zk*V0k}Nir%+K3tFnmG>b5f!)S-_ch`4L^!ZO|43 z;6zZLzKY;|IbZ=llgU3flVzBncidVvT=}fin9Ltb!_+2=jeI7s$lDT7QEd;Opq>|p z*FwH&qua*z8lJ>Ri(ux9F!O7x$Aw{6QmOc*f(BJGel98(saHat+7qBeK9TUdFT67^RC(Jn;eMKMP0r2>xSWEg9mzU4-9yV zaF`wGo)7da+BbF=r;oPieweEGWFyh9mG0;C=xDv#P_T5tAK%!DRo?3D<*^Z30$uhYATQ#T*0dt`m9d72^oF+-wQgm@ye7Mq!@ z!I20etaewAYT2Dvt9f&Zv~6nwY-$>fWh7Pj^Kbj?uKrG2&CE@iNXg2OKdzkiBJ!kr zmQqi3)}BrGa2DmKN>$wR-0^p zEyA+d@X!1FNB$do_Z8LD);Iosr4T|Wh9bR#bTDF}szE@y1O(}bg7n_Ip;r+U=_Me& z8G2Pi?^Oh(XebJTC@KOf$_c1@@8>!1c<;^_=YP)5b#5|7k~QaA^Yi=q`ZKY!RC@(_ zW#iA6`slNMUh~a}I?s?*??U@^MbGC#%7SH{w{b1|gOfBV+8N=azGw z&nQMcyP}i*VUxiMfw`IIdo?)SDrC*z_Ejrwe;-f(nq5gNb41LlI1dds_BfM{oogT1 z%$;nP<*SE+b_UZ=)u$DPaCMFh6keq5{@ItnC7g_jGBVU@I-zB39ea z$yt*(DlR_C-UsVz|`mj046`cQRsXpW3r#1&=(2jP^34vW68FkD~`~K&4_Bh&a zr5AmcUj57qWuIcwS!p}}rqS5-hDZm8ZxFeHT_v;APRW{jo@vcbCwU+Bh>A541eh57 zgS?a)79I2*j1;p?Bqewe4koTV&A8Qg1R! z>jIR0F3-LRcAYDsJZ;IYE9+|OL&wDO&^_5aRRU8)E3tfe0e@ghx z%LOibQJX(Y(ebzsdr}5^wl};$98NZ1S z+mBtIXr5SU-WXCpCSM<1=F6zv;iYOAvPwokyRx?%mvq?!M|N#)*(;f2aC`A($4#Ak(Sk ztAH0~fF&haKSl4B?=@>Ho77L~)0SbdQx*gtk>``)MbSW9~k?; zz2Y(OLLe^9|C{g;pUKL&)GT0IP}U++UfJ?(-M#2SdJz^s>n~c>yxvl-T~pP!Qrd=) z6RYlK)hK^dFCw#A{ktENT2Z4WDJtIZ!oF3!@v06Ru_nV?PNMmB#@uG(9M9X0=A(WL zzDN#NU(*wC^2yir!MAOB&mGpEfGFir?LWV4d`OyPY(tUyF%>V`Z$%8g?>uf2c&bNF zS#zpu$9n%%A5YxSvmQ@xs;xfZa?;A~M6uUFO_SIliO;-urgE$~yU})fbeuC@Y~VcQ z`7`5JII(@0vKjbq4uwm;dv$*r;UhFv;ufMoePU^>u zl&ad{od(ZKEj-`}w5#_b@tIe9MYD(fm@Cf3VQj(DOGo{fJ90mzSCTZ2`Z2*WZ_*u} z$gCdmnY_3QvTqABkNC_J*^SE9pR(_c`Z4u$!E*1LHxBzT-+#(&wNqY{C-q}Ue5POY zsr=`|ehi7vTs;5f`C&hX#AnX$E(9F*V-ESu>&)AS{g^{O(|T~&kGXh}#Aj|F_G6wN zTs$E0nZtez0YryC;xnXv44EYUh|iGvF%-J^P{u<(Q_@cDjt}EJ32wpTHpB_j=EQv58TdRuyz#`&40Az57Ee{BrgEm@3e*2TP#?NIV>N77swl^jm!OB z(-o#s=^-0uk8CNE`S(3vpQv$u&Lc;^7H#xyc;M%e@_GKvv!btEx#Av)qCu?z=bAUSDi7G#y{8+-<*s;nYM8#2 z?3JyJ^ZRJGy09_gEH_RY?AtZ^<9(t^>n!AgU(D&3uUL1#)UZLMZ-12Bhp&VW9CP`%_iI5TU!FZP+gvw)yi8r?IrA*@9U-ux zWmoI_BM-SpV9>1WHe%hGnve(m^ z^I>!P+nUqeZ<{B7&b}fK+!VeNeEWON{QX`3SJ#5B`*`sS2A>mjmu3nUEA}n$x&6h) zPs+#NU^ReFC3vXFooiYHGUJ_N;4)d{msadV86Bi-fNsMvx8J07hexO8`tPP_jsnTB7;K- zlGPW5AxV(L$mJgY#bTGiX}2Upw+|`UT7olv#vehFAZY((gV^23 z@RAa@CkA0Q@aUZ$_b%Hb2{IOsu!ti|BTc*4FcWe@GLwqhUbDrK!c9{DQ-ZiU zW1>91NCWB6TTDDbM3tz$si1BHkEN*?-I<8Z-ALa4J3pmEKBfLA20?}p4{X%>&e5{7 zcue-*`>N`+%$T5T8N|dIr`xkgJl*NhEH=(cq=~+-=3Gi$Sa!VlD zK>AKnm(8(L{;%K)^e(6vCE zxM79V++noVc241?9<Hzcnx``zzN&m^f3 zYYWOM6lps-EE&Mz2({|!S%n@RUh4`Il2KVT*%d#W^h z-Y9$O7Yre_RDR2lvAgYSUN5DS|AHY?6wtXBzhTIjaQ02yAq*M*UtmaLPP(DXT_s!U zJilF%4Z$ATkfkFVa>6*DCnH;=C10#89}VOztL2bvNJ6x`eN;|;2?)yi@YF#563K>O z^LdVJ2tNYG|DQJG7$Q#-m1kg)H{N@jebqH##ewoh#KBb1bkRR}NMaF*hd8wqxgd&d zV~dzk#a<%CuKvY7|KK6ccK^vk4#rCS)Qf$~imsqa{bZ@`$(Hi}gNG|7 zGr7b=?I?M|SJOheoBuoWNQ^5+YsyB}CFgF7E=>{}dwJ6@-@Z zm$Bu43lUVI;trhd+r1J0z@+G;(g6oVdl^wRTC_3XKb!~>50=A&2SKm^JUkOmagqw z5FVwF0w`PXoGlO%3E}rmjFJMPxv3aksXez49JmI<@_N(EC{4fGXod#3PJo_@=Wj5A zZ>;*nT8bwi{EIf+=0~*L7cLn*=a{o z5`+l_@v)%HjjO*%fIM`#S19LO?BD>)Yk83ZRu}`?C|k>>5RbQLs4!#=8a^Y}9vsJm zMO?v8*;+adGON2x?txs}N=%Rfc3yMLPSF@p++0&GCE$Uil0lM9n>a&pATbm)9St+z zYHk3YbjC%9!oyz6H5I0`?0b_2jRL}3(6~XWv2y!1SLg*-YI)#}LUADv5vEThFU3%7 z00eLwuu~MG>*w|+t_=$E$lWE-%C{F@MwFw;w70-#5D(mh0UmC+J^)rpgnncrTtt_# zulvEp9K^-qX`%q+e#^%V$`&m7S!}0(K{6K;m;nW@b%mxPpW+hhFTbl72~@RrKpvNQ zpx)c|L9{bJg|fvJ#%j_1*nmJr0F$FATe!RU+1pG5x-O@7QJ5m_h61D6pjD#n9}g&d z^>Co$iJijlNC)M~_yBMKq1RrcYq9lSiBR9F9CDjAc{-(OB!Jv`|2HYQ+m^Fm)QtwZ z(&p`N1R@G#J#B37TF=|}vpKu^bgdAdVD_62Q3JSCmPq(SlS$Y;;#(3M#9kD$81?=ml?4)zQVx4j!S?Cn{e zx9^_sBhix5l5Ps_!H*il!D3G;5mC?H^oxlhvx`S#HHX%Sqkx$+hZy`N682%f*CcN2 zOIdVg9`ufdw{|59x|5tqVcT2bv9=Nzd8wu zzo?9yme_&@icfuRe1R4lPG@g<=RZ@R~f#(zGBO9qIU>(TjTPZC3y19~ArlOKQC z6BHpD-r#x%nONeXYCysuX7+gT$uqM_(tVCTfk2Ahpm zr4Gk|ed=XJYUfq0F)4GZj@D&k)zp%8BB7xyw0Ef|X!-`4?D*DbtWl_x3cya&l~ehL zpKw2clnl>lzV@9$W=Fj~jU2yEy=+c1fsl4SJF;Rw_;T`mo74M%cE2f(2iBYpRh1SH2I1u8=>gc*xq?%)=%*s7ekRh6)9QQmWa@st5<+0Pt zvA3(0Fe(uYmHo?l+N#0a1ly>pB~rvq9uJbhQKq@BR1dEg%vA_rU)r31@d!=M>I%qe zW?eT?lM|+m-g6Yj{I)08zR#*)-X+ej537S9k0H>XzwOBoqG@6;h^5q#Vf-KV#C4iv zPfqz!C7tm^YgfhwudX^e=dlur^4p zc?Zg}N#_FGB(+oy*~wP(FLoj=wk)Fx)Eu#s+<-sq#C5}M?o(rUMAg^3!`1*j0Fgw4 zy|y+BNsSf&4BZ0nYP=_N1?Y%S2i%uJZ;H|}GHNu)ACtIjGOC>$qQjLi+>jMQfN6}u zD<)a#N6w0}9~Q0`?q#dy~YEe|ZzvQTLYZ*Y4@g|1C|3c&dOJa9ox3Kcq=$?BCKv z>cBdmBu$Xto*aCC@_&;iS6c7P6lpX_$Hu(;PiAuP%b5T_<554c=!&_&oJrz;IFm1b zoJkr5l3qzQu|2k*0-!i9VKsv!f5abNps9Jek2cTh`2E-Yib8kq3F{`}jZUe?XOdCE zp%yF_1Z;}f^%@3lTp>0{#_Rpci)V)zB!cFI@#LD$|BgX^#v|_+X{K456p3Td5F|=+ zV!NL=9G;}@6SMuIy!5WX({xua`m+%xid`|cW9}`hU!puk!LOab+Z+)=<|%(eW8Uuu zxk`Np&&H%$U*5A)ZJQg}uhXj)nfLXCK402AaH>D+lJI(AZr6p_9&t?2e16YurT@W6 z8=6Uh**cK@`pANA9F|#3Q>ZUbus4PM)t7j#+|CD_a&ONv14(Q5Afq37o*OHij0LB| zQmTh=L?HC|dtbf_qtc1_>2wJ6Ey^usE0jDrA3J{(Si~YEYR$C8Nj4)VfTHNlB?dPo zI*l_Ql^Cw-xhXU11dbG@+wx*%Yt6IVLcjv5I5G-<$MDErW8|k;#wsj96)uM2jXehC zAFI`n?+-mrm9@7xAbKK6DS?ZI_CyR@j?z2W2?me?3m^8K+c2l!J2xtd9vq08f(FHd zC6f#n?s;4C@O>v>%;1T+M0s`_qeQQN;Hkst)>)~oVkBvy3*lwPPNd3O%-P}IHAjbCP^*hEy-dj5|s`ZcUjI1qru^bR@dBr4|`SyAqa@nmDOy-zqCOTEp z+2{MH>08miafzNiW8<-BvEwFA)%u4R#Cz{XG@rzKoy?-JQj^-`P5fooIsadzgf%Ev zj6_P*o#7P6I8PG`SyHnTun%yjnJw#W8Mzf}`FFnB;KCUFZSz^ErHZUiHW-TEp?!1m zk0#MM_`2@JbjV45iV|&|9r9m{gIv#P*yLD>`2TLHEIY5S#h-q6+Nn5cXKUh@B*8Og zq1mUn^Wzxl_Wb8UI5xn3Fm{{5bF?8|Uu&wTErvwt(Sb zOT|}((Z1T6-6WssDJc_CLx@82^G$KO^@!`;xRWW${IbqKA-0n2?)?I*6XHhAs_rzG zPpb{)vci=wz=)v=hMYW1AA{cV!2XM(mi&0qtN zq$h;VlpYJPJ_SJ1_Eb`=uI79$usL5_uQg_OH|`}^kfKXw9ki~^^70_lgJmg)fzlq4!*}yBGO`2(eVdIw5QUmvjt`^$sySz{WU#Y2?w|h`2c`GN(@ybA+=g*9slXHq})sBqeoCILr-5`AtSR z0CmJdjlM*Lnn6Qh6lgTtLW^48+h+%nK823A#N*Hmkf?Q7`gBycUW0&Y`wn8XP$84CW+Q}7}Ls=t{aH{B~krN&S zcJIXyQRYPiuQa+)+{_NiMd(Ol1d-v|#!^rgq1n&h^|S=q>lM#pu3wI$cG3kPdN>3E z(@CX{2}SRYQE zR9nO=r@0jlL=s%XIfO!~9l3itV)CNxQS!%M?M3n`@lcwZ4pZt{D1*+SV4`{iC<-2W zKYKqE!B0dmu7wKU3`xA#ev@{xNl_{>kJTy=%+kkwNpL$ft~HI9T5k-X+N!0~F?bQO z`_kuG_D|1ORw))If@uGneS{yekD1;-?1OBI-IYQp8Ao-{4+3+#`ao9}-XB9_QRWt4 z^|hPh28tnkQ+U{Aeomy7Mc^^#ke4O|p2wQVZm9_z>=c2!$?AT^D(SkzAudaA+( zI3X0$ho;Ln>^fs{gT{mS5N?i&Vv2Qz%uZYGND+eu@CT6)ehUJb015<|8R$`qxxo^} zTuyAmhS@3IW*sfwbadO=U)5fQ3K7HEC2{er1l=msy|T68+riuPubXZ>yaJ;dTRAos zdOA|8k3#8V2)ivBA|G&zg@6q)ZxZhm2{%@SK$=2X;h;4`bX7*eb^sb4PxvCrsaB0V zgdVty5x(K>X&^F^uOVJsHo}tLe1-_Yj1j`q{#XwSbW;Wec|4k}t$h?ypEdgr<$+Nk zOSg~MLEF?Ny4$pdg1;%CwlGXs#*_K^%AY>2}P*jS68l_q8$((Hf zi*&d=^T}_^5eF#gFecv+=B>s}VE`eGrJD&6;JyUx9Vw471$@YfRHUM!yb@WQXzci% z-^9cB7_ZWA;<2xquS*$1K_VV~XkN`<#3N+&TcN-uC4E!n!J8MUU$kf2DUp0f$C4t+ zcWCH!(45LEyz$3(NOSOp|MDH!8N1>!9#ohe#kKg$b_F5^S?z#7z}W0^MluiS+QniR zL4#K|tpLoRg%V-_JrabR2|Lf<;nqY(hrx=jJvt!ME0LN|NqE=iu+&>!eOd5Z_bFVs zoKT;dd><1LRBF;E2L&lds~%s$nplvi9>-SpwqNLB79C2RK~%HktC22YvFy>EQj-1YyBeNKL&RP!vZd+>bcEbLqxuVUd~^^2Tc}1& zDqdLm1v)?th@AR8`f4i8cE`L-V!=8pj-)y2^wdo%x=5O%iJz^yx|0^CUOq`6VUEX> z>a2eG;#o26R9fR=T*~2mU6a^uQ+4XL?grDleF$KnKs~)nb65{}vVB4iIy^qF^>RLY zVv?teD)ivcabUE*J?xrd=xPd$nW<2}FfaR#VI5 zm*W^yDE!NDG--aTg$|#AJgJikearu@O?%&zZF4@|{L_`XEKpBY*CFC?)rvSndF2ps zguN(uN*_J?Rjhuqzh=JzLm81qp%+I!hFvrrRGSZ5JdGLgxWrSdc_Cc;P;gijUHmpc z8KlFUokDds?gJFFd`4_V4D))PlP-H;M_vbhYy719IJ3Ae-}&UZnTH=Wh8C$XMeJjO zV*nX&wz({(Bx@jTrITDshXM^1uaO+}OXlOaDtUsT#)^=3L^lqW+H`7eYS9a6r%G$j zKzr!+ba)-fhV^uKDo5KwOC_oG6vSzZ)!0aOqdPFXhkuOKuw;aEGdg-;U`UsD|Hy8P zso&mLkzv)-{xSJlNUvUcvW~xR%QJ-Aby(#&TckWdf1-oN0!&8?@tL1Iw={AIs&BUN zoQTw~<<=*u4dvrwD+QV6v3jM+!}JgIjeoEi;Fub5=0?sz>FPj~Z4{eTkPCRYY zaF5$;VD54Dyx(i}xH1YQ*RZ13hR4H?du7s6u95QS!Mzv%VY zT^b=(L6BGO)I%?rhFeF6iKGE44>WFPX)>x}(cG|`dS+8zX1=@=Z|_{^D^x_aQl~Fm z6C#>^`y48~77idmr;#{>e~ddr`02H9b7`s_FL1B;t$}kVQa%?yXt)z%z*~`SK0Vmg9Y#*95~2XB#2Q6J0~*_LWk#{ z#-jVec{`Lr)pMG8@?# zmOTx0%n)?U_U$oSyR^u+sm^vO=5HUEgR(~KvaUd~%|SVD?2f^qEZ7i{=#ZYJwr^*! z`B$+#X%XouZ_^U&Q>xyUPT6I?x68f)$$^DP%!JF-Ny$E#O5}7%V7H?=ViC}!Y9NroLe7|x` z4)=jUs1iw_C920HlTu0Wtp)-u$b}NRchWq0#n8K8joWp<=tJwW3ql3@ld}@aBn~?1 zI&L3Dh7KQ-y^yW&!7QGp_@>Kom9F&#K|>J<>XYK^<6u@naTaoMkl@zh?8k!^VV6ZW zZmue7E{S7;l@M}QYFak1Y+ALEo8Yldhs`Sw5QUu!lb0pkzTD`Et>FQce=>YiCJggP zHKZuZel2*>;{YE233VGUVR{92n&)Rbb@o2rNguBBWgZ1i9;*K4lD!`F3La>ci`ISu zwl|k->odoLaIi+Fw6vt!%RCoDaT0<#x9c_;oj$An{EU9(ImYHGeEYi0B~S97y_W^+ zIkrEuaO!-!!>8%uWvhu8C3+e)ik=anY# zmG2#{mZ{U}b^T)1+K-s_uigQ<#VlTDO*yC6nVHu$^JJqYlQ-FY47}729^!m+0h@lIy1+`T zQ_-cX!=H+7X@9vp?Nd`NeD4G9{wqKAj-AvGIR?B+sl}gEj9Vn3Y`=l61_N6we=khZfXJ`Yp3V%%c=8yb0OlLZj0 z+!9?pMh(8XxfUTDhPg~UjfiJeKK0550a*Khjwqhs-Ju}f&t!Tjm2}1zk9}5k=I`;hOV;J1Ua@aZQy))cE++CoSXMk433q@~{SsjyhDv!R`JI{<_=prlfJ;m{Y;IGHH@J~(qrOvND z%3Lz=2_`>msUVOj6afo@k&BobZgF=-(+OS(ls-jx63@B|T3h?bci2)%n794J{~s-t zi3+=;mdgKtK}OnC-FP~}$%^UXZIc$UC1CnXZ3AD3`o);?SPqTEGD7K%MrZxFvA6BX z{Hqg{b4kK4+x&MwZEozIBoac&=_MTZT(37d3LXUOi=7e;>$x^8`#`(WsRQGg2elGvyC1f-v5x>+ghTvj7aXyF$sNh7)5H_S;lFo;L6$VV zKq)-2oJmc*aYrqcQv-YV?Sl)`mf~gBoA~aY|F*~H1pnm47mNN2gRtFdVoK6JCv$?d zy7DXZVdWLRWv+8G`b64|SeXNXboCp%dSyRRR%R6g~+ zN$_5ZAYC$8{e|*l)b|P#LM4@Lb7GG$NXNC6c=MMO!e%K)7(~L$vPj2yz%DfZ2!r$} zmBnY!#M&2E9b%BY4AzGgwG(Bxs@h2yB)7F=X5-;gu!dOeu&hI2^+{g2vKpTA0VE9a zt;xCqzplS&KO0NJAbjqF<&CdGO(a@L7=+l|TNEHt`C*oXL0)u=o=jB~$vjB_Q3lRD z*$01{egqLEVUQ=Xu~mso?z5=w<0kK}w!@~SnG2W#NEigAoVnZ+vB)AhAY3l*{;;0+ z+(G5QslhhXV2H$=amMM5wpzmHnz@ss3Y0%QMs`!=&rGPr#o3LPiu^b;IW5V0_PM@E z_FB8aAqKg1dG_qgjkw{Jbj!@3bF*H?ndj!5T7R6IcRR!&UUNZGM=h0CLEnEIVvq~c zixK}~5J^%?C6Jflp-{IlsiktQjhC^ugw#^0jx*oqW$q-kRPI&BTg&sY9=23!s_!@- zwp4_AWhVY@sr=hg`G2IP^5p+q3{oEt0Ruc=p=1E?9S{RZuUk+g41ga1yAU|Njfx6OX#h8cc+3NLW&&v&K?H2~>%cmb%bdoN& z4HYkHZJ(8y4K`HHHM%YjWNS25EwuW6USAk&eDvxm7DCCX*@R#0jHVYgA8M*z?oH&= z$kA-Bc|DkR+TrC;bM5LVPBD&CtEKMkvy!Xj=EE)Z8`F5p!5ppDhRwMqkByhZt&JaE z5yB|BuCz6MT<*IsdVQp=`Sa@7!+%M~zog?|((y0p_?LA2OFI6KB^}E-*3I=!n+~l3 zFL!>Pdy-rE!JAa_`23r6>}HZkht!#4=D$csabr_1hnqDe@#Xi(z0T6%E$g_s1^Qg? z`lpZGY&A&pn-2uhz1hPDnr=V#@mzBV{q`2ZA{ zzCPLOEeRohiZ?KQLtiY@?ULY@Z7H{=zbicwa%DT`SoSMHZNHJ+prO#Y{bjQc&9fBv zFAk&fZw+4g&DIBhEcfAfKMRxV6;5#WpZ@;#nvM4Z=4hrJ3i~DeXPRJ)<7WCeCv~z!UgOl*o>B5JA)AI|K#{^d8w7(9q zWp5WgJ@L zGk3!7eqVHbw0AIi+iu7DG;aT;^^-oQ+|A%e`(H%w?mtmX__BU_?)&WzZNuUp1|u!! ze!Mytl-BEJ#Nb!}t7Ix_j}T*mqq`!6=Q zB?*R(G*GPB1VOd}FGl$Y?RxUr`gRn%B&B-MNqf_!26Z%QC{Kqvr+PLS1iF%k?nZf> z6bc_|aPC}nB}{v@N;wM~_~%6h%|?Y%_jytndcHmvbk@M5B|JiMHEdkUi@wB#uQzy} z(G9!mc?IsgZQx@L54N(6M9%oOoCyi{@x1|$FevfKEq3!&^$F^Wv?~c{jdFh_73E#x z#kA)O!bGhf>^gtg4GC3sgGIR<-@EN=<8M3Tc-Z%l_A?`?j;%n(;!t9g%YdNg=Urzd zsYrKKk8{ko?HXf9XZuL1W3$&Qs#pU?@L2MR{TvxyW*hUM&n0XR3o~$$=?&7IaXd_X zAn%Y8ACMBP*;;V0U{ptx@1x!*o0-@Xf?-^O{vR5G6Mdu3tVWJp0}vPx3pYd(54`IE z!05YU#ZEj@z;sFc3)>jB-aFl^cTmw`OC<@-)6Q=U<0l)#)q4LMc9^B!{hFqR@upqe z3yO)3Q7DOjD+J{FCYm<|ze`Q9R`sk|yXPk4^mpasfRyzI)2FDrG(N#{Op)BFafLqd&mxmk$o*ynoyM*IJNMy{c5g~rEpP{UzR!#DtAD$c zm-}>lr(l?FdJs>#%PE`N5aR#DJ21)aN4&$SKj6ojBQ54`kY8|)VR}we`eF0~m!8Fv zk>8(gjdIqBi6NKqc_^GAu$P|stN7s?yiw!~!vPcksmuXtN5hr@U=l@jb_`5LNPEqw z=G&7pViRp{;DSIxZzcj0Mr8Vlz%`5P36|`et^k^lO}>@=>P7bAflSW)i);%EY72mb zJ|NDd$7gt8>@qgKF||FFBv62pNHV^$Y&3Vy3I%k^f|}1Y`-L!U+=%QZI$IwFzG*=w zfFljXqHs@yhhrhY7)X@}Jq3WaWKuVGRl}!{I|j}O0P;#0%$t~VlR(Bx$QO&vC$c=0 zlzn�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 literal 0 HcmV?d00001 diff --git a/assets/images/rectangle.png b/assets/images/rectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..e4bdb0b641ce44717c807403d795d438f46c6b2f GIT binary patch literal 31312 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 Xp<(@*L2n9Z00000NkvXXu0mjfWKqDH literal 0 HcmV?d00001 diff --git a/assets/images/search_medicine_icon.png b/assets/images/search_medicine_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..349620a5c596fa0c18318138dea658a1c357152f GIT binary patch literal 1281 zcmV+c1^)VpP)Px#IAvH#W=%~1DgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa40RR91E}#Pd z1ONa40RR91E&u=k0C8FdJ^%m&cS%G+RA>d&noUSlQ547T_)*|!PN6tuB=`|1k+Y~p zBs4-$o6toYSGs6tpssR}Ah^g@wa{IQ+ACTcl{QwEltp7ff*;`oilI0&>Ij-Lo&O!r z^t`>%_vSsFnFH5*-+k|%`+Mh}bMCvULnso7L_E}0N5xA8Z5NefNRTG=Q5mK3(&2ER ztuF-KLM0U?Ku|5Z)O2GY6^Rw50fx^&gKoA`RnMI%T-Wch3I{bj1o}0FVO6vsb=1P* z>0oIsybH_#_iB67r0s>P1PB&ykxmi>cqE;OnKg?WM^XEh*Tq~YEH?h^O7-RWIik#! zBiuPBEl+1VI3Rl`{bFn}5Cc{z@dC}&CBjpfr`|GrZL6yc`&T41;IE%`iJIaw(z@kj z<)!eJe37xmRWUrjBEmbn61?l$MUk7GX&9Ivv<>|Ej|K5!YC)8dHSZr{O}tp&%#wT_ z)_-!N(mXtZ)2a;3FGsw6A0v+@<|6CcJBHQ0TUeFj?!EqQY8)nzTRxjVk$P!!OS%VJ z+RU=ooI5QZTqzZ^p-s60X6CmH4i~}Fw-Z1-Xas7*kWbY1f08w_4a@D40#RL%C;DfX z1dL!*EQ60N1Y{s00QCd`+c7>PoY`5Tv9efT)94tV-Ur!Kbv_!nq|2yS0*B?09gscr z1kjH^|C9mylmf7+s#u`L3L&$wAT1WjY*F0q z@%dx!!To^uEw7PpZ_7-gzO0$R#2l6^?si7MIc9_Vmst8eS(KrXap1!YjZC5nc2=yA zQLzNhz70!i#hH~UM*Pb%b6_=)RetYTS`Qk}Os=d8brrNa)wVTo3OZO4kXmWKS}LvE zFf=Ldy!s-u1vVNzXp9@4kB(RUUaM1WTmDwzz-zvILENoy$MnN}u<<|;c=5gjVQp+q zMU+*Z-MkbVe^|qo;KU@o-+oCzUT)OfJ_zFBhiREjy6D5qj979Nwl;zae%hNcqaRoZY8)cWT3Sv*KTKPkq2V6z;SmBv zzJ~QUb6_*UK_PnP{Fmbai$F#8Fq1(TR$H3_*FwWRAjk+>Xsz<2Y#Rzv@W^wMM2Rziq rTY0IVolhkh0$=t~8Kp9){u9Dq?i-OHwQP@Q00000NkvXXu0mjf&wMt| literal 0 HcmV?d00001 diff --git a/assets/images/test-weight.png b/assets/images/test-weight.png new file mode 100644 index 0000000000000000000000000000000000000000..934b246784b45dd22f65ba558652899f1cc080f8 GIT binary patch literal 606 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey1|%P7U0DF67>k44ofy`glX(f`SfoaHruq6Z zXaU(A426Kt9nlo8O5F zE!q_gsukIOZU-GMUQ>wQanQ7m@4CRxnVOv}*9!QTe|W^%l;CQUvNHSLBl`zJ*D{t> z{H{+=F<`b)&!@py)O>lLR zM%MQlA6sR!2~PVnPw-4{2qzpGuSoO7w;^%LQB zno^D-LRLGk&M8`6Ce9_;lekd)eP&q|ie3zqm&0g7i&S3j3^P6Px#IAvH#W=%~1DgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa40RR91KA-~t z1ONa40RR91E&u=k0A>rHLjV8-xk*GpRA>d|T0Ku2K@eRVJ4%6MP>@mrQbazAU@J|M z2B=a3ZHm}#(*QrfG6jW61N;J;HU%KjBoY!7DN;njiIk*C1f`pRB~r$0-dkAfd_J># z+?@e4()jLXKW^Ua?Ck8GW5PvJ%I6T}!H>aD!1us6k^VsGALm?&#bTd5K>+Yw@G|%x zxYvl7O5mghAL9)KPjPtwJ z%XA8G8G_A%ZwqJ+D6zifPnu7+j2nka%Up|2>2z9LKVN)Pi4_ldT_7^Ge!^6XFV)6B^$bfSSFz_(|UPp=q zI6*TQ6^li|0B8%I?HI-D^?KyC3LM-P78Y7kSSo#Ra3C0v7~mM`37$k?nplslR|0J; zJ`=o_bGi%<59?;3T>}G0ip1=%sSuScm&?tluE9FNbG>KoPuktx6|1YO%0p-@0-m3r z7dk#T`)36P{hso+iV(mUYS)D|Sz^tXpJkL0onF{Yk>!vy^h;j+_oN^&q7 zGxLZTuC6u{4zarBmXagJ?If2S-t*vrS4RC#C$8Lf>H`Y4WBV|O$K3qP#f{H}WMfdy zLC(wTPK-kUYvnyw!Hu7f*da#Os?%;8==k_pB9T&4%=Q}}f!AyljE(Uj};0&L8m^iJU0r;ufo$&^Om*8b^1Kevw zOz*%i&anzL;!czpeg26z2j(Amd*M&KKY^nRz%75`{SVNp{4@C-6<+`V002ovPDHLk FV1j1oUAzDQ literal 0 HcmV?d00001 diff --git a/ios/.gitignore b/ios/.gitignore index ce2e85b9..e67828a4 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -32,3 +32,4 @@ Runner/GeneratedPluginRegistrant.* !default.perspectivev3 /Runner.xcworkspace/contents.xcworkspacedata /Runner.xcodeproj/project.pbxproj +/Flutter/.last_build_id diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index d5a1e7da..0e335bcd 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -c948a9de8d5fb4b791dcd366c30ba789 \ No newline at end of file +4592a16118bc51c556d89309892cf794 \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index 77760fe1..d68afba2 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -12,7 +12,6 @@ project 'Runner', { # pod 'FBSDKCoreKit' # pod 'FBSDKLoginKit' -pod 'NVActivityIndicatorView' def parse_KV_file(file, separator='=') file_abs_path = File.expand_path(file) @@ -40,8 +39,11 @@ target 'Runner' do use_frameworks! use_modular_headers! + # Native Pods + pod 'NVActivityIndicatorView' + + # Flutter Pod - copied_flutter_dir = File.join(__dir__, 'Flutter') copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') @@ -89,3 +91,4 @@ post_install do |installer| end end end + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1094393e..6a965de8 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,4 +1,9 @@ PODS: + - android_intent (0.0.1): + - Flutter + - barcode_scan_fix (0.0.1): + - Flutter + - MTBBarcodeScanner - connectivity (0.0.1): - Flutter - Reachability @@ -111,6 +116,7 @@ PODS: - Flutter - maps_launcher (0.0.1): - Flutter + - MTBBarcodeScanner (5.0.11) - nanopb (1.30906.0): - nanopb/decode (= 1.30906.0) - nanopb/encode (= 1.30906.0) @@ -175,8 +181,12 @@ PODS: - Flutter - webview_flutter (0.0.1): - Flutter + - wifi (0.0.1): + - Flutter DEPENDENCIES: + - android_intent (from `.symlinks/plugins/android_intent/ios`) + - barcode_scan_fix (from `.symlinks/plugins/barcode_scan_fix/ios`) - connectivity (from `.symlinks/plugins/connectivity/ios`) - connectivity_for_web (from `.symlinks/plugins/connectivity_for_web/ios`) - connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`) @@ -227,6 +237,7 @@ DEPENDENCIES: - video_player_web (from `.symlinks/plugins/video_player_web/ios`) - wakelock (from `.symlinks/plugins/wakelock/ios`) - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) + - wifi (from `.symlinks/plugins/wifi/ios`) SPEC REPOS: trunk: @@ -239,6 +250,7 @@ SPEC REPOS: - GoogleDataTransport - GoogleMaps - GoogleUtilities + - MTBBarcodeScanner - nanopb - NVActivityIndicatorView - PromisesObjC @@ -249,6 +261,10 @@ SPEC REPOS: - TwilioVideo EXTERNAL SOURCES: + android_intent: + :path: ".symlinks/plugins/android_intent/ios" + barcode_scan_fix: + :path: ".symlinks/plugins/barcode_scan_fix/ios" connectivity: :path: ".symlinks/plugins/connectivity/ios" connectivity_for_web: @@ -347,8 +363,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/wakelock/ios" webview_flutter: :path: ".symlinks/plugins/webview_flutter/ios" + wifi: + :path: ".symlinks/plugins/wifi/ios" SPEC CHECKSUMS: + android_intent: 367df2f1277a74e4a90e14a8ab3df3112d087052 + barcode_scan_fix: 80dd65de55f27eec6591dd077c8b85f2b79e31f1 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 connectivity_for_web: 2b8584556930d4bd490d82b836bcf45067ce345b connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191 @@ -383,6 +403,7 @@ SPEC CHECKSUMS: manage_calendar_events: 0338d505ea26cdfd20cd883279bc28afa11eca34 map_launcher: e325db1261d029ff33e08e03baccffe09593ffea maps_launcher: eae38ee13a9c3f210fa04e04bb4c073fa4c6ed92 + MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc native_device_orientation: e24d00be281de72996640885d80e706142707660 native_progress_hud: f95f5529742b36a3c7fdecfa88dc018319e39bf9 @@ -415,7 +436,8 @@ SPEC CHECKSUMS: video_player_web: da8cadb8274ed4f8dbee8d7171b420dedd437ce7 wakelock: 0d4a70faf8950410735e3f61fb15d517c8a6efc4 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 + wifi: d7d77c94109e36c4175d845f0a5964eadba71060 -PODFILE CHECKSUM: fd41bba6db38332890981ce38f0747bdb94c61f2 +PODFILE CHECKSUM: ac5efa1ac3c9555d0008dc18004313c84746da62 COCOAPODS: 1.10.0 diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard index de2d580c..8ae1ba59 100644 --- a/ios/Runner/Base.lproj/Main.storyboard +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -7,10 +7,10 @@ - + - + @@ -18,85 +18,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/ios/Runner/Base.lproj/Main_Custom.storyboard b/ios/Runner/Base.lproj/Main_Custom.storyboard new file mode 100644 index 00000000..de2d580c --- /dev/null +++ b/ios/Runner/Base.lproj/Main_Custom.storyboard @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Controllers/MainFlutterVC.swift b/ios/Runner/Controllers/MainFlutterVC.swift index ba67f0a5..22aa5e55 100644 --- a/ios/Runner/Controllers/MainFlutterVC.swift +++ b/ios/Runner/Controllers/MainFlutterVC.swift @@ -7,25 +7,126 @@ import UIKit import Flutter +import NetworkExtension +import SystemConfiguration.CaptiveNetwork +var flutterMethodChannel:FlutterMethodChannel? = nil class MainFlutterVC: FlutterViewController { - var root_view:MainViewController? - + override func viewDidLoad() { super.viewDidLoad() - + + flutterMethodChannel = FlutterMethodChannel(name: "HMG-Platform-Bridge",binaryMessenger: binaryMessenger) + flutterMethodChannel?.setMethodCallHandler { (methodCall, result) in + + if methodCall.method == "connectHMGInternetWifi"{ + self.connectHMGInternetWifi(methodCall:methodCall, result: result) + + }else if methodCall.method == "connectHMGGuestWifi"{ + self.connectHMGGuestWifi(methodCall:methodCall, result: result) + + }else if methodCall.method == "isHMGNetworkAvailable"{ + self.isHMGNetworkAvailable(methodCall:methodCall, result: result) + + }else{ + + } + + print("") + } + + FlutterText.with(key: "errorConnectingHmgNetwork") { (localized) in + print(localized) + } + } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + // Connect HMG Wifi and Internet + func connectHMGInternetWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){ + + guard let pateintId = (methodCall.arguments as? [Any])?.first as? String + else { return assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'") } + + + HMG_Internet.shared.connect(patientId: pateintId) { (status, message) in + result(status ? 1 : 0) + if status{ + self.showMessage(title:"Congratulations", message:message) + }else{ + self.showMessage(title:"Ooops,", message:message) + } + } } - */ - + + // Connect HMG-Guest for App Access + func connectHMGGuestWifi(methodCall:FlutterMethodCall ,result: @escaping FlutterResult){ + HMG_GUEST.shared.connect() { (status, message) in + result(status ? 1 : 0) + if status{ + self.showMessage(title:"Congratulations", message:message) + }else{ + self.showMessage(title:"Ooops,", message:message) + } + } + } + + func isHMGNetworkAvailable(methodCall:FlutterMethodCall ,result: @escaping FlutterResult) -> Bool{ + guard let ssid = methodCall.arguments as? String else { + assert(true, "Missing or invalid arguments (Must have one argument 'String at 0'") + return false + } + + let queue = DispatchQueue.init(label: "com.hmg.wifilist") + NEHotspotHelper.register(options: nil, queue: queue) { (command) in + print(command) + + if(command.commandType == NEHotspotHelperCommandType.filterScanList) { + if let networkList = command.networkList{ + for network in networkList{ + print(network.ssid) + } + } + } + } + + // [NEHotspotHelper registerWithOptions:nil queue:queue handler: ^(NEHotspotHelperCommand * cmd) { + // if(cmd.commandType == kNEHotspotHelperCommandTypeFilterScanList) { + // for (NEHotspotNetwork* network in cmd.networkList) { + // NSLog(@"network.SSID = %@",network.SSID); + // } + // } + // }]; + + + + + return false + + } + + + // Message Dailog + func showMessage(title:String, message:String){ + DispatchQueue.main.async { + let alert = UIAlertController(title: title, message: message, preferredStyle: .alert ) + alert.addAction(UIAlertAction(title: "OK", style: .destructive, handler: nil)) + self.present(alert, animated: true) { + + } + } + } + + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + } diff --git a/ios/Runner/Controllers/MainViewController.swift b/ios/Runner/Controllers/MainViewController.swift deleted file mode 100644 index 94a355f9..00000000 --- a/ios/Runner/Controllers/MainViewController.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// MainViewController.swift -// Runner -// -// Created by ZiKambrani on 26/03/1442 AH. -// - -import UIKit -import NVActivityIndicatorView - -class MainViewController: UIViewController { - @IBOutlet weak var lblLoadingText: UILabel! - @IBOutlet weak var loading: NVActivityIndicatorView! - - override func viewDidLoad() { - super.viewDidLoad() - print(loading) - } - - func createBridge(flutterViewController:FlutterViewController){ - let connectHMGGuestWifi = FlutterMethodChannel(name: "HMG-Platform-Bridge",binaryMessenger: flutterViewController.binaryMessenger) - connectHMGGuestWifi.setMethodCallHandler { (methodCall, result) in - if methodCall.method == "connectHMGGuestWifi"{ - self.connectWifi(result: result) - }else if methodCall.method == "loading"{ - self.showLoading(flutterMethodCall: methodCall) - }else{ - - } - print("") - } - } - - - // Connect HMG-Guest Wifi and Internet - func connectWifi(result: @escaping FlutterResult){ - showLoading(message: "Connecting...") - HMG_GUEST.shared.connect { (status, message) in - result(status ? 1 : 0) - self.showLoading(false); - if status{ - self.showMessage(title:"Congratulations", message:message) - }else{ - self.showMessage(title:"Ooops,", message:message) - } - } - } - - - // Loading/Progress - private func showLoading(flutterMethodCall:FlutterMethodCall){ - if let args = flutterMethodCall.arguments as? [Any], - let message = args.first as? String, let show = args.last as? Bool{ - showLoading(message: message, show) - }else{ - assert(true, "Missing or invalid arguments (Must have two argument 'String at 0' and Boolean at 1)") - } - } - func showLoading(message:String = "Please wait...", _ show:Bool = true){ - DispatchQueue.main.async { - if show{ - self.lblLoadingText.text = message - self.loading.superview?.isHidden = false - self.loading.startAnimating() - }else{ - self.lblLoadingText.text = "" - self.loading.superview?.isHidden = true - self.loading.stopAnimating() - } - } - } - - - // Message Dailog - func showMessage(title:String, message:String){ - DispatchQueue.main.async { - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert ) - alert.addAction(UIAlertAction(title: "OK", style: .destructive, handler: nil)) - self.present(alert, animated: true) { - - } - } - } - - - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if let flutterVC = segue.destination as? MainFlutterVC{ - flutterVC.root_view = self - createBridge(flutterViewController: flutterVC) - } - } - -} diff --git a/ios/Runner/GuestPOC_Certificate.cer b/ios/Runner/GuestPOC_Certificate.cer new file mode 100644 index 0000000000000000000000000000000000000000..f3804f6e57a63cf93cf7e336c7aa48b403d4e955 GIT binary patch literal 1596 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 NEi~`CJkGx>`CqoWTH^o! literal 0 HcmV?d00001 diff --git a/ios/Runner/Helper/API.swift b/ios/Runner/Helper/API.swift new file mode 100644 index 00000000..763147c8 --- /dev/null +++ b/ios/Runner/Helper/API.swift @@ -0,0 +1,17 @@ +// +// API.swift +// Runner +// +// Created by ZiKambrani on 04/04/1442 AH. +// + +import UIKit + +fileprivate let DOMAIN = "https://uat.hmgwebservices.com" +fileprivate let SERVICE = "Services/Patients.svc/REST" +fileprivate let BASE_URL = "\(DOMAIN)/\(SERVICE)" + +struct API { + static let WIFI_CREDENTIALS = "\(BASE_URL)/Hmg_SMS_Get_By_ProjectID_And_PatientID" + +} diff --git a/ios/Runner/Helper/Extensions.swift b/ios/Runner/Helper/Extensions.swift new file mode 100644 index 00000000..6da82ce3 --- /dev/null +++ b/ios/Runner/Helper/Extensions.swift @@ -0,0 +1,118 @@ +// +// Extensions.swift +// Runner +// +// Created by ZiKambrani on 04/04/1442 AH. +// + +import UIKit + + +extension String{ + func toUrl() -> URL?{ + return URL(string: self) + } +} + +extension Bundle { + + func certificate(named name: String) -> SecCertificate { + let cerURL = self.url(forResource: name, withExtension: "cer")! + let cerData = try! Data(contentsOf: cerURL) + let cer = SecCertificateCreateWithData(nil, cerData as CFData)! + return cer + } + + func identity(named name: String, password: String) -> SecIdentity { + let p12URL = self.url(forResource: name, withExtension: "p12")! + let p12Data = try! Data(contentsOf: p12URL) + + var importedCF: CFArray? = nil + let options = [kSecImportExportPassphrase as String: password] + let err = SecPKCS12Import(p12Data as CFData, options as CFDictionary, &importedCF) + precondition(err == errSecSuccess) + let imported = importedCF! as NSArray as! [[String:AnyObject]] + precondition(imported.count == 1) + + return (imported[0][kSecImportItemIdentity as String]!) as! SecIdentity + } + + +} + +extension SecCertificate{ + func trust() -> Bool?{ + var optionalTrust: SecTrust? + let policy = SecPolicyCreateBasicX509() + + let status = SecTrustCreateWithCertificates([self] as AnyObject, + policy, + &optionalTrust) + guard status == errSecSuccess else { return false} + let trust = optionalTrust! + + let stat = optionalTrust?.evaluateAllowing(rootCertificates: [self]) + return stat + } + + func secTrustObject() -> SecTrust?{ + var optionalTrust: SecTrust? + let policy = SecPolicyCreateBasicX509() + + let status = SecTrustCreateWithCertificates([self] as AnyObject, + policy, + &optionalTrust) + return optionalTrust + } +} + + +extension SecTrust { + + func evaluate() -> Bool { + var trustResult: SecTrustResultType = .invalid + let err = SecTrustEvaluate(self, &trustResult) + guard err == errSecSuccess else { return false } + return [.proceed, .unspecified].contains(trustResult) + } + + func evaluateAllowing(rootCertificates: [SecCertificate]) -> Bool { + + // Apply our custom root to the trust object. + + var err = SecTrustSetAnchorCertificates(self, rootCertificates as CFArray) + guard err == errSecSuccess else { return false } + + // Re-enable the system's built-in root certificates. + + err = SecTrustSetAnchorCertificatesOnly(self, false) + guard err == errSecSuccess else { return false } + + // Run a trust evaluation and only allow the connection if it succeeds. + + return self.evaluate() + } +} + + +extension UIView{ + func show(){ + self.alpha = 0.0 + self.isHidden = false + UIView.animate(withDuration: 0.25, animations: { + self.alpha = 1 + }) { (complete) in + + } + } + + func hide(){ + UIView.animate(withDuration: 0.25, animations: { + self.alpha = 0.0 + }) { (complete) in + self.isHidden = true + } + } +} + + diff --git a/ios/Runner/Helper/LocalizedFromFlutter.swift b/ios/Runner/Helper/LocalizedFromFlutter.swift new file mode 100644 index 00000000..88530649 --- /dev/null +++ b/ios/Runner/Helper/LocalizedFromFlutter.swift @@ -0,0 +1,22 @@ +// +// LocalizedFromFlutter.swift +// Runner +// +// Created by ZiKambrani on 10/04/1442 AH. +// + +import UIKit + +class FlutterText{ + + class func with(key:String,completion: @escaping (String)->Void){ + flutterMethodChannel?.invokeMethod("localizedValue", arguments: key, result: { (result) in + if let localized = result as? String{ + completion(localized) + }else{ + completion(key) + } + }) + } + +} diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 1d97a387..8c6c1ed1 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,11 +2,6 @@ - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -27,22 +22,20 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS - io.flutter.embedded_views_preview - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - NSMicrophoneUsageDescription - Need microphone access for uploading videos NSCameraUsageDescription Need camera access for uploading images NSLocationUsageDescription Need location access for updating nearby friends NSLocationWhenInUseUsageDescription This app will use your location to show cool stuffs near you. + NSMicrophoneUsageDescription + Need microphone access for uploading videos NSPhotoLibraryUsageDescription Need photo library access for uploading images + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main UISupportedInterfaceOrientations UIInterfaceOrientationPortrait @@ -58,5 +51,7 @@ UIViewControllerBasedStatusBarAppearance + io.flutter.embedded_views_preview + diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements index ea0c25e7..be2e0283 100644 --- a/ios/Runner/Runner.entitlements +++ b/ios/Runner/Runner.entitlements @@ -2,6 +2,8 @@ + + aps-environment development com.apple.developer.networking.HotspotConfiguration diff --git a/ios/Runner/WifiConnect/HMG_GUEST.swift b/ios/Runner/WifiConnect/HMG_GUEST.swift index a578309f..ad6d3922 100644 --- a/ios/Runner/WifiConnect/HMG_GUEST.swift +++ b/ios/Runner/WifiConnect/HMG_GUEST.swift @@ -10,25 +10,18 @@ import UIKit import NetworkExtension import SystemConfiguration.CaptiveNetwork +fileprivate let SSID = "HMG-MobileApp" class HMG_GUEST{ static let shared = HMG_GUEST() - private let SSID = "HMG-GUEST" - private let USER = "1301" - private let PASS = "8928" - var complete:((_ status:Bool, _ message:String) -> Void)! + private var complete:((_ status:Bool, _ message:String) -> Void)! func connect(completion:@escaping ((_ status:Bool, _ message:String) -> Void)){ complete = completion if isAlreadyConnected() { - hasInternet { (has) in - if has == true{ - self.complete(true, "You already connected to internet") - return - }else{ - self.authenticate() - } + FlutterText.with(key: "alreadyConnectedHmgNetwork") { (localized) in + self.complete(true, localized ) } }else{ connect() @@ -36,56 +29,33 @@ class HMG_GUEST{ } private func connect() { - let hotspotConfig = NEHotspotConfiguration(ssid: SSID) - hotspotConfig.joinOnce = true + let hotspotConfig = NEHotspotConfiguration(ssid: "\(SSID)") + hotspotConfig.joinOnce = false NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in guard let self = self else { return; } - + if let error = error { - self.complete(false, error.localizedDescription ?? "Error connecting to HMG wifi network" ) + FlutterText.with(key: "errorConnectingHmgNetwork") { (localized) in + self.complete(false, localized ) + } }else{ - _ = Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { (timer) in - self.authenticate() + _ = Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { (timer) in + let connected = self.isAlreadyConnected() + let message = connected ? "successConnectingHmgNetwork" : "failedConnectingHmgNetwork" + FlutterText.with(key: message) { (localized) in + self.complete(false, localized ) + } } } } - } - func authenticate(){ - func callLogin(){ - - let parameters = "Login=Log%20In&cmd=authenticate&password=1820&user=2300" - let postData = parameters.data(using: .utf8) - - var request = URLRequest(url: URL(string: "https://captiveportal-login.hmg.com/cgi-bin/login")!,timeoutInterval: 5) - request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") - - request.httpMethod = "POST" - request.httpBody = postData - - let task = URLSession.shared.dataTask(with: request) { data, response, error in - // guard let data = data else { - // self.complete(false, "Error at authentication") - // return - // } - - self.hasInternet { (has) in - self.complete(has, has ? "Successfully connected to the internet" : "Authentication failed or you are already using your credentials on another device") - } - } - task.resume() - - } - - self.hasInternet { (has) in - if has == true{ - self.complete(true, "Your internet account is already authenticated") - }else{ - callLogin() - } - } +// NSMutableURLRequest(url: URL(string: "www.google.com")!).bind(to: command) +// NEHotspotHelper.register(options: [:], queue: DispatchQueue.global()) { (command) in +// command +// print(command) +// } } @@ -104,26 +74,4 @@ class HMG_GUEST{ return currentSSID == SSID } - - func hasInternet( completion:@escaping ((Bool)->Void)){ - - let testUrl = "https://captive.apple.com" - var request = URLRequest(url: URL(string: testUrl)!,timeoutInterval: 5) - request.httpMethod = "GET" - let task = URLSession.shared.dataTask(with: request) { data, response, error in - guard let data = data else { - completion(false) - return - } - let resp = String(data: data, encoding: .utf8)! - if resp.contains("Success"){ - completion(true) - }else{ - completion(false) - } - - } - task.resume() - } - } diff --git a/ios/Runner/WifiConnect/HMG_GUEST_bkp.swift b/ios/Runner/WifiConnect/HMG_GUEST_bkp.swift new file mode 100644 index 00000000..e3dfd468 --- /dev/null +++ b/ios/Runner/WifiConnect/HMG_GUEST_bkp.swift @@ -0,0 +1,129 @@ +//// +//// HMG_GUEST.swift +//// HMG-iOS-Wifi +//// +//// Created by ZiKambrani on 23/03/1442 AH. +//// Copyright © 1442 ZiKambrani. All rights reserved. +//// +// +//import UIKit +//import NetworkExtension +//import SystemConfiguration.CaptiveNetwork +// +// +//class HMG_GUEST{ +// static let shared = HMG_GUEST() +// private let SSID = "GUEST-POC" +// private let USER = "1301" +// private let PASS = "8928" +// +// var complete:((_ status:Bool, _ message:String) -> Void)! +// func connect(completion:@escaping ((_ status:Bool, _ message:String) -> Void)){ +// complete = completion +// +// if isAlreadyConnected() { +// hasInternet { (has) in +// if has == true{ +// self.complete(true, "You already connected to internet") +// return +// }else{ +// self.authenticate() +// } +// } +// }else{ +// connect() +// } +// } +// +// private func connect() { +// let hotspotConfig = NEHotspotConfiguration(ssid: SSID) +// hotspotConfig.joinOnce = true +// +// NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in +// guard let self = self else { return; } +// +// if let error = error { +// self.complete(false, error.localizedDescription ?? "Error connecting to HMG wifi network" ) +// }else{ +// _ = Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { (timer) in +// self.authenticate() +// } +// } +// } +// } +// +// func authenticate(){ +// +// func callLogin(){ +// +// let parameters = "Login=Log%20In&cmd=authenticate&password=1820&user=2300" +// let postData = parameters.data(using: .utf8) +// +// var request = URLRequest(url: URL(string: "https://captiveportal-login.hmg.com/cgi-bin/login")!,timeoutInterval: 5) +// request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") +// +// request.httpMethod = "POST" +// request.httpBody = postData +// +// let task = URLSession.shared.dataTask(with: request) { data, response, error in +// // guard let data = data else { +// // self.complete(false, "Error at authentication") +// // return +// // } +// +// self.hasInternet { (has) in +// self.complete(has, has ? "Successfully connected to the internet" : "Authentication failed or you are already using your credentials on another device") +// } +// } +// task.resume() +// +// } +// +// self.hasInternet { (has) in +// if has == true{ +// self.complete(true, "Your internet account is already authenticated") +// }else{ +// callLogin() +// } +// } +// +// } +// +// private func isAlreadyConnected() -> Bool{ +// var currentSSID: String? +// if let interfaces = CNCopySupportedInterfaces() as NSArray? { +// for interface in interfaces { +// if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? { +// currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String +// break +// } +// } +// } +// +// print("CurrentConnectedSSID: \(currentSSID)") +// return currentSSID == SSID +// } +// +// +// func hasInternet( completion:@escaping ((Bool)->Void)){ +// +// let testUrl = "https://captive.apple.com" +// var request = URLRequest(url: URL(string: testUrl)!,timeoutInterval: 5) +// request.httpMethod = "GET" +// let task = URLSession.shared.dataTask(with: request) { data, response, error in +// guard let data = data else { +// completion(false) +// return +// } +// let resp = String(data: data, encoding: .utf8)! +// if resp.contains("Success"){ +// completion(true) +// }else{ +// completion(false) +// } +// +// } +// task.resume() +// } +// +//} diff --git a/ios/Runner/WifiConnect/HMG_Internet.swift b/ios/Runner/WifiConnect/HMG_Internet.swift new file mode 100644 index 00000000..00ac172f --- /dev/null +++ b/ios/Runner/WifiConnect/HMG_Internet.swift @@ -0,0 +1,193 @@ +// +// HMG_GUEST.swift +// HMG-iOS-Wifi +// +// Created by ZiKambrani on 23/03/1442 AH. +// Copyright © 1442 ZiKambrani. All rights reserved. +// + +import UIKit +import NetworkExtension +import SystemConfiguration.SCNetworkConnection + +fileprivate var TEST = false +fileprivate let SSID = "GUEST-POC" +fileprivate var USER = "" +fileprivate var PASS = "" + +fileprivate func supportedEAPTypes() -> [NSNumber]{ + let peap = NEHotspotEAPSettings.EAPType.EAPPEAP.rawValue + let fast = NEHotspotEAPSettings.EAPType.EAPFAST.rawValue + let tls = NEHotspotEAPSettings.EAPType.EAPTLS.rawValue + let ttls = NEHotspotEAPSettings.EAPType.EAPTTLS.rawValue + return [NSNumber(value: peap), NSNumber(value: fast), NSNumber(value: tls), NSNumber(value: ttls)] +} + +class HMG_Internet{ + static let shared = HMG_Internet() + + private var complete:((_ status:Bool, _ message:String) -> Void)! + func connect(patientId:String, completion:@escaping ((_ status:Bool, _ message:String) -> Void)){ + complete = completion + + if isAlreadyConnected() { + hasInternet { (has) in + if has == true{ + FlutterText.with(key: "alreadyConnectedHmgNetwork"){ localized in + self.complete(true, localized) + } + return + }else{ + FlutterText.with(key: "connectedToHmgNetworkWithNoInternet"){ localized in + self.complete(false, localized) + } + } + } + }else{ + connect(patientId: patientId) + } + } + + private func connect(patientId:String) { + + getWifiCredentials(patientId: patientId) { + let trust_cert = Bundle.main.certificate(named: "GuestPOC_Certificate") + guard trust_cert.trust() == true else{ + FlutterText.with(key: "notConnectedToHmgNetworkSecurityIssue"){ localized in + self.complete(false,localized) + } + return + } + + let eapSettings = NEHotspotEAPSettings() + eapSettings.username = USER + eapSettings.password = PASS + eapSettings.trustedServerNames = ["*.hmg.com","onboard.hmg.com","hmg.com"] + eapSettings.supportedEAPTypes = [supportedEAPTypes().first!] +// eapSettings.isTLSClientCertificateRequired = true +// eapSettings.ttlsInnerAuthenticationType = .eapttlsInnerAuthenticationMSCHAPv2 // MSCHAPv2 +// eapSettings.setIdentity(Bundle.main.identity(named: "GuestPOC_Certificate", password: "1")) +// eapSettings.setTrustedServerCertificates([trust_cert]) + + let hotspotConfig = NEHotspotConfiguration(ssid: SSID, eapSettings: eapSettings) + NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in + guard let self = self else { return; } + + if let error = error { + + FlutterText.with(key: "errorConnectingHmgNetwork"){ localized in + self.complete(false,localized) + } + + }else{ + _ = Timer.scheduledTimer(withTimeInterval: 5, repeats: false) { (timer) in + self.hasInternet { (has) in + if has == true{ + FlutterText.with(key: "connectedHmgNetworkWithInternet"){ localized in + self.complete(true,localized) + } + return + }else{ + FlutterText.with(key: "connectedToHmgNetworkWithNoInternet"){ localized in + self.complete(false,localized) + } + } + } + } + } + } + + } + } + + private func isAlreadyConnected() -> Bool{ + var currentSSID: String? + if let interfaces = CNCopySupportedInterfaces() as NSArray? { + for interface in interfaces { + if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? { + currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String + break + } + } + } + print("CurrentConnectedSSID: \(currentSSID)") + return currentSSID == SSID + } + + + private func getWifiCredentials(patientId:String, success: @escaping (() -> Void)){ + if TEST { + success() + return + } + + guard let url = API.WIFI_CREDENTIALS.toUrl() else { return assert(true, "Invalid URL: \(API.WIFI_CREDENTIALS)") } + + // JSON Body for HTTP Request + let json: [String: Any] = ["PatientID": patientId] + let jsonData = try? JSONSerialization.data(withJSONObject: json) + + var request = URLRequest(url: url, timeoutInterval: 20) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = jsonData + + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let data = data else { + self.somethingWentWrong() + return + } + + if let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]{ + if let requiredData = (responseJSON["Hmg_SMS_Get_By_ProjectID_And_PatientIDList"] as? [[String:Any]])?.first, + let userName = requiredData["UserName"] as? String, let password = requiredData["Password"] as? String{ + + USER = userName + PASS = password + success() + + }else if let errorMessage = responseJSON["ErrorMessage"] as? String{ + self.complete(false, errorMessage) + }else{ + self.somethingWentWrong() + } + }else{ + self.somethingWentWrong() + } + + } + task.resume() + + } + + private func somethingWentWrong(){ + FlutterText.with(key: "somethingWentWrong") { (localized) in + self.complete(false, localized) + } + } + + + func hasInternet( completion:@escaping ((Bool)->Void)){ + + let testUrl = "https://captive.apple.com" + var request = URLRequest(url: URL(string: testUrl)!,timeoutInterval: 5) + request.httpMethod = "GET" + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let data = data else { + completion(false) + return + } + + completion( + String(data: data, encoding: .utf8)! + .replacingOccurrences(of: " ", with: "") + .replacingOccurrences(of: "\n", with: "") + .lowercased() + .contains("success") + ) + + } + task.resume() + } + +} diff --git a/ios/Runner/WifiConnect/HMG_Wifi.swift b/ios/Runner/WifiConnect/HMG_Wifi.swift new file mode 100644 index 00000000..1335f766 --- /dev/null +++ b/ios/Runner/WifiConnect/HMG_Wifi.swift @@ -0,0 +1,172 @@ +// +// HMG_GUEST.swift +// HMG-iOS-Wifi +// +// Created by ZiKambrani on 23/03/1442 AH. +// Copyright © 1442 ZiKambrani. All rights reserved. +// + +import UIKit +import NetworkExtension +import SystemConfiguration.CaptiveNetwork + +fileprivate var TEST = true +fileprivate let SSID = "GUEST-POC" +fileprivate var USER = "0696" +fileprivate var PASS = "0000" + +fileprivate func supportedEAPTypes() -> [NSNumber]{ + let peap = NEHotspotEAPSettings.EAPType.EAPPEAP.rawValue + let fast = NEHotspotEAPSettings.EAPType.EAPFAST.rawValue + let tls = NEHotspotEAPSettings.EAPType.EAPTLS.rawValue + let ttls = NEHotspotEAPSettings.EAPType.EAPTTLS.rawValue + return [NSNumber(value: peap), NSNumber(value: fast), NSNumber(value: tls), NSNumber(value: ttls)] +} + +class HMG_Internet{ + static let shared = HMG_Wifi() + + private var complete:((_ status:Bool, _ message:String) -> Void)! + func connect(patientId:String, completion:@escaping ((_ status:Bool, _ message:String) -> Void)){ + complete = completion + + if isAlreadyConnected() { + hasInternet { (has) in + if has == true{ + self.complete(true, "You already connected to HMG network to access internet") + return + }else{ + self.complete(false, "You are connected to HMG network but it have no internet access") + } + } + }else{ + connect(patientId: patientId) + } + } + + private func connect(patientId:String) { + + getWifiCredentials(patientId: patientId) { + let trust_cert = Bundle.main.certificate(named: "GuestPOC_Certificate") + guard trust_cert.trust() == true else{ + self.complete(false,"We are not able to connect you to HMG network due to security certificate") + return + } + + let eapSettings = NEHotspotEAPSettings() + eapSettings.username = USER + eapSettings.password = PASS + eapSettings.trustedServerNames = ["*.hmg.com","onboard.hmg.com","hmg.com"] + eapSettings.supportedEAPTypes = [supportedEAPTypes().first!] +// eapSettings.isTLSClientCertificateRequired = true +// eapSettings.ttlsInnerAuthenticationType = .eapttlsInnerAuthenticationMSCHAPv2 // MSCHAPv2 +// eapSettings.setIdentity(Bundle.main.identity(named: "GuestPOC_Certificate", password: "1")) +// eapSettings.setTrustedServerCertificates([trust_cert]) + + let hotspotConfig = NEHotspotConfiguration(ssid: SSID, eapSettings: eapSettings) + NEHotspotConfigurationManager.shared.apply(hotspotConfig) {[weak self] (error) in + guard let self = self else { return; } + + if let error = error { + self.complete(false, "Error connecting to HMG network" /*error.localizedDescription*/ ) + }else{ + _ = Timer.scheduledTimer(withTimeInterval: 3, repeats: false) { (timer) in + self.hasInternet { (has) in + if has == true{ + self.complete(true, "Successfully connected to the HMG network to access internet") + return + }else{ + self.complete(false, "Successfully connected to the HMG network but it have no internet access") + } + } + } + } + } + + } + } + + private func isAlreadyConnected() -> Bool{ + var currentSSID: String? + if let interfaces = CNCopySupportedInterfaces() as NSArray? { + for interface in interfaces { + if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? { + currentSSID = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String + break + } + } + } + + print("CurrentConnectedSSID: \(currentSSID)") + return currentSSID == SSID + } + + + private func getWifiCredentials(patientId:String, completion: @escaping (() -> Void)){ + if TEST { + completion() + return + } + + guard let url = API.WIFI_CREDENTIALS.toUrl() else { return assert(true, "Invalid URL: \(API.WIFI_CREDENTIALS)") } + + // JSON Body for HTTP Request + let json: [String: Any] = ["PatientID": patientId] + let jsonData = try? JSONSerialization.data(withJSONObject: json) + + var request = URLRequest(url: url, timeoutInterval: 20) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = jsonData + + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let data = data else { + self.complete(false, "Failed to get your internet credentials") + return + } + + if let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]{ + if let requiredData = responseJSON["Hmg_SMS_Get_By_ProjectID_And_PatientIDList"] as? [String:Any], + let userName = requiredData["UserName"] as? String, let password = requiredData["Password"] as? String{ + + USER = userName + PASS = password + completion() + + }else if let errorMessage = responseJSON["ErrorMessage"] as? String{ + self.complete(false, errorMessage) + } + }else{ + self.complete(false, "Failed to get your internet credentials") + } + + } + task.resume() + + } + + + func hasInternet( completion:@escaping ((Bool)->Void)){ + + let testUrl = "https://captive.apple.com" + var request = URLRequest(url: URL(string: testUrl)!,timeoutInterval: 5) + request.httpMethod = "GET" + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let data = data else { + completion(false) + return + } + + completion( + String(data: data, encoding: .utf8)! + .replacingOccurrences(of: " ", with: "") + .replacingOccurrences(of: "\n", with: "") + .lowercased() + .contains("success") + ) + + } + task.resume() + } + +} diff --git a/lib/config/config.dart b/lib/config/config.dart index ce8b79de..eb9c2d92 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -7,40 +7,33 @@ import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; const MAX_SMALL_SCREEN = 660; const BASE_URL = 'https://uat.hmgwebservices.com/'; +const PING_SERVICE = 'Services/Weather.svc/REST/CheckConnectivity'; +// const BASE_URL = 'https://hmgwebservices.com/'; const GET_PROJECT = 'Services/Lists.svc/REST/GetProject'; ///Doctor -const GET_MY_DOCTOR = - 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; +const GET_MY_DOCTOR = 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; const GET_DOCTOR_PROFILE = 'Services/Doctors.svc/REST/GetDocProfiles'; const GET_DOCTOR_RATING = 'Services/Doctors.svc/REST/dr_GetAvgDoctorRating'; ///Prescriptions const PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList'; -const GET_PRESCRIPTIONS_ALL_ORDERS = - 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; -const GET_PRESCRIPTION_REPORT = - 'Services/Patients.svc/REST/INP_GetPrescriptionReport'; -const SEND_PRESCRIPTION_EMAIL = - 'Services/Notifications.svc/REST/SendPrescriptionEmail'; -const GET_PRESCRIPTION_REPORT_ENH = - 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; +const GET_PRESCRIPTIONS_ALL_ORDERS = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; +const GET_PRESCRIPTION_REPORT = 'Services/Patients.svc/REST/INP_GetPrescriptionReport'; +const SEND_PRESCRIPTION_EMAIL = 'Services/Notifications.svc/REST/SendPrescriptionEmail'; +const GET_PRESCRIPTION_REPORT_ENH = 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; ///Lab Order const GET_Patient_LAB_ORDERS = 'Services/Patients.svc/REST/GetPatientLabOrders'; -const GET_Patient_LAB_SPECIAL_RESULT = - 'Services/Patients.svc/REST/GetPatientLabSpecialResults'; -const GET_Patient_LAB_RESULT = - '/Services/Patients.svc/REST/GetPatientLabResults'; +const GET_Patient_LAB_SPECIAL_RESULT = 'Services/Patients.svc/REST/GetPatientLabSpecialResults'; +const GET_Patient_LAB_RESULT = 'Services/Patients.svc/REST/GetPatientLabResults'; /// const GET_PATIENT_ORDERS = 'Services/Patients.svc/REST/GetPatientRadOrders'; -const GET_PATIENT_ORDERS_DETAILS = - 'Services/Patients.svc/REST/Rad_UpdatePatientRadOrdersToRead'; +const GET_PATIENT_ORDERS_DETAILS = 'Services/Patients.svc/REST/Rad_UpdatePatientRadOrdersToRead'; const GET_RAD_IMAGE_URL = 'Services/Patients.svc/Rest/GetRadImageURL'; -const SEND_RAD_REPORT_EMAIL = - 'Services/Notifications.svc/REST/SendRadReportEmail'; +const SEND_RAD_REPORT_EMAIL = 'Services/Notifications.svc/REST/SendRadReportEmail'; ///Feedback const SEND_FEEDBACK = 'Services/COCWS.svc/REST/InsertCOCItemInSPList'; @@ -49,24 +42,17 @@ const GET_PATIENT_AppointmentHistory = 'Services' '/Doctors.svc/REST/PateintHasAppoimentHistory'; ///VITAL SIGN -const GET_PATIENT_VITAL_SIGN = - 'Services/Doctors.svc/REST/Doctor_GetPatientVitalSign'; +const GET_PATIENT_VITAL_SIGN = 'Services/Doctors.svc/REST/Doctor_GetPatientVitalSign'; ///Er Nearest -const GET_NEAREST_HOSPITAL = - 'Services/Patients.svc/REST/Patient_GetProjectAvgERWaitingTime'; +const GET_NEAREST_HOSPITAL = 'Services/Patients.svc/REST/Patient_GetProjectAvgERWaitingTime'; ///Er Nearest -const GET_AMBULANCE_REQUEST = - 'Services/Patients.svc/REST/PatientER_RRT_GetAllTransportationMethod'; -const GET_PATIENT_ALL_PRES_ORDERS = - 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; -const GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID = - 'Services/Patients.svc/REST/PatientER_RRT_GetPickUpRequestByPresOrderID'; -const UPDATE_PRESS_ORDER = - 'Services/Patients.svc/REST/PatientER_UpdatePresOrder'; -const INSERT_ER_INERT_PRES_ORDER = - 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; +const GET_AMBULANCE_REQUEST = 'Services/Patients.svc/REST/PatientER_RRT_GetAllTransportationMethod'; +const GET_PATIENT_ALL_PRES_ORDERS = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; +const GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID = 'Services/Patients.svc/REST/PatientER_RRT_GetPickUpRequestByPresOrderID'; +const UPDATE_PRESS_ORDER = 'Services/Patients.svc/REST/PatientER_UpdatePresOrder'; +const INSERT_ER_INERT_PRES_ORDER = 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; ///FindUs const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations'; @@ -75,15 +61,13 @@ const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations'; const GET_LIVECHAT_REQUEST = 'Services/Patients.svc/REST/GetPatientICProjects'; ///babyInformation -const GET_BABYINFORMATION_REQUEST = - 'Services/Community.svc/REST/GetBabyByUserID'; +const GET_BABYINFORMATION_REQUEST = 'Services/Community.svc/REST/GetBabyByUserID'; ///Get Baby By User ID const GET_BABY_BY_USER_ID = 'Services/Community.svc/REST/GetBabyByUserID'; ///userInformation -const GET_USERINFORMATION_REQUEST = - 'Services/Community.svc/REST/GetUserInformation_New'; +const GET_USERINFORMATION_REQUEST = 'Services/Community.svc/REST/GetUserInformation_New'; ///addNewChild const GET_NEWCHILD_REQUEST = 'Services/Community.svc/REST/CreateNewBaby'; @@ -101,19 +85,15 @@ const GET_TABLE_REQUEST = 'Services/Community.svc/REST/CreateVaccinationTable'; const GET_CITIES_REQUEST = 'Services/Lists.svc/REST/GetAllCities'; ///BloodDetails -const GET_BLOOD_REQUEST = - 'services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails'; +const GET_BLOOD_REQUEST = 'services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails'; ///Reports const REPORTS = 'Services/Doctors.svc/REST/GetPatientMedicalReportStatusInfo'; -const INSERT_REQUEST_FOR_MEDICAL_REPORT = - 'Services/Doctors.svc/REST/InsertRequestForMedicalReport'; +const INSERT_REQUEST_FOR_MEDICAL_REPORT = 'Services/Doctors.svc/REST/InsertRequestForMedicalReport'; ///Rate -const IS_LAST_APPOITMENT_RATED = - 'Services/Doctors.svc/REST/IsLastAppoitmentRated'; -const GET_APPOINTMENT_DETAILS_BY_NO = - 'Services/MobileNotifications.svc/REST/GetAppointmentDetailsByApptNo'; +const IS_LAST_APPOITMENT_RATED = 'Services/Doctors.svc/REST/IsLastAppoitmentRated'; +const GET_APPOINTMENT_DETAILS_BY_NO = 'Services/MobileNotifications.svc/REST/GetAppointmentDetailsByApptNo'; const GET_QR_PARKING = 'Services/SWP.svc/REST/GetQRParkingByID'; @@ -124,6 +104,9 @@ const GET_QR_PARKING = 'Services/SWP.svc/REST/GetQRParkingByID'; //URL to get clinic list const GET_CLINICS_LIST_URL = "Services/lists.svc/REST/GetClinicCentralized"; +//URL to get active appointment list +const GET_ACTIVE_APPOINTMENTS_LIST_URL = "Services/Doctors.svc/Rest/Dr_GetAppointmentActiveNumber"; + //URL to get projects list const GET_PROJECTS_LIST = 'Services/Lists.svc/REST/GetProject'; @@ -131,100 +114,76 @@ const GET_PROJECTS_LIST = 'Services/Lists.svc/REST/GetProject'; const GET_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/SearchDoctorsByTime"; //URL to dental doctors list -const GET_DENTAL_DOCTORS_LIST_URL = - "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; +const GET_DENTAL_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; //URL to get doctor free slots const GET_DOCTOR_FREE_SLOTS = "Services/Doctors.svc/REST/GetDoctorFreeSlots"; //URL to insert appointment -const INSERT_SPECIFIC_APPOINTMENT = - "Services/Doctors.svc/REST/InsertSpecificAppointment"; +const INSERT_SPECIFIC_APPOINTMENT = "Services/Doctors.svc/REST/InsertSpecificAppointment"; //URL to get patient share -const GET_PATIENT_SHARE = - "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNO"; +const GET_PATIENT_SHARE = "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNO"; //URL to get patient appointment history -const GET_PATIENT_APPOINTMENT_HISTORY = - "Services/Doctors.svc/REST/PateintHasAppoimentHistory"; +const GET_PATIENT_APPOINTMENT_HISTORY = "Services/Doctors.svc/REST/PateintHasAppoimentHistory"; //URL to get patient appointment curfew history -const GET_PATIENT_APPOINTMENT_CURFEW_HISTORY = - "Services/Doctors.svc/REST/AppoimentHistoryForCurfew"; +const GET_PATIENT_APPOINTMENT_CURFEW_HISTORY = "Services/Doctors.svc/REST/AppoimentHistoryForCurfew"; //URL to confirm appointment -const CONFIRM_APPOINTMENT = - "Services/MobileNotifications.svc/REST/ConfirmAppointment"; +const CONFIRM_APPOINTMENT = "Services/MobileNotifications.svc/REST/ConfirmAppointment"; -const INSERT_VIDA_REQUEST = - "Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart"; +const INSERT_VIDA_REQUEST = "Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart"; //URL to cancel appointment const CANCEL_APPOINTMENT = "Services/Doctors.svc/REST/CancelAppointment"; //URL get appointment QR -const GENERATE_QR_APPOINTMENT = - "Services/Doctors.svc/REST/GenerateQRAppointmentNo"; +const GENERATE_QR_APPOINTMENT = "Services/Doctors.svc/REST/GenerateQRAppointmentNo"; //URL send email appointment QR -const EMAIL_QR_APPOINTMENT = - "Services/Notifications.svc/REST/sendEmailForOnLineCheckin"; +const EMAIL_QR_APPOINTMENT = "Services/Notifications.svc/REST/sendEmailForOnLineCheckin"; //URL check payment status -const CHECK_PAYMENT_STATUS = - "Services/PayFort_Serv.svc/REST/GetRequestStatusByRequestID"; +const CHECK_PAYMENT_STATUS = "Services/PayFort_Serv.svc/REST/GetRequestStatusByRequestID"; //URL create advance payment const CREATE_ADVANCE_PAYMENT = "Services/Doctors.svc/REST/CreateAdvancePayment"; -const ADD_ADVANCE_NUMBER_REQUEST = - 'Services/PayFort_Serv.svc/REST/AddAdvancedNumberRequest'; +const HIS_CREATE_ADVANCE_PAYMENT = "Services/Patients.svc/REST/HIS_CreateAdvancePayment"; + +const ADD_ADVANCE_NUMBER_REQUEST = 'Services/PayFort_Serv.svc/REST/AddAdvancedNumberRequest'; -const IS_ALLOW_ASK_DOCTOR = - 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; -const GET_CALL_REQUEST_TYPE = - 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; +const IS_ALLOW_ASK_DOCTOR = 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; +const GET_CALL_REQUEST_TYPE = 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; const SEND_CALL_REQUEST = 'Services/Doctors.svc/REST/InsertCallInfo'; -const GET_LIVECARE_CLINICS = - 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinics'; +const GET_LIVECARE_CLINICS = 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinics'; -const GET_LIVECARE_SCHEDULE_CLINICS = - 'Services/Doctors.svc/REST/PatientER_GetClinicsHaveSchedule'; +const GET_LIVECARE_SCHEDULE_CLINICS = 'Services/Doctors.svc/REST/PatientER_GetClinicsHaveSchedule'; -const GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST = - 'Services/Doctors.svc/REST/PatientER_GetDoctorByClinicID'; +const GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST = 'Services/Doctors.svc/REST/PatientER_GetDoctorByClinicID'; -const GET_LIVECARE_SCHEDULE_DOCTOR_TIME_SLOTS = - 'Services/Doctors.svc/REST/PatientER_GetDoctorFreeSlots'; +const GET_LIVECARE_SCHEDULE_DOCTOR_TIME_SLOTS = 'Services/Doctors.svc/REST/PatientER_GetDoctorFreeSlots'; -const INSERT_LIVECARE_SCHEDULE_APPOINTMENT = - 'Services/Doctors.svc/REST/InsertSpecificAppoitmentForSchedule'; +const INSERT_LIVECARE_SCHEDULE_APPOINTMENT = 'Services/Doctors.svc/REST/InsertSpecificAppoitmentForSchedule'; -const GET_PATIENT_SHARE_LIVECARE = - "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNOForLiveCare"; +const GET_PATIENT_SHARE_LIVECARE = "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNOForLiveCare"; -const GET_LIVECARE_CLINIC_TIMING = - 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinicsServiceTimingsSchedule'; +const GET_LIVECARE_CLINIC_TIMING = 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinicsServiceTimingsSchedule'; -const GET_ER_APPOINTMENT_FEES = - 'Services/DoctorApplication.svc/REST/GetERAppointmentFees'; +const GET_ER_APPOINTMENT_FEES = 'Services/DoctorApplication.svc/REST/GetERAppointmentFees'; const GET_ER_APPOINTMENT_TIME = 'Services/ER_VirtualCall.svc/REST/GetRestTime'; -const ADD_NEW_CALL_FOR_PATIENT_ER = - 'Services/DoctorApplication.svc/REST/NewCallForPatientER'; +const ADD_NEW_CALL_FOR_PATIENT_ER = 'Services/DoctorApplication.svc/REST/NewCallForPatientER'; -const GET_LIVECARE_HISTORY = - 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtualHistory'; -const CANCEL_LIVECARE_REQUEST = - 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; -const SEND_LIVECARE_INVOICE_EMAIL = - 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; +const GET_LIVECARE_HISTORY = 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtualHistory'; +const CANCEL_LIVECARE_REQUEST = 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; +const SEND_LIVECARE_INVOICE_EMAIL = 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; const GET_USER_TERMS = '/Services/Patients.svc/REST/GetUserTermsAndConditions'; -const UPDATE_HEALTH_TERMS = - '/services/Patients.svc/REST/UpdatePateintHealthSummaryReport'; +const UPDATE_HEALTH_TERMS = '/services/Patients.svc/REST/UpdatePateintHealthSummaryReport'; //URL to get medicine and pharmacies list const CHANNEL = 3; @@ -236,20 +195,21 @@ const LANGUAGE = 2; const PATIENT_OUT_SA = 0; const SESSION_ID = 'TMRhVmkGhOsvamErw'; const IS_DENTAL_ALLOWED_BACKEND = false; -const PATIENT_TYPE = 1; -const PATIENT_TYPE_ID = 1; +const PATIENT_TYPE = 2; +const PATIENT_TYPE_ID = 2; +var DEVICE_TOKEN = ""; var DeviceTypeID = Platform.isIOS ? 1 : 2; const LANGUAGE_ID = 2; const GET_PHARMCY_ITEMS = "Services/Lists.svc/REST/GetPharmcyItems_Region"; const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList"; -const GET_PAtIENTS_INSURANCE = - "Services/Patients.svc/REST/Get_PatientInsuranceDetails"; -const GET_PAtIENTS_INSURANCE_UPDATED = - "Services/Patients.svc/REST/PatientER_GetPatientInsuranceCardUpdateHistory"; +const GET_PAtIENTS_INSURANCE = "Services/Patients.svc/REST/Get_PatientInsuranceDetails"; +const GET_PAtIENTS_INSURANCE_UPDATED = "Services/Patients.svc/REST/PatientER_GetPatientInsuranceCardUpdateHistory"; + +const INSURANCE_DETAILS = "Services/Patients.svc/REST/Get_InsuranceCheckList"; + const GET_VACCINES = "Services/Patients.svc/REST/GetDoneVaccinesByPatientID"; const GET_VACCINES_EMAIL = "Services/Notifications.svc/REST/SendVaccinesEmail"; -const GET_PAtIENTS_INSURANCE_APPROVALS = - "Services/Patients.svc/REST/GetApprovalStatus"; +const GET_PAtIENTS_INSURANCE_APPROVALS = "Services/Patients.svc/REST/GetApprovalStatus"; const SEARCH_BOT = 'HabibiChatBotApi/BotInterface/GetVoiceCommandResponse'; const GET_VACCINATIONS_ITEMS = "/Services/ERP.svc/REST/GET_VACCINATIONS_ITEMS"; @@ -259,59 +219,38 @@ const GET_PATIENT_SICK_LEAVE = 'Services/Patients.svc/REST/GetPatientSickLeave'; const SendSickLeaveEmail = 'Services/Notifications.svc/REST/SendSickLeaveEmail'; -const GET_PATIENT_AdVANCE_BALANCE_AMOUNT = - 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; -const GET_PATIENT_INFO_BY_ID = - 'Services/Doctors.svc/REST/GetPatientInfoByPatientID'; -const GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER = - 'Services/Patients.svc/REST/AP_GetPatientInfoByPatientIDandMobileNumber'; -const SEND_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = - 'Services/Authentication.svc/REST/SendActivationCodeForAdvancePayment'; -const CHECK_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = - 'Services/Authentication.svc/REST/CheckActivationCodeForAdvancePayment'; +const GET_PATIENT_AdVANCE_BALANCE_AMOUNT = 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; +const GET_PATIENT_INFO_BY_ID = 'Services/Doctors.svc/REST/GetPatientInfoByPatientID'; +const GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER = 'Services/Patients.svc/REST/AP_GetPatientInfoByPatientIDandMobileNumber'; +const SEND_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/SendActivationCodeForAdvancePayment'; +const CHECK_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/CheckActivationCodeForAdvancePayment'; -const GET_COVID_DRIVETHRU_PROJECT_LIST = - 'Services/Doctors.svc/REST/COVID19_ProjectDriveThroughTestingCenter'; +const GET_COVID_DRIVETHRU_PROJECT_LIST = 'Services/Doctors.svc/REST/COVID19_ProjectDriveThroughTestingCenter'; -const GET_COVID_DRIVETHRU_PAYMENT_INFO = - 'Services/Doctors.svc/REST/COVID19_GetPatientPaymentInormation'; +const GET_COVID_DRIVETHRU_PAYMENT_INFO = 'Services/Doctors.svc/REST/COVID19_GetPatientPaymentInormation'; -const GET_COVID_DRIVETHRU_FREE_SLOTS = - 'Services/Doctors.svc/REST/COVID19_GetFreeSlots'; +const GET_COVID_DRIVETHRU_FREE_SLOTS = 'Services/Doctors.svc/REST/COVID19_GetFreeSlots'; ///Smartwatch Integration Services -const GET_PATIENT_LAST_RECORD = - 'Services/Patients.svc/REST/Med_GetPatientLastRecord'; +const GET_PATIENT_LAST_RECORD = 'Services/Patients.svc/REST/Med_GetPatientLastRecord'; ///My Trackers -const GET_DIABETIC_RESULT_AVERAGE = - 'Services/Patients.svc/REST/Patient_GetDiabeticResultAverage'; -const GET_DIABTEC_RESULT = - 'Services/Patients.svc/REST/Patient_GetDiabtecResults'; -const ADD_DIABTEC_RESULT = - 'Services/Patients.svc/REST/Patient_AddDiabtecResult'; - -const GET_BLOOD_PRESSURE_RESULT_AVERAGE = - 'Services/Patients.svc/REST/Patient_GetBloodPressureResultAverage'; -const GET_BLOOD_PRESSURE_RESULT = - 'Services/Patients.svc/REST/Patient_GetBloodPressureResult'; -const ADD_BLOOD_PRESSURE_RESULT = - 'Services/Patients.svc/REST/Patient_AddBloodPressureResult'; - -const GET_WEIGHT_PRESSURE_RESULT_AVERAGE = - 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResultAverage'; -const GET_WEIGHT_PRESSURE_RESULT = - 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResult'; -const ADD_WEIGHT_PRESSURE_RESULT = - 'Services/Patients.svc/REST/Patient_AddWeightMeasurementResult'; - -const ADD_ACTIVE_PRESCRIPTIONS_REPORT_BY_PATIENT_ID = - 'Services/Patients.svc/Rest/GetActivePrescriptionReportByPatientID'; - -const GET_CALL_INFO_HOURS_RESULT = - 'Services/Doctors.svc/REST/GetCallInfoHoursResult'; -const GET_CALL_REQUEST_TYPE_LOV = - 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; +const GET_DIABETIC_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetDiabeticResultAverage'; +const GET_DIABTEC_RESULT = 'Services/Patients.svc/REST/Patient_GetDiabtecResults'; +const ADD_DIABTEC_RESULT = 'Services/Patients.svc/REST/Patient_AddDiabtecResult'; + +const GET_BLOOD_PRESSURE_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetBloodPressureResultAverage'; +const GET_BLOOD_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_GetBloodPressureResult'; +const ADD_BLOOD_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_AddBloodPressureResult'; + +const GET_WEIGHT_PRESSURE_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResultAverage'; +const GET_WEIGHT_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResult'; +const ADD_WEIGHT_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_AddWeightMeasurementResult'; + +const ADD_ACTIVE_PRESCRIPTIONS_REPORT_BY_PATIENT_ID = 'Services/Patients.svc/Rest/GetActivePrescriptionReportByPatientID'; + +const GET_CALL_INFO_HOURS_RESULT = 'Services/Doctors.svc/REST/GetCallInfoHoursResult'; +const GET_CALL_REQUEST_TYPE_LOV = 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; const GET_DOCTOR_RESPONSE = 'Services/Patients.svc/REST/GetDoctorResponse'; const UPDATE_READ_STATUS = 'Services/Patients.svc/REST/UpdateReadStatus'; const INSERT_CALL_INFO = 'Services/Doctors.svc/REST/InsertCallInfo'; @@ -319,18 +258,13 @@ const INSERT_CALL_INFO = 'Services/Doctors.svc/REST/InsertCallInfo'; const GET_PATIENT_ALLERGIES = 'Services/Patients.svc/REST/GetPatientAllergies'; // H2O -const H2O_GET_USER_PROGRESS = - "Services/H2ORemainder.svc/REST/H2O_GetUserProgress"; -const H2O_INSERT_USER_ACTIVITY = - "Services/H2ORemainder.svc/REST/H2O_InsertUserActivity"; +const H2O_GET_USER_PROGRESS = "Services/H2ORemainder.svc/REST/H2O_GetUserProgress"; +const H2O_INSERT_USER_ACTIVITY = "Services/H2ORemainder.svc/REST/H2O_InsertUserActivity"; //E_Referral Services -const GET_ALL_RELATIONSHIP_TYPES = - "Services/Patients.svc/REST/GetAllRelationshipTypes"; -const SEND_ACTIVATION_CODE_FOR_E_REFERRAL = - 'Services/Authentication.svc/REST/SendActivationCodeForEReferral'; -const CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = - 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral'; +const GET_ALL_RELATIONSHIP_TYPES = "Services/Patients.svc/REST/GetAllRelationshipTypes"; +const SEND_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/SendActivationCodeForEReferral'; +const CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral'; const GET_ALL_CITIES = 'services/Lists.svc/rest/GetAllCities'; const CREATE_E_REFERRAL = "Services/Patients.svc/REST/CreateEReferral"; const GET_E_REFERRALS = "Services/Patients.svc/REST/GetEReferrals"; @@ -343,18 +277,14 @@ const GET_PHARMACY_PRODUCTs_BY_IDS = "epharmacy/api/productsbyids/"; const GET_CUSTOMERS_ADDRESSES = "epharmacy/api/Customers/"; // Home Health Care -const HHC_GET_ALL_SERVICES = - "Services/Patients.svc/REST/PatientER_HHC_GetAllServices"; -const HHC_GET_ALL_CMC_SERVICES = - "Services/Patients.svc/REST/PatientER_CMC_GetAllServices"; -const PATIENT_ER_UPDATE_PRES_ORDER = - "Services/Patients.svc/REST/PatientER_UpdatePresOrder"; -const GET_ORDER_DETAIL_BY_ID = - "Services/Patients.svc/REST/PatientER_HHC_GetTransactionsForOrder"; -const GET_CMC_ORDER_DETAIL_BY_ID = - "Services/Patients.svc/REST/PatientER_CMC_GetTransactionsForOrder"; +const HHC_GET_ALL_SERVICES = "Services/Patients.svc/REST/PatientER_HHC_GetAllServices"; +const HHC_GET_ALL_CMC_SERVICES = "Services/Patients.svc/REST/PatientER_CMC_GetAllServices"; +const PATIENT_ER_UPDATE_PRES_ORDER = "Services/Patients.svc/REST/PatientER_UpdatePresOrder"; +const GET_ORDER_DETAIL_BY_ID = "Services/Patients.svc/REST/PatientER_HHC_GetTransactionsForOrder"; +const GET_CMC_ORDER_DETAIL_BY_ID = "Services/Patients.svc/REST/PatientER_CMC_GetTransactionsForOrder"; const GET_CHECK_UP_ITEMS = "Services/Patients.svc/REST/GetCheckUpItems"; - +const PUSH_NOTIFICATION_GET_ALL_NOTIFICATIONS = 'Services/MobileNotifications.svc/REST/PushNotification_GetAllNotifications'; +const PUSH_NOTIFICATION_SET_MESSAGES_FROM_POOL_AS_READ = 'Services/MobileNotifications.svc/REST/PushNotification_SetMessagesFromPoolAsRead'; const TIMER_MIN = 10; const GOOGLE_API_KEY = "AIzaSyCmevVlr2Bh-c8W1VUzo8gt8JRY7n5PANw"; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 77cb1c44..07edb523 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1,4 +1,28 @@ -const Map> localizedValues = { +// --------- - -- - - - - - - - - ---------------- +// Used for Native through Platform Method Channel +// --------- - -- - - - - - - - - ---------------- +const Map platformLocalizedValues = { + "errorConnectingHmgNetwork": {"en": "Sorry you are not connecting to HMG network", "ar": "نعتذر لست متصل في شكبة مستشفى د.سليمان الحبيب"}, + "successConnectingHmgNetwork": {"en": "You connected to HMG network successfully, you can access the app", "ar": "تم التصال بشبكة د.سليمان الحبيب بنجاح, تستطيع الان استخدام تطبيق الحبيب"}, + "failedConnectingHmgNetwork": { + "en": "Sorry the connection to HMG network had been failed, make sure you are in range of HMG network", + "ar": "نعتذر لقد فشل الاتصال بشبكة د.سليمان الحبيب, تاكد من وجودك داخل نطاق الشبكة" + }, + "alreadyConnectedHmgNetwork": {"en": " You already connected to HMG network to access Alhabib app", "ar": "انت متصل مسبقاً بالشبكة تستطيع استخدام تطبيق الحبيب"}, + "somethingWentWrong": {"en": "Sorry something went wrong please try again later", "ar": "نعتذر لخدمتكم يرجى المحاولة لاحقا"}, + "enablingWifi": {"en": "Enabling wifi...", "ar": "Enabling wifi..."}, + "connectedHmgNetworkWithInternet": {"en": "Successfully connected to the HMG network to access internet", "ar": "Successfully connected to the HMG network to access internet"}, + "connectedToHmgNetworkWithNoInternet": { + "en": "Successfully connected to the HMG network but it have no internet access", + "ar": "Successfully connected to the HMG network but it have no internet access" + }, + "notConnectedToHmgNetworkSecurityIssue": { + "en": "We are not able to connect you to HMG network due to security reasons", + "ar": "We are not able to connect you to HMG network due to security reasons" + } +}; + +const Map localizedValues = { 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, @@ -21,10 +45,7 @@ const Map> localizedValues = { 'clinicName': {'en': 'Clinic Name', 'ar': 'اسم العيادة'}, 'doctorName': {'en': 'Doctor Name', 'ar': 'إسم الطبيب'}, 'nearestAppo': {'en': 'Nearest appointment', 'ar': 'أقرب موعد'}, - 'searchByDocText': { - 'en': 'Type the name of the doctor to help you find him', - 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه' - }, + 'searchByDocText': {'en': 'Type the name of the doctor to help you find him', 'ar': 'اكتب اسم الطبيب لمساعدتك في العثور عليه'}, 'enterDocName': {'en': 'Enter Doctor name', 'ar': 'أدخل إسم الطبيب'}, 'search': {'en': 'Search', 'ar': 'بحث'}, 'bookNow': {'en': 'BOOK NOW', 'ar': 'احجز الآن'}, @@ -34,17 +55,11 @@ const Map> localizedValues = { 'gender': {'en': 'Gender', 'ar': 'الجنس'}, 'nationality': {'en': 'Nationality', 'ar': 'الجنسية'}, 'docQualifications': {'en': 'Doctor Qualifications', 'ar': 'مؤهلات الطبيب'}, - 'confirmAppoHeading': { - 'en': 'Kindly confirm your Appointment', - 'ar': 'يرجى تأكيد موعدك' - }, + 'confirmAppoHeading': {'en': 'Kindly confirm your Appointment', 'ar': 'يرجى تأكيد موعدك'}, 'patientInfo': {'en': 'Patient Information', 'ar': 'معلومات المريض'}, 'bookSuccess': {'en': 'Book Success', 'ar': 'تم حجز الموعد بنجاح'}, 'patientShare': {'en': 'Patient Share', 'ar': 'المبلغ المستحق'}, - 'patientShareWithTax': { - 'en': 'Patient Share with Tax', - 'ar': 'المبلغ الإجمالي المستحق' - }, + 'patientShareWithTax': {'en': 'Patient Share with Tax', 'ar': 'المبلغ الإجمالي المستحق'}, 'confirmAppo': {'en': 'Confirm Appointment', 'ar': 'تأكيد الموعد'}, 'confirm': {'en': 'Confirm', 'ar': 'تأكيد'}, 'confirmLiveCare': {'en': 'Confirm LiveCare', 'ar': 'تأكيد لايف كير'}, @@ -61,41 +76,15 @@ const Map> localizedValues = { 'instruction': {'en': 'Instructions', 'ar': 'تعليمات'}, 'livecare': {'en': 'LiveCare', 'ar': 'لايف كير'}, 'livecareAppo': {'en': 'LiveCare Appointment', 'ar': 'الموعد لايف كير'}, - 'cancelAppoMsg': { - 'en': 'Are you sure you want to cancel this appointment?', - 'ar': 'هل أنت متأكد أنك تريد إلغاء هذا الموعد؟' - }, + 'cancelAppoMsg': {'en': 'Are you sure you want to cancel this appointment?', 'ar': 'هل أنت متأكد أنك تريد إلغاء هذا الموعد؟'}, - 'upcoming-noAction': { - 'en': 'No Action Required', - 'ar': 'لا يوجد إجراء مطلوب' - }, - 'upcoming-confirm': { - 'en': 'Please confirm the appointment to avoid cancellation', - 'ar': 'يرجى تأكيد الموعد لتفادي الإلغاء' - }, - 'upcoming-payment-pending': { - 'en': - 'Online Payment will be Activated before 24 Hours of Appointment Time', - 'ar': 'سيتم تفعيل خدمة الدفع الالكتروني قبل 24 ساعة من موعد الحجز' - }, - 'upcoming-payment-now': { - 'en': 'Pay Online now to avoid long waiting queue', - 'ar': 'ادفع الآن لتفادي الانتظار' - }, - 'upcoming-QR': { - 'en': 'Use the QR Code to Check-In in hospital', - 'ar': 'استخدم الرمز لتسجيل الحضور في المستشفى' - }, - 'upcoming-virtual': { - 'en': - 'This is a virtual appointment, Please adhere to the instructions for a seamless experience.', - 'ar': 'هذا موعد اتصال مرئي عن بعد ، يرجى اتباع تعليمات الخدمة.' - }, - 'upcoming-livecare': { - 'en': 'This is a LiveCare appointment', - 'ar': 'هذا موعد لايف كير' - }, + 'upcoming-noAction': {'en': 'No Action Required', 'ar': 'لا يوجد إجراء مطلوب'}, + 'upcoming-confirm': {'en': 'Please confirm the appointment to avoid cancellation', 'ar': 'يرجى تأكيد الموعد لتفادي الإلغاء'}, + 'upcoming-payment-pending': {'en': 'Online Payment will be Activated before 24 Hours of Appointment Time', 'ar': 'سيتم تفعيل خدمة الدفع الالكتروني قبل 24 ساعة من موعد الحجز'}, + 'upcoming-payment-now': {'en': 'Pay Online now to avoid long waiting queue', 'ar': 'ادفع الآن لتفادي الانتظار'}, + 'upcoming-QR': {'en': 'Use the QR Code to Check-In in hospital', 'ar': 'استخدم الرمز لتسجيل الحضور في المستشفى'}, + 'upcoming-virtual': {'en': 'This is a virtual appointment, Please adhere to the instructions for a seamless experience.', 'ar': 'هذا موعد اتصال مرئي عن بعد ، يرجى اتباع تعليمات الخدمة.'}, + 'upcoming-livecare': {'en': 'This is a LiveCare appointment', 'ar': 'هذا موعد لايف كير'}, 'upcoming-details': {'en': 'More Details', 'ar': 'المزيد'}, 'reschedule': {'en': 'Reschedule', 'ar': 'إعادة جدولة'}, 'raise': {'en': 'Raise', 'ar': 'رفع'}, @@ -109,46 +98,30 @@ const Map> localizedValues = { 'set-reminder': {'en': 'Set Reminder', 'ar': 'تعيين تذكير'}, 'login': {'en': 'Login', 'ar': 'تسجيل الدخول'}, - 'loginregister': {'en': 'Login / Register', 'ar': 'دخولتسجيل'}, - 'welcome': {'en': 'Welcome', 'ar': 'أهلا بك'}, - 'welcome_text': { - 'en': 'Dr. Sulaiman Al Habib Mobile Application ', - 'ar': 'الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك' - }, - 'welcome_text2': { - 'en': 'Have you visited AlHabib Medical Group before? ', - 'ar': 'الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك' - }, + 'loginregister': {'en': 'Login / Register', 'ar': 'تسجيل الدخول'}, + 'poweredBy': {'en': 'Powered By', 'ar': 'مشغل بواسطة'}, + "welcome": {"en": "Welcome", "ar": "مرحبا"}, + "welcome_text": {"en": "Dr. Sulaiman Al Habib Mobile Application", "ar": "الدكتور سليمان الحبيب لتطبيقات الهاتف المتحرك"}, + 'welcome_text2': {'en': 'Have you visited AlHabib Medical Group before? ', 'ar': 'هل قمت بزيارة مجموعة الحبيب الطبية من قبل؟'}, 'yes': {'en': 'Yes', 'ar': 'نعم'}, 'no': {'en': 'No', 'ar': 'لا'}, - "logintyperadio": { - "en": "Choose from below options to login to your medical file.", - "ar": "اختر من الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي." - }, + "logintyperadio": {"en": "Choose from below options to login to your medical file.", "ar": "اختر من الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي."}, "registernow": {"en": "Register Now", "ar": "تسجيل الان"}, - "nationalID": {"en": "National ID", "ar": "رقم الهوية"}, + "nationalID": {"en": "Enter the Identification Number", "ar": "أدخل رقم الهوية الوطنية او الاقامة"}, + "national-id": {"en": "National ID", "ar": "رقم الهوية"}, "fileNo": {"en": "File Number", "ar": "رقم الملف"}, + "fileno": {"en": "File No", "ar": "رقم الملف"}, "forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"}, - "enter-national-id": { - "en": "Please enter mobile number and national ID / Iqama", - "ar": "الرجاء إدخال رقم الجوال والهوية الوطنية / الاقامة" - }, - "profile-info": { - "en": "Please enter profile information", - "ar": "الرجاء إدخال معلومات الملف الشخصي" - }, + "forgotFileNoTitle": {"en": "Forgot medical file Number", "ar": "نسيت رقم الملف"}, + + "enter-national-id": {"en": "Please enter mobile number and identification number", "ar": "الرجاء إدخال رقم الجوال ورقم الهوية"}, + "profile-info": {"en": "Please enter profile information", "ar": "الرجاء إدخال معلومات الملف الشخصي"}, "submit": {"en": "Submit", "ar": "ارسال"}, - "forgot-desc": { - "en": "Enter the mobile number to receive the Medical file Number via SMS", - "ar": "أدخل رقم الجوال المسجل لاستلام رقم الملف عن طريق الرسائل النصية" - }, + "forgot-desc": {"en": "Enter the mobile number to receive the Medical file Number via SMS", "ar": "أدخل رقم الجوال المسجل لاستلام رقم الملف عن طريق الرسائل النصية"}, "dob": {"en": "Birth Date:", "ar": "تاريخ الميلاد"}, "hijri-date": {"en": "Hijri Date", "ar": "التاريخ الهجري"}, "gregorian-date": {"en": "Gregorian Date", "ar": "التاريخ الميلادي"}, - "verify-login-with": { - "en": "Please choose one of the following options to verify", - "ar": "الرجاء اختيار احدى الخيارات التالية للتحقق من البيانات" - }, + "verify-login-with": {"en": "Please choose one of the following options to verify", "ar": "الرجاء اختيار احدى الخيارات التالية للتحقق من البيانات"}, "register-user": {"en": "Register", "ar": "تسجيل"}, "verify-with-fingerprint": {"en": "Fingerprint", "ar": "بصمة"}, "verify-with-faceid": {"en": "Face ID", "ar": "معرف الوجه"}, @@ -157,32 +130,18 @@ const Map> localizedValues = { "last-login": {"en": "LAST LOGIN AT:", "ar": "آخر تسجيل دخول"}, "last-login-with": {"en": "VERIFICATION TYPE:", "ar": "نوع التحقق:"}, "verify-fingerprint": { - "en": - "To activate the fingerprint login service, please verify data by using one of the following options.", - "ar": - "لتفعيل خدمة الدخول بالبصمة، يرجى اختيار احدى القنوات التالية للتحقق من البيانات" + "en": "To activate the fingerprint login service, please verify data by using one of the following options.", + "ar": "لتفعيل خدمة الدخول بالبصمة، يرجى اختيار احدى القنوات التالية للتحقق من البيانات" }, 'searchMedicine': {'en': 'Search Medicine', 'ar': 'البحث عن الدواء'}, 'pharmaciesList': {'en': 'Pharmacies List', 'ar': 'قائمة الصيدلايات'}, - 'searchMedicineHere': { - 'en': 'Search Medicine Here', - 'ar': 'ابحث عن الدواء هنا' - }, + 'searchMedicineHere': {'en': 'Search Medicine Here', 'ar': 'ابحث عن الدواء هنا'}, 'description': {'en': 'Description', 'ar': 'الوصف'}, 'price': {'en': 'Price', 'ar': 'السعر'}, 'youCanFindItIn': {'en': 'You can find it in', 'ar': 'يمكنكة ان تجده في'}, - 'pleaseEnterMedicineName': { - 'en': 'Please Enter Medicine Name', - 'ar': 'الرجائ ادخال اسم الدواء' - }, - "verification_message": { - "en": "Please enter verification code", - "ar": "الرجاء إدخال رمز التحقق" - }, - "validation_message": { - "en": "The verification code expires in", - "ar": "تنتهي صلاحية رمز التحقق خلال" - }, + 'pleaseEnterMedicineName': {'en': 'Please Enter Medicine Name', 'ar': 'الرجائ ادخال اسم الدواء'}, + "verification_message": {"en": "Please enter verification code", "ar": "الرجاء إدخال رمز التحقق"}, + "validation_message": {"en": "The verification code expires in", "ar": "تنتهي صلاحية رمز التحقق خلال"}, "arabic-change": {"en": "عربي", "ar": "English"}, "notification": {"en": "Notifications", "ar": "إشعارات"}, "app-settings": {"en": "App Settings", "ar": "إعدادات التطبيق"}, @@ -190,80 +149,31 @@ const Map> localizedValues = { "before": {"en": "Before", "ar": "قبل"}, "minute": {"en": "Minutes", "ar": "دقيقة"}, "hour": {"en": "Hour", "ar": "ساعة"}, - "reminderSuccess": { - "en": "The reminder has been added successfully", - "ar": "يضاف التذكير بنجاح" - }, - "patientShareToDo": { - "en": "Amount before tax: ", - "ar": "المبلغ قبل الضريبة:" - }, + "reminderSuccess": {"en": "The reminder has been added successfully", "ar": "يضاف التذكير بنجاح"}, + "patientShareToDo": {"en": "Amount before tax: ", "ar": "المبلغ قبل الضريبة:"}, "patientTaxToDo": {"en": "Tax amount: ", "ar": "قيمة الضريبة:"}, - "patientShareTotalToDo": { - "en": "Total amount Due: ", - "ar": "المبلغ الإجمالي المستحق:" - }, + "patientShareTotalToDo": {"en": "Total amount Due: ", "ar": "المبلغ الإجمالي المستحق:"}, 'paymentMethod': {'en': 'Payment Method', 'ar': 'طريقة الدفع او السداد'}, - 'noNeedToWaitInLine': { - 'en': 'No need to stand in line.', - 'ar': 'لا داعي للوقوف في الطابور.' - }, - 'useQRAppoAttend': { - 'en': 'Use the QR code to register the appointment attendance.', - 'ar': 'استخدم الكود لتسجيل الحضور في المستشفى.' - }, - 'passQRAppoAttend': { - 'en': - 'Pass the QR code through the attendance devices available in the Hospital.', - 'ar': 'تمرير الكود من خلال اجهزة تسجيل الحضور المتوفرة في الفرع.' - }, - 'sitWaitingQR': { - 'en': 'Sit in the waiting rooms until called by the nurse.', - 'ar': 'الجلوس في غرف الانتظار لحين منادتك من قبل الممرضة.' - }, - 'attendRegisterCode': { - 'en': 'Attendance registration code', - 'ar': 'رمز تسجيل الحضور' - }, - 'scanQRHospital': { - 'en': 'Scan above QR Code to Check-In on the Machine in Hospital', - 'ar': 'مسح فوق رمز الاستجابة السريعة للتحقق في الجهاز في المستشفى' - }, + 'noNeedToWaitInLine': {'en': 'No need to stand in line.', 'ar': 'لا داعي للوقوف في الطابور.'}, + 'useQRAppoAttend': {'en': 'Use the QR code to register the appointment attendance.', 'ar': 'استخدم الكود لتسجيل الحضور في المستشفى.'}, + 'passQRAppoAttend': {'en': 'Pass the QR code through the attendance devices available in the Hospital.', 'ar': 'تمرير الكود من خلال اجهزة تسجيل الحضور المتوفرة في الفرع.'}, + 'sitWaitingQR': {'en': 'Sit in the waiting rooms until called by the nurse.', 'ar': 'الجلوس في غرف الانتظار لحين منادتك من قبل الممرضة.'}, + 'attendRegisterCode': {'en': 'Attendance registration code', 'ar': 'رمز تسجيل الحضور'}, + 'scanQRHospital': {'en': 'Scan above QR Code to Check-In on the Machine in Hospital', 'ar': 'مسح فوق رمز الاستجابة السريعة للتحقق في الجهاز في المستشفى'}, "sendEmail": {"en": "Send Email", "ar": "ارسال نسخة"}, - "EmailSentSuccessfully": { - "en": "Email Sent Successfully", - "ar": "تم إرسال البريد الإلكتروني بنجاح" - }, + "EmailSentSuccessfully": {"en": "Email Sent Successfully", "ar": "تم إرسال البريد الإلكتروني بنجاح"}, "close": {"en": "Close", "ar": "مغلق"}, "booked": {"en": "Booked", "ar": "محجوز"}, "confirmed": {"en": "Confirmed", "ar": "مؤكد"}, "arrived": {"en": "Arrived", "ar": "تم الحضور"}, - "payNowBookSuccess": { - "en": "Pay now via Al Habib App", - "ar": "ادفع الآن عبر تطبيق الحبيب" - }, - "payNowBookSuccesstext1": { - "en": "Pay Now using online payment service From secure payment gateways", - "ar": "ادفع الآن باستخدام خدمة الدفع عبر الإنترنت من بوابات الدفع الآمنة" - }, - "payNowBookSuccesstext2": { - "en": "You can also Pay Later via online payment Or in Hospital", - "ar": "يمكنك أيضًا الدفع لاحقًا عبر الدفع عبر الإنترنت أو في المستشفى" - }, + "payNowBookSuccess": {"en": "Pay now via Al Habib App", "ar": "ادفع الآن عبر تطبيق الحبيب"}, + "payNowBookSuccesstext1": {"en": "Pay Now using online payment service From secure payment gateways", "ar": "ادفع الآن باستخدام خدمة الدفع عبر الإنترنت من بوابات الدفع الآمنة"}, + "payNowBookSuccesstext2": {"en": "You can also Pay Later via online payment Or in Hospital", "ar": "يمكنك أيضًا الدفع لاحقًا عبر الدفع عبر الإنترنت أو في المستشفى"}, 'payLater': {'en': 'Pay Later', 'ar': 'ادفع لاحقا'}, - 'askDocNotAllowed': { - 'en': 'This service will be available for last 15 days doctor Visit only', - 'ar': 'هذه الخدمة متاحة للزيارات خلال اخر 15 يوم فقط' - }, - "more-verify": { - "en": "More Verification Options", - "ar": "المزيد من خيارات التحقق" - }, + 'askDocNotAllowed': {'en': 'This service will be available for last 15 days doctor Visit only', 'ar': 'هذه الخدمة متاحة للزيارات خلال اخر 15 يوم فقط'}, + "more-verify": {"en": "More Verification Options", "ar": "المزيد من خيارات التحقق"}, "welcome-back": {"en": "Welcome back!", "ar": "مرحبا بعودتك!"}, - "account-info": { - "en": "Would you like to login with current username?", - "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟" - }, + "account-info": {"en": "Would you like to login with current username?", "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"}, "another-acc": {"en": "Use Another Account", "ar": "استخدم حسابا آخر"}, "next": {"en": "Next", "ar": 'التالى'}, "first-name": {"en": "First Name", "ar": "الاسم الأول"}, @@ -274,15 +184,13 @@ const Map> localizedValues = { "preferred-language": {"en": "Preferred Language", "ar": "اللغة المفضلة"}, "english": {"en": "English", "ar": "الإنجليزية"}, "arabic": {"en": "Arabic", "ar": "العربية"}, - "locations-register": { - "en": "Where do you want to create this file?", - "ar": "أين تريد فتح هذا الملف؟" - }, + "locations-register": {"en": "Where do you want to create this file?", "ar": "أين تريد فتح هذا الملف؟"}, "ksa": {"en": "KSA", "ar": "السعودية"}, "dubai": {"en": "Dubai", "ar": "دبي"}, "enter-email": {"en": "Enter Email", "ar": "ادخل البريد الالكتروني"}, "family": {"en": "My Family", "ar": "عائلتي"}, "family-title": {"en": "My Family Files", "ar": "ملفات العائلة"}, + "myFamily": {"en": "My Family", "ar": "ملفات العائلة"}, "add-new-member": {"en": "Add Family Member", "ar": "إضافة عضو جديد"}, "sent-requests": {"en": "Sent Requests", "ar": "الطلبات المرسلة"}, "recieved-requests": {"en": "Recieved Requests", "ar": "الطلبات المستلمة"}, @@ -315,10 +223,7 @@ const Map> localizedValues = { "procedureStatus": {"en": "Procedure Status: ", "ar": "حالة الاجراء"}, "usageStatus": {"en": "Usage Status", "ar": "جالة الاستخدام"}, "unusedCount": {"en": "Unused Count: ", "ar": "غير مستخدم: "}, - "totalApproval": { - "en": "Total approval unused", - "ar": "اجمالي الموافقات الغير مستخدمة" - }, + "totalApproval": {"en": "Total approval unused", "ar": "اجمالي الموافقات الغير مستخدمة"}, "category": {"en": "Category: ", "ar": "الفئة"}, "expirationDate": {"en": "Expiration Date: ", "ar": "تاريخ الانتهاء"}, "patientCard": {"en": "Patient Card ID: ", "ar": "رقم الاشتراك"}, @@ -326,68 +231,33 @@ const Map> localizedValues = { "seeDetails": {"en": "SEE DETAILS", "ar": "منافعك التامينية"}, "insuranceCards": {"en": "Insurance Cards", "ar": "بطاقات التأمين"}, "requestType": {"en": "Request Type", "ar": "نوع الاستفسار"}, - "register-info-family": { - "en": "How would like to add the new member?", - "ar": "كيف ترغب باضافة العضو الجديد؟" - }, - "remove-family-member": { - "en": "Remove this member?", - "ar": "إزالة ملف العضو؟" - }, + "register-info-family": {"en": "How would like to add the new member?", "ar": "كيف ترغب باضافة العضو الجديد؟"}, + "remove-family-member": {"en": "Remove this member?", "ar": "إزالة ملف العضو؟"}, "MyMedicalFile": {"en": "My Medical File", 'ar': 'ملف الطبي الالكتروني'}, - "myMedicalFileSubTitle": { - "en": "All your medical records", - 'ar': 'جميع سجلاتك البية' - }, + "myMedicalFileSubTitle": {"en": "All your medical records", 'ar': 'جميع سجلاتك الطبية'}, "viewMore": {"en": "View More", 'ar': 'عرض المزيد'}, - "homeHealthCareService": { - "en": "Home Health Care Service", - 'ar': 'الرعاية الصحية المنزلية' - }, + "homeHealthCareService": {"en": "Home Health Care Service", 'ar': 'الرعاية الصحية المنزلية'}, "OnlinePharmacy": {"en": "Online Pharmacy", 'ar': 'صيدليات الحبيب'}, "EmergencyService": {"en": "Emergency Service", 'ar': 'الفحص الطبي الشامل'}, - "OnlinePaymentService": { - "en": "Online Payment Service", - 'ar': 'خدمة الدفع عبر الإلكتدوني' - }, - "OffersAndPackages": { - "en": "Online transfer request", - 'ar': 'طلب التحويل الالكتروني' - }, - "ComprehensiveMedicalCheckup": { - "en": "Comprehensive Medical Check up", - 'ar': 'فحص طبي شامل' - }, + "OnlinePaymentService": {"en": "Online Payment Service", 'ar': 'خدمة الدفع الإلكتدوني'}, + "OffersAndPackages": {"en": "Online transfer request", 'ar': 'طلب التحويل الالكتروني'}, + "ComprehensiveMedicalCheckup": {"en": "Comprehensive Medical Check up", 'ar': 'فحص طبي شامل'}, "HMGService": {"en": "HMG Service", 'ar': 'جميع خدمات الحبيب'}, - "ViewAllHabibMedicalService": { - "en": "View All Habib Medical Service", - 'ar': 'عرض خدمات الحبيب الطبية' - }, + "ViewAllHabibMedicalService": {"en": "View All Habib Medical Service", 'ar': 'عرض خدمات الحبيب الطبية'}, "viewAll": {"en": "View All", 'ar': 'عرض الكل'}, "ContactUs": {"en": "Contact Us", 'ar': 'الوصول إلينا'}, - "ViewAllWaysReachUs": { - "en": "View All Ways Reach Us", - 'ar': 'جميع طرق الاتصال بنا' - }, + "ViewAllWaysReachUs": {"en": "View All Ways Reach Us", 'ar': 'جميع طرق الاتصال بنا'}, "medicalProfile": {"en": "Medical Profile", 'ar': 'الملف الطبي'}, "consultation": {"en": "Consultation", "ar": "استشارة"}, "logs": {"en": "Logs", "ar": "السجلات"}, "textToSpeech": {"en": "How May I Help You?", "ar": "كيف يمكنني مساعدتك؟"}, "locationDialogMessage": { - "en": - "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.", - "ar": - "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك." + "en": "Allow the HMG app to access your location will assist you in showing the hospitals according to the nearest to you.", + "ar": "السماح لتطبيق مجموعة الحبيب الطبية بالوصول إلى موقعك سيساعدك في إظهار المستشفيات وفقًا للأقرب إليك." }, - "user-view-requester": { - "en": "User Wants To View Your Medical File", - "ar": "أشخاص يرغبون الاطلاع على ملفك الطبي" - }, - "user-view": { - "en": "User Can View Your Medical File", - "ar": "أشخاص يمكنهم الاطلاع على ملفك الطبي" - }, + "user-view-requester": {"en": "User Wants To View Your Medical File", "ar": "أشخاص يرغبون الاطلاع على ملفك الطبي"}, + "user-view": {"en": "User Can View Your Medical File", "ar": "أشخاص يمكنهم الاطلاع على ملفك الطبي"}, "parking": {"en": "Parking", "ar": "مواقف"}, "alhabiServices": {"en": "HMG Service", "ar": "خدمات الحبيب"}, @@ -409,19 +279,10 @@ const Map> localizedValues = { "locationa": {"en": "location:", "ar": "الموقع"}, "ambulancerequest": {"en": "Ambulance :", "ar": "طلب نقل "}, "requestA": {"en": "Request:", "ar": "اسعاف"}, - "MyAppointments": {"en": "My Appointments", "ar": "مواعيدي"}, - "NoBookedAppointments": { - "en": "No Booked Appointments", - "ar": "لا توجد مواعيد محجوزة" - }, - "NoConfirmedAppointments": { - "en": "No Confirmed Appointments", - "ar": "لا توجد مواعيد مؤكدة" - }, - "noArrivedAppointments": { - "en": "No Arrived Appointments", - "ar": "لم تصل المواعيد" - }, + "MyAppointments": {"en": "Appointments", "ar": "مواعيدي"}, + "NoBookedAppointments": {"en": "No Booked Appointments", "ar": "لا توجد مواعيد محجوزة"}, + "NoConfirmedAppointments": {"en": "No Confirmed Appointments", "ar": "لا توجد مواعيد مؤكدة"}, + "noArrivedAppointments": {"en": "No Arrived Appointments", "ar": "لم تصل المواعيد"}, "MyAppointmentsList": {"en": "List", "ar": "قائمة بمواعدي"}, "Radiology": {"en": "Radiology", "ar": "الأشعة"}, "RadiologySubtitle": {"en": "Result", "ar": "صور وتقارير"}, @@ -477,19 +338,10 @@ const Map> localizedValues = { "VitalSign": {"en": "Vital Sign", "ar": "العلامة حيوية"}, "MonthlyReports": {"en": "Monthly Reports", "ar": "تقارير شهرية"}, "km": {"en": "KMs:", "ar": "كم"}, - "PatientHealthSummaryReport": { - "en": "Patient Health Summary Report", - "ar": " ملخص التقارير الشهرية" - }, - "ToViewTheTermsAndConditions": { - "en": "To View The Terms And Conditions Report", - "ar": " عرض الشروط والأحكام " - }, + "PatientHealthSummaryReport": {"en": "Patient Health Summary Report", "ar": " ملخص التقارير الشهرية"}, + "ToViewTheTermsAndConditions": {"en": "To View The Terms And Conditions Report", "ar": " عرض الشروط والأحكام "}, "ClickHere": {"en": "Click here", "ar": "أنقر هنا"}, - "IAgreeToTheTermsAndConditions": { - "en": "I agree to the terms and conditions ", - "ar": "أوافق على الشروط والاحكام " - }, + "IAgreeToTheTermsAndConditions": {"en": "I agree to the terms and conditions ", "ar": "أوافق على الشروط والاحكام "}, "IAgreeToTheTermsAndConditionsSubtitle": { "en": "I agree to the terms and conditions ", "ar": @@ -498,36 +350,20 @@ const Map> localizedValues = { "Save": {"en": "Save", "ar": "حفظ "}, "UserAgreement": {"en": "User Agreement", "ar": "اتفاقية الخصوصية "}, "UpdateSuccessfully": {"en": "Update Successfully", "ar": "تم التحديث بنجاح"}, - "CHECK_VACCINE_AVAILABILITY": { - "en": "CHECK VACCINE AVAILABILITY", - "ar": "تحقق من توافر اللقاح" - }, - "MyVaccinesAvailability": { - "en": "MyVaccinesAvailability", - "ar": "توفر لقاحي" - }, + "CHECK_VACCINE_AVAILABILITY": {"en": "CHECK VACCINE AVAILABILITY", "ar": "تحقق من توافر اللقاح"}, + "MyVaccinesAvailability": {"en": "MyVaccinesAvailability", "ar": "توفر لقاحي"}, "PaymentService": {"en": "Payment Service", "ar": "خدمة المدفوعات"}, "PaymentOnline": {"en": "Service", "ar": "الالكتروني"}, "OnlineCheckIn": {"en": "Online Check-In", "ar": "مدفوعات معلقة"}, "MyBalances": {"en": "My Balances", "ar": "رصيدي"}, "BalanceAmount": {"en": "Balance Amount", "ar": "رصيدالحساب"}, "TotalBalance": {"en": "Total Balance", "ar": "الرصيد الكلي"}, - "CreateAdvancedPayment": { - "en": "Create Advanced Payment", - "ar": "إنشاء دفعة مقدمة" - }, + "CreateAdvancedPayment": {"en": "Create Advanced Payment", "ar": "إنشاء دفعة مقدمة"}, "AdvancePayment": {"en": "Advance Payment", "ar": "الدفع مقدما"}, - "AdvancePaymentLabel": { - "en": - "You can create and add an Advanced Payment for you account or other accounts.", - "ar": "يمكنك تحويل مبلغ لحسابك لدى المجموعة أو لحساب احد المراجعين" - }, + "AdvancePaymentLabel": {"en": "You can create and add an Advanced Payment for you account or other accounts.", "ar": "يمكنك تحويل مبلغ لحسابك لدى المجموعة أو لحساب احد المراجعين"}, "FileNumber": {"en": "File Number", "ar": "رقم الملف"}, "Amount": {"en": "Amount *", "ar": "المبلغ *"}, - "DepositorEmail": { - "en": "Depositor Email *", - "ar": "البريد الإلكتروني للمودع *" - }, + "DepositorEmail": {"en": "Depositor Email *", "ar": "البريد الإلكتروني للمودع *"}, "Notes": {"en": "Notes", "ar": "ملاحظات"}, "SelectPatientName": {"en": "Select Patient Name", "ar": "اختر اسم المريض"}, "SelectFamilyPatientName": {"en": "Family Members", "ar": "أفراد الأسرة"}, @@ -539,14 +375,8 @@ const Map> localizedValues = { "DepositorName": {"en": "Depositor Name", "ar": "اسم المودع *"}, "MobileNumber": {"en": "Mobile Number", "ar": "رقم الجوال"}, "Ok": {"en": "Ok", "ar": "حسنا"}, - "TheVerificationCodeExpiresIn": { - "en": "The Verification Code Expires In", - "ar": "تنتهي صلاحية رمز التحقق في" - }, - "PleaseEnterTheVerificationCode": { - "en": "Please enter the verification code send to", - "ar": "الرجاء إدخال رمز التحقق المرسل إلى" - }, + "TheVerificationCodeExpiresIn": {"en": "The Verification Code Expires In", "ar": "تنتهي صلاحية رمز التحقق في"}, + "PleaseEnterTheVerificationCode": {"en": "Please enter the verification code send to", "ar": "الرجاء إدخال رمز التحقق المرسل إلى"}, "EyeMeasurements": {"en": "Eye Measurements", "ar": "قياسات النظر"}, "Measurements": {"en": "Measurements", "ar": "قياسات"}, "Classes": {"en": "Classes", "ar": "نظارات"}, @@ -569,10 +399,8 @@ const Map> localizedValues = { "DailyQuantity": {"en": "Daily Quantity :", "ar": "جرعات يومية"}, "AddReminder": {"en": "Add Reminder", "ar": "إضافة تذكير"}, "reminderDes": { - "en": - "Please select treatment start day and time to be notified when it\'s time to take the medicine", - "ar": - " يرجى تحديد يوم بدء العلاج والوقت ليتم ارسال تنبيه عندما يحين الوقت لتناول الدواء" + "en": "Please select treatment start day and time to be notified when it\'s time to take the medicine", + "ar": " يرجى تحديد يوم بدء العلاج والوقت ليتم ارسال تنبيه عندما يحين الوقت لتناول الدواء" }, "StartDay": {"en": "Start Day", "ar": "يوم البداية"}, "EndDay": {"en": "End Day", "ar": "يوم الانتهاء"}, @@ -582,24 +410,12 @@ const Map> localizedValues = { "DoctorResponses": {"en": "Doctor Responses", "ar": "ردود الأطباء"}, "New": {"en": "New", "ar": "جديد"}, "All": {"en": "All", "ar": "الكل"}, - "QuestionHere": { - "en": "Enter the question here...", - "ar": "اضف الاستفسار هنا" - }, - "ViewDoctorResponses": { - "en": "View Doctor Responses", - "ar": "الاطلاع على ردود الأطباء" - }, + "QuestionHere": {"en": "Enter the question here...", "ar": "اضف الاستفسار هنا"}, + "ViewDoctorResponses": {"en": "View Doctor Responses", "ar": "الاطلاع على ردود الأطباء"}, "ServiceInformationButton": {"en": "LOGIN / REGISTER", "ar": "دخول / تسجيل"}, - "ServiceInformationTitle": { - "en": "Service Information", - "ar": "معلومات الخدمة" - }, + "ServiceInformationTitle": {"en": "Service Information", "ar": "معلومات الخدمة"}, "ServiceInformation": {"en": "Service Information", "ar": "معلومات الخدمة"}, - "HomeHealthCare": { - "en": "Home Health Care", - "ar": " الرعاية الصحية المنزلية " - }, + "HomeHealthCare": {"en": "Home Health Care", "ar": " الرعاية الصحية المنزلية "}, "HomeHealthCareText": { "en": "This service provides a set of home health care services, continuous and comprehensive follow-up in their places of residence for those who cannot access health facilities, such as (laboratory analyzes - radiology - vaccinations - physical therapy), etc.", @@ -609,96 +425,233 @@ const Map> localizedValues = { "LoginRegister": {"en": "Login/Register", "ar": "دخول / تسجيل"}, "OrderLog": {"en": "Order Log", "ar": " سجل الطلبات"}, "info-lab": { - "en": - "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", - "ar": - "خدمة نتائج المختبر: هذه الخدمة تمكنك من الاطلاع على نتائج جميع الفحوصات المخبرية التي تمت في مجموعة الحبيب الطبية." + "en": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", + "ar": "خدمة نتائج المختبر: هذه الخدمة تمكنك من الاطلاع على نتائج جميع الفحوصات المخبرية التي تمت في مجموعة الحبيب الطبية." }, "info-radiology": { - "en": - "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.", - "ar": - "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل." + "en": "This service allows you to view the reports and photos of radiology in Al Habib Medical Group as well as send the report by e-mail.", + "ar": "خدمة الاشعة: هذه الخدمة تمكنك من الاطلاع على تقارير وصور الاشعة التي تمت في مجموعة الحبيب الطبية وكذلك ارسال التقرير عن طريق الايميل." }, "TermsService": {"en": "Terms of Service", "ar": "شروط الخدمه"}, - "Beforeusing": { - "en": "Before using the checkup, please read Terms of Service.", - "ar": "قبل استخدام الفحص ، يرجى قراءة شروط الخدمة" - }, - "accept": { - "en": "I read and accept Terms of Service and Privacy Policy", - "ar": "قرأت ووافقت على شروط الخدمة وسياسة الخصوصية" - }, - "data-safe-info": { - "en": - "Information that you provide is anonymous and not shared with anyone.", - "ar": "المعلومات التي تقدمها لا تتم مشاركتها مع أي شخص" - }, + "Beforeusing": {"en": "Before using the checkup, please read Terms of Service.", "ar": "قبل استخدام الفحص ، يرجى قراءة شروط الخدمة"}, + "accept": {"en": "I read and accept Terms of Service and Privacy Policy", "ar": "قرأت ووافقت على شروط الخدمة وسياسة الخصوصية"}, + "data-safe-info": {"en": "Information that you provide is anonymous and not shared with anyone.", "ar": "المعلومات التي تقدمها لا تتم مشاركتها مع أي شخص"}, "data-safe": {"en": " Your data is safe.", "ar": "بياناتك آمنة"}, - "informational": { - "en": - "Checkup is for informational purposes and is not a qualified medical opinion", - "ar": "الفحص هو لأغراض معلوماتية وليس رأي طبي مؤهل" - }, - "not-use-in-emerbency": { - "en": "Do not use in emergencies.", - "ar": "لا تستخدم في حالات الطوارئ" - }, - "not-use-in-emerbency-details": { - "en": "In case of health emergency, ", - "ar": "في حالة الطوارئ اتصل بأقرب رقم للطوارئ على الفور" - }, - "not-use-in-emerbency-details-call": { - "en": "call the nearest emergency number immediately", - "ar": " اتصل بأقرب رقم للطوارئ على الفور" - }, - "check-diagnosis": { - "en": "Checkup is not a diagnosis.", - "ar": "الفحص ليس تشخيص." - }, + "informational": {"en": "Checkup is for informational purposes and is not a qualified medical opinion", "ar": "الفحص هو لأغراض معلوماتية وليس رأي طبي مؤهل"}, + "not-use-in-emerbency": {"en": "Do not use in emergencies.", "ar": "لا تستخدم في حالات الطوارئ"}, + "not-use-in-emerbency-details": {"en": "In case of health emergency, ", "ar": "في حالة الطوارئ اتصل بأقرب رقم للطوارئ على الفور"}, + "not-use-in-emerbency-details-call": {"en": "call the nearest emergency number immediately", "ar": " اتصل بأقرب رقم للطوارئ على الفور"}, + "check-diagnosis": {"en": "Checkup is not a diagnosis.", "ar": "الفحص ليس تشخيص."}, "remeberthat": {"en": "Remember that", "ar": "تذكر ذلك:"}, + "loginToUseService": {"en": "You need to login to use this service", "ar": "هذة الخدمة تتطلب تسجيل الدخول"}, // pharmacy module - "medicationRefill": { - "en": "MEDICATION REFILL", - "ar": "إعادة تعبئة الدواء" - }, - "offersAndPromotions": { - "en": "OFFERS & SPECIAL PROMOTIONS", - "ar": "العروض والترقيات الخاصة" - }, - "myPrescriptions": { - "en": "MY PRESCRIPTIONS", - "ar": "وصفاتي" + "medicationRefill": {"en": "MEDICATION REFILL", "ar": "إعادة تعبئة الدواء"}, + "offersAndPromotions": {"en": "OFFERS & SPECIAL PROMOTIONS", "ar": "العروض والترقيات الخاصة"}, + "myPrescriptions": {"en": "MY PRESCRIPTIONS", "ar": "وصفاتي"}, + "searchAndScanMedication": {"en": "SEARCH & SCAN FOR MEDICATION", "ar": "البحث والمسح للأدوية"}, + "shopByBrands": {"en": "Shop By Brands", "ar": "تسوق حسب الماركات"}, + "recentlyViewed": {"en": "Recently Viewed", "ar": "شوهدت مؤخرا"}, + "bestSellers": {"en": "Best Sellers", "ar": "أفضل البائعين"}, + "deleteAllItems": {"en": "Delete All Items", "ar": "حذف كافة العناصر"}, + "select-gender": {"en": "Select Gender", "ar": "اختر الجنس"}, + "i-am-a": {"en": "I am a ...", "ar": "أنا ..."}, + "select-age": {"en": "Select Your Age", "ar": "حدد العمر"}, + "i-am": {"en": "I am", "ar": "أنا"}, + "years-old": {"en": "years old", "ar": "سنة"}, + "drag-point": {"en": "Drag point to change your age", "ar": "اسحب لتغيير عمرك"}, + "email": {"en": "Email", "ar": "البريد الالكتروني"}, + "Book": {"en": "Book", "ar": "احجز"}, + "AppointmentLabel": {"en": "Appointment", "ar": "موعد"}, + "BloodType": {"en": "Blood Type", "ar": "فصيلة الدم"}, + "marital-status": {"en": "Marital status", "ar": "الحالة الإجتماعية"}, + "general": {"en": "General", "ar": "عام"}, + "profile": {"en": "Profile", "ar": "ملفي"}, + "notifications": {"en": "Notifications", "ar": "إشعارات"}, + "notificationDetails": {"en": "Notification Details", "ar": "تفاصيل الاشعار"}, + "notificationDetailsa": {"en": "Notification Details", "ar": "تفاصيل الاشعار"}, + + "info-my-doctor-points": { + "en": [ + "View the doctor's profile and qualifications.", + "View the doctor's schedule.", + "View details of your appointments with the selected doctor.", + "Book appointment with the doctor. ", + ], + "ar": ["الاطلاع على معلومات الطبيب ومؤهلاته.", "الاطلاع على جدول الطبيب.", "الاطلاع على تفاصيل المواعيد التي تمت مع الطبيب.", "حجز موعد مع الطبيب."] + }, + "info-my-doctor": { + "en": "This service allows you to see all the doctors you have visited in Al Habib Medical Group, and through this service:", + "ar": "خدمة اطبائي: هذه الخدمة تمكنك من الاطلاع على جميع الاطباء الذين قمت بزيارتهم في مجموعة الحبيب الطبية, كما تستطيع من خلال هذه الخدمة:" + }, + "info-prescriptions": { + "en": "This service allows you to view all the medical prescriptions issued by Al Habib Medical Group, and through this service, you can:", + "ar": "خدمة الوصفات الطبية: هذه الخدمة تمكنك من الاطلاع على جميع الوصفات الطبية التي تم اصدارها في مجموعة الحبيب الطبية، كما تستطيع من خلال هذه الخدمة:" + }, + "info-my-prescription-points": { + "en": [ + "View the duration days.", + "View the frequency timing.", + "View the doctor's remarks.", + "Add a reminder to remind you when to take medicine doses.", + "Search in AlHabib Pharmacies about the branches where medicines are available, pharmacies locations and contact numbers.", + "Ordering and delivery medications online.", + "View the prices of the drug. ", + ], + "ar": [ + "الاطلاع على طريقة تناول العلاج.", + "الاطلاع على مدة تناول العلاج.", + "الاطلاع على ملاحظات الطبيب.", + "اضافة منبه للتذكير بموعد تناول جرعات الادوية.", + "البحث في صيدليات الحبيب عن الفروع التي يتوفر فيها العلاج وكذلك مواقع الصيدليات وارقام الاتصال. ", + "امكانية شراء وتوصيل العلاج عن طريق الانترنت.", + "الاطلاع على اسعار الادوية المصروفة." + ] }, - "searchAndScanMedication": { - "en": "SEARCH & SCAN FOR MEDICATION", - "ar": "البحث والمسح للأدوية" + + "info-insurance-cards": { + "en": "This service allows you to view all the insurance cards that recorded during your visits to Al Habib Medical Group in addition to:", + "ar": "خدمة بطاقات التامين: هذه الخدمة تمكنك من الاطلاع على جميع بطاقات التامين والتي تم تسجيلها اثناء زياراتك لمجموعة الحبيب الطبية بالاضافة الى:" }, - "shopByBrands": { - "en": "Shop By Brands", - "ar": "تسوق حسب الماركات" + + "info-insurance-cards-points": { + "en": [ + "Name of the insurance company.", + "Insurance category.", + "Insurance policy number.", + "The expiry date of insurance.", + "The status of the insurance card (active or inactive).", + "Details of the coverage, e.x the room category covered as well some cases covered by the insurance.", + ], + "ar": [ + "اسم شركة التامين.", + "فئة التامين.", + "رقم بوليصة التامين.", + "تاريخ انتهاء التامين.", + "حالة بطاقة التامين (فعالة او غير فعالة).", + "تفاصيل التامين، مثلاً: مستوى الغرفة التي يغطيها التامين وكذلك الحالات التي يغطيها التامين.", + ] }, - "recentlyViewed": { - "en": "Recently Viewed", - "ar": "شوهدت مؤخرا" + + "info-allergies": { + "en": "This service allows you to view all types of allergies recorded during your visits to Al Habib Medical Group.", + "ar": "خدمة الحساسية: هذه الخدمة تمكنك من الاطلاع على جميع انواع الحساسية التي تم تسجيلها خلال زياراتك في مجموعة الحبيب الطبية." }, - "bestSellers": { - "en": "Best Sellers", - "ar": "أفضل البائعين" + + "sick-leaves": {"en": "Sick Leaves", "ar": "الاجازات المرضية"}, + + "info-sick-leaves": { + "en": "This service allows you to view all sick leaves that were taken in Al Habib Medical Group in addition to:", + "ar": "الاجازات المرضية: هذه الخدمة تمكنك من الاطلاع على جميع الاجازات المرضية والتي تم اصدارها في مجموعة الحبيب الطبية بالاضافة الى:" + }, + "info-sick-leave-points": { + "en": [ + "Doctor Name", + "Sick leave date ", + "Sick leave days", + "Branch that patient take the vaccination form.", + "Sending a report of vaccinations to the email. ", + ], + "ar": ["اسم الطبيب", "تاريخ الاجازة.", "عدد ايام الاجازة.", "الفرع الذي تم اصدار الاجازة منه.", "ارسال نسخة مختومة من الاجازة الى البريد الالكتروني."] }, - "deleteAllItems": { - "en": "Delete All Items", - "ar": "حذف كافة العناصر" + + "info-approvals": { + "en": "This service allows you to view all approvals requests that have been sent to the insurance companies in addition to:", + "ar": "خدمة الموافقات: هذه الخدمة تمكنك من الاطلاع على جميع طلبات الموافقات والتي تم ارسالها الى شركات التامين بالاضافة الى:" }, - "select-gender": {"en": "Select Gender", "ar": "اختر الجنس"}, - "i-am-a": {"en": "I am a ...", "ar": "أنا ..."}, - "select-age": {"en": "Select Your Age", "ar": "حدد العمر"}, - "i-am": {"en": "I am", "ar": "أنا"}, - "years-old": {"en": "years old", "ar": "سنة"}, - "drag-point": { - "en": "Drag point to change your age", - "ar": "اسحب لتغيير عمرك" + + "info-approval-points": { + "en": [ + "View the total unused approvals.", + "Track the approvals status.", + ], + "ar": [ + "الاطلاع على اجمالي الموافقات الغير مستخدمة.", + "تتبع حالة الموافقة.", + ] }, + + "month-report": {"en": "Monthly Reports", "ar": "تقاريري الشهرية"}, + "info-month-report": { + "en": + "Upon activation of this service, the system will send a monthly report automatically to the registered email which lists the vital signs and the results for the last visits made in AlHabib Medical Group.", + "ar": "خدمة التقارير الشهرية: عند تفعيل هذه الخدمة سيقوم النظام بارسال تقرير شهري بشكل آلي على الايميل المسجل والذي يسرد المؤشرات الحيوية ونتائج التحاليل لآخر زيارات تمت بمجموعة الحبيب الطبية." + }, + "language-setting": {"en": "SMS and Confirmation Calls Language", "ar": "لغة الرسائل القصيرة و الاتصال الآلي"}, + "alert": {"en": "Alerts", "ar": "التنبيهات"}, + "email-alert": {"en": "Alert By Email", "ar": "استلام التنبيهات بالبريد الالكتروني"}, + "sms-alert": {"en": "Alert By SMS", "ar": "استلام التنبيهات بالرسائل القصيرة"}, + "contact-info": {"en": "Contact Information", "ar": "معلومات التواصل"}, + "emrg-name": {"en": "Emergency Contact Name", "ar": "اسم للتواصل في حالة الطوارئ"}, + "emrg-no": {"en": "Emergency Contact Number", "ar": "رقم للتواصل في حالة الطوارئ"}, + "modes": {"en": "Modes", "ar": "الاوضاع"}, + "vibration": {"en": "Vibration Touch Feedback", "ar": "الاهتزاز عند اللمس"}, + "blind-modes": {"en": "Modes for Partially Blind", "ar": "تأثيرات لدعم ضعاف البصر"}, + "invert-theme": {"en": "Invert", "ar": "ألوان سلبية"}, + "off-theme": {"en": "Off", "ar": "إيقاف"}, + "dim-theme": {"en": "Dim", "ar": "ضوء خافت"}, + "bw-theme": {"en": "Black and White", "ar": "أبيض و أسود"}, + "permissions": {"en": "Permission", "ar": "الصلاحيات"}, + "camera-permission": {"en": "Camera", "ar": "الكاميرا"}, + "location-permission": {"en": "Location", "ar": "تحديد المواقع"}, + + "accessibility": {"en": "Accessibility Mode", "ar": "وضع امكانية الوصول"}, + "orderStatus": {"en": "Order Status", "ar": "حالة الطلب"}, + "CancelOrder": {"en": "Cancel Order", "ar": "الغاء الطلب"}, + "FindUs": {"en": "Find Us", "ar": "اين تجدنا"}, + "Feedback": {"en": "Feedback", "ar": "رأيك يهمنا"}, + "LiveChat": {"en": "Live Chat", "ar": "محادثة مباشرة"}, + "Service": {"en": "Service", "ar": "خدمة"}, + "HMGServiceLabel": {"en": "HMG Service", 'ar': 'خدمات الحبيب'}, + "HealthWeatherIndicators": {"en": "Health Weather Indicators", 'ar': ' مؤشرات الطقس الصحية '}, + "HealthTipsBasedOnCurrentWeather": {"en": "Health Tips Based On Current Weather", 'ar': ' نصائح صحية على أساس الطقس الحالي '}, + "MoreDetails": {"en": "More details", "ar": " المزيد من التفاصيل "}, + "SendCopy": {"en": "Send Copy", "ar": "ارسال نسخة"}, + "ResendOrder": {"en": "Resend order & deliver", "ar": "إعادة طلب و توصيل"}, + "Ports": {"en": "Ports", "ar": "المنافذ"}, + "Way": {"en": "Way", "ar": "الطزيقة"}, + "Average": {"en": "Average", "ar": "المعدل"}, + "DailyDoses": {"en": "Daily Doses", "ar": "جرعات يومية"}, + "Period": {"en": "Period", "ar": "الفترة"}, + "cm": {"en": "CM", "ar": "سم"}, + "kg": {"en": "kg", "ar": "كجم"}, + "mass": {"en": "Mass", "ar": "كتلة"}, + "temp-c": {"en": "°C", "ar": "°س"}, + "bpm": {"en": "bpm", "ar": "نبضة"}, + "respiration-signs": {"en": "Respiration", "ar": "تنفس"}, + "sys-dias": {"en": "SBP/DBP", "ar": "إنقباض/إنبساط"}, + "body": {"en": "Body \n Mass", "ar": "كتلة\nالجسم"}, + "feedback": {"en": "Feedback", "ar": "رأيك يهمنا"}, + "send": {"en": "Send", "ar": "أرسل"}, + "status": {"en": "Status", "ar": "الحالة"}, + "like-to-hear": { + "en": "We would love to hear the feedback, concerns on healthcare services and eServices experience. Please use the below form", + "ar": "يسعدنا سماع ملاحظاتك حول خدمات الرعاية الصحية والخدمات الإلكترونية. يرجى تعبئة الحقول المطلوبة" + }, + "subject": {"en": "Subject", "ar": "الموضوع"}, + "message": {"en": "Message", "ar": "رسالة"}, + "empty-subject": {"en": "Please enter the subject", "ar": "يرجى ادخال الموضوع"}, + "empty-message": {"en": "Please enter message", "ar": "يرجى ادخال الموضوع"}, + "select-attachment": {"en": "Select Attachment", "ar": "إختر المرفق"}, + "complain-appo": {"en": "Complaint for appointment", "ar": "شكوى على موعد"}, + "complain-without-appo": {"en": "Complaint without appointment", "ar": "شكوى بدون موعد"}, + "question": {"en": "Question", "ar": "سؤال"}, + "message-type": {"en": "Message Type", "ar": "نوع الرسالة"}, + "compliment": {"en": "compliment", "ar": "ثناء"}, + "suggestion": {"en": "Suggestion", "ar": "إقتراح"}, + "your-feedback": {"en": "Your feedback was sent", "ar": "إقتراح"}, + "select-part": {"en": "Please select the part that complain about", "ar": "يرجى تحديد الجزء الذي تشكو منه"}, + "number": {"en": "Number", "ar": "الرقم"}, + "not-classified": {"en": "Not classified", "ar": "غير محدد"}, + "selectClinic": {"en": "Select Clinic", "ar": " بحث بالعيادة"}, + "reviews": {"en": "Reviews", "ar": "تقييمات"}, + "searchItemError": {"en": "Item name should be more than 3 character ", "ar": "يجب أن يكون اسم العنصر أكثر من 3 أحرف"}, + "YouCanFind": {"en": "YouCanFind", "ar": "باستطاعتك العثور على "}, + "ItemInSearch": {"en": " Item In Search", "ar": " عنصر في البحث "}, + "wantConnectHmgNetwork": { + "en": "Dear customer there is no internet access, Do you want to connect with HMG network to use our app, make sure you are in range of HMG network", + "ar": "عزيز العميل لا يوجد اتصال بالإنترنت, هل تريد الاتصال بشبكة مستشفى د. سليمان الحبيب لاستخدام التطبيق. يجب عليك ان تكون في نطاق شبكة المستشفى" + }, + "failedToAccessHmgServices": {"en": "Connected with HMG Network,\n\nBut failed to access HMG services", "ar": "Connected with HMG Network,\n\nBut failed to access HMG services"}, }; diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index c5fafe03..b79edb08 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -16,4 +16,7 @@ const USER_LONG = 'user-long'; const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING'; const IS_SEARCH_APPO = 'is-search-appo'; const IS_LIVECARE_APPOINTMENT = 'is_livecare_appointment'; +const IS_VIBRATION = 'is_vibration'; +const THEME_VALUE = 'is_vibration'; +const MAIN_USER = 'main-user'; const PHARMACY_LAST_VISITED_PRODUCTS = 'last-visited'; diff --git a/lib/core/model/insurance/insurance_card.dart b/lib/core/model/insurance/insurance_card.dart index 998df241..ebab8d71 100644 --- a/lib/core/model/insurance/insurance_card.dart +++ b/lib/core/model/insurance/insurance_card.dart @@ -16,7 +16,9 @@ class InsuranceCardModel { int patientType; String groupName; String companyName; + int companyID; String subCategoryDesc; + int subCategoryID; String patientCardID; String insurancePolicyNumber; bool isActive; @@ -25,6 +27,7 @@ class InsuranceCardModel { InsuranceCardModel({ this.insurancePolicyNumber, this.subCategoryDesc, + this.subCategoryID, this.versionID, this.channel, this.languageID, @@ -40,6 +43,7 @@ class InsuranceCardModel { this.patientType, this.groupName, this.companyName, + this.companyID, this.patientCardID, this.isActive, this.cardValidTo @@ -50,6 +54,7 @@ class InsuranceCardModel { insurancePolicyNumber = json['InsurancePolicyNo']; patientCardID = json['PatientCardID']; companyName = json['CompanyName']; + companyID = json['CompanyID']; groupName = json['GroupName']; versionID = json['VersionID']; channel = json['Channel']; @@ -65,6 +70,7 @@ class InsuranceCardModel { patientTypeID = json['PatientTypeID']; patientType = json['PatientType']; subCategoryDesc = json['SubCategoryDesc']; + subCategoryID = json["SubCategoryID"]; cardValidTo = json['CardValidTo']; } diff --git a/lib/core/model/labs/lab_result.dart b/lib/core/model/labs/lab_result.dart index 23b3363d..c9acd809 100644 --- a/lib/core/model/labs/lab_result.dart +++ b/lib/core/model/labs/lab_result.dart @@ -86,3 +86,14 @@ class LabResult { return data; } } + + +class LabResultList { + String filterName = ""; + List patientLabResultList = List(); + + LabResultList( + {this.filterName, LabResult lab}) { + patientLabResultList.add(lab); + } +} diff --git a/lib/core/model/my_balance/AdvanceModel.dart b/lib/core/model/my_balance/AdvanceModel.dart index b95e08a2..d2792990 100644 --- a/lib/core/model/my_balance/AdvanceModel.dart +++ b/lib/core/model/my_balance/AdvanceModel.dart @@ -8,6 +8,9 @@ class AdvanceModel { String email; String note; String depositorName; + String mobileNumber; + String patientName; + int projectID; CitiesModel citiessModel; AdvanceModel( @@ -17,5 +20,8 @@ class AdvanceModel { this.hospitalsModel, this.fileNumber, this.depositorName, + this.mobileNumber, + this.patientName, + this.projectID, this.citiessModel}); } diff --git a/lib/core/model/notifications/get_notifications_request_model.dart b/lib/core/model/notifications/get_notifications_request_model.dart new file mode 100644 index 00000000..9659754a --- /dev/null +++ b/lib/core/model/notifications/get_notifications_request_model.dart @@ -0,0 +1,22 @@ +class GetNotificationsRequestModel { + int notificationStatusID; + int pagingSize; + int currentPage; + + GetNotificationsRequestModel( + {this.notificationStatusID, this.pagingSize, this.currentPage}); + + GetNotificationsRequestModel.fromJson(Map json) { + notificationStatusID = json['NotificationStatusID']; + pagingSize = json['pagingSize']; + currentPage = json['currentPage']; + } + + Map toJson() { + final Map data = new Map(); + data['NotificationStatusID'] = this.notificationStatusID; + data['pagingSize'] = this.pagingSize; + data['currentPage'] = this.currentPage; + return data; + } +} diff --git a/lib/core/model/notifications/get_notifications_response_model.dart b/lib/core/model/notifications/get_notifications_response_model.dart new file mode 100644 index 00000000..1f3bbc28 --- /dev/null +++ b/lib/core/model/notifications/get_notifications_response_model.dart @@ -0,0 +1,96 @@ +class GetNotificationsResponseModel { + int id; + int recordId; + int patientID; + bool projectOutSA; + String deviceType; + String deviceToken; + String message; + String messageType; + String messageTypeData; + dynamic videoURL; + bool isQueue; + String isQueueOn; + String createdOn; + String createdBy; + String notificationType; + bool isSent; + String isSentOn; + bool isRead; + String isReadOn; + int channelID; + int projectID; + + GetNotificationsResponseModel( + {this.id, + this.recordId, + this.patientID, + this.projectOutSA, + this.deviceType, + this.deviceToken, + this.message, + this.messageType, + this.messageTypeData, + this.videoURL, + this.isQueue, + this.isQueueOn, + this.createdOn, + this.createdBy, + this.notificationType, + this.isSent, + this.isSentOn, + this.isRead, + this.isReadOn, + this.channelID, + this.projectID}); + + GetNotificationsResponseModel.fromJson(Map json) { + id = json['Id']; + recordId = json['RecordId']; + patientID = json['PatientID']; + projectOutSA = json['ProjectOutSA']; + deviceType = json['DeviceType']; + deviceToken = json['DeviceToken']; + message = json['Message']; + messageType = json['MessageType']; + messageTypeData = json['MessageTypeData']; + videoURL = json['VideoURL']; + isQueue = json['IsQueue']; + isQueueOn = json['IsQueueOn']; + createdOn = json['CreatedOn']; + createdBy = json['CreatedBy']; + notificationType = json['NotificationType']; + isSent = json['IsSent']; + isSentOn = json['IsSentOn']; + isRead = json['IsRead']; + isReadOn = json['IsReadOn']; + channelID = json['ChannelID']; + projectID = json['ProjectID']; + } + + Map toJson() { + final Map data = new Map(); + data['Id'] = this.id; + data['RecordId'] = this.recordId; + data['PatientID'] = this.patientID; + data['ProjectOutSA'] = this.projectOutSA; + data['DeviceType'] = this.deviceType; + data['DeviceToken'] = this.deviceToken; + data['Message'] = this.message; + data['MessageType'] = this.messageType; + data['MessageTypeData'] = this.messageTypeData; + data['VideoURL'] = this.videoURL; + data['IsQueue'] = this.isQueue; + data['IsQueueOn'] = this.isQueueOn; + data['CreatedOn'] = this.createdOn; + data['CreatedBy'] = this.createdBy; + data['NotificationType'] = this.notificationType; + data['IsSent'] = this.isSent; + data['IsSentOn'] = this.isSentOn; + data['IsRead'] = this.isRead; + data['IsReadOn'] = this.isReadOn; + data['ChannelID'] = this.channelID; + data['ProjectID'] = this.projectID; + return data; + } +} diff --git a/lib/core/model/notifications/mark_message_as_read_request_model.dart b/lib/core/model/notifications/mark_message_as_read_request_model.dart new file mode 100644 index 00000000..99dab006 --- /dev/null +++ b/lib/core/model/notifications/mark_message_as_read_request_model.dart @@ -0,0 +1,15 @@ +class MarkMessageAsReadRequestModel { + int notificationPoolID; + + MarkMessageAsReadRequestModel({this.notificationPoolID}); + + MarkMessageAsReadRequestModel.fromJson(Map json) { + notificationPoolID = json['NotificationPoolID']; + } + + Map toJson() { + final Map data = new Map(); + data['NotificationPoolID'] = this.notificationPoolID; + return data; + } +} diff --git a/lib/core/model/prescriptions/perscription_pharmacy.dart b/lib/core/model/prescriptions/perscription_pharmacy.dart index 5180689f..3adaef7e 100644 --- a/lib/core/model/prescriptions/perscription_pharmacy.dart +++ b/lib/core/model/prescriptions/perscription_pharmacy.dart @@ -1,6 +1,6 @@ class PharmacyPrescriptions { String expiryDate; - double sellingPrice; + dynamic sellingPrice; int quantity; int itemID; int locationID; diff --git a/lib/core/model/prescriptions/request_prescription_report_enh.dart b/lib/core/model/prescriptions/request_prescription_report_enh.dart index 42b89c15..4905fc2a 100644 --- a/lib/core/model/prescriptions/request_prescription_report_enh.dart +++ b/lib/core/model/prescriptions/request_prescription_report_enh.dart @@ -14,6 +14,7 @@ class RequestPrescriptionReportEnh { int patientType; int appointmentNo; String setupID; + int dischargeNo; int episodeID; int clinicID; int projectID; @@ -36,7 +37,7 @@ class RequestPrescriptionReportEnh { this.setupID, this.episodeID, this.clinicID, - this.projectID}); + this.projectID,this.dischargeNo}); RequestPrescriptionReportEnh.fromJson(Map json) { versionID = json['VersionID']; @@ -79,6 +80,7 @@ class RequestPrescriptionReportEnh { data['EpisodeID'] = this.episodeID; data['ClinicID'] = this.clinicID; data['ProjectID'] = this.projectID; + data['DischargeNo'] = this.dischargeNo; return data; } } diff --git a/lib/core/model/rate/appointment_details.dart b/lib/core/model/rate/appointment_details.dart index 30280b4a..77d759db 100644 --- a/lib/core/model/rate/appointment_details.dart +++ b/lib/core/model/rate/appointment_details.dart @@ -5,13 +5,13 @@ class AppointmentDetails { int appointmentNo; int clinicID; int doctorID; - String startTime; - String endTime; - String appointmentDate; - String clinicName; - String doctorImageURL; - String doctorName; - String projectName; + dynamic startTime; + dynamic endTime; + dynamic appointmentDate; + dynamic clinicName; + dynamic doctorImageURL; + dynamic doctorName; + dynamic projectName; AppointmentDetails( {this.setupID, diff --git a/lib/core/service/AuthenticatedUserObject.dart b/lib/core/service/AuthenticatedUserObject.dart index 600e17e1..f48b1179 100644 --- a/lib/core/service/AuthenticatedUserObject.dart +++ b/lib/core/service/AuthenticatedUserObject.dart @@ -17,8 +17,8 @@ class AuthenticatedUserObject { if (userData != null) user = AuthenticatedUser.fromJson(userData); } - var isLogin = await sharedPref.getString(LOGIN_TOKEN_ID); - this.isLogin = isLogin != null; + // var isLogin = await sharedPref.getString(LOGIN_TOKEN_ID); + this.isLogin = user != null; } logout() async { diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 696489c6..fb1039b4 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -2,12 +2,16 @@ import 'dart:convert'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart' as http; +import 'package:provider/provider.dart'; +import '../../../locator.dart'; import '../../../routes.dart'; +import '../AuthenticatedUserObject.dart'; AppSharedPreferences sharedPref = new AppSharedPreferences(); @@ -16,19 +20,16 @@ AppSharedPreferences sharedPref = new AppSharedPreferences(); /// onSuccess: (dynamic response, int statusCode) {}, /// onFailure: (String error, int statusCode) {}, /// body: Map(); +/// +AuthenticatedUserObject authenticatedUserObject = locator(); class BaseAppClient { - post(String endPoint, - {Map body, - Function(dynamic response, int statusCode) onSuccess, - Function(String error, int statusCode) onFailure, - bool isAllowAny = false}) async { + post(String endPoint, {Map body, Function(dynamic response, int statusCode) onSuccess, Function(String error, int statusCode) onFailure, bool isAllowAny = false}) async { String url = BASE_URL + endPoint; try { //Map profile = await sharedPref.getObj(DOCTOR_PROFILE); String token = await sharedPref.getString(TOKEN); - var languageID = - await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'en'); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); var user = await sharedPref.getObject(USER_PROFILE); if (body.containsKey('SetupID')) { body['SetupID'] = body.containsKey('SetupID') @@ -39,7 +40,16 @@ class BaseAppClient { } body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; - body['LanguageID'] = languageID == 'ar' ? 1 : 2; + body['LanguageID'] = body.containsKey('LanguageID') + ? body['LanguageID'] != null + ? body['LanguageID'] + : languageID == 'ar' + ? 1 + : 2 + : languageID == 'ar' + ? 1 + : 2; + body['IPAdress'] = IP_ADDRESS; body['generalid'] = GENERAL_ID; body['PatientOutSA'] = body.containsKey('PatientOutSA') @@ -49,12 +59,11 @@ class BaseAppClient { : PATIENT_OUT_SA; if (body.containsKey('isDentalAllowedBackend')) { - body['isDentalAllowedBackend'] = - body.containsKey('isDentalAllowedBackend') - ? body['isDentalAllowedBackend'] != null - ? body['isDentalAllowedBackend'] - : IS_DENTAL_ALLOWED_BACKEND - : IS_DENTAL_ALLOWED_BACKEND; + body['isDentalAllowedBackend'] = body.containsKey('isDentalAllowedBackend') + ? body['isDentalAllowedBackend'] != null + ? body['isDentalAllowedBackend'] + : IS_DENTAL_ALLOWED_BACKEND + : IS_DENTAL_ALLOWED_BACKEND; } body['DeviceTypeID'] = DeviceTypeID; @@ -63,19 +72,21 @@ class BaseAppClient { body['PatientType'] = body.containsKey('PatientType') ? body['PatientType'] != null ? body['PatientType'] - : PATIENT_TYPE + : user['PatientType'] != null + ? user['PatientType'] + : PATIENT_TYPE : PATIENT_TYPE; body['PatientTypeID'] = body.containsKey('PatientTypeID') ? body['PatientTypeID'] != null ? body['PatientTypeID'] - : PATIENT_TYPE_ID + : user['PatientTypeID'] != null + ? user['PatientTypeID'] + : PATIENT_TYPE_ID : PATIENT_TYPE_ID; - if (user != null) { body['TokenID'] = token; - body['PatientID'] = - body['PatientID'] != null ? body['PatientID'] : user['PatientID']; + body['PatientID'] = body['PatientID'] != null ? body['PatientID'] : user['PatientID']; body['PatientOutSA'] = user['OutSA']; body['SessionID'] = SESSION_ID; //getSessionId(token); } @@ -86,12 +97,7 @@ class BaseAppClient { var ss = json.encode(body); if (await Utils.checkConnection()) { - final response = await http.post(url.trim(), - body: json.encode(body), - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }); + final response = await http.post(url.trim(), body: json.encode(body), headers: {'Content-Type': 'application/json', 'Accept': 'application/json'}); final int statusCode = response.statusCode; print("statusCode :$statusCode"); if (statusCode < 200 || statusCode >= 400 || json == null) { @@ -111,21 +117,19 @@ class BaseAppClient { } else if (parsed['Result'] == 'OK') { onSuccess(parsed, statusCode); } else { - onFailure( - parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], - statusCode); - logout(); + onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode); } - } else if (parsed['MessageStatus'] == 1 || - parsed['SMSLoginRequired'] == true) { + } else if (parsed['MessageStatus'] == 1 || parsed['SMSLoginRequired'] == true) { onSuccess(parsed, statusCode); + } else if (!parsed['IsAuthenticated']) { + await logout(); + + //helpers.showErrorToast('Your session expired Please login agian'); } else { if (parsed['SameClinicApptList'] != null) { onSuccess(parsed, statusCode); } else { - onFailure( - parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], - statusCode); + onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode); } } } @@ -139,10 +143,7 @@ class BaseAppClient { } } - get(String endPoint, - {Function(dynamic response, int statusCode) onSuccess, - Function(String error, int statusCode) onFailure, - Map queryParams}) async { + get(String endPoint, {Function(dynamic response, int statusCode) onSuccess, Function(String error, int statusCode) onFailure, Map queryParams}) async { String url = BASE_URL + endPoint; if (queryParams != null) { String queryString = Uri(queryParameters: queryParams).query; @@ -152,10 +153,10 @@ class BaseAppClient { print("URL : $url"); if (await Utils.checkConnection()) { - final response = await http.get(url.trim(), headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - },); + final response = await http.get( + url.trim(), + headers: {'Content-Type': 'application/json', 'Accept': 'application/json'}, + ); final int statusCode = response.statusCode; print("statusCode :$statusCode"); @@ -170,9 +171,39 @@ class BaseAppClient { } } + simpleGet(String fullUrl, {Function(dynamic response, int statusCode) onSuccess, Function(String error, int statusCode) onFailure, Map queryParams}) async { + String url = fullUrl; + if (queryParams != null) { + String queryString = Uri(queryParameters: queryParams).query; + url += '?' + queryString; + } + + print("URL : $url"); + + if (await Utils.checkConnection()) { + final response = await http.get( + url.trim(), + headers: {'Content-Type': 'application/json', 'Accept': 'application/json'}, + ); + + final int statusCode = response.statusCode; + print("statusCode :$statusCode"); + + if (statusCode < 200 || statusCode >= 400 || json == null) { + onFailure('Error While Fetching data', statusCode); + } else { + onSuccess(response.body.toString(), statusCode); + } + } else { + onFailure('Please Check The Internet Connection', -1); + } + } + logout() async { await sharedPref.remove(LOGIN_TOKEN_ID); - Navigator.of(AppGlobal.context).pushReplacementNamed(LOGIN_TYPE); + await authenticatedUserObject.getUser(); + Provider.of(AppGlobal.context, listen: false).isLogin = false; + Navigator.of(AppGlobal.context).pushReplacementNamed(HOME); } String getSessionId(String id) { diff --git a/lib/core/service/feedback/feedback_service.dart b/lib/core/service/feedback/feedback_service.dart index 74107585..9df5b0a6 100644 --- a/lib/core/service/feedback/feedback_service.dart +++ b/lib/core/service/feedback/feedback_service.dart @@ -1,5 +1,4 @@ import 'dart:io'; - import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/model/feedback/COC_items.dart'; @@ -45,8 +44,7 @@ class FeedbackService extends BaseService { if (appointHistory != null) { body['AppoinmentNo'] = appointHistory.appointmentNo; - body['AppointmentDate'] = - DateUtil.convertDateToString(appointHistory.appointmentDate); + body['AppointmentDate'] = DateUtil.convertDateToString(appointHistory.appointmentDate); body['ClinicID'] = appointHistory.clinicID; body['ClinicName'] = appointHistory.clinicName; body['DoctorID'] = appointHistory.doctorID; diff --git a/lib/core/service/insurance_service.dart b/lib/core/service/insurance_service.dart index 7fee6615..790003e9 100644 --- a/lib/core/service/insurance_service.dart +++ b/lib/core/service/insurance_service.dart @@ -31,48 +31,9 @@ class InsuranceCardService extends BaseService { _cardUpdated.clear(); } - InsuranceCardModel _insuranceCardModel = InsuranceCardModel( - channel: 3, - deviceTypeID: 2, - generalid: "Cs2020@2016\$2958", - iPAdress: "10.20.10.20", - isDentalAllowedBackend: false, - languageID: 1, - patientID: 1231755, - patientOutSA: 0, - patientType: 1, - patientTypeID: 1, - sessionID: "uoKFXSLUwEaHYPwKZNA", - tokenID: "@dm!n", - versionID: 5.5, - ); - - InsuranceUpdateModel _insuranceUpdateModel = InsuranceUpdateModel( - channel: 3, - deviceTypeID: 2, - generalid: "Cs2020@2016\$2958", - iPAdress: "10.20.10.20", - isDentalAllowedBackend: false, - patientID: 1231755, - patientType: 1, - versionID: 5.5, - languageID: 2, - patientOutSA: 0, - sessionID: "ENRSJBKXnzCuuVQ", - ); InsuranceApprovalModel _insuranceApprovalModel = InsuranceApprovalModel( - versionID: 5.5, - channel: 3, - languageID: LANGUAGE_ID, - iPAdress: "10.20.10.20", - generalid: "Cs2020@2016\$2958", - patientOutSA: 0, - sessionID: "DypNmtMkivzURHjeYg", isDentalAllowedBackend: false, - deviceTypeID: 2, - patientID: 1231755, - tokenID: "@dm!n", patientTypeID: 1, patientType: 1, eXuldAPPNO: 0, @@ -89,21 +50,22 @@ class InsuranceCardService extends BaseService { }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _insuranceCardModel.toJson()); + }, body: Map()); } Future getInsuranceUpdate() async { hasError = false; - // _cardList.clear(); + _cardList.clear(); await baseAppClient.post(GET_PAtIENTS_INSURANCE_UPDATED, onSuccess: (dynamic response, int statusCode) { + _cardUpdated.clear(); response['List_PatientInsuranceCardHistory'].forEach((item) { _cardUpdated.add(InsuranceUpdateModel.fromJson(item)); }); }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _insuranceUpdateModel.toJson()); + }, body: Map()); } Future getInsuranceApproval({int appointmentNo}) async { @@ -163,4 +125,15 @@ class InsuranceCardService extends BaseService { throw error; } } + Future getInsuranceDetails(data) async{ + dynamic localRes; + await baseAppClient.post(INSURANCE_DETAILS, + onSuccess: (dynamic response, int statusCode) { + localRes = response['List_InsuranceCheckList']; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body:{'CompanyID': data.companyID,'SubCategoryID':data.subCategoryID },); + return Future.value(localRes); + } } diff --git a/lib/core/service/medical/BloodPressureService.dart b/lib/core/service/medical/BloodPressureService.dart index 048c98e9..f2681191 100644 --- a/lib/core/service/medical/BloodPressureService.dart +++ b/lib/core/service/medical/BloodPressureService.dart @@ -3,10 +3,6 @@ import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPr import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/MonthBloodPressureResultAverage.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/WeekBloodPressureResultAverage.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/YearBloodPressureResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/MonthDiabtectResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/WeekDiabtectResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/YearDiabtecResultAverage.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; class BloodPressureService extends BaseService { diff --git a/lib/core/service/medical/WeightPressureService.dart b/lib/core/service/medical/WeightPressureService.dart index 006de821..27048dc8 100644 --- a/lib/core/service/medical/WeightPressureService.dart +++ b/lib/core/service/medical/WeightPressureService.dart @@ -1,12 +1,4 @@ import 'package:diplomaticquarterapp/config/config.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/BloodPressureResult.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/MonthBloodPressureResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/WeekBloodPressureResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_pressur/YearBloodPressureResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/DiabtecPatientResult.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/MonthDiabtectResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/WeekDiabtectResultAverage.dart'; -import 'package:diplomaticquarterapp/core/model/my_trakers/blood_sugar/YearDiabtecResultAverage.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/weight/MonthWeightMeasurementResultAverage.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/weight/WeekWeightMeasurementResultAverage.dart'; import 'package:diplomaticquarterapp/core/model/my_trakers/weight/WeightMeasurementResult.dart'; diff --git a/lib/core/service/medical/labs_service.dart b/lib/core/service/medical/labs_service.dart index c1ad65f3..b9b9a16c 100644 --- a/lib/core/service/medical/labs_service.dart +++ b/lib/core/service/medical/labs_service.dart @@ -9,10 +9,12 @@ import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; class LabsService extends BaseService { - RequestPatientLabOrders _requestPatientLabOrders = RequestPatientLabOrders(); List patientLabOrdersList = List(); Future getPatientLabOrdersList() async { + hasError = false; + Map body = Map(); + body['isDentalAllowedBackend'] = false; await baseAppClient.post(GET_Patient_LAB_ORDERS, onSuccess: (dynamic response, int statusCode) { patientLabOrdersList.clear(); @@ -22,7 +24,7 @@ class LabsService extends BaseService { }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _requestPatientLabOrders.toJson()); + }, body: body); } RequestPatientLabSpecialResult _requestPatientLabSpecialResult = @@ -39,7 +41,7 @@ class LabsService extends BaseService { hasError = false; _requestPatientLabSpecialResult.projectID = projectID; _requestPatientLabSpecialResult.clinicID = clinicID; - _requestPatientLabSpecialResult.invoiceNo = invoiceNo; //'1800296522';//; + _requestPatientLabSpecialResult.invoiceNo = invoiceNo; _requestPatientLabSpecialResult.orderNo = orderNo; await baseAppClient.post(GET_Patient_LAB_SPECIAL_RESULT, @@ -59,10 +61,10 @@ class LabsService extends BaseService { Map body = Map(); body['InvoiceNo'] = patientLabOrder.invoiceNo; body['OrderNo'] = patientLabOrder.orderNo; - body['Procedure'] = "U/A"; + body['isDentalAllowedBackend'] = false; + body['SetupID'] = patientLabOrder.setupID; body['ProjectID'] = patientLabOrder.projectID; body['ClinicID'] = patientLabOrder.clinicID; - //TODO Check the res await baseAppClient.post(GET_Patient_LAB_RESULT, onSuccess: (dynamic response, int statusCode) { patientLabSpecialResult.clear(); diff --git a/lib/core/service/medical/my_balance_service.dart b/lib/core/service/medical/my_balance_service.dart index 27d5d602..c456b38c 100644 --- a/lib/core/service/medical/my_balance_service.dart +++ b/lib/core/service/medical/my_balance_service.dart @@ -2,10 +2,13 @@ import 'dart:convert'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_advance_balance_amount.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; +import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; @@ -21,6 +24,8 @@ class MyBalanceService extends BaseService { String logInTokenID; String verificationCode; + AuthenticatedUserObject authenticatedUserObject = locator(); + getPatientAdvanceBalanceAmount() async { hasError = false; super.error = ""; @@ -61,8 +66,8 @@ class MyBalanceService extends BaseService { super.error = ""; Map body = Map(); body['isDentalAllowedBackend'] = false; - body['MobileNo'] = user.mobileNumber; - body['ProjectID'] = user.projectID; + body['MobileNo'] = authenticatedUserObject.user.mobileNumber; + body['ProjectID'] = authenticatedUserObject.user.projectID; await baseAppClient.post(GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER, onSuccess: (response, statusCode) async { @@ -143,7 +148,7 @@ class MyBalanceService extends BaseService { await sharedPref.getObject(FAMILY_FILE)); return getAllSharedRecordsByStatusResponse; } else { - return getSharedRecordByStatus(); + return await getSharedRecordByStatus(); } } } diff --git a/lib/core/service/medical/my_doctor_service.dart b/lib/core/service/medical/my_doctor_service.dart index f2ba067a..3d9e14b7 100644 --- a/lib/core/service/medical/my_doctor_service.dart +++ b/lib/core/service/medical/my_doctor_service.dart @@ -22,12 +22,6 @@ class MyDoctorService extends BaseService { channel: 3, deviceTypeID: 2, doctorID: 2477, - iPAdress: '10.20.10.20', - languageID: 2, - patientOutSA: 0, - sessionID: 'CvsUFeJkyLDnFQqw', - versionID: 5.5, - generalid: 'Cs2020@2016\$2958', isDentalAllowedBackend: false); Future getPatientDoctorAppointmentList({int top = 0, int beforeDays = 0,int exludType=4}) async { @@ -52,18 +46,6 @@ class MyDoctorService extends BaseService { RequestDoctorProfile _requestDoctorProfile = RequestDoctorProfile( license: true, isRegistered: true, - projectID: 12, - clinicID: 501, - patientID: 1231755, - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'nstatCtNEmuwxeuVAOUmw', - isDentalAllowedBackend: false, - deviceTypeID: 2, ); Future getDoctorProfileAndRating( @@ -87,7 +69,7 @@ class MyDoctorService extends BaseService { }, body: _requestDoctorProfile.toJson()); ///GET DOCTOR RATING - //_requestDoctorRating.doctorID = doctorId; + _requestDoctorRating.doctorID = doctorId; await baseAppClient.post(GET_DOCTOR_RATING, onSuccess: (dynamic response, int statusCode) { doctorRating = DoctorRating.fromJson(response['AvgDoctorRatingList'][0]); diff --git a/lib/core/service/medical/prescriptions_service.dart b/lib/core/service/medical/prescriptions_service.dart index 294ef897..b920499c 100644 --- a/lib/core/service/medical/prescriptions_service.dart +++ b/lib/core/service/medical/prescriptions_service.dart @@ -11,40 +11,17 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescripti import 'package:diplomaticquarterapp/core/model/prescriptions/request_prescriptions_orders.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/request_send_prescription_email.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; +import 'package:flutter/cupertino.dart'; class PrescriptionsService extends BaseService { List prescriptionsList = List(); - RequestPrescriptions _requestPrescriptions = RequestPrescriptions( - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'KIbLoqkytuKJEWECHQ', - isDentalAllowedBackend: false, - deviceTypeID: 2, - patientID: 1231755, - tokenID: '@dm!n', - patientTypeID: 1, - patientType: 1); List prescriptionsOrderList = List(); - RequestPrescriptionsOrders _requestPrescriptionsOrders = - RequestPrescriptionsOrders( - patientID: 1231755, - patientOutSA: 0, - versionID: 5.5, - channel: 3, - languageID: 1, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - sessionID: 'KIbLoqkytuKJEWECHQ', - isDentalAllowedBackend: false, - deviceTypeID: 2); Future getPrescriptions() async { hasError = false; + Map body = Map(); + body['isDentalAllowedBackend'] = false; await baseAppClient.post(PRESCRIPTIONS, onSuccess: (dynamic response, int statusCode) { prescriptionsList.clear(); @@ -54,10 +31,12 @@ class PrescriptionsService extends BaseService { }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _requestPrescriptions.toJson()); + }, body: body); } Future getPrescriptionsOrders() async { + Map body = Map(); + body['isDentalAllowedBackend'] = false; await baseAppClient.post(GET_PRESCRIPTIONS_ALL_ORDERS, onSuccess: (dynamic response, int statusCode) { prescriptionsOrderList.clear(); @@ -69,35 +48,23 @@ class PrescriptionsService extends BaseService { }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _requestPrescriptionsOrders.toJson()); + }, body: body); } RequestPrescriptionReport _requestPrescriptionReport = RequestPrescriptionReport( - appointmentNo: 0, - channel: 3, - clinicID: 4, - deviceTypeID: 2, - dischargeNo: 2018003246, - episodeID: 0, - iPAdress: '10.20.10.20', - languageID: 1, - patientID: 1231755, - patientOutSA: 0, - patientType: 1, - patientTypeID: 1, - projectID: 12, - sessionID: 'wgKuHpsPsEuLnlJhAYCQ', - tokenID: '@dm!n', - setupID: "91877", - versionID: 5.5, - generalid: 'Cs2020@2016\$2958', - isDentalAllowedBackend: false); + appointmentNo: 0, isDentalAllowedBackend: false); List prescriptionReportList = List(); - Future getPrescriptionReport({int dischargeNo}) async { + Future getPrescriptionReport( + {int dischargeNo, int projectId, int clinicID, String setupID,int episodeID}) async { hasError = false; _requestPrescriptionReport.dischargeNo = dischargeNo; + _requestPrescriptionReport.projectID = projectId; + _requestPrescriptionReport.clinicID = clinicID; + _requestPrescriptionReport.setupID = setupID; + _requestPrescriptionReport.episodeID = episodeID; + await baseAppClient.post(GET_PRESCRIPTION_REPORT, onSuccess: (dynamic response, int statusCode) { prescriptionReportList.clear(); @@ -112,24 +79,7 @@ class PrescriptionsService extends BaseService { RequestSendPrescriptionEmail _requestSendPrescriptionEmail = RequestSendPrescriptionEmail( - versionID: 5.5, - languageID: 2, - channel: 3, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'twIUmHfOHqFdDfVcyw', - isDentalAllowedBackend: false, - deviceTypeID: 2, - tokenID: '@dm!n', - patientTypeID: 1, - patientType: 1, - to: 'aljammalzmohammad@outlook.com', - dateofBirth: '/Date(536743800000+0300)/', - patientIditificationNum: '2344670985', - patientMobileNumber: '537503378', - patientName: 'TAMER FANASHEH', - setupID: '91877'); + isDentalAllowedBackend: false,); Future sendPrescriptionEmail(String appointmentDate, int patientID, String clinicName, String doctorName, int projectID) async { @@ -139,28 +89,25 @@ class PrescriptionsService extends BaseService { _requestSendPrescriptionEmail.clinicName = clinicName; _requestSendPrescriptionEmail.doctorName = doctorName; _requestSendPrescriptionEmail.projectID = projectID; + _requestSendPrescriptionEmail.to = user.emailAddress; + _requestSendPrescriptionEmail.dateofBirth = user.dateofBirth; + _requestSendPrescriptionEmail.patientIditificationNum = user.patientIdentificationNo; + _requestSendPrescriptionEmail.patientMobileNumber = user.mobileNumber; + _requestSendPrescriptionEmail.patientName = user.firstName +" "+ user.lastName; + _requestSendPrescriptionEmail.setupID = user.setupID; hasError = false; - await baseAppClient.post(SEND_PRESCRIPTION_EMAIL, - onFailure: (String error, int statusCode) { + await baseAppClient.post(SEND_PRESCRIPTION_EMAIL, onSuccess: (response, statusCode) {}, + onFailure: (String error, int statusCode) { hasError = true; super.error = error; }, body: _requestSendPrescriptionEmail.toJson()); } - RequestGetListPharmacyForPrescriptions - requestGetListPharmacyForPrescriptions = - RequestGetListPharmacyForPrescriptions( + RequestGetListPharmacyForPrescriptions requestGetListPharmacyForPrescriptions = RequestGetListPharmacyForPrescriptions( latitude: 0, longitude: 0, - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'HGNerTUSXhpaHXBg', isDentalAllowedBackend: false, - deviceTypeID: 2, + ); List pharmacyPrescriptionsList = List(); @@ -180,44 +127,85 @@ class PrescriptionsService extends BaseService { }, body: requestGetListPharmacyForPrescriptions.toJson()); } + RequestPrescriptionReportEnh _requestPrescriptionReportEnh = + RequestPrescriptionReportEnh(isDentalAllowedBackend: false,); - RequestPrescriptionReportEnh _requestPrescriptionReportEnh = RequestPrescriptionReportEnh( - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: '10.20.10.20', - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'bQQdesEKpyYKTFMVNeg', - isDentalAllowedBackend: false, - deviceTypeID: 2, - patientID: 1231755, - tokenID: '@dm!n', - patientTypeID: 1, - patientType: 1, - setupID: '91877', - appointmentNo: 5926390, - episodeID: 140251928, - clinicID: 25, - projectID: 12 + List prescriptionReportEnhList = List(); - ); + Future getPrescriptionReportEnh({PrescriptionsOrder prescriptionsOrder}) async { + + ///This logic copy from the old app from class [order-history.component.ts] in line 45 + bool isInPatient = false; + prescriptionsList.forEach((element) { + if (prescriptionsOrder.appointmentNo == "0") { + if (element.dischargeNo == int.parse(prescriptionsOrder.dischargeID)) { + + _requestPrescriptionReportEnh.appointmentNo = element.appointmentNo; + _requestPrescriptionReportEnh.clinicID = element.clinicID; + _requestPrescriptionReportEnh.projectID = element.projectID; + _requestPrescriptionReportEnh.episodeID = element.episodeID; + _requestPrescriptionReportEnh.setupID = element.setupID; + _requestPrescriptionReportEnh.dischargeNo = element.dischargeNo; + isInPatient = element.isInOutPatient; + } + } else { + if (int.parse(prescriptionsOrder.appointmentNo) == element.appointmentNo) { + _requestPrescriptionReportEnh.appointmentNo = element.appointmentNo; + _requestPrescriptionReportEnh.clinicID = element.clinicID; + _requestPrescriptionReportEnh.projectID = element.projectID; + _requestPrescriptionReportEnh.episodeID = element.episodeID; + _requestPrescriptionReportEnh.setupID = element.setupID; + _requestPrescriptionReportEnh.dischargeNo = element.dischargeNo; + isInPatient = element.isInOutPatient;///call inpGetPrescriptionReport + } + } + }); - List prescriptionReportEnhList = List(); - Future getPrescriptionReportEnh({PrescriptionsOrder prescriptionsOrder})async{ hasError = false; - // _requestPrescriptionReportEnh.appointmentNo = int.parse(prescriptionsOrder.appointmentNo); - // _requestPrescriptionReportEnh.patientID = prescriptionsOrder.projectID; - await baseAppClient.post(GET_PRESCRIPTION_REPORT_ENH, + await baseAppClient.post(isInPatient? GET_PRESCRIPTION_REPORT_ENH : GET_PRESCRIPTION_REPORT, onSuccess: (dynamic response, int statusCode) { - prescriptionReportEnhList.clear(); - response['ListPRM'].forEach((prescriptions) { - prescriptionReportEnhList.add(PrescriptionReportEnh.fromJson(prescriptions)); - }); + prescriptionReportEnhList.clear(); + + if(isInPatient){ + response['ListPRM'].forEach((prescriptions) { + prescriptionReportEnhList.add(PrescriptionReportEnh.fromJson(prescriptions)); + }); + }else{ + response['INP_GetPrescriptionReport_List'].forEach((prescriptions) { + + PrescriptionReportEnh reportEnh = PrescriptionReportEnh.fromJson(prescriptions); + reportEnh.itemDescription = prescriptions['ItemDescriptionN']; + prescriptionReportEnhList.add(reportEnh); + + }); + + } + + + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: _requestPrescriptionReportEnh.toJson()); + + + } + + Future updatePressOrder({@required int presOrderID}) async { + hasError = false; + Map body = Map(); + body['PresOrderID'] = presOrderID; + body['EditedBy'] = user.patientID; + body['RejectionReason'] = ''; + body['PresOrderStatus'] = 4; + body['isDentalAllowedBackend'] = false; + await baseAppClient.post(UPDATE_PRESS_ORDER, + onSuccess: (dynamic response, int statusCode) { + }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; - }, body: _requestPrescriptionReportEnh.toJson()); + }, body: body); } + } diff --git a/lib/core/service/medical/reports_monthly_service.dart b/lib/core/service/medical/reports_monthly_service.dart index 5e643669..479360ac 100644 --- a/lib/core/service/medical/reports_monthly_service.dart +++ b/lib/core/service/medical/reports_monthly_service.dart @@ -12,19 +12,8 @@ class ReportsMonthlyService extends BaseService { isReport: true, encounterType: 1, requestType: 1, - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: "10.20.10.20", - generalid: 'Cs2020@2016\$2958', - patientOutSA: 0, - sessionID: 'KIbLoqkytuKJEWECHQ', isDentalAllowedBackend: false, - deviceTypeID: 2, - patientID: 1231755, - tokenID: '@dm!n', - patientTypeID: 1, - patientType: 1); + ); Future getReports() async { hasError = false; diff --git a/lib/core/service/medical/reports_service.dart b/lib/core/service/medical/reports_service.dart index 316872ed..19f86e2e 100644 --- a/lib/core/service/medical/reports_service.dart +++ b/lib/core/service/medical/reports_service.dart @@ -12,19 +12,8 @@ class ReportsService extends BaseService { isReport: true, encounterType: 1, requestType: 1, - versionID: 5.5, - channel: 3, - languageID: 2, - iPAdress: "10.20.10.20", - generalid: 'Cs2020@2016\$2958', patientOutSA: 0, - sessionID: 'KIbLoqkytuKJEWECHQ', - isDentalAllowedBackend: false, - deviceTypeID: 2, - patientID: 1231755, - tokenID: '@dm!n', - patientTypeID: 1, - patientType: 1); + ); Future getReports() async { hasError = false; diff --git a/lib/core/service/notifications_service.dart b/lib/core/service/notifications_service.dart new file mode 100644 index 00000000..f2cac55e --- /dev/null +++ b/lib/core/service/notifications_service.dart @@ -0,0 +1,40 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_response_model.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/mark_message_as_read_request_model.dart'; +import 'package:diplomaticquarterapp/core/service/base_service.dart'; + +class NotificationService extends BaseService { + List notificationsList = List(); + + Future getAllNotifications(GetNotificationsRequestModel getNotificationsRequestModel ) async { + hasError = false; + await baseAppClient.post(PUSH_NOTIFICATION_GET_ALL_NOTIFICATIONS, + onSuccess: (dynamic response, int statusCode) { + if(getNotificationsRequestModel.currentPage ==0) + notificationsList.clear(); + response['List_GetAllNotificationsFromPool'].forEach((appoint) { + notificationsList.add(GetNotificationsResponseModel.fromJson(appoint)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: getNotificationsRequestModel.toJson()); + } + Future markAsRead(MarkMessageAsReadRequestModel markMessageAsReadRequestModel ) async { + hasError = false; + await baseAppClient.post(PUSH_NOTIFICATION_SET_MESSAGES_FROM_POOL_AS_READ, + onSuccess: (dynamic response, int statusCode) { + updateNotification(markMessageAsReadRequestModel.notificationPoolID); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: markMessageAsReadRequestModel.toJson()); + } + + updateNotification(id) { + int index = notificationsList.indexWhere((element) => element.id == id); + notificationsList[index].isRead = true; + + } +} diff --git a/lib/core/viewModels/base_view_model.dart b/lib/core/viewModels/base_view_model.dart index 18ab02e3..d8ea5196 100644 --- a/lib/core/viewModels/base_view_model.dart +++ b/lib/core/viewModels/base_view_model.dart @@ -30,6 +30,9 @@ class BaseViewModel extends ChangeNotifier { } BaseViewModel() { + //authenticatedUserObject.getUser(); + user = authenticatedUserObject.user; + this.isLogin = authenticatedUserObject.isLogin; _getUser(); } diff --git a/lib/core/viewModels/dashboard_view_model.dart b/lib/core/viewModels/dashboard_view_model.dart index e2523120..4cf22b23 100644 --- a/lib/core/viewModels/dashboard_view_model.dart +++ b/lib/core/viewModels/dashboard_view_model.dart @@ -10,7 +10,7 @@ class DashboardViewModel extends BaseViewModel { String bloadType = ""; getPatientRadOrders() async { - if (!isLogin && _vitalSignService.weightKg.isEmpty) { + if (isLogin && _vitalSignService.weightKg.isEmpty) { setState(ViewState.Busy); await _vitalSignService.getPatientRadOrders(); if (_vitalSignService.hasError) { diff --git a/lib/core/viewModels/feedback/feedback_view_model.dart b/lib/core/viewModels/feedback/feedback_view_model.dart index d5f14e2d..4956024d 100644 --- a/lib/core/viewModels/feedback/feedback_view_model.dart +++ b/lib/core/viewModels/feedback/feedback_view_model.dart @@ -3,6 +3,8 @@ import 'package:diplomaticquarterapp/core/model/feedback/COC_items.dart'; import 'package:diplomaticquarterapp/core/service/feedback/feedback_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/pages/feedback/appointment_history.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/cupertino.dart'; import '../../../locator.dart'; @@ -22,7 +24,31 @@ class FeedbackViewModel extends BaseViewModel { MessageType messageType = MessageType.NON; MessageType messageTypeDialog = MessageType.NON; - String selected = "not selected"; + + + String getSelected(BuildContext context) { + switch (messageType) { + case MessageType.ComplaintOnAnAppointment: + return TranslationBase.of(context).complainAppo; + break; + case MessageType.ComplaintWithoutAppointment: + return TranslationBase.of(context).complainWithoutAppo; + break; + case MessageType.Question: + return TranslationBase.of(context).question; + break; + case MessageType.Compliment: + return TranslationBase.of(context).compliment; + break; + case MessageType.Suggestion: + return TranslationBase.of(context).suggestion; + break; + case MessageType.NON: + return TranslationBase.of(context).notClassified; + break; + } + return TranslationBase.of(context).notClassified; + } setMessageDialogType(MessageType messageType) { messageTypeDialog = messageType; @@ -33,19 +59,14 @@ class FeedbackViewModel extends BaseViewModel { this.messageType = messageType; switch (messageType) { case MessageType.ComplaintOnAnAppointment: - selected = "Complaint on an appointment"; break; case MessageType.ComplaintWithoutAppointment: - selected = "Complaint without appointment"; break; case MessageType.Question: - selected = "Question"; break; case MessageType.Compliment: - selected = "Compliment"; break; case MessageType.Suggestion: - selected = "Suggestion"; break; case MessageType.NON: break; diff --git a/lib/core/viewModels/insurance_card_View_model.dart b/lib/core/viewModels/insurance_card_View_model.dart index e99a53f6..7029f082 100644 --- a/lib/core/viewModels/insurance_card_View_model.dart +++ b/lib/core/viewModels/insurance_card_View_model.dart @@ -65,11 +65,12 @@ class InsuranceViewModel extends BaseViewModel { } Future getFamilyFiles() async { - await _insuranceCardService.getFamilyFiles(); + await _insuranceCardService.getSharedRecordByStatus(); if (_insuranceCardService.hasError) { error = _insuranceCardService.error; setState(ViewState.Error); } else setState(ViewState.Idle); } + } diff --git a/lib/core/viewModels/medical/labs_view_model.dart b/lib/core/viewModels/medical/labs_view_model.dart index 8cbf0efc..582ee745 100644 --- a/lib/core/viewModels/medical/labs_view_model.dart +++ b/lib/core/viewModels/medical/labs_view_model.dart @@ -82,6 +82,8 @@ class LabsViewModel extends BaseViewModel { List get labResultList => _labsService.labResultList; + List labResultLists = List(); + getLaboratoryResult( {String projectID, int clinicID, @@ -110,6 +112,24 @@ class LabsViewModel extends BaseViewModel { error = _labsService.error; setState(ViewState.Error); } else { + _labsService.labResultList.forEach((element) { + List patientLabOrdersClinic = + labResultLists + .where((elementClinic) => + elementClinic.filterName == element.testCode) + .toList(); + + if (patientLabOrdersClinic.length != 0) { + labResultLists[labResultLists.indexOf(patientLabOrdersClinic[0])] + .patientLabResultList + .add(element); + } else { + labResultLists.add(LabResultList( + filterName: element.testCode, + lab: element)); + } + + }); setState(ViewState.Idle); } } diff --git a/lib/core/viewModels/medical/medical_view_model.dart b/lib/core/viewModels/medical/medical_view_model.dart index f8b14c6e..52fd221a 100644 --- a/lib/core/viewModels/medical/medical_view_model.dart +++ b/lib/core/viewModels/medical/medical_view_model.dart @@ -14,7 +14,6 @@ class MedicalViewModel extends BaseViewModel { getAppointmentHistory() async { if (authenticatedUserObject.isLogin) { setState(ViewState.Busy); - if (_medicalService.appoitmentAllHistoryResultList.length == 0) await _medicalService.getAppointmentHistory(); if (_medicalService.hasError) { error = _medicalService.error; diff --git a/lib/core/viewModels/medical/my_balance_view_model.dart b/lib/core/viewModels/medical/my_balance_view_model.dart index b110edcb..af4e126e 100644 --- a/lib/core/viewModels/medical/my_balance_view_model.dart +++ b/lib/core/viewModels/medical/my_balance_view_model.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/blooddonation/blood_groub_details.dart'; import 'package:diplomaticquarterapp/core/model/blooddonation/get_all_cities.dart'; import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; +import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_advance_balance_amount.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; @@ -25,11 +26,15 @@ class MyBalanceViewModel extends BaseViewModel { _myBalanceService.patientAdvanceBalanceAmountList; //======================== - BloodDonationService _bloodDonationService =locator(); - List get CitiesModelList => _bloodDonationService.CitiesModelList; - BloodDetailsService _bloodDetailsService =locator(); - List get BloodDetailsModelList => _bloodDetailsService.BloodModelList;//_bloodDonationService.CitiesModelList; + BloodDonationService _bloodDonationService = locator(); + List get CitiesModelList => + _bloodDonationService.CitiesModelList; + BloodDetailsService _bloodDetailsService = locator(); + + List get BloodDetailsModelList => + _bloodDetailsService + .BloodModelList; //_bloodDonationService.CitiesModelList; //=========================== @@ -44,8 +49,8 @@ class MyBalanceViewModel extends BaseViewModel { PatientInfoAndMobileNumber get patientInfoAndMobileNumber => _myBalanceService.patientInfoAndMobileNumber; - String get logInTokenID => _myBalanceService.logInTokenID; + String get verificationCode => _myBalanceService.verificationCode; getPatientAdvanceBalanceAmount() async { @@ -68,6 +73,7 @@ class MyBalanceViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + //============== Future getCities() async { setState(ViewState.Busy); @@ -79,9 +85,11 @@ class MyBalanceViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + Future getBlood() async { setState(ViewState.Busy); - await _bloodDetailsService .getAllBloodOrders();; + await _bloodDetailsService.getAllBloodOrders(); + ; if (_bloodDetailsService.hasError) { error = _bloodDetailsService.error; @@ -89,6 +97,7 @@ class MyBalanceViewModel extends BaseViewModel { } else setState(ViewState.Idle); } + //=============== Future getPatientInfoByPatientID({String id}) async { @@ -105,7 +114,8 @@ class MyBalanceViewModel extends BaseViewModel { Future getPatientInfoByPatientIDAndMobileNumber() async { setState(ViewState.Busy); - await _myBalanceService.getPatientInfoByPatientIDAndMobileNumber(); + await _myBalanceService + .getPatientInfoByPatientIDAndMobileNumber(); if (_myBalanceService.hasError) { error = _myBalanceService.error; setState(ViewState.ErrorLocal); @@ -115,9 +125,11 @@ class MyBalanceViewModel extends BaseViewModel { } } - Future sendActivationCodeForAdvancePayment({int patientID,int projectID}) async { + Future sendActivationCodeForAdvancePayment( + {int patientID, int projectID}) async { setState(ViewState.Busy); - await _myBalanceService.sendActivationCodeForAdvancePayment(patientID: patientID,projectID: projectID); + await _myBalanceService.sendActivationCodeForAdvancePayment( + patientID: patientID, projectID: projectID); if (_myBalanceService.hasError) { error = _myBalanceService.error; setState(ViewState.ErrorLocal); @@ -126,9 +138,12 @@ class MyBalanceViewModel extends BaseViewModel { setState(ViewState.Idle); } } - Future checkActivationCodeForAdvancePayment({String activationCode}) async { + + Future checkActivationCodeForAdvancePayment( + {String activationCode, String patientMobileNumber}) async { setState(ViewState.Busy); - await _myBalanceService.checkActivationCodeForAdvancePayment(activationCode: activationCode); + await _myBalanceService.checkActivationCodeForAdvancePayment( + activationCode: activationCode); if (_myBalanceService.hasError) { error = _myBalanceService.error; setState(ViewState.ErrorLocal); diff --git a/lib/core/viewModels/medical/prescriptions_view_model.dart b/lib/core/viewModels/medical/prescriptions_view_model.dart index 27b954d4..054dc4ef 100644 --- a/lib/core/viewModels/medical/prescriptions_view_model.dart +++ b/lib/core/viewModels/medical/prescriptions_view_model.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_repor import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:flutter/cupertino.dart'; import '../../../core/enum/filter_type.dart'; import '../../../core/enum/viewstate.dart'; @@ -102,9 +103,9 @@ class PrescriptionsViewModel extends BaseViewModel { notifyListeners(); } - getPrescriptionReport({int dischargeNo}) async { + getPrescriptionReport({int dischargeNo,int projectId,int clinicID,String setupID,int episodeID}) async { setState(ViewState.Busy); - await _prescriptionsService.getPrescriptionReport(dischargeNo: dischargeNo); + await _prescriptionsService.getPrescriptionReport(dischargeNo: dischargeNo,projectId: projectId,clinicID: clinicID,setupID: setupID,episodeID: episodeID); if (_prescriptionsService.hasError) { error = _prescriptionsService.error; setState(ViewState.ErrorLocal); @@ -157,4 +158,16 @@ class PrescriptionsViewModel extends BaseViewModel { } } + + Future updatePressOrder({@required int presOrderID}) async { + setState(ViewState.Busy); + await _prescriptionsService.updatePressOrder(presOrderID: presOrderID); + if (_prescriptionsService.hasError) { + error = _prescriptionsService.error; + setState(ViewState.Error); + } else { + await getPrescriptions(); + } + } + } diff --git a/lib/core/viewModels/notifications_view_model.dart b/lib/core/viewModels/notifications_view_model.dart new file mode 100644 index 00000000..ac09e3b2 --- /dev/null +++ b/lib/core/viewModels/notifications_view_model.dart @@ -0,0 +1,40 @@ +import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_response_model.dart'; +import 'package:diplomaticquarterapp/core/model/notifications/mark_message_as_read_request_model.dart'; +import 'package:diplomaticquarterapp/core/service/notifications_service.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:flutter/material.dart'; + +import '../../locator.dart'; +import 'base_view_model.dart'; + +class NotificationViewModel extends BaseViewModel { + NotificationService _notificationService = locator(); + + List get notifications => + _notificationService.notificationsList; + + Future getNotifications( + GetNotificationsRequestModel getNotificationsRequestModel, BuildContext context) async { + if(getNotificationsRequestModel.currentPage == 0) + setState(ViewState.Busy); + + await _notificationService + .getAllNotifications(getNotificationsRequestModel); + if (_notificationService.hasError) { + error = _notificationService.error; + setState(ViewState.Error); + } else { + setState(ViewState.Idle); + } + } + + Future markAsRead(id) async { + // setState(ViewState.Busy); + MarkMessageAsReadRequestModel markMessageAsReadRequestModel = + new MarkMessageAsReadRequestModel(notificationPoolID: id); + await _notificationService.markAsRead(markMessageAsReadRequestModel); + setState(ViewState.Idle); + } +} \ No newline at end of file diff --git a/lib/core/viewModels/project_view_model.dart b/lib/core/viewModels/project_view_model.dart index 407c181b..e65a70f7 100644 --- a/lib/core/viewModels/project_view_model.dart +++ b/lib/core/viewModels/project_view_model.dart @@ -12,32 +12,36 @@ import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; class ProjectViewModel extends BaseViewModel { // Platform Bridge PlatformBridge platformBridge() { - return PlatformBridge(); + return PlatformBridge.shared(); } AppSharedPreferences sharedPref = AppSharedPreferences(); - Locale _appLocale; - String currentLanguage = 'en'; + Locale _appLocale = Locale('ar'); + String currentLanguage = 'ar'; bool _isArabic = false; bool isInternetConnection = true; bool isLoading = false; bool isError = false; String error = ''; dynamic searchvalue; + bool isLogin = false; + dynamic get searchValue => searchvalue; + Locale get appLocal => _appLocale; LocaleType get localeType => isArabic ? LocaleType.en : LocaleType.ar; + bool get isArabic => _isArabic; + // BaseViewModel baseViewModel = locator() StreamSubscription subscription; ProjectViewModel() { + // PlatformBridge.init(context); // Moved to 'main.dart' due to context availability loadSharedPrefLanguage(); - subscription = Connectivity() - .onConnectivityChanged - .listen((ConnectivityResult result) { + subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { switch (result) { case ConnectivityResult.wifi: isInternetConnection = true; @@ -54,13 +58,9 @@ class ProjectViewModel extends BaseViewModel { } void loadSharedPrefLanguage() async { - currentLanguage = await sharedPref.getString(APP_LANGUAGE); - _appLocale = Locale(currentLanguage ?? 'en'); - _isArabic = currentLanguage != null - ? currentLanguage == 'ar' - ? true - : false - : true; + currentLanguage = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + _appLocale = Locale(currentLanguage); + _isArabic = currentLanguage == 'ar'; notifyListeners(); } diff --git a/lib/core/viewModels/qr_view_model.dart b/lib/core/viewModels/qr_view_model.dart index 03c88462..9833d6c8 100644 --- a/lib/core/viewModels/qr_view_model.dart +++ b/lib/core/viewModels/qr_view_model.dart @@ -1,11 +1,11 @@ import 'dart:convert'; - -// import 'package:barcode_scan/platform_wrapper.dart'; +import 'package:barcode_scan_fix/barcode_scan.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/qr/qr_parking_model.dart'; import 'package:diplomaticquarterapp/core/service/qr_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; + import '../../locator.dart'; class QrViewModel extends BaseViewModel { @@ -15,25 +15,25 @@ class QrViewModel extends BaseViewModel { readQr() async { //TODO fix the barcode scan - // var result = await BarcodeScanner.scan(); - // var data = json.decode(result.rawContent); - // var qRParkingID = data['QRParkingID']; - // setState(ViewState.BusyLocal); - // await _qrService.getQRParkingByID(qRParkingID); - // if (_qrService.hasError) { - // error = _qrService.error; - // setState(ViewState.ErrorLocal); - // } else { - // if (_qrService.qRParkingList.length > 0) { - // qrParkingModel = _qrService.qRParkingList[0]; - // await sharedPref.setObject(IS_GO_TO_PARKING, qrParkingModel); - // isSavePark = true; - // setState(ViewState.Idle); - // } else { - // error = "Invalid Qr Code"; - // setState(ViewState.ErrorLocal); - // } - // } + String result = await BarcodeScanner.scan(); + var data = json.decode(result); + var qRParkingID = data['QRParkingID']; + setState(ViewState.BusyLocal); + await _qrService.getQRParkingByID(qRParkingID); + if (_qrService.hasError) { + error = _qrService.error; + setState(ViewState.ErrorLocal); + } else { + if (_qrService.qRParkingList.length > 0) { + qrParkingModel = _qrService.qRParkingList[0]; + await sharedPref.setObject(IS_GO_TO_PARKING, qrParkingModel); + isSavePark = true; + setState(ViewState.Idle); + } else { + error = "Invalid Qr Code"; + setState(ViewState.ErrorLocal); + } + } } getIsSaveParking() async { diff --git a/lib/d_q_icons_icons.dart b/lib/d_q_icons_icons.dart index 040e6e08..c3b64559 100644 --- a/lib/d_q_icons_icons.dart +++ b/lib/d_q_icons_icons.dart @@ -30,16 +30,13 @@ class DQIcons { static const IconData thermometer = IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData weight_scale = IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg); static const IconData parking_icon = IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData more_menu_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData offer_icon = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData prescription_icon = IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData search_scan_icon = IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData share_icon = IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData wishlist_add_icon = IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData wishlist_icon = IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData bg_1 = IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData bg_2 = IconData(0xe811, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData bg_3 = IconData(0xe812, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData bg_4 = IconData(0xe813, fontFamily: _kFontFam, fontPackage: _kFontPkg); - static const IconData medication_icon = IconData(0xe814, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData blood_type_icon = IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData height_icon = IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData online_payment_icon = IconData(0xe80b, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData search_medicine_icon = IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData vital_sign_icon = IconData(0xe80d, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData weight_icon = IconData(0xe80e, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData my_medical_file = IconData(0xe80f, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData family = IconData(0xe810, fontFamily: _kFontFam, fontPackage: _kFontPkg); + static const IconData calendar__2_ = IconData(0xe811, fontFamily: _kFontFam, fontPackage: _kFontPkg); } diff --git a/lib/locator.dart b/lib/locator.dart index a7352b47..6b7bb076 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -43,6 +43,7 @@ import 'core/service/medical/radiology_service.dart'; import 'core/service/medical/reports_monthly_service.dart'; import 'core/service/medical/vital_sign_service.dart'; import 'core/service/parmacyModule/order-preview-service.dart'; +import 'core/service/notifications_service.dart'; import 'core/viewModels/AlHabibMedicalService/cmc_view_model.dart'; import 'core/service/parmacyModule/parmacy_module_service.dart'; @@ -77,6 +78,7 @@ import 'core/viewModels/medical/reports_monthly_view_model.dart'; import 'core/viewModels/medical/vital_sign_view_model.dart'; import 'core/viewModels/medical/reports_view_model.dart'; import 'core/viewModels/medical/weight_pressure_view_model.dart'; +import 'core/viewModels/notifications_view_model.dart'; import 'core/viewModels/pharmacies_view_model.dart'; import 'core/service/pharmacies_service.dart'; import 'core/service/insurance_service.dart'; @@ -115,8 +117,6 @@ void setupLocator() { locator.registerLazySingleton(() => EReferralService()); locator.registerLazySingleton(() => HomeHealthCareService()); locator.registerLazySingleton(() => CMCService()); - - locator.registerLazySingleton(() => PatientSickLeaveService()); locator.registerLazySingleton(() => MyBalanceService()); locator.registerLazySingleton(() => BloodSugarService()); @@ -129,7 +129,6 @@ void setupLocator() { locator.registerLazySingleton(() => FindusService()); locator.registerLazySingleton(() => LiveChatService()); locator.registerLazySingleton(() => H2OService()); - locator.registerLazySingleton(() => BloodDonationService()); locator.registerLazySingleton(() => BloodDetailsService()); locator.registerLazySingleton(() => ChildVaccinesService()); @@ -138,6 +137,7 @@ void setupLocator() { locator.registerLazySingleton(() => DeleteBabyService()); locator.registerLazySingleton(() => VaccinationTableService()); + locator.registerLazySingleton(() => NotificationService()); locator.registerLazySingleton(() => PharmacyModuleService()); @@ -173,9 +173,6 @@ void setupLocator() { locator.registerFactory(() => ChildVaccinesViewModel()); locator.registerFactory(() => UserInformationViewModel()); locator.registerFactory(() => VaccinationTableViewModel()); - - - locator.registerFactory(() => AddNewChildViewModel()); locator.registerFactory(() => H2OViewModel()); locator.registerFactory(() => BloodSugarViewMode()); @@ -188,6 +185,7 @@ void setupLocator() { locator.registerFactory(() => AllergiesViewModel()); locator.registerFactory(() => HomeHealthCareViewModel()); locator.registerFactory(() => CMCViewModel()); + locator.registerFactory(() => NotificationViewModel()); diff --git a/lib/main.dart b/lib/main.dart index 9597f72b..83492d81 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,30 +1,30 @@ +import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; +import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/routes.dart'; +import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; +import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; +import 'package:diplomaticquarterapp/theme/theme_value.dart'; +import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; -import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; + import 'config/size_config.dart'; import 'core/viewModels/project_view_model.dart'; import 'locator.dart'; -import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; - -@pragma('vm:entry-point') -void customMainDartMethod() { - setupLocator(); - runApp(MyApp()); -} void main() async { setupLocator(); - runApp(MyApp()); + runApp(ChangeNotifierProvider(create: (context) => ThemeNotifier(defaultTheme), child: MyApp())); } class MyApp extends StatelessWidget { - /// static final _myTabbedPageKey = new GlobalKey<_LandingPageState>(); @override Widget build(BuildContext context) { + PlatformBridge.init(context); + return LayoutBuilder( builder: (context, constraints) { return OrientationBuilder( @@ -35,8 +35,8 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider( create: (context) => ProjectViewModel(), ), - ChangeNotifierProvider( - create: (context) => SearchProvider()), + ChangeNotifierProvider(create: (context) => ToDoCountProviderModel()), + ChangeNotifierProvider(create: (context) => SearchProvider()), ChangeNotifierProvider.value( value: SearchProvider(), ), @@ -54,6 +54,7 @@ class MyApp extends StatelessWidget { TranslationBaseDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, ], supportedLocales: [ const Locale('ar', ''), // Arabic @@ -73,8 +74,7 @@ class MyApp extends StatelessWidget { hintColor: Colors.grey[400], disabledColor: Colors.grey[300], errorColor: Color.fromRGBO(235, 80, 60, 1.0), - scaffoldBackgroundColor: - HexColor('#E9E9E9'), // Colors.grey[100], + scaffoldBackgroundColor: Color(0xffE9E9E9), // Colors.grey[100], textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), textSelectionHandleColor: Colors.grey, canvasColor: Colors.white, @@ -82,8 +82,7 @@ class MyApp extends StatelessWidget { highlightColor: Colors.grey[100].withOpacity(0.4), splashColor: Colors.transparent, primaryColor: Colors.grey, - bottomSheetTheme: BottomSheetThemeData( - backgroundColor: HexColor('#E0E0E0')), + bottomSheetTheme: BottomSheetThemeData(backgroundColor: HexColor('#E0E0E0')), cursorColor: Colors.grey, iconTheme: IconThemeData(), appBarTheme: AppBarTheme( @@ -95,7 +94,7 @@ class MyApp extends StatelessWidget { ), ), ), - initialRoute: HOME, + initialRoute: SPLASH, routes: routes, debugShowCheckedModeBanner: false, ), diff --git a/lib/models/Appointments/toDoCountProviderModel.dart b/lib/models/Appointments/toDoCountProviderModel.dart new file mode 100644 index 00000000..0fd83491 --- /dev/null +++ b/lib/models/Appointments/toDoCountProviderModel.dart @@ -0,0 +1,12 @@ +import 'package:flutter/cupertino.dart'; + +class ToDoCountProviderModel with ChangeNotifier { + int _count; + + int get count => _count == null ? 0 : _count; + + void setState(int count) { + _count = count; + notifyListeners(); + } +} diff --git a/lib/models/Authentication/authenticated_user.dart b/lib/models/Authentication/authenticated_user.dart index efccc068..4c7974a3 100644 --- a/lib/models/Authentication/authenticated_user.dart +++ b/lib/models/Authentication/authenticated_user.dart @@ -60,6 +60,7 @@ class AuthenticatedUser { dynamic strDateofBirth; dynamic tempAddress; dynamic zipCode; + dynamic isFamily; // dynamic patientPayType; // dynamic patientType; // dynamic status; @@ -123,6 +124,7 @@ class AuthenticatedUser { this.strDateofBirth, this.tempAddress, this.zipCode, + this.isFamily }); AuthenticatedUser.fromJson(Map json) { @@ -190,6 +192,7 @@ class AuthenticatedUser { strDateofBirth = json['StrDateofBirth']; tempAddress = json['TempAddress']; zipCode = json['ZipCode']; + isFamily = json['IsFamily']; } Map toJson() { @@ -255,7 +258,7 @@ class AuthenticatedUser { data['StrDateofBirth'] = this.strDateofBirth; data['TempAddress'] = this.tempAddress; data['ZipCode'] = this.zipCode; - + data['IsFamily'] = this.isFamily; return data; } } diff --git a/lib/models/Authentication/check_activation_code_request.dart b/lib/models/Authentication/check_activation_code_request.dart index a4bf79c3..af139ba5 100644 --- a/lib/models/Authentication/check_activation_code_request.dart +++ b/lib/models/Authentication/check_activation_code_request.dart @@ -2,7 +2,7 @@ class CheckActivationCodeReq { int patientMobileNumber; String mobileNo; String deviceToken; - int projectOutSA; + bool projectOutSA; int loginType; String zipCode; bool isRegister; diff --git a/lib/models/Authentication/register_user_requet.dart b/lib/models/Authentication/register_user_requet.dart index ebefcfcf..7758ce5b 100644 --- a/lib/models/Authentication/register_user_requet.dart +++ b/lib/models/Authentication/register_user_requet.dart @@ -76,6 +76,9 @@ class Patientobject { String firstName; String middleName; String lastName; + String firstNameN; + String middleNameN; + String lastNameN; dynamic strDateofBirth; String dateofBirth; int gender; @@ -93,8 +96,11 @@ class Patientobject { this.mobileNumber, this.patientOutSA, this.firstName, - this.middleName, - this.lastName, + this.middleName, + this.lastName, + this.firstNameN, + this.middleNameN, + this.lastNameN, this.strDateofBirth, this.dateofBirth, this.gender, @@ -114,6 +120,9 @@ class Patientobject { firstName = json['FirstName']; middleName = json['MiddleName']; lastName = json['LastName']; + firstNameN = json['FirstNameN']; + middleNameN = json['MiddleNameN']; + lastNameN = json['LastNameN']; strDateofBirth = json['StrDateofBirth']; dateofBirth = json['DateofBirth']; gender = json['Gender']; @@ -136,6 +145,9 @@ class Patientobject { data['FirstName'] = this.firstName; data['MiddleName'] = this.middleName; data['LastName'] = this.lastName; + data['FirstNameN'] = this.firstNameN; + data['MiddleNameN'] = this.middleNameN; + data['LastNameN'] = this.lastNameN; data['StrDateofBirth'] = this.strDateofBirth; data['DateofBirth'] = this.dateofBirth; data['Gender'] = this.gender; diff --git a/lib/models/Authentication/send_activation_request.dart b/lib/models/Authentication/send_activation_request.dart index 804f6ef0..b53e19b8 100644 --- a/lib/models/Authentication/send_activation_request.dart +++ b/lib/models/Authentication/send_activation_request.dart @@ -2,7 +2,7 @@ class SendActivationRequest { int patientMobileNumber; String mobileNo; String deviceToken; - int projectOutSA; + bool projectOutSA; int loginType; String zipCode; bool isRegister; diff --git a/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart b/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart index da848b65..b21d940f 100644 --- a/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart +++ b/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart @@ -1,68 +1,68 @@ class GetAllSharedRecordsByStatusResponse { - Null date; + dynamic date; int languageID; int serviceName; - Null time; - Null androidLink; - Null authenticationTokenID; - Null data; + dynamic time; + dynamic androidLink; + dynamic authenticationTokenID; + dynamic data; bool dataw; int dietType; - Null errorCode; - Null errorEndUserMessage; - Null errorEndUserMessageN; - Null errorMessage; + dynamic errorCode; + dynamic errorEndUserMessage; + dynamic errorEndUserMessageN; + dynamic errorMessage; int errorType; int foodCategory; - Null iOSLink; + dynamic iOSLink; bool isAuthenticated; int mealOrderStatus; int mealType; int messageStatus; int numberOfResultRecords; - Null patientBlodType; - Null successMsg; - Null successMsgN; - Null doctorInformationList; - Null getAllPendingRecordsList; + dynamic patientBlodType; + dynamic successMsg; + dynamic successMsgN; + dynamic doctorInformationList; + List getAllPendingRecordsList; List getAllSharedRecordsByStatusList; - Null getResponseFileList; + List getResponseFileList; bool isHMGPatient; bool isLoginSuccessfully; bool isNeedUpdateIdintificationNo; bool kioskSendSMS; - Null list; - Null listAskHabibMobileLoginInfo; - Null listAskHabibPatientFile; - Null listMergeFiles; - Null listMobileLoginInfo; - Null listPatientCount; - Null logInTokenID; - Null mohemmPrivilegeList; + dynamic list; + dynamic listAskHabibMobileLoginInfo; + dynamic listAskHabibPatientFile; + dynamic listMergeFiles; + dynamic listMobileLoginInfo; + dynamic listPatientCount; + dynamic logInTokenID; + dynamic mohemmPrivilegeList; int pateintID; - Null patientBloodType; - Null patientERDriverFile; - Null patientERDriverFileList; + dynamic patientBloodType; + dynamic patientERDriverFile; + dynamic patientERDriverFileList; bool patientHasFile; - Null patientMergedIDs; + dynamic patientMergedIDs; bool patientOutSA; int patientShareRequestID; int patientType; int projectIDOut; - Null returnMessage; + dynamic returnMessage; bool sMSLoginRequired; - Null servicePrivilegeList; - Null sharePatientName; - Null verificationCode; - Null email; - Null errorList; + dynamic servicePrivilegeList; + dynamic sharePatientName; + dynamic verificationCode; + dynamic email; + dynamic errorList; bool hasFile; bool isActiveCode; bool isMerged; bool isNeedUserAgreement; bool isSMSSent; - Null memberList; - Null message; + dynamic memberList; + dynamic message; int statusCode; GetAllSharedRecordsByStatusResponse( @@ -133,78 +133,92 @@ class GetAllSharedRecordsByStatusResponse { this.statusCode}); GetAllSharedRecordsByStatusResponse.fromJson(Map json) { - date = json['Date']; - languageID = json['LanguageID']; - serviceName = json['ServiceName']; - time = json['Time']; - androidLink = json['AndroidLink']; - authenticationTokenID = json['AuthenticationTokenID']; - data = json['Data']; - dataw = json['Dataw']; - dietType = json['DietType']; - errorCode = json['ErrorCode']; - errorEndUserMessage = json['ErrorEndUserMessage']; - errorEndUserMessageN = json['ErrorEndUserMessageN']; - errorMessage = json['ErrorMessage']; - errorType = json['ErrorType']; - foodCategory = json['FoodCategory']; - iOSLink = json['IOSLink']; - isAuthenticated = json['IsAuthenticated']; - mealOrderStatus = json['MealOrderStatus']; - mealType = json['MealType']; - messageStatus = json['MessageStatus']; - numberOfResultRecords = json['NumberOfResultRecords']; - patientBlodType = json['PatientBlodType']; - successMsg = json['SuccessMsg']; - successMsgN = json['SuccessMsgN']; - doctorInformationList = json['DoctorInformation_List']; - getAllPendingRecordsList = json['GetAllPendingRecordsList']; - if (json['GetAllSharedRecordsByStatusList'] != null) { - getAllSharedRecordsByStatusList = - new List(); - json['GetAllSharedRecordsByStatusList'].forEach((v) { - getAllSharedRecordsByStatusList - .add(new GetAllSharedRecordsByStatusList.fromJson(v)); - }); + try { + date = json['Date']; + languageID = json['LanguageID']; + serviceName = json['ServiceName']; + time = json['Time']; + androidLink = json['AndroidLink']; + authenticationTokenID = json['AuthenticationTokenID']; + data = json['Data']; + dataw = json['Dataw']; + dietType = json['DietType']; + errorCode = json['ErrorCode']; + errorEndUserMessage = json['ErrorEndUserMessage']; + errorEndUserMessageN = json['ErrorEndUserMessageN']; + errorMessage = json['ErrorMessage']; + errorType = json['ErrorType']; + foodCategory = json['FoodCategory']; + iOSLink = json['IOSLink']; + isAuthenticated = json['IsAuthenticated']; + mealOrderStatus = json['MealOrderStatus']; + mealType = json['MealType']; + messageStatus = json['MessageStatus']; + numberOfResultRecords = json['NumberOfResultRecords']; + patientBlodType = json['PatientBlodType']; + successMsg = json['SuccessMsg']; + successMsgN = json['SuccessMsgN']; + doctorInformationList = json['DoctorInformation_List']; +// getAllPendingRecordsList = json['GetAllPendingRecordsList']; + + if (json['GetAllPendingRecordsList'] != null) { + getAllSharedRecordsByStatusList = new List(); + json['GetAllPendingRecordsList'].forEach((v) { + getAllSharedRecordsByStatusList + .add(new GetAllSharedRecordsByStatusList.fromJson(v)); + }); + } + + if (json['GetAllSharedRecordsByStatusList'] != null) { + getAllSharedRecordsByStatusList = new List(); + json['GetAllSharedRecordsByStatusList'].forEach((v) { + getAllSharedRecordsByStatusList + .add(new GetAllSharedRecordsByStatusList.fromJson(v)); + }); + } + getResponseFileList = json['GetResponseFileList']; + isHMGPatient = json['IsHMGPatient']; + isLoginSuccessfully = json['IsLoginSuccessfully']; + isNeedUpdateIdintificationNo = json['IsNeedUpdateIdintificationNo']; + kioskSendSMS = json['KioskSendSMS']; + list = json['List']; + listAskHabibMobileLoginInfo = json['List_AskHabibMobileLoginInfo']; + listAskHabibPatientFile = json['List_AskHabibPatientFile']; + listMergeFiles = json['List_MergeFiles']; + listMobileLoginInfo = json['List_MobileLoginInfo']; + listPatientCount = json['List_PatientCount']; + logInTokenID = json['LogInTokenID']; + mohemmPrivilegeList = json['MohemmPrivilege_List']; + pateintID = json['PateintID']; + patientBloodType = json['PatientBloodType']; + patientERDriverFile = json['PatientER_DriverFile']; + patientERDriverFileList = json['PatientER_DriverFileList']; + patientHasFile = json['PatientHasFile']; + patientMergedIDs = json['PatientMergedIDs']; + patientOutSA = json['PatientOutSA']; + patientShareRequestID = json['PatientShareRequestID']; + patientType = json['PatientType']; + projectIDOut = json['ProjectIDOut']; + returnMessage = json['ReturnMessage']; + sMSLoginRequired = json['SMSLoginRequired']; + servicePrivilegeList = json['ServicePrivilege_List']; + sharePatientName = json['SharePatientName']; + verificationCode = json['VerificationCode']; + email = json['email']; + errorList = json['errorList']; + hasFile = json['hasFile']; + isActiveCode = json['isActiveCode']; + isMerged = json['isMerged']; + isNeedUserAgreement = json['isNeedUserAgreement']; + isSMSSent = json['isSMSSent']; + memberList = json['memberList']; + message = json['message']; + statusCode = json['statusCode']; + }catch (e){ + var asd =""; + print(e); + } - getResponseFileList = json['GetResponseFileList']; - isHMGPatient = json['IsHMGPatient']; - isLoginSuccessfully = json['IsLoginSuccessfully']; - isNeedUpdateIdintificationNo = json['IsNeedUpdateIdintificationNo']; - kioskSendSMS = json['KioskSendSMS']; - list = json['List']; - listAskHabibMobileLoginInfo = json['List_AskHabibMobileLoginInfo']; - listAskHabibPatientFile = json['List_AskHabibPatientFile']; - listMergeFiles = json['List_MergeFiles']; - listMobileLoginInfo = json['List_MobileLoginInfo']; - listPatientCount = json['List_PatientCount']; - logInTokenID = json['LogInTokenID']; - mohemmPrivilegeList = json['MohemmPrivilege_List']; - pateintID = json['PateintID']; - patientBloodType = json['PatientBloodType']; - patientERDriverFile = json['PatientER_DriverFile']; - patientERDriverFileList = json['PatientER_DriverFileList']; - patientHasFile = json['PatientHasFile']; - patientMergedIDs = json['PatientMergedIDs']; - patientOutSA = json['PatientOutSA']; - patientShareRequestID = json['PatientShareRequestID']; - patientType = json['PatientType']; - projectIDOut = json['ProjectIDOut']; - returnMessage = json['ReturnMessage']; - sMSLoginRequired = json['SMSLoginRequired']; - servicePrivilegeList = json['ServicePrivilege_List']; - sharePatientName = json['SharePatientName']; - verificationCode = json['VerificationCode']; - email = json['email']; - errorList = json['errorList']; - hasFile = json['hasFile']; - isActiveCode = json['isActiveCode']; - isMerged = json['isMerged']; - isNeedUserAgreement = json['isNeedUserAgreement']; - isSMSSent = json['isSMSSent']; - memberList = json['memberList']; - message = json['message']; - statusCode = json['statusCode']; } Map toJson() { @@ -287,7 +301,7 @@ class GetAllSharedRecordsByStatusList { int responseID; int regionID; int status; - Null isActive; + dynamic isActive; String editedOn; String createdOn; String emaiLAddress; diff --git a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart index ea98921d..7e3d4181 100644 --- a/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart +++ b/lib/pages/AlHabibMedicalService/all_habib_medical_service_page.dart @@ -10,9 +10,10 @@ import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.da import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; import 'package:diplomaticquarterapp/pages/ChildVaccines/child_vaccines_page.dart'; +import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; -import 'package:diplomaticquarterapp/pages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; @@ -22,6 +23,7 @@ import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/services)contaniner.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'; @@ -29,6 +31,11 @@ import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; class AllHabibMedicalService extends StatefulWidget { + //TODO + final Function goToMyProfile; + + AllHabibMedicalService({Key key, this.goToMyProfile}); + @override _AllHabibMedicalServiceState createState() => _AllHabibMedicalServiceState(); } @@ -60,61 +67,63 @@ class _AllHabibMedicalServiceState extends State { shrinkWrap: true, children: [ Container( + margin: EdgeInsets.all(8), width: double.infinity, - height: 190, + height: 150, decoration: BoxDecoration( - image: DecorationImage( - image: ExactAssetImage('assets/images/timeline_bg.png'), - fit: BoxFit.cover, - ), - ), + image: DecorationImage( + image: ExactAssetImage('assets/images/Weather_img.png'), + fit: BoxFit.cover, + ), + borderRadius: BorderRadius.circular(8.0)), child: Padding( padding: EdgeInsets.symmetric(horizontal: 10.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'Health Weather Indicators', - style: TextStyle( + child: Row( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts( + TranslationBase.of(context) + .healthWeatherIndicators, color: Colors.white, - fontSize: 22.0, fontWeight: FontWeight.w600, ), - ), - SizedBox( - height: 35.0, - ), - Text( - 'Health Tips Based On Current Weather', - style: TextStyle( + Texts( + TranslationBase.of(context).healthTipsBasedOnCurrentWeather, color: Colors.white, + fontSize: 14, ), + ], + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Image.asset('assets/images/Weather_ico.png',width: 80,height: 80,), + Texts( + TranslationBase.of(context).moreDetails, + color: Colors.white, + decoration: TextDecoration.underline, + ), + ], ), - ]), + ) + ], + ), ), ), ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: MedicalProfilePage(), - ), - ), + onTap: () { + Navigator.pop(context); + widget.goToMyProfile(); + }, imageLocation: 'assets/images/new-design/my_file_bottom_bar.png', title: TranslationBase.of(context).myMedicalFile, ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: LiveCareHome(), - ), - ), - imageLocation: 'assets/images/new-design/liveCare_ar_bg.png', - title: TranslationBase.of(context).livecare, - ), + ServicesContainer( onTap: () => Navigator.push( context, @@ -139,15 +148,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/al-habib_online_payment_service_icon.png', title: TranslationBase.of(context).onlinePaymentService, ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage(), - ), - imageLocation: - 'assets/images/al-habib_online_payment_service_icon.png', - title: 'Covid-19- Drive-Thru Test', - ), + ServicesContainer( onTap: () { Navigator.push( @@ -162,37 +163,7 @@ class _AllHabibMedicalServiceState extends State { imageLocation: 'assets/images/emergency_service_image.png', title: TranslationBase.of(context).emergencyService, ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: ParkingPage(), - ), - ), - imageLocation: 'assets/images/pharmacy_logo.png', - title: 'Pharmacy'), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: InsuranceUpdate(), - ), - ), - imageLocation: - 'assets/images/medical/insurance_card_icon.png', - title: TranslationBase.of(context).updateInsurance, - ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: authUser.patientID == null - ? EReferralIndexPage() - : EReferralPage()), - ), - imageLocation: 'assets/images/ereferral_service_icon.png', - title: 'E-Referral', - ), + ServicesContainer( onTap: () => Navigator.push( context, @@ -204,15 +175,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/new-design/family_menu_icon_red.png', title: 'My Family', ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage(page: ChildVaccinesPage()), - ), - imageLocation: - 'assets/images/new-design/children_vaccines_icon.png', - title: 'Child Vaccines', - ), + ServicesContainer( onTap: () => Navigator.push( context, @@ -224,61 +187,7 @@ class _AllHabibMedicalServiceState extends State { 'assets/images/new-design/upcoming_icon_bottom_bar.png', title: TranslationBase.of(context).todoList, ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage(page: SymptomInfo()), - ), - imageLocation: 'assets/images/new-design/body_icon.png', - title: 'Symptom Checker'), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage(page: BloodDonationPage()), - ), - imageLocation: 'assets/images/new-design/blood_icon.png', - title: 'Blood Donation', - ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: (HealthCalculators()), - ), - ), - imageLocation: - 'assets/images/new-design/health_calculator_icon.png', - title: 'Health Calculators', - ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: HealthConverter(), - ), - ), - imageLocation: - 'assets/images/new-design/health_convertor_icon.png', - title: 'Health Converter', - ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage( - page: H2OPageIndexPage(), - ), - ), - imageLocation: 'assets/images/new-design/water_icon.png', - title: 'H2O', - ), - ServicesContainer( - onTap: () => Navigator.push( - context, - FadePage(), - ), - imageLocation: 'assets/images/new-design/smartwatch_icon.png', - title: TranslationBase.of(context).smartWatches, - ), + ServicesContainer( onTap: () => Navigator.push( context, @@ -314,7 +223,7 @@ class _AllHabibMedicalServiceState extends State { onTap: () => Navigator.push( context, FadePage( - page: ParkingPage(), + page: FindUsPage(), ), ), imageLocation: 'assets/images/new-design/find_us_icon.png', diff --git a/lib/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart b/lib/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart index 253530b2..7eaed1a8 100644 --- a/lib/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart +++ b/lib/pages/AlHabibMedicalService/h2o/widgets/h20_floating_action_button.dart @@ -12,19 +12,21 @@ import 'package:flutter/material.dart'; import '../add_custom_amount.dart'; class H20FloatingActionButton extends StatefulWidget { - const H20FloatingActionButton( - {Key key, @required AnimationController controller, @required this.model}) - : super(key: key); + const H20FloatingActionButton({ + Key key, + @required AnimationController controller, + @required this.model + + }) : + super(key: key); final H2OViewModel model; @override - _H20FloatingActionButtonState createState() => - _H20FloatingActionButtonState(); + _H20FloatingActionButtonState createState() => _H20FloatingActionButtonState(); } -class _H20FloatingActionButtonState extends State - with TickerProviderStateMixin { +class _H20FloatingActionButtonState extends State with TickerProviderStateMixin { AnimationController _controller; @override void initState() { @@ -37,13 +39,9 @@ class _H20FloatingActionButtonState extends State @override Widget build(BuildContext context) { + void showConfirmMessage(int amount, H2OViewModel model) { - showDialog( - context: context, - child: ConfirmAddAmountDialog( - model: model, - amount: amount, - )); + showDialog(context: context, child: ConfirmAddAmountDialog(model: model,amount:amount,)); } return Container( @@ -186,15 +184,16 @@ class ActionButton extends StatelessWidget { curve: new Interval(0.0, 1.0 - 0 / 6 / 2.0, curve: Curves.easeOut), ), child: new FloatingActionButton( - heroTag: null, - backgroundColor: Colors.white, - mini: true, - child: Text( - text, - textAlign: TextAlign.center, - style: TextStyle(fontSize: 14.0, color: Colors.grey), - ), - onPressed: onTap), + heroTag: null, + backgroundColor: Colors.white, + mini: true, + child: Text( + text, + textAlign: TextAlign.center, + style: TextStyle(fontSize: 14.0, color: Colors.grey), + ), + onPressed: onTap + ), ), ); } diff --git a/lib/pages/Blood/confirm_payment_page.dart b/lib/pages/Blood/confirm_payment_page.dart index cc5df0a6..3d9fccb2 100644 --- a/lib/pages/Blood/confirm_payment_page.dart +++ b/lib/pages/Blood/confirm_payment_page.dart @@ -269,7 +269,7 @@ class ConfirmPaymentPage extends StatelessWidget { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); service - .createAdvancePayment(appo, res['Amount'], res['Fort_id'], + .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], AppGlobal.context) .then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); diff --git a/lib/pages/Blood/dialogs/ConfirmSMSDialog.dart b/lib/pages/Blood/dialogs/ConfirmSMSDialog.dart index 8dd2b29e..d165a895 100644 --- a/lib/pages/Blood/dialogs/ConfirmSMSDialog.dart +++ b/lib/pages/Blood/dialogs/ConfirmSMSDialog.dart @@ -6,12 +6,14 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.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'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; class ConfirmSMSDialog extends StatefulWidget { @@ -97,6 +99,7 @@ class _ConfirmSMSDialogState extends State { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return BaseView( builder: (_, model, w) => Dialog( elevation: 0.6, @@ -107,20 +110,18 @@ class _ConfirmSMSDialogState extends State { Container( width: double.infinity, height: 40, - color: Colors.grey[700], - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, + color: Theme.of(context).primaryColor, + child: Stack( + children: [ - Expanded( - flex: 4, - child: Center( - child: Texts( + Center( + child: Texts( 'SMS', color: Colors.white, textAlign: TextAlign.center, - ))), - Expanded( - flex: 1, + ), + ), + Positioned(child: Container( child: InkWell( onTap: () => Navigator.pop(context), child: Container( @@ -131,8 +132,12 @@ class _ConfirmSMSDialogState extends State { color: Colors.grey[900], )), ), + ), + left: projectViewModel.isArabic? 2:0, + right: projectViewModel.isArabic? 0:2, ) ], + ), ), Image.asset( diff --git a/lib/pages/BookAppointment/BookConfirm.dart b/lib/pages/BookAppointment/BookConfirm.dart index b0110d2b..fa69d913 100644 --- a/lib/pages/BookAppointment/BookConfirm.dart +++ b/lib/pages/BookAppointment/BookConfirm.dart @@ -3,10 +3,12 @@ import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResu import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -100,7 +102,7 @@ class _BookConfirmState extends State { fit: BoxFit.fill, height: 70.0, width: 70.0), ), Container( - width: MediaQuery.of(context).size.width * 0.6, + width: MediaQuery.of(context).size.width * 0.58, margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -302,7 +304,7 @@ class _BookConfirmState extends State { width: 60.0), ), Container( - width: MediaQuery.of(context).size.width * 0.6, + width: MediaQuery.of(context).size.width * 0.58, margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -382,8 +384,10 @@ class _BookConfirmState extends State { cancelAppointment(DoctorList docObject, AppoitmentAllHistoryResultList appo, BuildContext context) { ConfirmDialog.closeAlertDialog(context); + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service.cancelAppointment(appo, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { Future.delayed(new Duration(milliseconds: 1500), () { if (!widget.isLiveCareAppointment) { @@ -397,11 +401,12 @@ class _BookConfirmState extends State { } }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + GifLoaderDialogUtils.hideDialog(context); + }); } insertAppointment(context, DoctorList docObject) { + GifLoaderDialogUtils.showMyDialog(context); AppoitmentAllHistoryResultList appo; widget.service .insertAppointment( @@ -421,6 +426,7 @@ class _BookConfirmState extends State { docObject.projectID, docObject); }); } else { + GifLoaderDialogUtils.hideDialog(context); appo = new AppoitmentAllHistoryResultList(); appo.appointmentNo = res['SameClinicApptList'][0]['AppointmentNo']; appo.clinicID = res['SameClinicApptList'][0]['DoctorID']; @@ -445,11 +451,11 @@ class _BookConfirmState extends State { }).catchError((err) { AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } insertLiveCareScheduledAppointment(context, DoctorList docObject) { + GifLoaderDialogUtils.showMyDialog(context); AppoitmentAllHistoryResultList appo; widget.service .insertLiveCareScheduleAppointment( @@ -470,6 +476,7 @@ class _BookConfirmState extends State { docObject.clinicID, docObject.projectID, docObject); }); } else { + GifLoaderDialogUtils.hideDialog(context); appo = new AppoitmentAllHistoryResultList(); appo.appointmentNo = res['SameClinicApptList'][0]['AppointmentNo']; appo.clinicID = res['SameClinicApptList'][0]['DoctorID']; @@ -507,13 +514,16 @@ class _BookConfirmState extends State { widget.patientShareResponse = new PatientShareResponse.fromJson(res); navigateToBookSuccess(context, docObject, widget.patientShareResponse); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + navigateToHome(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getLiveCareAppointmentPatientShare(context, String appointmentNo, int clinicID, int projectID, DoctorList docObject) { + GifLoaderDialogUtils.hideDialog(context); widget.service .getLiveCareAppointmentPatientShare( appointmentNo, clinicID, projectID, context) @@ -522,9 +532,11 @@ class _BookConfirmState extends State { widget.patientShareResponse = new PatientShareResponse.fromJson(res); navigateToBookSuccess(context, docObject, widget.patientShareResponse); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + navigateToHome(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } String getTime(DateTime dateTime) { @@ -579,8 +591,13 @@ class _BookConfirmState extends State { } } + Future navigateToHome(context) async { + Navigator.of(context).popAndPushNamed(HOME); + } + Future navigateToBookSuccess(context, DoctorList docObject, PatientShareResponse patientShareResponse) async { + GifLoaderDialogUtils.hideDialog(context); Navigator.push( context, MaterialPageRoute( diff --git a/lib/pages/BookAppointment/BookSuccess.dart b/lib/pages/BookAppointment/BookSuccess.dart index 34dbdc2f..39e290a1 100644 --- a/lib/pages/BookAppointment/BookSuccess.dart +++ b/lib/pages/BookAppointment/BookSuccess.dart @@ -8,10 +8,12 @@ import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'QRCode.dart'; @@ -21,6 +23,8 @@ class BookSuccess extends StatefulWidget { DoctorList docObject; MyInAppBrowser browser; + final ChromeSafariBrowser chromeBrowser = + new MyChromeSafariBrowser(new MyInAppBrowser()); String appoDateFormatted; String appoTimeFormatted; @@ -78,12 +82,14 @@ class _BookSuccessState extends State { width: 80.0), ), Container( + width: MediaQuery.of(context).size.width * 0.62, margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ Text(widget.docObject.projectName, + overflow: TextOverflow.clip, style: _getTextStyling()), Container( margin: EdgeInsets.only(top: 5.0), @@ -93,6 +99,7 @@ class _BookSuccessState extends State { Container( margin: EdgeInsets.only(top: 5.0, bottom: 3.0), child: Text(widget.docObject.clinicName, + overflow: TextOverflow.clip, style: _getTextStyling()), ), Container( @@ -101,6 +108,7 @@ class _BookSuccessState extends State { widget.appoDateFormatted + ", " + widget.appoTimeFormatted, + overflow: TextOverflow.clip, style: _getTextStyling()), ), Container( @@ -110,7 +118,7 @@ class _BookSuccessState extends State { widget.docObject.doctorTitle + " " + widget.docObject.name, - overflow: TextOverflow.ellipsis, + overflow: TextOverflow.clip, style: _getTextStyling()), ), ], @@ -230,9 +238,10 @@ class _BookSuccessState extends State { children: [ _getBulletPoint("1"), Container( + width: MediaQuery.of(context).size.width * 0.8, child: Text( "Please confirm the appointment to avoid the cancellation", - overflow: TextOverflow.fade, + overflow: TextOverflow.clip, style: TextStyle(fontSize: 13.0)), ), ], @@ -294,7 +303,8 @@ class _BookSuccessState extends State { appo.appointmentNo = widget.patientShareResponse.appointmentNo; appo.serviceID = widget.patientShareResponse.serviceID; - appo.isLiveCareAppointment = widget.patientShareResponse.isLiveCareAppointment; + appo.isLiveCareAppointment = + widget.patientShareResponse.isLiveCareAppointment; appo.doctorID = widget.patientShareResponse.doctorID; confirmAppointment(appo); }, @@ -314,7 +324,7 @@ class _BookSuccessState extends State { minWidth: MediaQuery.of(context).size.width * 0.7, height: 45.0, child: RaisedButton( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), textColor: Colors.white, disabledTextColor: Colors.white, disabledColor: new Color(0xFFbcc2c4), @@ -340,8 +350,8 @@ class _BookSuccessState extends State { confirmAppointment(AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); service - .confirmAppointment( - appo.appointmentNo, appo.clinicID, appo.projectID, appo.isLiveCareAppointment, context) + .confirmAppointment(appo.appointmentNo, appo.clinicID, appo.projectID, + appo.isLiveCareAppointment, context) .then((res) { if (res['MessageStatus'] == 1) { AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); @@ -483,7 +493,7 @@ class _BookSuccessState extends State { minWidth: MediaQuery.of(context).size.width * 0.7, height: 45.0, child: RaisedButton( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), textColor: Colors.white, disabledTextColor: Colors.white, disabledColor: new Color(0xFFbcc2c4), @@ -541,22 +551,31 @@ class _BookSuccessState extends State { AuthenticatedUser authenticatedUser, double amount, PatientShareResponse patientShareResponse, - AppoitmentAllHistoryResultList appo) { - 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, - widget.browser); + AppoitmentAllHistoryResultList appo) async { + if (paymentMethod == "ApplePay") { + await widget.chromeBrowser.open( + url: "https://flutter.dev/", + 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, + widget.browser); + } } onBrowserLoadStart(String url) { @@ -586,6 +605,31 @@ class _BookSuccessState 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) { + print("Printing Payment Status Reponse!!!!"); + print(res); + String paymentInfo = res['Response_Message']; + if (paymentInfo == 'Success') { + createAdvancePayment(res, appo); + } else { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: res['Response_Message']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + print(err); + }); + } + + getApplePayAPQ(AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); service .checkPaymentStatus( @@ -611,8 +655,8 @@ class _BookSuccessState extends State { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); service - .createAdvancePayment( - appo, res['Amount'], res['Fort_id'], res['PaymentMethod'], context) + .createAdvancePayment(appo, appo.projectID.toString(), res['Amount'], + res['Fort_id'], res['PaymentMethod'], context) .then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); addAdvancedNumberRequest( @@ -620,9 +664,10 @@ class _BookSuccessState extends State { paymentReference, appo.appointmentNo.toString()); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } addAdvancedNumberRequest( @@ -635,9 +680,10 @@ class _BookSuccessState extends State { print(res); getAppoQR(context); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Widget _getQRAppo() { @@ -791,11 +837,13 @@ class _BookSuccessState extends State { .generateAppointmentQR(widget.patientShareResponse, context) .then((res) { print(res); + GifLoaderDialogUtils.hideDialog(context); navigateToQR(context, res['AppointmentQR']); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Future navigateToQR(context, String appoQR) async { diff --git a/lib/pages/BookAppointment/BookingOptions.dart b/lib/pages/BookAppointment/BookingOptions.dart index b6dc5500..83af454f 100644 --- a/lib/pages/BookAppointment/BookingOptions.dart +++ b/lib/pages/BookAppointment/BookingOptions.dart @@ -31,6 +31,7 @@ class _BookingOptionsState extends State { Widget build(BuildContext context) { return AppScaffold( isShowAppBar: widget.isAppbar, + isShowDecPage: false, appBarTitle: TranslationBase.of(context).bookAppo, body: Container( margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0), diff --git a/lib/pages/BookAppointment/DentalComplaints.dart b/lib/pages/BookAppointment/DentalComplaints.dart index 9d3da450..34a7e1e1 100644 --- a/lib/pages/BookAppointment/DentalComplaints.dart +++ b/lib/pages/BookAppointment/DentalComplaints.dart @@ -55,7 +55,7 @@ class _DentalComplaintsState extends State { } getLanguageID() async { - languageID = await sharedPref.getString(APP_LANGUAGE); + languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); } getChiefComplaintsList() { diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart index d6986f6f..6864e6b1 100644 --- a/lib/pages/BookAppointment/DoctorProfile.dart +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -40,6 +40,8 @@ class _DoctorProfileState extends State bool showFooterButton = false; var event = RobotProvider(); + AppSharedPreferences sharedPref = AppSharedPreferences(); + @override void initState() { _tabController = new TabController( @@ -69,6 +71,7 @@ class _DoctorProfileState extends State return AppScaffold( appBarTitle: TranslationBase.of(context).bookAppo, isShowAppBar: true, + isShowDecPage: false, bottomSheet: showFooterButton ? Container( width: MediaQuery.of(context).size.width, @@ -153,7 +156,7 @@ class _DoctorProfileState extends State child: Text( "(" + widget.doctor.noOfPatientsRate.toString() + - " Reviews)", + " " + TranslationBase.of(context).reviews + ")", style: TextStyle( fontSize: 14.0, color: Colors.blue[800], @@ -211,7 +214,6 @@ class _DoctorProfileState extends State } getPatientData() async { - AppSharedPreferences sharedPref = AppSharedPreferences(); if (await sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); @@ -222,14 +224,14 @@ class _DoctorProfileState extends State } } - void goToBookConfirm() { + void goToBookConfirm() async { if (DocAvailableAppointments.areSlotsAvailable) { - if (widget.authUser.patientID != null) { + if (await sharedPref.getObject(USER_PROFILE) != null) { navigateToBookConfirm(context); } else { ConfirmDialog dialog = new ConfirmDialog( context: context, - confirmMessage: "You have to login to use this service", + confirmMessage: TranslationBase.of(context).loginToUseService, okText: TranslationBase.of(context).confirm, cancelText: TranslationBase.of(context).cancel_nocaps, okFunction: () => {navigateToLogin()}, diff --git a/lib/pages/BookAppointment/QRCode.dart b/lib/pages/BookAppointment/QRCode.dart index c632a26e..e92c2348 100644 --- a/lib/pages/BookAppointment/QRCode.dart +++ b/lib/pages/BookAppointment/QRCode.dart @@ -151,6 +151,7 @@ class _QRCodeState extends State { ), ), Container( + margin: EdgeInsets.zero, alignment: Alignment.bottomCenter, child: Column( mainAxisAlignment: MainAxisAlignment.end, @@ -252,7 +253,9 @@ class _QRCodeState extends State { ConfirmDialog.closeAlertDialog(context); AppToast.showErrorToast(message: err); print(err); - }).showProgressBar(text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }).showProgressBar( + text: "Loading", + backgroundColor: Colors.blue.withOpacity(0.6)); }, cancelFunction: () => {}); dialog.showAlertDialog(context); @@ -290,9 +293,11 @@ class _QRCodeState extends State { String getDoctorSpeciality(List docSpecial) { String docSpeciality = ""; - docSpecial.forEach((v) { - docSpeciality = docSpeciality + v + "\n"; - }); + if (docSpecial != null && docSpecial.length != 0) { + docSpecial.forEach((v) { + docSpeciality = docSpeciality + v + "\n"; + }); + } return docSpeciality; } } diff --git a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart index 3e9ae0cd..70b6aaa0 100644 --- a/lib/pages/BookAppointment/components/DocAvailableAppointments.dart +++ b/lib/pages/BookAppointment/components/DocAvailableAppointments.dart @@ -1,13 +1,14 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/FreeSlot.dart'; import 'package:diplomaticquarterapp/models/Appointments/timeSlot.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:intl/intl.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:table_calendar/table_calendar.dart'; import '../../../uitl/date_uitl.dart'; @@ -49,6 +50,8 @@ class _DocAvailableAppointmentsState extends State ScrollController _scrollController; + var language; + @override void initState() { // TODO: implement initState @@ -62,6 +65,7 @@ class _DocAvailableAppointmentsState extends State }; WidgetsBinding.instance.addPostFrameCallback((_) async { + getCurrentLanguage(); if (widget.isLiveCareAppointment) getDoctorScheduledFreeSlots(context, widget.doctor); else { @@ -88,7 +92,8 @@ class _DocAvailableAppointmentsState extends State void _onDaySelected(DateTime day, List events) { final DateFormat formatter = DateFormat('yyyy-MM-dd'); setState(() { - this.selectedDate = DateUtil.getMonthDayYearDateFormatted(day); + this.selectedDate = + DateUtil.getWeekDayMonthDayYearDateFormatted(day, language); openTimeSlotsPickerForDate(day, docFreeSlots); DocAvailableAppointments.selectedDate = formatter.format(day); print(DocAvailableAppointments.selectedDate); @@ -154,7 +159,7 @@ class _DocAvailableAppointmentsState extends State Widget _buildTableCalendarWithBuilders() { return TableCalendar( - locale: 'en_US', + locale: language == "en" ? 'en_US' : 'ar_SA', calendarController: _calendarController, events: _events, initialCalendarFormat: CalendarFormat.month, @@ -219,9 +224,8 @@ class _DocAvailableAppointmentsState extends State ), ); }, - markersBuilder: (context, date, events, holidays) { + markersBuilder: (context, date, events, _) { final children = []; - if (events.isNotEmpty) { children.add( Positioned( @@ -235,8 +239,8 @@ class _DocAvailableAppointmentsState extends State return children; }, ), - onDaySelected: (date, events,format) { - _onDaySelected(date, events); + onDaySelected: (date, event, _) { + _onDaySelected(date, event); _animationController.forward(from: 0.0); }, onVisibleDaysChanged: _onVisibleDaysChanged, @@ -287,8 +291,8 @@ class _DocAvailableAppointmentsState extends State setState(() { DocAvailableAppointments.selectedDate = dateFormatter .format(DateUtil.convertStringToDate(freeSlotsResponse[0])); - selectedDate = DateUtil.getMonthDayYearDateFormatted( - DateUtil.convertStringToDate(freeSlotsResponse[0])); + selectedDate = DateUtil.getWeekDayMonthDayYearDateFormatted( + DateUtil.convertStringToDate(freeSlotsResponse[0]), language); selectedDateJSON = freeSlotsResponse[0]; }); openTimeSlotsPickerForDate( @@ -331,11 +335,13 @@ class _DocAvailableAppointmentsState extends State } getDoctorFreeSlots(context, DoctorList docObject) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .getDoctorFreeSlots(docObject.doctorID, docObject.clinicID, docObject.projectID, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { if (res['FreeTimeSlots'].length != 0) { freeSlotsResponse = res['FreeTimeSlots']; @@ -350,16 +356,17 @@ class _DocAvailableAppointmentsState extends State } }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getDoctorScheduledFreeSlots(context, DoctorList docObject) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .getDoctorScheduledFreeSlots(docObject.doctorID, docObject.clinicID, docObject.projectID, docObject.serviceID, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { if (res['PatientER_DoctorFreeSlots'].length != 0) { freeSlotsResponse = res['PatientER_DoctorFreeSlots']; @@ -374,8 +381,15 @@ class _DocAvailableAppointmentsState extends State } }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); + } + + getCurrentLanguage() async { + var languageID = + await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + setState(() { + this.language = languageID; + }); } Widget _buildEventsMarker(DateTime date, List events) { diff --git a/lib/pages/BookAppointment/components/DocInfo.dart b/lib/pages/BookAppointment/components/DocInfo.dart index ff24b1ca..aa6e3b9f 100644 --- a/lib/pages/BookAppointment/components/DocInfo.dart +++ b/lib/pages/BookAppointment/components/DocInfo.dart @@ -1,9 +1,9 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class DoctorInformation extends StatelessWidget { - DoctorProfileList docProfileList; DoctorInformation({@required this.docProfileList}); @@ -27,8 +27,8 @@ class DoctorInformation extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - Image.asset( - "assets/images/new-design/doctor_information_icon.png"), + SvgPicture.asset( + "assets/images/DQ/doctor_information_icon.svg"), Container( margin: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 0.0), child: Text(TranslationBase.of(context).docInfo, @@ -43,12 +43,21 @@ class DoctorInformation extends StatelessWidget { child: Table( children: [ TableRow(children: [ - TableCell(child: _getHeadingText(TranslationBase.of(context).gender)), - TableCell(child: _getHeadingText(TranslationBase.of(context).nationality)), + TableCell( + child: _getHeadingText( + TranslationBase.of(context).gender)), + TableCell( + child: _getHeadingText( + TranslationBase.of(context).nationality)), ]), TableRow(children: [ - TableCell(child: _getNormalText(docProfileList.genderDescription)), - TableCell(child: _getNormalTextWithIcon(docProfileList.nationalityName, docProfileList.nationalityFlagURL)), + TableCell( + child: _getNormalText( + docProfileList.genderDescription)), + TableCell( + child: _getNormalTextWithIcon( + docProfileList.nationalityName, + docProfileList.nationalityFlagURL)), ]), ], ), @@ -82,13 +91,14 @@ class DoctorInformation extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - Image.asset( - "assets/images/new-design/doctor_qualification_icon.png"), + SvgPicture.asset( + "assets/images/DQ/doctor_qualification_icon.svg"), Container( margin: EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 0.0), - child: Text(TranslationBase.of(context).docQualifications, + child: Text( + TranslationBase.of(context).docQualifications, style: - TextStyle(fontSize: 16.0, letterSpacing: 0.8)), + TextStyle(fontSize: 16.0, letterSpacing: 0.8)), ), ], ), @@ -146,10 +156,7 @@ class DoctorInformation extends StatelessWidget { color: Colors.grey[700])), Container( margin: EdgeInsets.only(left: 5.0, right: 5.0), - child: Image.network( - icon, - width: 18.0, - height: 18.0), + child: Image.network(icon, width: 18.0, height: 18.0), ), ], ), diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 9d833db1..7943e423 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -8,8 +8,8 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/DentalComplaints.dart import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; -import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:flutter/material.dart'; @@ -17,7 +17,9 @@ import 'package:smart_progress_bar/smart_progress_bar.dart'; class SearchByClinic extends StatefulWidget { final List clnicIds; + SearchByClinic({this.clnicIds}); + @override _SearchByClinicState createState() => _SearchByClinicState(); } @@ -26,11 +28,13 @@ class _SearchByClinicState extends State { bool nearestAppo = false; String dropdownValue; String projectDropdownValue; + // var event = RobotProvider(); List clinicsList = []; List projectsList = []; bool isMobileAppDentalAllow = false; bool isLoaded = false; + @override void initState() { WidgetsBinding.instance.addPostFrameCallback((_) => getClinicsList()); @@ -47,7 +51,7 @@ class _SearchByClinicState extends State { Row( children: [ Checkbox( - activeColor: new Color(0xFFc5272d), + activeColor: new Color(0xFF40ACC9), value: nearestAppo, onChanged: (bool value) { setState(() { @@ -77,12 +81,6 @@ class _SearchByClinicState extends State { } }); }, - // trailing: Icon(TranslationBase.of(AppGlobal.context) - // .locale - // .languageCode == - // 'en' - // ? Icons.keyboard_arrow_right - // : Icons.keyboard_arrow_left), title: Text(result.clinicDescription, style: TextStyle( fontSize: 14.0, @@ -104,7 +102,7 @@ class _SearchByClinicState extends State { width: MediaQuery.of(context).size.width, child: DropdownButtonHideUnderline( child: DropdownButton( - hint: new Text("Select Clinic"), + hint: new Text(TranslationBase.of(context).selectClinic), value: dropdownValue, items: clinicsList.map((item) { return new DropdownMenuItem( @@ -168,27 +166,21 @@ class _SearchByClinicState extends State { } getClinicsList() { + GifLoaderDialogUtils.showMyDialog(context); ClinicListService service = new ClinicListService(); - service - .getClinicsList(context) - .then((res) { - if (res['MessageStatus'] == 1) { - setState(() { - isMobileAppDentalAllow = res['ISMobileAppDentalAllow']; - res['ListClinicCentralized'].forEach((v) { - clinicsList.add(new ListClinicCentralized.fromJson(v)); - }); - }); - } else {} - }) - .catchError((err) { - print(err); - }) - .showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) - .then((value) { - getProjectsList(); + service.getClinicsList(context).then((res) { + if (res['MessageStatus'] == 1) { + setState(() { + isMobileAppDentalAllow = res['ISMobileAppDentalAllow']; + res['ListClinicCentralized'].forEach((v) { + clinicsList.add(new ListClinicCentralized.fromJson(v)); + }); }); + getProjectsList(); + } else {} + }).catchError((err) { + print(err); + }); } getProjectsList() { @@ -199,23 +191,24 @@ class _SearchByClinicState extends State { res['ListProject'].forEach((v) { projectsList.add(new HospitalsModel.fromJson(v)); }); - print(projectsList.length); }); + GifLoaderDialogUtils.hideDialog(context); filterClinic(); } else {} }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getDoctorsList(BuildContext context) { + GifLoaderDialogUtils.showMyDialog(context); SearchInfo searchInfo = new SearchInfo(); if (dropdownValue == "17") { searchInfo.ProjectID = int.parse(projectDropdownValue); searchInfo.ClinicID = int.parse(dropdownValue); searchInfo.date = DateTime.now(); + GifLoaderDialogUtils.hideDialog(context); navigateToDentalComplaints(context, searchInfo); } else { List doctorsList = []; @@ -231,6 +224,7 @@ class _SearchByClinicState extends State { nearestAppo, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { setState(() { if (res['DoctorList'].length != 0) { @@ -249,17 +243,16 @@ class _SearchByClinicState extends State { result = LinkedHashSet.from(arr).toList(); numAll = result.length; - navigateToSearchResults( context, doctorsList, result, numAll, arrDistance); } else { AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } } @@ -296,8 +289,6 @@ class _SearchByClinicState extends State { .where((i) => widget.clnicIds.indexOf(i.clinicID) > -1) .toList(); isLoaded = true; - - ///print(clinicsList); } }); } diff --git a/lib/pages/BookAppointment/components/SearchByDoctor.dart b/lib/pages/BookAppointment/components/SearchByDoctor.dart index 80288085..1e1945b5 100644 --- a/lib/pages/BookAppointment/components/SearchByDoctor.dart +++ b/lib/pages/BookAppointment/components/SearchByDoctor.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:flutter/material.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; @@ -82,6 +83,7 @@ class _SearchByDoctorState extends State { } getDoctorsList(BuildContext context) { + GifLoaderDialogUtils.showMyDialog(context); List doctorsList = []; DoctorsListService service = new DoctorsListService(); @@ -123,7 +125,7 @@ class _SearchByDoctorState extends State { }); } else {} }); - + GifLoaderDialogUtils.hideDialog(context); navigateToSearchResults( context, doctorsList, _patientDoctorAppointmentListHospital); } else { @@ -131,8 +133,7 @@ class _SearchByDoctorState extends State { } }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } _onDocTextChanged(content) { diff --git a/lib/pages/BookAppointment/widgets/BranchView.dart b/lib/pages/BookAppointment/widgets/BranchView.dart index 4ba5a9d3..747775d5 100644 --- a/lib/pages/BookAppointment/widgets/BranchView.dart +++ b/lib/pages/BookAppointment/widgets/BranchView.dart @@ -27,6 +27,7 @@ class _BranchViewState extends State { return AppScaffold( appBarTitle: TranslationBase.of(context).bookAppo, isShowAppBar: true, + isShowDecPage: false, isBottomBar: false, body: new ListView.builder( itemBuilder: (BuildContext context, int index) { @@ -109,7 +110,7 @@ class _ExpandableListViewState extends State { height: 28.0, width: 30.0, decoration: new BoxDecoration( - color: Colors.red, + color: Color(0xFF40ACC9), shape: BoxShape.circle, ), child: new Center( diff --git a/lib/pages/BookAppointment/widgets/CardCommon.dart b/lib/pages/BookAppointment/widgets/CardCommon.dart index a6cf648f..e56ba965 100644 --- a/lib/pages/BookAppointment/widgets/CardCommon.dart +++ b/lib/pages/BookAppointment/widgets/CardCommon.dart @@ -31,7 +31,7 @@ class CardCommon extends StatelessWidget { child: Text(this.text, overflow: TextOverflow.clip, style: TextStyle( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), letterSpacing: 1.0, fontSize: 20.0)), ), diff --git a/lib/pages/BookAppointment/widgets/DoctorView.dart b/lib/pages/BookAppointment/widgets/DoctorView.dart index 40c0e2fc..d419e4af 100644 --- a/lib/pages/BookAppointment/widgets/DoctorView.dart +++ b/lib/pages/BookAppointment/widgets/DoctorView.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:flutter/material.dart'; import 'package:rating_bar/rating_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; @@ -135,12 +136,14 @@ class DoctorView extends StatelessWidget { } getDoctorsProfile(context, DoctorList docObject, {isAppo}) { + GifLoaderDialogUtils.showMyDialog(context); List docProfileList = []; DoctorsListService service = new DoctorsListService(); service .getDoctorsProfile(docObject.doctorID, docObject.clinicID, docObject.projectID, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { if (res['DoctorProfileList'].length != 0) { res['DoctorProfileList'].forEach((v) { @@ -154,7 +157,7 @@ class DoctorView extends StatelessWidget { } }).catchError((err) { print(err); - }).showProgressBar(text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } String getDate(String date) { diff --git a/lib/pages/ContactUs/contact_us_page.dart b/lib/pages/ContactUs/contact_us_page.dart index 7d2192f9..d301df3e 100644 --- a/lib/pages/ContactUs/contact_us_page.dart +++ b/lib/pages/ContactUs/contact_us_page.dart @@ -27,8 +27,8 @@ class _ContactUsPageState extends State { @override Widget build(BuildContext context) { return AppScaffold( - isShowAppBar: true,//widget.isAppbar, - appBarTitle: "HMG Services",//TranslationBase.of(context).bookAppo, + isShowAppBar: true, + appBarTitle: TranslationBase.of(context).hMGServiceLabel, isShowDecPage: false, body: Container( margin: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 10.0), @@ -43,7 +43,7 @@ class _ContactUsPageState extends State { Expanded( child: CardCommonContact( image: 'assets/images/new-design/find_us_icon.png', - text: "Find us", + text: TranslationBase.of(context).findUs, subText: "", type: 0, @@ -52,7 +52,7 @@ class _ContactUsPageState extends State { Expanded( child: CardCommonContact( image: 'assets/images/new-design/feedback_icon.png', - text: "Feedback", + text: TranslationBase.of(context).feedback, subText: "", type: 1), @@ -66,21 +66,14 @@ class _ContactUsPageState extends State { Expanded( child: CardCommonContact( image: 'assets/images/new-design/live_chat_icon.png', - text: "Live Chat", - subText: "Service", + text: TranslationBase.of(context).liveChat, + subText: TranslationBase.of(context).service, type: 2, ), ), Expanded( - child: Opacity( - opacity: 0, - child: CardCommonContact( - image: 'assets/images/new-design/feedback_icon.png', - text: "Feedback", - subText: "", - type: 3), - ), + child: Container(), ), ], diff --git a/lib/pages/ContactUs/findus/findus_page.dart b/lib/pages/ContactUs/findus/findus_page.dart index 9b39de3a..807ac1c7 100644 --- a/lib/pages/ContactUs/findus/findus_page.dart +++ b/lib/pages/ContactUs/findus/findus_page.dart @@ -34,9 +34,11 @@ class _FindUsPageState extends State @override Widget build(BuildContext context) { return BaseView( + allowAny: true, onModelReady: (model) => model.getFindUsRequestOrders(), //model.getCOC(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, + isShowDecPage: false, appBarTitle: 'Locations', baseViewModel: model, body: Scaffold( diff --git a/lib/pages/ContactUs/findus/hospitrals_page.dart b/lib/pages/ContactUs/findus/hospitrals_page.dart index d8d898e3..7aa968a5 100644 --- a/lib/pages/ContactUs/findus/hospitrals_page.dart +++ b/lib/pages/ContactUs/findus/hospitrals_page.dart @@ -23,6 +23,7 @@ class _HospitalsPageState extends State { @override Widget build(BuildContext context) { return AppScaffold( + isShowDecPage: false, body: SingleChildScrollView( child: Container( // margin: EdgeInsets.only(left: 15,right: 15,top: 70), diff --git a/lib/pages/ContactUs/findus/pharmacies_page.dart b/lib/pages/ContactUs/findus/pharmacies_page.dart index 663bd3ec..cab201e3 100644 --- a/lib/pages/ContactUs/findus/pharmacies_page.dart +++ b/lib/pages/ContactUs/findus/pharmacies_page.dart @@ -23,6 +23,7 @@ class _PharmaciesPageState extends State { @override Widget build(BuildContext context) { return AppScaffold( + isShowDecPage: false, body: SingleChildScrollView( child: Container( margin: EdgeInsets.only(left: 15, right: 15, top: 70), diff --git a/lib/pages/ContactUs/widgets/card_common_contat.dart b/lib/pages/ContactUs/widgets/card_common_contat.dart index 9ad74aff..67580dbf 100644 --- a/lib/pages/ContactUs/widgets/card_common_contat.dart +++ b/lib/pages/ContactUs/widgets/card_common_contat.dart @@ -1,8 +1,10 @@ +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/LiveChat/livechat_page.dart'; import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class CardCommonContact extends StatelessWidget { final image; @@ -17,6 +19,7 @@ class CardCommonContact extends StatelessWidget { @override Widget build(BuildContext context) { + ProjectViewModel projectViewModel = Provider.of(context); return GestureDetector( onTap: () { navigateToSearch(context, this.type); @@ -45,10 +48,12 @@ class CardCommonContact extends StatelessWidget { style: TextStyle( color: Colors.black, letterSpacing: 1.0, fontSize: 15.0)), ), - Container( - alignment: Alignment.bottomRight, - margin: EdgeInsets.fromLTRB(0.0, 0.0, 10.0, 8.0), - child: Image.asset(this.image, width: 60.0, height: 60.0), + Align( + alignment: projectViewModel.isArabic? Alignment.bottomLeft:Alignment.bottomRight, + child: Container( + margin: EdgeInsets.fromLTRB(10.0, 0.0, 10.0, 8.0), + child: Image.asset(this.image, width: 60.0, height: 60.0), + ), ), ], ), diff --git a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart index 9f2418fd..3e58b657 100644 --- a/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart +++ b/lib/pages/Covid-DriveThru/Covid-TimeSlots.dart @@ -348,8 +348,11 @@ class _CovidTimeSlotsState extends State return children; }, ), - onDaySelected: (date, event,formats) { - _onDaySelected(date, event,); + onDaySelected: (date, event, _) { + _onDaySelected( + date, + event, + ); _animationController.forward(from: 0.0); }, onVisibleDaysChanged: _onVisibleDaysChanged, diff --git a/lib/pages/family/add-family-member.dart b/lib/pages/DrawerPages/family/add-family-member.dart similarity index 96% rename from lib/pages/family/add-family-member.dart rename to lib/pages/DrawerPages/family/add-family-member.dart index f1742141..35b19ccd 100644 --- a/lib/pages/family/add-family-member.dart +++ b/lib/pages/DrawerPages/family/add-family-member.dart @@ -3,7 +3,6 @@ import 'package:diplomaticquarterapp/core/model/family-file/add_family_file_requ import 'package:diplomaticquarterapp/core/model/family-file/insert_share_file_request.dart'; import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; -import 'package:diplomaticquarterapp/pages/family/add-family_type.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -20,6 +19,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'add-family_type.dart'; + class AddMember extends StatefulWidget { @override _AddMember createState() => _AddMember(); @@ -179,8 +180,7 @@ class _AddMember extends State { request.regionID = 1; } loading(true); - this - .familyFileProvider + familyFileProvider .insertNewMember(request) .then((value) => sendActivationCode(value)); } @@ -189,8 +189,7 @@ class _AddMember extends State { // var request = this.getCommonRequest(); loading(true); patientShareRequestID = result['PatientShareRequestID']; - this - .familyFileProvider + familyFileProvider .sendActivationCode(mobileNo, countryCode, nationalIDorFile.text) .then((result) => { if (result != null && result['isSMSSent'] == true) @@ -203,11 +202,13 @@ class _AddMember extends State { startSMSService(type, result) { loading(false); - new SMSOTP( + SMSOTP( context, type, - this.mobileNo, - (value) => {this.checkActivationCode(value, result)}, + mobileNo, + (value) { + this.checkActivationCode(value, result); + }, () => { print('Faild..'), }, @@ -215,8 +216,7 @@ class _AddMember extends State { } checkActivationCode(value, result) { - this - .familyFileProvider + familyFileProvider .checkActivationCode( result['LogInTokenID'], value, nationalIDorFile.text, mobileNo) .then((result) => { @@ -226,8 +226,7 @@ class _AddMember extends State { } handleFamilyRequests(id, stauts) { - this - .familyFileProvider + familyFileProvider .acceptAndRejectRecievedRequests(id, stauts) .then((result) => { sharedPref.remove(FAMILY_FILE), diff --git a/lib/pages/family/add-family_type.dart b/lib/pages/DrawerPages/family/add-family_type.dart similarity index 100% rename from lib/pages/family/add-family_type.dart rename to lib/pages/DrawerPages/family/add-family_type.dart diff --git a/lib/pages/family/my-family.dart b/lib/pages/DrawerPages/family/my-family.dart similarity index 57% rename from lib/pages/family/my-family.dart rename to lib/pages/DrawerPages/family/my-family.dart index b4024b0a..d3de1b62 100644 --- a/lib/pages/family/my-family.dart +++ b/lib/pages/DrawerPages/family/my-family.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; @@ -19,6 +20,8 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/routes.dart'; class MyFamily extends StatefulWidget { + final bool isAppbarVisible; + MyFamily({this.isAppbarVisible =true}); @override _MyFamily createState() => _MyFamily(); } @@ -38,65 +41,66 @@ class _MyFamily extends State with TickerProviderStateMixin { bool expandFlag = false; Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - bottom: TabBar( - indicatorColor: Colors.red, - tabs: [ - Padding( - padding: EdgeInsets.all(6), - child: AppText( - TranslationBase.of(context).family, - color: Colors.white, - )), - Padding( - padding: EdgeInsets.all(6), - child: AppText( - TranslationBase.of(context).request, - color: Colors.white, - )), - ], - controller: _tabController, - ), - title: AppText(TranslationBase.of(context).myFamilyFiles, - color: Colors.white)), - body: TabBarView( - // physics: NeverScrollableScrollPhysics(), - children: [myFamilyDetails(context), myFamilyRequest(context)], - controller: _tabController), - bottomNavigationBar: BottomBarSearch()); + // return Scaffold( + // appBar: AppBar( + // bottom: TabBar( + // indicatorColor: Colors.red, + // tabs: [ + // Padding( + // padding: EdgeInsets.all(6), + // child: AppText( + // TranslationBase.of(context).family, + // color: Colors.white, + // )), + // Padding( + // padding: EdgeInsets.all(6), + // child: AppText( + // TranslationBase.of(context).request, + // color: Colors.white, + // )), + // ], + // controller: _tabController, + // ), + // + // ), + // body: TabBarView( + // // physics: NeverScrollableScrollPhysics(), + // children: [myFamilyDetails(context), myFamilyRequest(context)], + // controller: _tabController), + // ); + // //bottomNavigationBar: BottomBarSearch()); - // AppScaffold( - // appBarTitle: TranslationBase.of(context).myFamilyFiles, - // isShowAppBar: true, - // body: SingleChildScrollView( - // child: Container( - // height: SizeConfig.screenHeight, - // width: SizeConfig.realScreenWidth, - // padding: EdgeInsets.all(20), - // child: Stack( - // children: [ - // TabBar( - // controller: _tabController, - // indicatorColor: Colors.red, - // tabs: [ - // Padding( - // padding: EdgeInsets.all(6), - // child: Text(TranslationBase.of(context).family)), - // Padding( - // padding: EdgeInsets.all(6), - // child: Text(TranslationBase.of(context).request)), - // ], - // ), - // TabBarView( - // controller: _tabController, - // children: [ - // myFamilyDetails(context), - // myFamilyRequest(context) - // ], - // ) - // ], - // )))); + return AppScaffold( + appBarTitle: TranslationBase.of(context).myFamilyFiles, + isShowAppBar: widget.isAppbarVisible, + body: SingleChildScrollView( + child: Container( + height: SizeConfig.screenHeight, + width: SizeConfig.realScreenWidth, + padding: EdgeInsets.all(20), + child: Stack( + children: [ + TabBar( + controller: _tabController, + indicatorColor: Colors.red, + tabs: [ + Padding( + padding: EdgeInsets.all(6), + child: Text(TranslationBase.of(context).family)), + Padding( + padding: EdgeInsets.all(6), + child: Text(TranslationBase.of(context).request)), + ], + ), + TabBarView( + controller: _tabController, + children: [ + myFamilyDetails(context), + myFamilyRequest(context) + ], + ) + ], + )))); } Widget myFamilyDetails(context) { @@ -218,22 +222,176 @@ class _MyFamily extends State with TickerProviderStateMixin { } Widget myFamilyRequest(context) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Column( - children: [ - // SizedBox(height: 20.0), - RoundedContainer( - child: ExpansionTile( + return //Padding( + // padding: const EdgeInsets.symmetric(horizontal: 10.0), + // child: + SingleChildScrollView( + child: Container( + height: MediaQuery.of(context).size.height, + margin: EdgeInsets.only(top:50), + child: Column( + children: [ + RoundedContainer( + child: ExpansionTile( + title: Text( + TranslationBase.of(context).userViewRequest, + style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), + ), + children: [ + FutureBuilder( + future: getUserViewRequest(), // async work + builder: (BuildContext context, + AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding( + padding: EdgeInsets.only(top: 50), + child: Text('Loading....')); + default: + if (snapshot.hasError) + return Padding( + padding: EdgeInsets.all(10), + child: Text('No data found')); + else + return Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 3, + child: Text(TranslationBase.of(context) + .request)), + Expanded( + flex: 2, + child: Text( + TranslationBase.of(context) + .switchUser, + )), + Expanded( + flex: 1, + child: Text( + TranslationBase.of(context) + .deleteView, + )), + ], + ), + Column(children: [ + Row(children: [ + Expanded(flex: 3, child: AppText('Name')), + Expanded(flex: 1, child: AppText('Allow')), + Expanded(flex: 1, child: AppText('Reject')), + ]), + Column( + children:familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList + .map((result) { + return Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + flex: 3, + child: + Text(result.patientName)), + Expanded( + flex: 1, + child: IconButton( + icon: Icon( + Icons.check_circle, + color: Colors.black, + ), + onPressed: () { + acceptRequest( + result, context); + }, + )), + Expanded( + flex: 1, + child: IconButton( + icon: Icon( + Icons.delete, + color: Colors.black, + ), + onPressed: () { + deleteRequest( + result, context); + }, + )) + ], + )); + }).toList()) + ]) + ], + ); + } + }) + ], + ), + ), + RoundedContainer( + child: ExpansionTile( title: Text( - TranslationBase.of(context).userViewRequest, + TranslationBase.of(context).sentRequest, style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), ), children: [ FutureBuilder( - future: getUserViewRequest(), // async work + future: getSentRequest(), // async work builder: (BuildContext context, - AsyncSnapshot snapshot) { + AsyncSnapshot + snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding( + padding: EdgeInsets.only(top: 50), + child: Text('Loading....')); + default: + if (snapshot.hasError) + return Padding( + padding: EdgeInsets.all(10), + child: Text('No data found')); + else + return SingleChildScrollView( + child: Container( + height: SizeConfig.screenHeight * .3, + child: ListView( + children: snapshot + .data.getAllSharedRecordsByStatusList + .map((result) { + return Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + flex: 3, + child: + Text(result.patientName)), + Expanded( + flex: 2, + child: AppText( + result.statusDescription, + color: Colors.red, + )), + ], + )); + }).toList(), + ))); + } + }) + ], + )), + RoundedContainer( + child: ExpansionTile( + title: Text( + TranslationBase.of(context).userView, + style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), + ), + children: [ + FutureBuilder( + future: getUserViewRequest(), // async work + builder: + (BuildContext context, AsyncSnapshot snapshot) { switch (snapshot.connectionState) { case ConnectionState.waiting: return Padding( @@ -253,31 +411,27 @@ class _MyFamily extends State with TickerProviderStateMixin { children: [ Expanded( flex: 3, - child: Text(TranslationBase.of(context) - .request)), + child: Text( + TranslationBase.of(context).request)), Expanded( flex: 2, child: Text( - TranslationBase.of(context) - .switchUser, + TranslationBase.of(context).switchUser, )), Expanded( flex: 1, child: Text( - TranslationBase.of(context) - .deleteView, + TranslationBase.of(context).deleteView, )), ], ), Column(children: [ Row(children: [ Expanded(flex: 3, child: AppText('Name')), - Expanded(flex: 1, child: AppText('Allow')), - Expanded(flex: 1, child: AppText('Reject')), + Expanded(flex: 1, child: AppText('Delete')), ]), Column( - children: snapshot - .data['GetAllPendingRecordsList'] + children: familyFileProvider.allSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList .map((result) { return Padding( padding: EdgeInsets.all(10), @@ -285,20 +439,7 @@ class _MyFamily extends State with TickerProviderStateMixin { children: [ Expanded( flex: 3, - child: - Text(result.patientName)), - Expanded( - flex: 1, - child: IconButton( - icon: Icon( - Icons.check_circle, - color: Colors.black, - ), - onPressed: () { - acceptRequest( - result, context); - }, - )), + child: Text(result.patientName)), Expanded( flex: 1, child: IconButton( @@ -310,7 +451,7 @@ class _MyFamily extends State with TickerProviderStateMixin { deleteRequest( result, context); }, - )) + )), ], )); }).toList()) @@ -320,143 +461,9 @@ class _MyFamily extends State with TickerProviderStateMixin { } }) ], - ), - ), - RoundedContainer( - child: ExpansionTile( - title: Text( - TranslationBase.of(context).sentRequest, - style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), - ), - children: [ - FutureBuilder( - future: getSentRequest(), // async work - builder: (BuildContext context, - AsyncSnapshot - snapshot) { - switch (snapshot.connectionState) { - case ConnectionState.waiting: - return Padding( - padding: EdgeInsets.only(top: 50), - child: Text('Loading....')); - default: - if (snapshot.hasError) - return Padding( - padding: EdgeInsets.all(10), - child: Text('No data found')); - else - return SingleChildScrollView( - child: Container( - height: SizeConfig.screenHeight * .3, - child: ListView( - children: snapshot - .data.getAllSharedRecordsByStatusList - .map((result) { - return Padding( - padding: EdgeInsets.all(10), - child: Row( - children: [ - Expanded( - flex: 3, - child: - Text(result.patientName)), - Expanded( - flex: 2, - child: AppText( - result.statusDescription, - color: Colors.red, - )), - ], - )); - }).toList(), - ))); - } - }) - ], - )), - RoundedContainer( - child: ExpansionTile( - title: Text( - TranslationBase.of(context).userView, - style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), - ), - children: [ - FutureBuilder( - future: getUserViewRequest(), // async work - builder: - (BuildContext context, AsyncSnapshot snapshot) { - switch (snapshot.connectionState) { - case ConnectionState.waiting: - return Padding( - padding: EdgeInsets.only(top: 50), - child: Text('Loading....')); - default: - if (snapshot.hasError) - return Padding( - padding: EdgeInsets.all(10), - child: Text('No data found')); - else - return Column( - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Expanded( - flex: 3, - child: Text( - TranslationBase.of(context).request)), - Expanded( - flex: 2, - child: Text( - TranslationBase.of(context).switchUser, - )), - Expanded( - flex: 1, - child: Text( - TranslationBase.of(context).deleteView, - )), - ], - ), - Column(children: [ - Row(children: [ - Expanded(flex: 3, child: AppText('Name')), - Expanded(flex: 1, child: AppText('Delete')), - ]), - Column( - children: snapshot - .data['GetAllPendingRecordsList'] - .map((result) { - return Padding( - padding: EdgeInsets.all(10), - child: Row( - children: [ - Expanded( - flex: 3, - child: Text(result.patientName)), - Expanded( - flex: 1, - child: IconButton( - icon: Icon( - Icons.delete, - color: Colors.black, - ), - onPressed: () { - deleteRequest( - result, context); - }, - )), - ], - )); - }).toList()) - ]) - ], - ); - } - }) - ], - )) - ], + )) + ], + ), ), ); } @@ -512,17 +519,19 @@ class _MyFamily extends State with TickerProviderStateMixin { } switchUser(user, context) { - Utils.showProgressDialog(context); + GifLoaderDialogUtils.showMyDialog(context); this .familyFileProvider .silentLoggin(user) .then((value) => loginAfter(value, context)); } - loginAfter(result, context) { - Utils.hideProgressDialog(); + loginAfter(result, context) async{ + GifLoaderDialogUtils.hideDialog(context); + var familyFile = await sharedPref.getObject(FAMILY_FILE); result = CheckActivationCode.fromJson(result); this.sharedPref.clear(); + this.sharedPref.setObject(FAMILY_FILE, familyFile); this.sharedPref.setObject(USER_PROFILE, result.list); this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID); this.sharedPref.setString(TOKEN, result.authenticationTokenID); diff --git a/lib/pages/DrawerPages/notifications/notification_details_page.dart b/lib/pages/DrawerPages/notifications/notification_details_page.dart new file mode 100644 index 00000000..3858c940 --- /dev/null +++ b/lib/pages/DrawerPages/notifications/notification_details_page.dart @@ -0,0 +1,103 @@ +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_response_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; +import 'package:flutter/material.dart'; + +class NotificationsDetailsPage extends StatelessWidget { + final GetNotificationsResponseModel notification; + + NotificationsDetailsPage({this.notification}); + + getDateForm(String date) { + DateTime d = DateUtil.convertStringToDate(date); + String monthName = DateUtil.getMonth(d.month).toString(); + TimeOfDay timeOfDay = TimeOfDay(hour: d.hour, minute: d.minute); + String minute = timeOfDay.minute < 10 + ? timeOfDay.minute.toString().padLeft(2, '0') + : timeOfDay.minute.toString(); + + String hour = '${timeOfDay.hourOfPeriod}:$minute'; + if (timeOfDay.period == DayPeriod.am) { + hour = hour + "AM"; + } else { + { + hour = hour + "PM"; + } + } + return monthName + ',${d.day},${d.year}, $hour'; + } + + @override + Widget build(BuildContext context) { + return BaseView( + builder: (_, model, widget) => AppScaffold( + isShowAppBar: true, + appBarTitle: TranslationBase.of(context).notificationDetails, + body: SingleChildScrollView( + child: Center( + child: FractionallySizedBox( + widthFactor: 0.9, + child: Column( + children: [ + SizedBox( + height: 25, + ), + Container( + // margin: EdgeInsets.only(left: 30), + width: double.infinity, + color: Colors.grey[400], + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Texts( + getDateForm(notification.createdOn), + fontSize: 16, + ), + ), + ), + SizedBox( + height: 15, + ), + if (notification.messageTypeData.length != 0) + FractionallySizedBox( + widthFactor: 0.9, + child: Image.network(notification.messageTypeData, + loadingBuilder: (BuildContext context, Widget child, + ImageChunkEvent loadingProgress) { + if (loadingProgress == null) return child; + return Center( + child: SizedBox( + width: 40.0, + height: 40.0, + child: AppCircularProgressIndicator(), + ), + ); + }, + fit: BoxFit + .fill) //Image.network(notification.messageTypeData), + ), + SizedBox( + height: 15, + ), + Row( + children: [ + Expanded( + child: Center( + child: Texts(notification.message), + ), + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/DrawerPages/notifications/notifications_page.dart b/lib/pages/DrawerPages/notifications/notifications_page.dart new file mode 100644 index 00000000..53aad843 --- /dev/null +++ b/lib/pages/DrawerPages/notifications/notifications_page.dart @@ -0,0 +1,148 @@ +import 'package:diplomaticquarterapp/core/model/notifications/get_notifications_request_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/notifications_view_model.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/notifications/notification_details_page.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + +// ignore: must_be_immutable +class NotificationsPage extends StatelessWidget { + getDateForm(String date) { + DateTime d = DateUtil.convertStringToDate(date); + String monthName = DateUtil.getMonth(d.month).toString(); + TimeOfDay timeOfDay = TimeOfDay(hour: d.hour, minute: d.minute); + String minute = timeOfDay.minute < 10 + ? timeOfDay.minute.toString().padLeft(2, '0') + : timeOfDay.minute.toString(); + + String hour = '${timeOfDay.hourOfPeriod}:$minute'; + if (timeOfDay.period == DayPeriod.am) { + hour = hour + "AM"; + } else { + { + hour = hour + "PM"; + } + } + + //DayPeriod.am + return monthName + ',${d.day},${d.year}, $hour'; + } + + int currentIndex = 0; + + @override + Widget build(BuildContext context) { + var prescriptionReport; + return BaseView( + onModelReady: (model) { + GetNotificationsRequestModel getNotificationsRequestModel = + new GetNotificationsRequestModel( + currentPage: currentIndex, + pagingSize: 14, + notificationStatusID: 2); + + model.getNotifications(getNotificationsRequestModel, context); + }, + builder: (_, model, widget) => AppScaffold( + isShowAppBar: true, + appBarTitle: TranslationBase.of(context).notifications, + baseViewModel: model, + body: ListView( + children: model.notifications + .map( + (notification) => InkWell( + onTap: () async { + if(!notification.isRead) + model.markAsRead(notification.id); + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => + NotificationsDetailsPage( + notification: notification, + ))); + }, + child: Container( + width: double.infinity, + margin: EdgeInsets.only( + top: 5, left: 10, right: 10, bottom: 5), + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(10.0), + ), + border: Border.all( + color: notification.isRead + ? Colors.grey[200] + : Theme.of(context).primaryColor, + width: 0.5), + ), + child: Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts(getDateForm(notification.createdOn)), + SizedBox( + height: 5, + ), + Row( + children: [ + Expanded( + child: Texts(notification.message)), + if (notification.messageType == "image") + Icon(FontAwesomeIcons.images) + ], + ), + SizedBox( + height: 5, + ), + ], + ), + ), + ), + SizedBox( + width: 15, + ), + ], + ), + ), + ), + ) + .toList() + ..add( + InkWell( + onTap: () async { + GifLoaderDialogUtils.showMyDialog( + context); + currentIndex++; + GetNotificationsRequestModel + getNotificationsRequestModel = + new GetNotificationsRequestModel( + currentPage: currentIndex, + pagingSize: 14, + notificationStatusID: 2); + + await model.getNotifications(getNotificationsRequestModel,context); + GifLoaderDialogUtils.hideDialog( + context); + + }, + child: Center( + child: Image.asset('assets/images/notf.png'), + ), + ), + )), + ), + ); + } +} diff --git a/lib/pages/MyAppointments/MyAppointments.dart b/lib/pages/MyAppointments/MyAppointments.dart index 379c6e71..95485da5 100644 --- a/lib/pages/MyAppointments/MyAppointments.dart +++ b/lib/pages/MyAppointments/MyAppointments.dart @@ -1,15 +1,19 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/AppointmentCardView.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; +import 'package:provider/provider.dart'; class MyAppointments extends StatefulWidget { List appoList = []; @@ -33,11 +37,15 @@ class _MyAppointmentsState extends State bool isDataLoaded = false; var sharedPref = new AppSharedPreferences(); + AuthenticatedUserObject authenticatedUserObject = + locator(); + @override void initState() { _tabController = new TabController(length: 3, vsync: this); - WidgetsBinding.instance - .addPostFrameCallback((_) => getPatientAppointmentHistory()); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (Provider.of(context, listen: false).isLogin) getPatientAppointmentHistory(); + }); super.initState(); } @@ -77,14 +85,21 @@ class _MyAppointmentsState extends State } getPatientAppointmentHistory() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); widget.appoList.clear(); widget.bookedAppoList.clear(); widget.confirmedAppoList.clear(); widget.arrivedAppoList.clear(); + + widget._patientBookedAppointmentListHospital.clear(); + widget._patientConfirmedAppointmentListHospital.clear(); + widget._patientArrivedAppointmentListHospital.clear(); + service.getPatientAppointmentHistory(false, context).then((res) { print(res['AppoimentAllHistoryResultList'].length); if (res['MessageStatus'] == 1) { + GifLoaderDialogUtils.hideDialog(context); setState(() { if (res['AppoimentAllHistoryResultList'].length != 0) { res['AppoimentAllHistoryResultList'].forEach((v) { @@ -100,11 +115,11 @@ class _MyAppointmentsState extends State AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); Navigator.of(context).pop(); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } bool isConfirmed(AppoitmentAllHistoryResultList appo) { @@ -228,91 +243,57 @@ class _MyAppointmentsState extends State Widget getBookedAppointments() { return Container( + child: Container( child: widget.bookedAppoList.length != 0 - ? new ListView.builder( - itemCount: widget.bookedAppoList.length, - itemBuilder: (context, i) { - return AppointmentCard( - appo: widget.bookedAppoList[i], - onReloadAppointmentHistory: getPatientAppointmentHistory, - ); - }, + ? SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + ...List.generate( + widget._patientBookedAppointmentListHospital.length, + (index) => AppExpandableNotifier( + title: widget + ._patientBookedAppointmentListHospital[index] + .filterName, + bodyWidget: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: widget + ._patientBookedAppointmentListHospital[index] + .patientDoctorAppointmentList + .map((doctor) { + return AppointmentCard( + appo: doctor, + onReloadAppointmentHistory: + getPatientAppointmentHistory, + ); + }).toList(), + )), + ) + ], + ), ) : Container( child: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - // Image.asset( - // "assets/images/new-design/noAppointmentIcon.png"), - // Container( - // margin: EdgeInsets.only(top: 10.0), - // child: Text(TranslationBase.of(context).noBookedAppointments, - // style: TextStyle( - // fontSize: 16.0, - // )), - // ), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Container( - child: widget.bookedAppoList.length != 0 - ? SingleChildScrollView( - physics: BouncingScrollPhysics(), - child: Column( - children: [ - ...List.generate( - widget._patientBookedAppointmentListHospital - .length, - (index) => AppExpandableNotifier( - title: widget - ._patientBookedAppointmentListHospital[ - index] - .filterName, - bodyWidget: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: widget - ._patientBookedAppointmentListHospital[ - index] - .patientDoctorAppointmentList - .map((doctor) { - return AppointmentCard( - appo: doctor, - onReloadAppointmentHistory: - getPatientAppointmentHistory, - ); - }).toList(), - )), - ) - ], - ), - ) - : Container( - child: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - "assets/images/new-design/noAppointmentIcon.png"), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Text("No Booked Appointments", - style: TextStyle( - fontSize: 16.0, - )), - ), - ], - ), - ), - ), - ), - ) - ], - )))); + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.asset( + "assets/images/new-design/noAppointmentIcon.png"), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Text("No Booked Appointments", + style: TextStyle( + fontSize: 16.0, + )), + ), + ], + ), + ), + ), + ), + ); } Widget getConfirmedAppointments() { diff --git a/lib/pages/MyAppointments/widgets/AppointmentActions.dart b/lib/pages/MyAppointments/widgets/AppointmentActions.dart index 18740ce7..7bb45bad 100644 --- a/lib/pages/MyAppointments/widgets/AppointmentActions.dart +++ b/lib/pages/MyAppointments/widgets/AppointmentActions.dart @@ -18,12 +18,12 @@ import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_p import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:url_launcher/url_launcher.dart'; class AppointmentActions extends StatefulWidget { @@ -94,7 +94,7 @@ class _AppointmentActionsState extends State { child: Text(e.title, overflow: TextOverflow.clip, style: TextStyle( - color: new Color(0xFFc5272d), + color: new Color(0xFF40ACC9), letterSpacing: 1.0, fontSize: 20.0)), ), @@ -351,49 +351,49 @@ class _AppointmentActionsState extends State { cancelAppointment() { ConfirmDialog.closeAlertDialog(context); + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); - service - .cancelAppointment(widget.appo, context) - .then((res) { - print(res); - if (res['MessageStatus'] == 1) { - AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); - } else { - AppToast.showErrorToast(message: res['ErrorEndUserMessage']); - } - }) - .catchError((err) { - print(err); - }) - .showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) - .then((value) { - Navigator.of(context).pop(); - }); + service.cancelAppointment(widget.appo, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); + print(res); + if (res['MessageStatus'] == 1) { + AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); + Navigator.of(context).pop(); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + print(err); + }); } openAppointmentRadiology() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); FinalRadiology finalRadiology = new FinalRadiology(); service .getPatientRadOrders(widget.appo.appointmentNo.toString(), context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); print(res['FinalRadiologyList']); finalRadiology = new FinalRadiology.fromJson(res['FinalRadiologyList'][0]); print(finalRadiology.reportData); navigateToRadiologyDetails(finalRadiology); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } openPrescriptionReport() { + GifLoaderDialogUtils.showMyDialog(context); List prescriptionReportEnhList = List(); DoctorsListService service = new DoctorsListService(); service.getPatientPrescriptionReports(widget.appo, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); res['ListPRM'].forEach((report) { prescriptionReportEnhList.add(PrescriptionReportEnh.fromJson(report)); }); @@ -405,10 +405,10 @@ class _AppointmentActionsState extends State { AppToast.showErrorToast(message: "Sorry there is no data"); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Future navigateToMedicinePrescriptionReport( @@ -463,8 +463,10 @@ class _AppointmentActionsState extends State { } askYourDoc() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service.isAllowedToAskDoctor(widget.appo.doctorID, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); print(res['PatientDoctorAppointmentResultList']); if (res['PatientDoctorAppointmentResultList'].length != 0) { getCallRequestType(); @@ -473,15 +475,17 @@ class _AppointmentActionsState extends State { message: TranslationBase.of(context).askDocNotAllowed); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getCallRequestType() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service.getCallRequestType(context).then((res) { + GifLoaderDialogUtils.hideDialog(context); List requestData = new List(); res['ListReqTypes'].forEach((element) { requestData.add(new AskDocRequestType.fromJson(element)); @@ -490,9 +494,9 @@ class _AppointmentActionsState extends State { showAskDocRequestDialog(requestData); }); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } showAskDocRequestDialog(List requestData) { @@ -525,28 +529,32 @@ class _AppointmentActionsState extends State { } sendAskDocRequest(int requestType) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .sendAskDocCallRequest(widget.appo, requestType.toString(), context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { AppToast.showSuccessToast(message: "Request Sent Successfully"); } else { AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } confirmAppointment() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .confirmAppointment(widget.appo.appointmentNo, widget.appo.clinicID, widget.appo.projectID, widget.appo.isLiveCareAppointment, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); Navigator.of(context).pop(); @@ -554,9 +562,9 @@ class _AppointmentActionsState extends State { AppToast.showErrorToast(message: res['ErrorEndUserMessage']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } navigateToInsuranceApprovals(int appoNo) { diff --git a/lib/pages/ToDoList/ToDo.dart b/lib/pages/ToDoList/ToDo.dart index 9ba57084..b0315d28 100644 --- a/lib/pages/ToDoList/ToDo.dart +++ b/lib/pages/ToDoList/ToDo.dart @@ -1,4 +1,6 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; +import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; @@ -7,10 +9,10 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/AppointmentDetails.dar import 'package:diplomaticquarterapp/pages/ToDoList/payment_method_select.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/widgets/paymentDialog.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; -import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; @@ -18,7 +20,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:rating_bar/rating_bar.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; class ToDo extends StatefulWidget { PatientShareResponse patientShareResponse; @@ -34,13 +35,15 @@ class _ToDoState extends State { AppSharedPreferences sharedPref = AppSharedPreferences(); AuthenticatedUser authUser; - AuthProvider authProvider = new AuthProvider(); + AuthenticatedUserObject authenticatedUserObject = + locator(); @override void initState() { widget.patientShareResponse = new PatientShareResponse(); - WidgetsBinding.instance - .addPostFrameCallback((_) => getPatientAppointmentHistory()); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (authenticatedUserObject.isLogin) getPatientAppointmentHistory(); + }); super.initState(); } @@ -82,7 +85,7 @@ class _ToDoState extends State { height: 20.0), Container( margin: - EdgeInsets.only(left: 5.0, right: 25.0), + EdgeInsets.only(left: 5.0, right: 20.0), child: Text( getDate(widget .appoList[index].appointmentDate), @@ -106,7 +109,14 @@ class _ToDoState extends State { TranslationBase.of(context) .liveCareAppo, style: TextStyle(fontSize: 12.0)) - : Text(widget.appoList[index].projectName != null ? widget.appoList[index].projectName : "-", + : Text( + widget.appoList[index].projectName != + null + ? widget + .appoList[index].projectName + : "-", + overflow: TextOverflow.clip, + maxLines: 2, style: TextStyle(fontSize: 11.0)), ), ], @@ -253,7 +263,7 @@ class _ToDoState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 12.0, - color: Colors.red[600], + color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), @@ -416,7 +426,7 @@ class _ToDoState extends State { } getLanguageID() async { - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); setState(() { widget.languageID = languageID; }); @@ -464,8 +474,10 @@ class _ToDoState extends State { } getPatientAppointmentHistory() { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service.getPatientAppointmentHistory(true, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); if (res['MessageStatus'] == 1) { setState(() { if (res['AppoimentAllHistoryResultList'].length != 0) { @@ -485,26 +497,30 @@ class _ToDoState extends State { } }).catchError((err) { print(err); + GifLoaderDialogUtils.hideDialog(context); AppToast.showErrorToast(message: err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getPatientShare(context, AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .getPatientShare(appo.appointmentNo.toString(), appo.clinicID, appo.projectID, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); widget.patientShareResponse = new PatientShareResponse.fromJson(res); openPaymentDialog(appo, widget.patientShareResponse); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } getAppoQR(context, AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); PatientShareResponse patientShareResponse = new PatientShareResponse(); patientShareResponse.doctorNameObj = appo.doctorNameObj; @@ -518,12 +534,13 @@ class _ToDoState extends State { DoctorsListService service = new DoctorsListService(); service.generateAppointmentQR(patientShareResponse, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); print(res); navigateToQR(context, res['AppointmentQR'], patientShareResponse); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Future navigateToQR( @@ -620,6 +637,7 @@ class _ToDoState extends State { } checkPaymentStatus(AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .checkPaymentStatus( @@ -627,8 +645,7 @@ class _ToDoState extends State { appo.projectID, appo.clinicID, appo.appointmentNo), context) .then((res) { - print("Printing Payment Status Reponse!!!!"); - print(res); + GifLoaderDialogUtils.hideDialog(context); String paymentInfo = res['Response_Message']; if (paymentInfo == 'Success') { createAdvancePayment(res, appo); @@ -636,18 +653,20 @@ class _ToDoState extends State { AppToast.showErrorToast(message: res['Response_Message']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); service .createAdvancePayment( - appo, res['Amount'], res['Fort_id'], res['PaymentMethod'], context) + appo, appo.projectID.toString(), res['Amount'], res['Fort_id'], res['PaymentMethod'], context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); addAdvancedNumberRequest( res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), @@ -656,23 +675,25 @@ class _ToDoState extends State { appo); }).catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + GifLoaderDialogUtils.hideDialog(context); + }); } addAdvancedNumberRequest(String advanceNumber, String paymentReference, String appointmentID, AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .addAdvancedNumberRequest( advanceNumber, paymentReference, appointmentID, context) .then((res) { + GifLoaderDialogUtils.hideDialog(context); print(res); getAppoQR(context, appo); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Future navigateToPaymentMethod( @@ -705,51 +726,46 @@ class _ToDoState extends State { } confirmAppointment(AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .confirmAppointment(appo.appointmentNo, appo.clinicID, appo.projectID, appo.isLiveCareAppointment, context) .then((res) { - if (res['MessageStatus'] == 1) { - AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); - getPatientAppointmentHistory(); - } else { - AppToast.showErrorToast(message: res['ErrorEndUserMessage']); - } - }) - .catchError((err) { - print(err); - }) - .showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) - .then((value) { - if (appo.isLiveCareAppointment) { - insertLiveCareVIDARequest(appo); - } else { - getPatientAppointmentHistory(); - } - }); + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); + if (appo.isLiveCareAppointment) { + insertLiveCareVIDARequest(appo); + } else { + getPatientAppointmentHistory(); + } + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + print(err); + }); } insertLiveCareVIDARequest(AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(context); DoctorsListService service = new DoctorsListService(); service .insertVIDARequest(appo.appointmentNo, appo.clinicID, appo.projectID, appo.serviceID, appo.doctorID, context) .then((res) { - if (res['MessageStatus'] == 1) { - AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); - } else { - AppToast.showErrorToast(message: res['ErrorEndUserMessage']); - } - }) - .catchError((err) { - print(err); - }) - .showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) - .then((value) { - getPatientAppointmentHistory(); - }); + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); + getPatientAppointmentHistory(); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + print(err); + GifLoaderDialogUtils.hideDialog(context); + }); } } diff --git a/lib/pages/ToDoList/payment_method_select.dart b/lib/pages/ToDoList/payment_method_select.dart index a6936083..a189128a 100644 --- a/lib/pages/ToDoList/payment_method_select.dart +++ b/lib/pages/ToDoList/payment_method_select.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class PaymentMethod extends StatefulWidget { @override @@ -93,35 +94,6 @@ class _PaymentMethodState extends State { ), ), ), -// Expanded( -// child: Container( -// child: InkWell( -// onTap: () { -// updateSelectedPaymentMethod("SADAD"); -// }, -// child: Card( -// elevation: 3.0, -// margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), -// color: Colors.white, -// shape: RoundedRectangleBorder( -// borderRadius: BorderRadius.circular(10), -// side: selectedPaymentMethod == "SADAD" -// ? 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/sadad.png"), -// ), -// ), -// ), -// ), -// ), ], ), ), @@ -195,9 +167,44 @@ class _PaymentMethodState extends State { margin: EdgeInsets.only(top: 25.0), child: Flex( direction: Axis.horizontal, - children: [], + children: [ + Expanded( + child: Container( + child: InkWell( + onTap: () { + updateSelectedPaymentMethod("ApplePay"); + }, + child: Card( + elevation: 3.0, + margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0), + 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), + ), + child: Container( + height: 120.0, + padding: EdgeInsets.all(20.0), + child: SvgPicture.asset( + "assets/images/new-design/applepay.svg"), + ), + ), + ), + ), + ), + Expanded( + child: Container(), + ), + ], ), ), + SizedBox( + height: 150.0, + ), ], ), ), diff --git a/lib/pages/ToDoList/widgets/paymentDialog.dart b/lib/pages/ToDoList/widgets/paymentDialog.dart index 2fbcbcc1..7c461815 100644 --- a/lib/pages/ToDoList/widgets/paymentDialog.dart +++ b/lib/pages/ToDoList/widgets/paymentDialog.dart @@ -24,7 +24,7 @@ class _PaymentDialogState extends State { shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), child: Container( - height: 510.0, + height: 550.0, width: 450.0, child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/pages/ToDoList/widgets/upcomingCard.dart b/lib/pages/ToDoList/widgets/upcomingCard.dart index c1d1b546..04930e59 100644 --- a/lib/pages/ToDoList/widgets/upcomingCard.dart +++ b/lib/pages/ToDoList/widgets/upcomingCard.dart @@ -191,7 +191,7 @@ class _TodoListCardState extends State { textAlign: TextAlign.end, style: TextStyle( fontSize: 12.0, - color: Colors.red[600], + color: new Color(0xFF40ACC9), decoration: TextDecoration.underline)), ), ), @@ -312,7 +312,7 @@ class _TodoListCardState extends State { } getLanguageID() async { - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); setState(() { widget.languageID = languageID; }); diff --git a/lib/pages/base/base_view.dart b/lib/pages/base/base_view.dart index f5311aae..5977e97e 100644 --- a/lib/pages/base/base_view.dart +++ b/lib/pages/base/base_view.dart @@ -1,17 +1,24 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../locator.dart'; +AppSharedPreferences sharedPref = AppSharedPreferences(); + class BaseView extends StatefulWidget { final Widget Function(BuildContext context, T model, Widget child) builder; final Function(T) onModelReady; + final bool allowAny; BaseView({ this.builder, this.onModelReady, + this.allowAny = false, }); @override @@ -20,16 +27,26 @@ class BaseView extends StatefulWidget { class _BaseViewState extends State> { T model = locator(); - AuthenticatedUserObject authenticatedUserObject = locator(); + AuthenticatedUserObject authenticatedUserObject = + locator(); + bool isLogin = false; @override void initState() { - if (widget.onModelReady != null && authenticatedUserObject.isLogin) { + if(widget.allowAny && widget.onModelReady != null){ + widget.onModelReady(model); + } + else if (widget.onModelReady != null && Provider.of(context, listen: false).isLogin) { widget.onModelReady(model); } super.initState(); } + getUser() async { + var userData = await sharedPref.getObject(USER_PROFILE); + this.isLogin = userData != null; + } + @override Widget build(BuildContext context) { return ChangeNotifierProvider( diff --git a/lib/pages/feedback/feedback_home_page.dart b/lib/pages/feedback/feedback_home_page.dart index d7c7361f..309b5713 100644 --- a/lib/pages/feedback/feedback_home_page.dart +++ b/lib/pages/feedback/feedback_home_page.dart @@ -1,6 +1,7 @@ import 'dart:ui'; import 'package:diplomaticquarterapp/pages/feedback/send_feedback_page.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; @@ -34,7 +35,8 @@ class _FeedbackHomePageState extends State return AppScaffold( isShowAppBar: true, isBottomBar: false, - appBarTitle: 'Feedback', + isShowDecPage: false, + appBarTitle: TranslationBase.of(context).feedbackTitle, body: Scaffold( extendBodyBehindAppBar: true, appBar: PreferredSize( @@ -81,13 +83,13 @@ class _FeedbackHomePageState extends State Container( width: MediaQuery.of(context).size.width * 0.30, child: Center( - child: Texts('Send'), + child: Texts(TranslationBase.of(context).send), ), ), Container( width: MediaQuery.of(context).size.width * 0.30, child: Center( - child: Texts('Status'), + child: Texts(TranslationBase.of(context).status), ), ), ], diff --git a/lib/pages/feedback/send_feedback_page.dart b/lib/pages/feedback/send_feedback_page.dart index c5ec9757..27d2f353 100644 --- a/lib/pages/feedback/send_feedback_page.dart +++ b/lib/pages/feedback/send_feedback_page.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_mode import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart'; import 'package:diplomaticquarterapp/widgets/bottom_options/BottomSheet.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; @@ -34,8 +35,10 @@ class _SendFeedbackPageState extends State { @override Widget build(BuildContext context) { return BaseView( + allowAny: true, builder: (_, model, widget) => AppScaffold( baseViewModel: model, + isShowDecPage: false, body: Container( height: MediaQuery.of(context).size.height * 0.8, child: SingleChildScrollView( @@ -50,8 +53,7 @@ class _SendFeedbackPageState extends State { Container( margin: EdgeInsets.only(left: 20, right: 20, top: 8), child: Texts( - 'We\'d love to hear your feedback about the health care services and online services. Please fill in the required fields', - //يسعدنا سماع ملاحظاتك حول خدمات الرعاية الصحية والخدمات الإلكترونية. يرجى تعبئة الحقول المطلوبة + TranslationBase.of(context).likeToHear, textAlign: TextAlign.center, variant: 'body2Link', ), @@ -73,11 +75,12 @@ class _SendFeedbackPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( + child: Texts( - model.selected, + model.getSelected(context), variant: 'bodyText', ), - margin: EdgeInsets.only(left: 10), + margin: EdgeInsets.only(left: 10,right: 10), ), Icon( Icons.arrow_drop_down, @@ -276,14 +279,14 @@ class _SendFeedbackPageState extends State { Container( margin: EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( - hintText: 'Title', + hintText: TranslationBase.of(context).subject, controller: titleController, fontSize: 13.5, hintColor: Colors.black, fontWeight: FontWeight.w600, validator: (value) { if (value == null) - return "please Enter title"; + return TranslationBase.of(context).emptySubject; else return null; }, @@ -292,7 +295,7 @@ class _SendFeedbackPageState extends State { Container( margin: EdgeInsets.only(left: 10, right: 10, top: 15), child: TextFields( - hintText: 'message', + hintText: TranslationBase.of(context).message, fontSize: 13.5, hintColor: Colors.black, fontWeight: FontWeight.w600, @@ -301,7 +304,7 @@ class _SendFeedbackPageState extends State { controller: messageController, validator: (value) { if (value == null) - return "please Enter message"; + return TranslationBase.of(context).emptyMessage; else return null; }), @@ -330,7 +333,7 @@ class _SendFeedbackPageState extends State { children: [ Icon(Icons.attach_file), Texts( - 'selected attachment', + TranslationBase.of(context).selectAttachment, variant: 'bodyText', textAlign: TextAlign.center, ), @@ -389,7 +392,7 @@ class _SendFeedbackPageState extends State { height: MediaQuery.of(context).size.height * 0.1, width: MediaQuery.of(context).size.width * 0.8, child: Button( - label: 'Send', + label: TranslationBase.of(context).send, loading: model.state == ViewState.BusyLocal, onTap: () { final form = formKey.currentState; @@ -413,13 +416,13 @@ class _SendFeedbackPageState extends State { }); model.setMessageType(MessageType.NON); AppToast.showSuccessToast( - message: "Your feedback was send"); + message: TranslationBase.of(context).yourFeedback); } else { AppToast.showErrorToast(message: model.error); } }); else { - AppToast.showErrorToast(message: "Please select COC"); + AppToast.showErrorToast(message: TranslationBase.of(context).selectPart); } }, ), @@ -487,7 +490,7 @@ class FeedbackTypeDialogState extends State { return BaseView( builder: (_, model, widge) => SimpleDialog( title: Text( - "Message Type", + TranslationBase.of(context).messageType, textAlign: TextAlign.center, ), children: [ @@ -507,7 +510,7 @@ class FeedbackTypeDialogState extends State { onTap: () => model.setMessageDialogType( MessageType.ComplaintOnAnAppointment), child: ListTile( - title: const Text('Complaint on an appointment'), + title: Texts(TranslationBase.of(context).complainAppo), leading: Radio( value: MessageType.ComplaintOnAnAppointment, groupValue: model.messageTypeDialog, @@ -531,7 +534,7 @@ class FeedbackTypeDialogState extends State { onTap: () => model.setMessageDialogType( MessageType.ComplaintWithoutAppointment), child: ListTile( - title: const Text('Complaint without appointment'), + title: Texts(TranslationBase.of(context).complainWithoutAppo), leading: Radio( value: MessageType.ComplaintWithoutAppointment, groupValue: model.messageTypeDialog, @@ -555,7 +558,7 @@ class FeedbackTypeDialogState extends State { onTap: () => model.setMessageDialogType(MessageType.Question), child: ListTile( - title: const Text('Question'), + title: Texts(TranslationBase.of(context).question), leading: Radio( value: MessageType.Question, groupValue: model.messageTypeDialog, @@ -579,7 +582,7 @@ class FeedbackTypeDialogState extends State { onTap: () => model.setMessageDialogType(MessageType.Compliment), child: ListTile( - title: const Text('compliment'), + title: Texts(TranslationBase.of(context).compliment), leading: Radio( value: MessageType.Compliment, groupValue: model.messageTypeDialog, @@ -603,7 +606,7 @@ class FeedbackTypeDialogState extends State { onTap: () => model.setMessageDialogType(MessageType.Suggestion), child: ListTile( - title: const Text('Suggestion'), + title: Texts(TranslationBase.of(context).suggestion), leading: Radio( value: MessageType.Suggestion, groupValue: model.messageTypeDialog, @@ -636,11 +639,11 @@ class FeedbackTypeDialogState extends State { Navigator.pop(context); }, child: Padding( - padding: const EdgeInsets.all(8.0), + padding: EdgeInsets.all(8.0), child: Container( child: Center( child: Texts( - 'cancel', + TranslationBase.of(context).cancel, color: Colors.red, ), ), @@ -664,7 +667,7 @@ class FeedbackTypeDialogState extends State { padding: const EdgeInsets.all(8.0), child: Center( child: Texts( - 'ok', + TranslationBase.of(context).ok, fontWeight: FontWeight.w400, )), ), diff --git a/lib/pages/feedback/status_feedback_page.dart b/lib/pages/feedback/status_feedback_page.dart index 01a2b4c9..457ded60 100644 --- a/lib/pages/feedback/status_feedback_page.dart +++ b/lib/pages/feedback/status_feedback_page.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -17,9 +18,11 @@ class _StatusFeedbackPageState extends State { @override Widget build(BuildContext context) { return BaseView( + allowAny: true, onModelReady: (model) => model.getCOC(), builder: (_, model, widget) => AppScaffold( baseViewModel: model, + isShowDecPage: false, body: Container( margin: EdgeInsets.only(top: 8.0,left: 8.0,right: 8.0 ), padding: EdgeInsets.all(15.0), @@ -50,7 +53,7 @@ class _StatusFeedbackPageState extends State { children: [ Texts('${model.cOCItemList[index].cOCTitle}'), Texts( - 'Number :${model.cOCItemList[index].itemID}', + TranslationBase.of(context).number + ' : ${model.cOCItemList[index].itemID}', variant: 'overline', ), ], diff --git a/lib/pages/insurance/insurance_approval_screen.dart b/lib/pages/insurance/insurance_approval_screen.dart index 038468e0..3b19e670 100644 --- a/lib/pages/insurance/insurance_approval_screen.dart +++ b/lib/pages/insurance/insurance_approval_screen.dart @@ -30,6 +30,8 @@ class _InsuranceApprovalState extends State { isShowAppBar: true, baseViewModel: model, appBarTitle: TranslationBase.of(context).approvals, + description: TranslationBase.of(context).infoApprovals, + infoList: TranslationBase.of(context).infoApprovalPoints, body: SingleChildScrollView( child: Container( margin: EdgeInsets.only( diff --git a/lib/pages/insurance/insurance_card_screen.dart b/lib/pages/insurance/insurance_card_screen.dart index 6483b6b2..d5fac63f 100644 --- a/lib/pages/insurance/insurance_card_screen.dart +++ b/lib/pages/insurance/insurance_card_screen.dart @@ -1,11 +1,16 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; +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/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -19,8 +24,9 @@ class InsuranceCard extends StatefulWidget { @override _InsuranceCardState createState() => _InsuranceCardState(); } - +//TODO fix it class _InsuranceCardState extends State { + InsuranceCardService _insuranceCardService = locator(); @override Widget build(BuildContext context) { return BaseView( @@ -29,7 +35,10 @@ class _InsuranceCardState extends State { AppScaffold( isShowAppBar: true, baseViewModel: model, + image: 'assets/images/medical/insurance_card_icon.png', appBarTitle: TranslationBase.of(context).insuranceCards, + description: TranslationBase.of(context).infoInsuranceCards, + infoList: TranslationBase.of(context).infoInsuranceCardsPoints, body: Container( margin: EdgeInsets.only( left: SizeConfig.screenWidth * 0.004, @@ -137,6 +146,7 @@ class _InsuranceCardState extends State { Container( color: Colors.transparent, child: SecondaryButton( + onTap:()=>{ getDetails(model.insurance[index])}, label: TranslationBase.of(context).seeDetails, textColor: Colors.white, ), @@ -176,4 +186,13 @@ class _InsuranceCardState extends State { return newDate.toString(); } + getDetails(data){ + GifLoaderDialogUtils.showMyDialog(context); + _insuranceCardService.getInsuranceDetails(data).then((value) => { + GifLoaderDialogUtils.hideDialog(context), + Navigator.push(context, + FadePage(page: InsuranceCardDetails(data:value[0]['CheckList']))) + + }); + } } diff --git a/lib/pages/insurance/insurance_details.dart b/lib/pages/insurance/insurance_details.dart new file mode 100644 index 00000000..d0a829be --- /dev/null +++ b/lib/pages/insurance/insurance_details.dart @@ -0,0 +1,35 @@ +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter_html/flutter_html.dart'; +import 'package:html/dom.dart' as dom; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class InsuranceCardDetails extends StatefulWidget { + final String data; + + InsuranceCardDetails({this.data}); + + @override + _InsuranceCardInsuranceCardDetailsState createState() => _InsuranceCardInsuranceCardDetailsState(); +} +//TODO fix it +class _InsuranceCardInsuranceCardDetailsState extends State { + @override + Widget build(BuildContext context) { + return + AppScaffold( + isShowAppBar: true, + + body: Center( + child: SingleChildScrollView( + child: Html( + data:widget.data, + ) + ) + ), + ); + } + +} diff --git a/lib/pages/insurance/insurance_update_screen.dart b/lib/pages/insurance/insurance_update_screen.dart index 2fa291df..1e616108 100644 --- a/lib/pages/insurance/insurance_update_screen.dart +++ b/lib/pages/insurance/insurance_update_screen.dart @@ -98,12 +98,7 @@ class _InsuranceUpdateState extends State children: [ Container( child: ListView.builder( - itemCount: model.getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList == - null - ? 0 - : model.getAllSharedRecordsByStatusResponse - .getAllSharedRecordsByStatusList.length, + itemCount: model.getAllSharedRecordsByStatusResponse.getAllSharedRecordsByStatusList.length, itemBuilder: (BuildContext context, int index) { return Container( margin: EdgeInsets.all(10.0), diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index cc7c2042..6654d36d 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -11,19 +11,17 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy_module_page.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; -import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; - class HomePage extends StatefulWidget { final Function goToMyProfile; @@ -761,7 +759,7 @@ class _HomePageState extends State { ), ), SizedBox( - height: 80, + height: 120, ) ], ), diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index 49a5c547..93542618 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -3,32 +3,38 @@ import 'dart:typed_data'; import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/my_admissions_page.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; +import 'package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart'; import 'package:diplomaticquarterapp/uitl/LocalNotification.dart'; +import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -import 'package:rxdart/rxdart.dart'; +import '../../locator.dart'; +import '../../routes.dart'; import 'home_page.dart'; class LandingPage extends StatefulWidget { @@ -43,16 +49,18 @@ class LandingPage extends StatefulWidget { class _LandingPageState extends State with WidgetsBindingObserver { int currentTab = 0; PageController pageController; - ProjectViewModel projectProvider; + ProjectViewModel projectViewModel; + var notificationCount = ''; + + ///inject the user data + AuthenticatedUserObject authenticatedUserObject = locator(); + final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); final authService = new AuthProvider(); var event = RobotProvider(); void _requestIOSPermissions() { - flutterLocalNotificationsPlugin - .resolvePlatformSpecificImplementation< - IOSFlutterLocalNotificationsPlugin>() - ?.requestPermissions( + flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation()?.requestPermissions( alert: true, badge: true, sound: true, @@ -78,35 +86,30 @@ class _LandingPageState extends State with WidgetsBindingObserver { print(route.settings.name); } - setState(() { - print("didChangeAppLifecycleState"); - print('state = $state'); - AppGlobal.context = context; - if (state == AppLifecycleState.resumed) { - print(LandingPage.isOpenCallPage); - if (LandingPage.isOpenCallPage) { - if (!isPageNavigated) { - isPageNavigated = true; - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => IncomingCall( - incomingCallData: LandingPage.incomingCallData))) - .then((value) { - isPageNavigated = false; - }); - } + //setState(() { + print("didChangeAppLifecycleState"); + print('state = $state'); + AppGlobal.context = context; + if (state == AppLifecycleState.resumed) { + print(LandingPage.isOpenCallPage); + if (LandingPage.isOpenCallPage) { + if (!isPageNavigated) { + isPageNavigated = true; + Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) { + isPageNavigated = false; + }); } } + } - if (state == AppLifecycleState.paused) { - isPageNavigated = false; - } + if (state == AppLifecycleState.paused) { + isPageNavigated = false; + } - if (state == AppLifecycleState.inactive) { - isPageNavigated = false; - } - }); + if (state == AppLifecycleState.inactive) { + isPageNavigated = false; + } + //}); } @override @@ -118,27 +121,35 @@ class _LandingPageState extends State with WidgetsBindingObserver { @override void initState() { super.initState(); + WidgetsBinding.instance.addObserver(this); - setState(() { - AppGlobal.context = context; - }); + //setState(() { + AppGlobal.context = context; + // }); _requestIOSPermissions(); pageController = PageController(keepPage: true); - // _firebaseMessaging.setAutoInitEnabled(true); - // - // if (Platform.isIOS) { - // _firebaseMessaging.requestNotificationPermissions(); - // } - // - // _firebaseMessaging.getToken().then((String token) { - // sharedPref.setString(PUSH_TOKEN, token); - // if (token != null) { - // checkUserStatus(token); - // } - // requestPermissions(); - // }).catchError((err) { - // print(err); - // }); + _firebaseMessaging.setAutoInitEnabled(true); + + HMGNetworkConnectivity(context, () { + GifLoaderDialogUtils.showMyDialog(context); + PlatformBridge().connectHMGGuestWifi().then((value) => {GifLoaderDialogUtils.hideDialog(context)}); + }).checkAndConnectIfNoInternet(); + + if (Platform.isIOS) { + _firebaseMessaging.requestNotificationPermissions(); + } + + _firebaseMessaging.getToken().then((String token) { + sharedPref.setString(PUSH_TOKEN, token); + if (token != null && DEVICE_TOKEN == "") { + DEVICE_TOKEN = token; + checkUserStatus(token); + } + requestPermissions(); + }).catchError((err) { + print(err); + }); + // // //_firebase Background message handler // _firebaseMessaging.configure( @@ -259,12 +270,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { showDialogs(String message) { ConfirmDialog dialog = new ConfirmDialog( - context: context, - confirmMessage: message, - okText: TranslationBase.of(context).confirm, - cancelText: TranslationBase.of(context).cancel_nocaps, - okFunction: () => {}, - cancelFunction: () => {}); + context: context, confirmMessage: message, okText: TranslationBase.of(context).confirm, cancelText: TranslationBase.of(context).cancel_nocaps, okFunction: () => {}, cancelFunction: () => {}); dialog.showAlertDialog(context); } @@ -289,18 +295,14 @@ class _LandingPageState extends State with WidgetsBindingObserver { } Future _scheduleNotification() async { - var scheduledNotificationDateTime = - DateTime.now().add(Duration(seconds: 5)); + var scheduledNotificationDateTime = DateTime.now().add(Duration(seconds: 5)); var vibrationPattern = Int64List(4); vibrationPattern[0] = 0; vibrationPattern[1] = 1000; vibrationPattern[2] = 5000; vibrationPattern[3] = 2000; - var androidPlatformChannelSpecifics = AndroidNotificationDetails( - 'your other channel id', - 'your other channel name', - 'your other channel description', + var androidPlatformChannelSpecifics = AndroidNotificationDetails('your other channel id', 'your other channel name', 'your other channel description', // icon: 'secondary_icon', sound: RawResourceAndroidNotificationSound('slow_spring_board'), largeIcon: DrawableResourceAndroidBitmap('sample_large_icon'), @@ -310,8 +312,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { ledColor: const Color.fromARGB(255, 255, 0, 0), ledOnMs: 1000, ledOffMs: 500); - var iOSPlatformChannelSpecifics = - IOSNotificationDetails(sound: 'slow_spring_board.aiff'); + var iOSPlatformChannelSpecifics = IOSNotificationDetails(sound: 'slow_spring_board.aiff'); // var platformChannelSpecifics = NotificationDetails( // androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics); // await flutterLocalNotificationsPlugin.schedule( @@ -324,43 +325,82 @@ class _LandingPageState extends State with WidgetsBindingObserver { @override Widget build(BuildContext context) { - //final searchValue = Provider.of(context); - //print(searchValue); - // projectProvider = Provider.of(context); - // checkValue(projectProvider); + projectViewModel = Provider.of(context); + return Scaffold( - appBar: AppBar( - elevation: 0, - textTheme: TextTheme( - headline6: - TextStyle(color: Colors.white, fontWeight: FontWeight.bold), + appBar: AppBar( + elevation: 0, + textTheme: TextTheme( + headline6: TextStyle(color: Colors.white, fontWeight: FontWeight.bold), + ), + title: Text( + getText(currentTab).toUpperCase(), + style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontFamily: projectViewModel.isArabic ? 'Cairo' : 'WorkSans'), + // bold: true, + // color: Colors.white, + ), + leading: Builder( + builder: (BuildContext context) { + return new Stack( + children: [ + IconButton( + icon: Icon(Icons.menu), + color: Colors.white, + onPressed: () => Scaffold.of(context).openDrawer(), + ), + notificationCount != '' + ? new Positioned( + right: projectViewModel.isArabic ? 35 : 0, + top: 5, + child: new Container( + padding: EdgeInsets.all(4), + decoration: new BoxDecoration( + color: Colors.red, + borderRadius: BorderRadius.circular(20), + ), + constraints: BoxConstraints( + minWidth: 20, + minHeight: 20, + ), + child: new Text( + notificationCount, + style: new TextStyle( + color: Colors.white, + fontSize: projectViewModel.isArabic ? 8 : 9, + ), + textAlign: TextAlign.center, + ), + ), + ) + : SizedBox() + ], + ); + }, + ), + actions: [ + IconButton( + //iconSize: 70, + icon: Icon( + projectViewModel.isLogin ? Icons.settings : Icons.login, + color: Colors.white, + ), + onPressed: () { + if (projectViewModel.isLogin) + Navigator.of(context).pushNamed( + SETTINGS, + ); + else + Navigator.of(context).pushNamed( + WELCOME_LOGIN, + ); + }, //do something, + ) + ], + centerTitle: true, ), - title: Text(getText(currentTab).toUpperCase()), - leading: Builder( - builder: (BuildContext context) { - return IconButton( - icon: Icon(Icons.menu), - color: Colors.white, - onPressed: () => Scaffold.of(context).openDrawer(), - ); - }, - ), - actions: [ - // IconButton( - // iconSize: 70, - // icon: SvgPicture.asset('assets/images/svg/robort_svg.svg', - // height: 100, width: 100, fit: BoxFit.cover), - // onPressed: () { - // triggerRobot(); - // } //do something, - // ) - ], - centerTitle: true, - ), - drawer: SafeArea(child: AppDrawer()), - extendBody: true, - body: SafeArea( - child: PageView( + drawer: SafeArea(child: AppDrawer()), + extendBody: true, + body: PageView( physics: NeverScrollableScrollPhysics(), controller: pageController, children: [ @@ -370,17 +410,23 @@ class _LandingPageState extends State with WidgetsBindingObserver { }, ), MedicalProfilePage(), - MyAdmissionsPage(), + BookingOptions(), + MyFamily(isAppbarVisible: false), ToDo(), - BookingOptions() ], // Please do not remove the BookingOptions from this array ), - ), - bottomNavigationBar: BottomNavBar( - changeIndex: _changeCurrentTab, - index: currentTab, - ), - ); + bottomNavigationBar: BottomNavBar( + changeIndex: _changeCurrentTab, + index: currentTab, + ), + floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, + floatingActionButton: currentTab == 0 + ? FloatingButton( + elevation: true, + onTap: () { + _changeCurrentTab(2); + }) + : null); } triggerRobot() { @@ -403,27 +449,22 @@ class _LandingPageState extends State with WidgetsBindingObserver { } void checkUserStatus(token) async { - authService - .selectDeviceImei(token) - .then((SelectDeviceIMEIRES value) => setUserValues(value)); + authService.selectDeviceImei(token).then((SelectDeviceIMEIRES value) => setUserValues(value)); if (await sharedPref.getObject(USER_PROFILE) != null) { - var data = - AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); - if (data != null) - authService.registeredAuthenticatedUser(data, token, 0, 0); - // setState(() { - // this.user = data; - // print(this.user); - // }); + var data = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + if (data != null) { + authService.registeredAuthenticatedUser(data, token, 0, 0).then((res) => {print(res)}); + authService.getDashboard().then((value) => { + setState(() { + notificationCount = value['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + }) + }); + } } } - static Future myBackgroundMessageHandler( - Map message) async { + static Future myBackgroundMessageHandler(Map message) async { Map myMap = new Map.from(message['data']); - print(myMap); - - print("myBackgroundMessageHandler Out"); if (message.containsKey('data')) { print("myBackgroundMessageHandler Inside"); LandingPage.incomingCallData = IncomingCallData.fromJson(myMap); diff --git a/lib/pages/livecare/livecare_type_select.dart b/lib/pages/livecare/livecare_type_select.dart index 64114304..833c9698 100644 --- a/lib/pages/livecare/livecare_type_select.dart +++ b/lib/pages/livecare/livecare_type_select.dart @@ -219,7 +219,7 @@ class _LiveCareTypeSelectState extends State { } getLanguageID() async { - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); setState(() { this.languageID = languageID; }); diff --git a/lib/pages/livecare/widgets/clinic_list.dart b/lib/pages/livecare/widgets/clinic_list.dart index 083af9f7..d2e52b72 100644 --- a/lib/pages/livecare/widgets/clinic_list.dart +++ b/lib/pages/livecare/widgets/clinic_list.dart @@ -357,7 +357,7 @@ class _clinic_listState extends State { } getLanguageID() async { - languageID = await sharedPref.getString(APP_LANGUAGE); + languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); } getLiveCareClinicsList() { diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 85c1b232..e016776e 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -1,26 +1,31 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; +import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart'; import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/Authentication/send_activation_request.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:local_auth/local_auth.dart'; +import 'package:provider/provider.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; class ConfirmLogin extends StatefulWidget { @@ -63,6 +68,13 @@ class _ConfirmLogin extends State { int fingrePrintBefore; + AuthenticatedUserObject authenticatedUserObject = + locator(); + AppointmentRateViewModel appointmentRateViewModel = + locator(); + ProjectViewModel projectViewModel; + + @override void initState() { _getAvailableBiometrics(); @@ -72,174 +84,167 @@ class _ConfirmLogin extends State { @override Widget build(BuildContext context) { + projectViewModel = Provider.of(context); return AppScaffold( - appBarTitle: TranslationBase.of(context).confirm, - isShowAppBar: true, - isShowDecPage: false, - body: SingleChildScrollView( - child: Container( - padding: EdgeInsets.all(20), - height: SizeConfig.realScreenHeight * .9, - width: SizeConfig.realScreenWidth, - child: Column( - children: [ - Expanded( - flex: 3, - child: user != null && isMoreOption == false - ? Column( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, - ), - AppText( - TranslationBase.of(context).welcomeBack + - ' ' + - user.name, - fontSize: SizeConfig.textMultiplier * 3.5, - ), - AppText( - TranslationBase.of(context).accountInfo, - fontSize: SizeConfig.textMultiplier * 2.5, - ), - Card( - color: Colors.grey[300], - child: Row( - children: [ - Expanded( - child: ListTile( - title: Text( - TranslationBase.of(context) - .lastLoginAt, - textAlign: TextAlign.center, - ), - subtitle: Text( - user.editedOn != null - ? formatDate(DateUtil - .convertStringToDate( - user.editedOn)) - : '--', - textAlign: TextAlign.center), - )), - Expanded( - child: ListTile( - title: Text( - TranslationBase.of(context) - .lastLoginWith, - textAlign: TextAlign.center), - subtitle: Text( - getType( - user.logInType, context), - textAlign: TextAlign.center), - )) - ], - )) - ], - ) - : Column( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, + appBarTitle: TranslationBase.of(context).confirm, + isShowAppBar: true, + isShowDecPage: false, + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.all(20), + height: SizeConfig.realScreenHeight * .9, + width: SizeConfig.realScreenWidth, + child: Column( + children: [ + Expanded( + flex: 3, + child: user != null && isMoreOption == false + ? Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Image.asset( + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, + ), + AppText( + TranslationBase.of(context).welcomeBack + + ' ' + + user.name, + fontSize: SizeConfig.textMultiplier * 3.5, + ), + AppText( + TranslationBase.of(context).accountInfo, + fontSize: SizeConfig.textMultiplier * 2.5, + ), + Card( + color: Colors.grey[300], + child: Row( + children: [ + Expanded( + child: ListTile( + title: Text( + TranslationBase.of(context).lastLoginAt, + textAlign: TextAlign.center, + ), + subtitle: Text( + user.editedOn != null + ? formatDate( + DateUtil.convertStringToDate( + user.editedOn)) + : '--', + textAlign: TextAlign.center), + )), + Expanded( + child: ListTile( + title: Text( + TranslationBase.of(context) + .lastLoginWith, + textAlign: TextAlign.center), + subtitle: Text( + getType(user.logInType, context), + textAlign: TextAlign.center), + )) + ], + )) + ], + ) + : Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Image.asset( + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, + ), + this.onlySMSBox == false + ? AppText( + TranslationBase.of(context) + .verifyLoginWith, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.left, + ) + : AppText( + TranslationBase.of(context) + .verifyFingerprint2, + fontSize: SizeConfig.textMultiplier * 2.5, + textAlign: TextAlign.start, ), - this.onlySMSBox == false - ? AppText( - TranslationBase.of(context) - .verifyLoginWith, - fontSize: - SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, - ) - : AppText( - TranslationBase.of(context) - .verifyFingerprint2, - fontSize: - SizeConfig.textMultiplier * 2.5, - textAlign: TextAlign.left, - ), - ])), - user != null && isMoreOption == false - ? Expanded( - flex: 2, - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Expanded( - child: InkWell( - onTap: () => { - authenticateUser( - 3, - BiometricType - .face.index) - }, - child: - getButton(user.logInType))), - Expanded(child: getButton(5)) - ]) - ])) - : Expanded( - flex: 4, - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, + ])), + user != null && isMoreOption == false + ? Expanded( + flex: 2, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, children: [ - onlySMSBox == false - ? Row( - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Expanded(child: getButton(3)), - Expanded(child: getButton(2)) - ], - ) - : SizedBox(), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded(child: getButton(1)), - Expanded(child: getButton(4)) - ], - ), - ]), - ), - Expanded( - flex: 1, - child: Column( - mainAxisAlignment: MainAxisAlignment.end, + Expanded( + child: InkWell( + onTap: () => { + authenticateUser( + 3, BiometricType.face.index) + }, + child: getButton(user.logInType))), + Expanded(child: getButton(5)) + ]) + ])) + : Expanded( + flex: 4, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - user != null + onlySMSBox == false ? Row( + mainAxisAlignment: MainAxisAlignment.center, children: [ - Expanded( - child: DefaultButton( - TranslationBase.of(context) - .useAnotherAccount, - () => { - Navigator.of(context).pushNamed( - LOGIN_TYPE, - ) - }, - )), + Expanded(child: getButton(3)), + Expanded(child: getButton(2)) ], ) : SizedBox(), - ], - )) + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded(child: getButton(1)), + Expanded(child: getButton(4)) + ], + ), + ]), + ), + Expanded( + flex: 1, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + user != null + ? Row( + children: [ + Expanded( + child: DefaultButton( + TranslationBase.of(context).useAnotherAccount, + () => { + Navigator.of(context).pushNamed( + LOGIN_TYPE, + ) + }, + )), + ], + ) + : SizedBox(), ], - )))); + ), + ) + ], + ), + ), + ), + ); } Future _getAvailableBiometrics() async { @@ -299,13 +304,17 @@ class _ConfirmLogin extends State { checkUserAuthentication(type) { showLoader(true); - var req = getCommonRequest(); + var req = getCommonRequest(type: type); + req.logInTokenID = ""; + var request = CheckPatientAuthenticationReq.fromJson(req.toJson()); + GifLoaderDialogUtils.showMyDialog(context); sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); authService .checkPatientAuthentication(request) .then((value) => { + GifLoaderDialogUtils.hideDialog(context), if (value['isSMSSent']) { sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), @@ -322,21 +331,21 @@ class _ConfirmLogin extends State { }) .catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + GifLoaderDialogUtils.hideDialog(context); + }); } sendActivationCode(type) async { - var request = this.getCommonRequest(); - // loading(true); - - await this.authService.sendActivationCode(request).then((result) => { - if (result != null && result['isSMSSent'] == true) - {this.startSMSService(type)} - }); - - - // SMSOTP.showLoadingDialog(context, false), + var request = this.getCommonRequest(type: type); + GifLoaderDialogUtils.showMyDialog(context); + await this.authService.sendActivationCode(request).then((result) { + GifLoaderDialogUtils.hideDialog(context); + if (result != null && result['isSMSSent'] == true) { + this.startSMSService(type); + } + }).catchError((r) { + GifLoaderDialogUtils.hideDialog(context); + }); } startSMSService(type) { @@ -358,10 +367,16 @@ class _ConfirmLogin extends State { localizedReason: 'Scan your fingerprint to authenticate', useErrorDialogs: true, stickyAuth: true); - print(authenticated); + if (authenticated == true) { - var request = this.getCommonRequest(); + + if(user.logInType==2 || user.logInType ==3){ + this.checkActivationCode(); + }else{ + var request = this.getCommonRequest(type: type); this.getMobileInfo(request); + } + } } } @@ -410,7 +425,6 @@ class _ConfirmLogin extends State { print(err); }).showProgressBar( text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); - ; } setUser() async {} @@ -446,35 +460,45 @@ class _ConfirmLogin extends State { this.deviceToken = await sharedPref.getString(PUSH_TOKEN); this.lastLogin = await sharedPref.getInt(LAST_LOGIN) != null ? await sharedPref.getInt(LAST_LOGIN) - : user.logInType; + : user.logInType !=null ? user.logInType : null; //this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN); } - getCommonRequest() { + getCommonRequest({type}) { var request = SendActivationRequest(); request.patientMobileNumber = this.mobileNumber; request.mobileNo = '0' + this.mobileNumber.toString(); request.deviceToken = this.deviceToken; - request.projectOutSA = this.patientOutSA == true ? 1 : 0; + request.projectOutSA = this.patientOutSA == true ? true : false; request.loginType = this.selectedOption; - request.oTPSendType = this.selectedOption == 1 ? 1 : 2; + request.oTPSendType = + type == 1 ? type : 2; //this.selectedOption == 1 ? 1 : 2; request.zipCode = this.zipCode; request.logInTokenID = this.loginTokenID ?? ""; if (this.registerd_data != null) { - request.searchType = this.registerd_data.searchType ?? 1; - request.patientID = this.registerd_data.patientID ?? 0; + request.searchType = this.registerd_data.searchType != null + ? this.registerd_data.searchType + : 1; + request.patientID = this.registerd_data.patientID != null + ? this.registerd_data.patientID + : 0; request.patientIdentificationID = request.nationalID = - this.registerd_data.patientIdentificationID ?? '0'; + this.registerd_data.patientIdentificationID != null + ? this.registerd_data.patientIdentificationID + : '0'; request.isRegister = this.registerd_data.isRegister; } else { - request.searchType = request.searchType ?? 2; - request.patientID = this.user.patientID ?? 0; - request.nationalID = request.nationalID ?? '0'; - request.patientIdentificationID = request.patientIdentificationID ?? '0'; + request.searchType = request.searchType != null ? request.searchType : 2; + request.patientID = this.user.patientID != null ? this.user.patientID : 0; + request.nationalID = + request.nationalID != null ? request.nationalID : '0'; + request.patientIdentificationID = request.patientIdentificationID != null + ? request.patientIdentificationID + : '0'; request.isRegister = false; } request.deviceTypeID = request.searchType; @@ -482,15 +506,15 @@ class _ConfirmLogin extends State { } checkActivationCode({value}) async { - SMSOTP.showLoadingDialog(context, true); + GifLoaderDialogUtils.showMyDialog(context); var request = this.getCommonRequest().toJson(); - this - .authService + authService .checkActivationCode(request, value) .then((result) => { if (result is Map) { + result = CheckActivationCode.fromJson(result), if (this.registerd_data != null && this.registerd_data.isRegister == true) @@ -501,25 +525,20 @@ class _ConfirmLogin extends State { } else { - this.userData = result - .list, //AuthenticatedUser.fromJson(result['List'][0]), - this.sharedPref.setObject(USER_PROFILE, result.list), - this.loginTokenID = result.logInTokenID, - this - .sharedPref - .setObject(LOGIN_TOKEN_ID, result.logInTokenID), - this - .sharedPref - .setString(TOKEN, result.authenticationTokenID), - this.checkIfUserAgreedBefore(result), - // Navigator.of(context).pop(), - SMSOTP.showLoadingDialog(context, false), + result.list.isFamily = false, + userData = result.list, + sharedPref.setObject(MAIN_USER, result.list), + sharedPref.setObject(USER_PROFILE, result.list), + loginTokenID = result.logInTokenID, + sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), + sharedPref.setString(TOKEN, result.authenticationTokenID), + checkIfUserAgreedBefore(result), } } else { // Navigator.of(context).pop(), - SMSOTP.showLoadingDialog(context, false), + GifLoaderDialogUtils.hideDialog(context), Future.delayed(Duration(seconds: 1), () { AppToast.showErrorToast(message: result); }), @@ -527,14 +546,13 @@ class _ConfirmLogin extends State { }) .catchError((err) { print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); - ; + GifLoaderDialogUtils.hideDialog(context); + }); } checkIfUserAgreedBefore(CheckActivationCode result) { print(result); - if (result.isNeedUserAgreement) { + if (result.isNeedUserAgreement == true) { //move to agreement page. } else { insertIMEI(); @@ -551,7 +569,10 @@ class _ConfirmLogin extends State { } goToHome() { - // authService.insertDeviceImei().then((value) => print(value)); + + authenticatedUserObject.isLogin = true; + appointmentRateViewModel.isLogin = true; + projectViewModel.isLogin = true; Navigator.of(context).pushNamed(HOME); } @@ -649,7 +670,7 @@ class _ConfirmLogin extends State { return InkWell( onTap: () => {authenticateUser(3, BiometricType.face.index)}, child: RoundedContainer( - backgroundColor: BiometricType.face.index == 1 + backgroundColor: checkIfBiometricAvailable(BiometricType.face) ? Colors.white : Colors.white.withOpacity(.7), borderColor: Colors.grey, @@ -732,6 +753,16 @@ class _ConfirmLogin extends State { } } + bool checkIfBiometricAvailable(BiometricType biometricType) { + bool isAvailable = false; + if(_availableBiometrics != null) { + for (var i = 0; i < _availableBiometrics.length; i++) { + if (biometricType == _availableBiometrics[i]) isAvailable = true; + } + } + return isAvailable; + } + formatDate(date) { return DateFormat('MMM dd, yyy, kk:mm').format(date); } diff --git a/lib/pages/login/forgot-password.dart b/lib/pages/login/forgot-password.dart index bbdbb1ae..cb2604b1 100644 --- a/lib/pages/login/forgot-password.dart +++ b/lib/pages/login/forgot-password.dart @@ -1,8 +1,13 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/alert_dialog.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/otp/sms-popup.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -14,12 +19,15 @@ class ForgotPassword extends StatefulWidget { class _ForgotPassword extends State { String selectedType = 'Saudi Arabia'; + String countryCode = '966'; final TextEditingController nationalIDorFile = null; - final TextEditingController mobileNo = null; + String mobileNo; + var con; @override Widget build(BuildContext context) { + con = context; return AppScaffold( - appBarTitle: TranslationBase.of(context).forgotPassword, + appBarTitle: TranslationBase.of(context).forgotFileNoTitle, isShowAppBar: true, isShowDecPage: false, body: SingleChildScrollView( @@ -32,8 +40,9 @@ class _ForgotPassword extends State { flex: 1, child: AppText( TranslationBase.of(context).forgotDesc, - fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, + fontSize: SizeConfig.textMultiplier * 3, + textAlign: TextAlign.start, + marginTop: 10.0, )), Expanded( flex: 2, @@ -42,33 +51,11 @@ class _ForgotPassword extends State { children: [ Row( mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( - // add Expanded to have your dropdown button fill remaining space - child: DropdownButtonHideUnderline( - child: DropdownButton( - isExpanded: true, - value: selectedType, - iconSize: 40, - elevation: 16, - onChanged: (String newValue) => { - setState(() { - selectedType = newValue; - }) - }, - items: [ - 'Saudi Arabia', - 'Dubai', - ].map>( - (String value) { - return DropdownMenuItem( - value: value, - child: Text(value), - ); - }).toList()))), - ], + children: [], ), - MobileNo(controller: mobileNo), + MobileNo( + onNumberChange: (value) => {mobileNo = value}, + onCountryChange: (value) => countryCode = value), ], ), ), @@ -80,12 +67,13 @@ class _ForgotPassword extends State { Row( children: [ Expanded( - child: RaisedButton( - color: Colors.grey, - textColor: Colors.white, - child: Text(TranslationBase.of(context).submit), - onPressed: () => {}, - )) + child: DefaultButton( + TranslationBase.of(context).submit, + () { + sendPatientIDBySMS(); +// print(mobileNo.text); + }, + )), ], ), ], @@ -93,4 +81,66 @@ class _ForgotPassword extends State { ]), ))); } + + sendPatientIDBySMS() { + GifLoaderDialogUtils.showMyDialog(context); + final authService = new AuthProvider(); + authService.sendPatientIDSMS(mobileNo, context).then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + this.startSMSService(mobileNo, res['LogInTokenID']); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + AppToast.showErrorToast(message: err); + print(err); + }); + } + + startSMSService(mobile, token) { + new SMSOTP( + context, + 1, + mobile, + (value) => {this.checkActivationCode(value, token, int.parse(mobileNo))}, + () => { + print('Faild..'), + }, + ).displayDialog(context); + } + + checkActivationCode(value, token, mobileNo) { + GifLoaderDialogUtils.showMyDialog(context); + final authService = new AuthProvider(); + var request = { + "LogInTokenID": token, + "PatientOutSA": countryCode == '966' ? 0 : 1, + "PatientMobileNumber": mobileNo, + "ZipCode": countryCode, + "activationCode": value, + "isRegister": false, + "IsSilentLogin": false + }; + authService.forgotPasswordActivation(request, value).then((res) { + if (res is String) { + GifLoaderDialogUtils.hideDialog(con); + Future.delayed(Duration(seconds: 1), () { + AppToast.showErrorToast(message: res); + }); + } else { + GifLoaderDialogUtils.hideDialog(con); + Navigator.of(context).pop(); + AlertDialogBox( + context: con, + confirmMessage: res['ReturnMessage'], + okText: TranslationBase.of(con).ok, + okFunction: () { + AlertDialogBox.closeAlertDialog(con); + Navigator.of(context).pop(); + }).showAlertDialog(context); + } + }); + } } diff --git a/lib/pages/login/login-type.dart b/lib/pages/login/login-type.dart index 8a5087a5..dcd58b9d 100644 --- a/lib/pages/login/login-type.dart +++ b/lib/pages/login/login-type.dart @@ -1,4 +1,5 @@ import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; @@ -6,7 +7,6 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; class LoginType extends StatelessWidget { static int loginType = 0; @@ -14,7 +14,7 @@ class LoginType extends StatelessWidget { @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle: TranslationBase.of(context).welcome, + appBarTitle: TranslationBase.of(context).login, isShowAppBar: true, isShowDecPage: false, body: Padding( @@ -28,14 +28,16 @@ class LoginType extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, + 'assets/images/DQ/dq_logo_icon.png', + height: 90, + width: 90, ), AppText( TranslationBase.of(context).logintypeRadio, fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, + textAlign: TextAlign.start, + marginBottom: 20.0, + marginTop: 20.0, ), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -71,10 +73,11 @@ class LoginType extends StatelessWidget { ), AppText( TranslationBase.of(context) - .nationalID, + .idNo, fontSize: SizeConfig.textMultiplier * 2, + fontWeight: FontWeight.bold, ) ], ), @@ -112,12 +115,14 @@ class LoginType extends StatelessWidget { fontSize: SizeConfig.textMultiplier * 2, + fontWeight: FontWeight.bold, ) ], ), )))) ], ), + SizedBox(height: 25,), Divider( color: Colors.grey, height: 2, @@ -131,7 +136,7 @@ class LoginType extends StatelessWidget { child: AppText( TranslationBase.of(context).forgotPassword, fontSize: SizeConfig.textMultiplier * 2.5, - margin: 10, + marginTop: 20.0, underline: true))) ]), ), @@ -140,8 +145,14 @@ class LoginType extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ + Divider( + color: Colors.grey, + height: 2, + ), + SizedBox(height: 10,), Row( children: [ + Expanded( child: DefaultButton( TranslationBase.of(context).registerNow, @@ -150,7 +161,7 @@ class LoginType extends StatelessWidget { REGISTER, ) }, - )) + )), ], ), ], diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index f2ece252..700a0d0c 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/viewModels/appointment_rate_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart'; @@ -11,9 +12,11 @@ import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doct import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -22,7 +25,9 @@ import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart'; + class Login extends StatefulWidget { @override _Login createState() => _Login(); @@ -41,8 +46,10 @@ class _Login extends State { AppointmentRateViewModel appointmentRateViewModel = locator(); - AuthenticatedUserObject authenticatedUserObject = locator(); + AuthenticatedUserObject authenticatedUserObject = + locator(); + ProjectViewModel projectViewModel; @override void initState() { @@ -58,74 +65,83 @@ class _Login extends State { @override Widget build(BuildContext context) { + projectViewModel = Provider.of(context); return AppScaffold( - appBarTitle: TranslationBase.of(context).login, - isShowAppBar: true, - isShowDecPage: false, - body: SingleChildScrollView( - child: Container( - padding: - EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), - height: SizeConfig.realScreenHeight * .9, - width: SizeConfig.realScreenWidth, - child: Column(children: [ - Expanded( - flex: 2, - child: AppText( - TranslationBase.of(context).enterNationalId, - fontSize: SizeConfig.textMultiplier * 3.5, - textAlign: TextAlign.left, - )), - Expanded( - flex: 3, - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - MobileNo( - onNumberChange: (value) => - {mobileNo = value, validateForm()}, - onCountryChange: (value) => countryCode = value), - Container( - child: TextFields( - fontWeight: FontWeight.normal, - controller: nationalIDorFile, - onChanged: (value) => {validateForm()}, - prefixIcon: Icon( - loginType == 1 - ? Icons.chrome_reader_mode - : Icons.receipt, - color: Colors.red), - padding: EdgeInsets.only( - top: 20, bottom: 20, left: 10, right: 10), - hintText: loginType == 1 - ? TranslationBase.of(context).nationalID - : TranslationBase.of(context).fileNo, - )) - ], - ), - ), - Expanded( - flex: 3, - child: Column( - mainAxisAlignment: MainAxisAlignment.end, + appBarTitle: TranslationBase.of(context).login, + isShowAppBar: true, + isShowDecPage: false, + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), + height: SizeConfig.realScreenHeight * .9, + width: SizeConfig.realScreenWidth, + child: Column( + children: [ + Expanded( + flex: 2, + child: AppText( + TranslationBase.of(context).enterNationalId, + fontSize: SizeConfig.textMultiplier * 3.5, + textAlign: TextAlign.start, + )), + Expanded( + flex: 3, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + MobileNo( + onNumberChange: (value) => + {mobileNo = value, validateForm()}, + onCountryChange: (value) => countryCode = value), + Container( + child: TextFields( + fontWeight: FontWeight.normal, + controller: nationalIDorFile, + onChanged: (value) => {validateForm()}, + prefixIcon: Icon( + loginType == 1 + ? Icons.chrome_reader_mode + : Icons.receipt, + color: Color(0xFF40ACC9)), + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + hintText: loginType == 1 + ? TranslationBase.of(context).nationalID + : TranslationBase.of(context).fileNo, + )) + ], + ), + ), + Expanded( + flex: 3, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Divider( + color: Colors.grey, + height: 2, + ), + SizedBox(height: 10,), + Row( children: [ - Row( - children: [ - Expanded( - child: DefaultButton( - TranslationBase.of(context).login, - () => {this.startLogin()}, - color: isButtonDisabled == true - ? Colors.grey - : Colors.grey[900], - textColor: Colors.white, - )) - ], - ), + Expanded( + child: DefaultButton( + TranslationBase.of(context).login, + () => {this.startLogin()}, + color: isButtonDisabled == true + ? Colors.grey + : Colors.grey[900], + textColor: Colors.white, + )) ], - )) - ]), - ))); + ), + ], + )) + ], + ), + ), + ), + ); } startLogin() { @@ -136,8 +152,10 @@ class _Login extends State { void validateForm() { //TODO fix login - if (util.validateIDBox(nationalIDorFile.text, loginType) == true && - mobileNo.length >= 9 && + if (util.validateIDBox(nationalIDorFile.text, loginType) == + true /*&& + mobileNo.length >= 9 */ + && util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) { setState(() { isButtonDisabled = false; @@ -150,7 +168,7 @@ class _Login extends State { } checkUserAuthentication() { - // showLoader(true); + // showLoader(true); var request = CheckPatientAuthenticationReq(); request.isRegister = false; request.patientMobileNumber = int.parse(mobileNo); @@ -165,22 +183,41 @@ class _Login extends State { request.patientID = int.parse(nationalIDorFile.text); } sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); - authService.checkPatientAuthentication(request).then((value) => { - //showLoader(false), - if (value['isSMSSent']) - { - sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), - sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), - Navigator.of(context).pushNamed(CONFIRM_LOGIN) - } - else - { - if (value['IsAuthenticated']) {this.checkActivationCode()} - } - }).catchError((err) { - print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + GifLoaderDialogUtils.showMyDialog(context); + authService + .checkPatientAuthentication(request) + .then((value) => { + //showLoader(false), + if (value['isSMSSent']) + { + sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), + sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), + GifLoaderDialogUtils.hideDialog(context), + Navigator.of(context).pushNamed(CONFIRM_LOGIN) + } + else + { + if (value['IsAuthenticated']) {this.checkActivationCode()} + } + }) + .catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: err, + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () => { + ConfirmDialog.closeAlertDialog(context), + Navigator.of(context).pushNamed( + REGISTER, + ), + + }, + cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)}); + dialog.showAlertDialog(context); + + }); // SMSOTP.showLoadingDialog(context, false), } @@ -191,7 +228,7 @@ class _Login extends State { // request.isSilentLogin = code != null ? false : true; if (code == null) //showLoader(true); - request['PatientMobileNumber'] = int.parse(mobileNo); + request['PatientMobileNumber'] = int.parse(mobileNo); request['ZipCode'] = countryCode; request['SearchType'] = loginType; request['LoginType'] = loginType; @@ -205,47 +242,50 @@ class _Login extends State { // request.isRegister = false; this.authService.checkActivationCode(request, code).then((result) => { result = CheckActivationCode.fromJson(result), - authenticatedUserObject.getUser(), - this.sharedPref.setObject(USER_PROFILE, result.list), + result.list.isFamily =false, + this.sharedPref.setObject(USER_PROFILE, result.list), + this.sharedPref.setObject(MAIN_USER, result.list), this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), this.sharedPref.setString(TOKEN, result.authenticationTokenID), - //this.checkIfUserAgreedBefore(result), - Navigator.of(context).pushNamed( - HOME, - ), - //showLoader(false), + authenticatedUserObject.getUser(), + // authenticatedUserObject.user = AuthenticatedUser.fromJson(result.list), + authenticatedUserObject.isLogin = true, + appointmentRateViewModel.isLogin = true, + projectViewModel.isLogin = true, appointmentRateViewModel .getIsLastAppointmentRatedList() .then((value) => { + GifLoaderDialogUtils.hideDialog(context), if (appointmentRateViewModel.isHaveAppointmentNotRate) { - Navigator.pushReplacement( - context, - FadePage( - page: RateAppointmentDoctor(), - ), - ) + Navigator.pushAndRemoveUntil( + context, + FadePage( + page: RateAppointmentDoctor(), + ), + (r) => false) } else { - Navigator.pushReplacement( - context, - FadePage( - page: LandingPage(), - ), - ) + Navigator.pushAndRemoveUntil( + context, + FadePage( + page: LandingPage(), + ), + (r) => false) } - }).catchError((err) { - print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) + }) + .catchError((err) { + print(err); + GifLoaderDialogUtils.hideDialog(context); + }), // SMSOTP.showLoadingDialog(context, false), }); } - // showLoader(bool isTrue) { - // setState(() { - // isLoading = isTrue; - // }); - // } +// showLoader(bool isTrue) { +// setState(() { +// isLoading = isTrue; +// }); +// } } diff --git a/lib/pages/login/register-info.dart b/lib/pages/login/register-info.dart index e94c1af6..467068cc 100644 --- a/lib/pages/login/register-info.dart +++ b/lib/pages/login/register-info.dart @@ -1,21 +1,25 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart'; import 'package:diplomaticquarterapp/models/Authentication/register_info_response.dart'; +import 'package:diplomaticquarterapp/models/Authentication/register_user_requet.dart'; import 'package:diplomaticquarterapp/pages/login/login-type.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; -import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; -import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:hijri/hijri_calendar.dart'; +import 'package:intl/intl.dart'; class RegisterInfo extends StatefulWidget { @override @@ -28,9 +32,25 @@ class _RegisterInfo extends State { RegisterInfoResponse registerInfo; bool isLoading; int page = 1; + final List locationList = [ + new Location(name: 'KSA', value: '1'), + new Location(name: 'Dubai', value: '2'), + ]; + String language = '1'; + var registerd_data; + final List languageList = [ + new Language(name: 'English', value: '2'), + new Language(name: 'Arabic', value: '1'), + ]; + String email = ''; + + String location = '1'; + @override void initState() { - getRegisterInfo(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + getRegisterInfo(); + }); super.initState(); } @@ -41,24 +61,19 @@ class _RegisterInfo extends State { isShowAppBar: true, isShowDecPage: false, body: SingleChildScrollView( - child: Container( - padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), - height: SizeConfig.realScreenHeight * .9, - width: SizeConfig.realScreenWidth, + padding: EdgeInsets.all(20), child: Column(children: [ - Expanded( - flex: 1, - child: AppText( - TranslationBase.of(context).patientInfo, - fontSize: SizeConfig.textMultiplier * 3, - textAlign: TextAlign.left, - )), + AppText( + TranslationBase.of(context).patientInfo, + fontSize: SizeConfig.textMultiplier * 3, + textAlign: TextAlign.left, + ), registerInfo != null && page == 1 ? Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - AppText('National ID'), + AppText(TranslationBase.of(context).nationalID), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( @@ -69,18 +84,40 @@ class _RegisterInfo extends State { top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), - AppText('Name'), + AppText(TranslationBase.of(context).firstName), + Container( + margin: EdgeInsets.only(bottom: 10), + child: TextFields( + hintText: registerInfo.firstNameEn == '-' + ? registerInfo.firstNameAr + : registerInfo.firstNameEn, + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + readOnly: true, + )), + AppText(TranslationBase.of(context).middleName), + Container( + margin: EdgeInsets.only(bottom: 10), + child: TextFields( + hintText: registerInfo.secondNameEn == '-' + ? registerInfo.secondNameAr + : registerInfo.secondNameEn, + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + readOnly: true, + )), + AppText(TranslationBase.of(context).lastName), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( - hintText: registerInfo.firstNameEn + - ' ' + - registerInfo.lastNameEn, + hintText: registerInfo.lastNameEn == '-' + ? registerInfo.lastNameAr + : registerInfo.lastNameEn, padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), - AppText('Gender'), + AppText(TranslationBase.of(context).gender), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( @@ -93,7 +130,16 @@ class _RegisterInfo extends State { top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), - AppText('Nationality'), + AppText(TranslationBase.of(context).maritalStatus), + Container( + margin: EdgeInsets.only(bottom: 10), + child: TextFields( + hintText: registerInfo.maritalStatus, + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + readOnly: true, + )), + AppText(TranslationBase.of(context).nationality), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( @@ -102,7 +148,17 @@ class _RegisterInfo extends State { top: 20, bottom: 20, left: 10, right: 10), readOnly: true, )), - AppText('Date of Birth'), + AppText(TranslationBase.of(context).mobileNumber), + Container( + margin: EdgeInsets.only(bottom: 10), + child: TextFields( + hintText: + registerd_data.patientMobileNumber.toString(), + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + readOnly: true, + )), + AppText(TranslationBase.of(context).dob), Container( margin: EdgeInsets.only(bottom: 10), child: TextFields( @@ -115,41 +171,227 @@ class _RegisterInfo extends State { ) : registerInfo != null && page == 2 ? Column( - children: [], + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(TranslationBase.of(context).language, + textAlign: TextAlign.start), + Container( + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(10)), + child: DropdownButtonHideUnderline( + child: DropdownButton( + isExpanded: true, + value: language, + iconSize: 40, + elevation: 16, + onChanged: (value) => { + setState(() { + language = value; + }) + }, + items: languageList + .map>( + (Language value) { + return DropdownMenuItem( + value: value.value, + child: Text(value.name), + ); + }).toList()))), + AppText(TranslationBase.of(context).location), + Container( + padding: EdgeInsets.all(10), + decoration: BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.grey), + borderRadius: BorderRadius.circular(10)), + child: DropdownButtonHideUnderline( + child: DropdownButton( + isExpanded: true, + value: location, + iconSize: 40, + elevation: 16, + onChanged: (value) => { + setState(() { + location = value; + }) + }, + items: locationList + .map>( + (Location value) { + return DropdownMenuItem( + value: value.value, + child: Text(value.name), + ); + }).toList()))), + AppText(TranslationBase.of(context).email), + Container( + margin: EdgeInsets.only(bottom: 10), + child: TextFields( + onChanged: (value) => { + setState(() { + email = value; + }) + }, + padding: EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + )), + ], ) : SizedBox(), - Expanded( - flex: 2, - child: Column( - mainAxisAlignment: MainAxisAlignment.end, + Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( children: [ - Row( - children: [ - Expanded( - child: DefaultButton( - TranslationBase.of(context).next, - () => {nextPage()}, - textColor: Colors.white, - )) - ], - ), + Expanded( + child: DefaultButton( + page == 1 + ? TranslationBase.of(context).next + : TranslationBase.of(context).register, + () => {nextPage()}, + textColor: Colors.white, + color: this.isValid() == false && page == 2 + ? Colors.grey + : Colors.black, + )) ], - )) + ), + ], + ) ]), - ))); + )); } nextPage() { - setState(() { - page++; + if (page == 1) { + setState(() { + page++; + }); + } else { + registerNow(); + } + } + + registerNow() { + dynamic request = getTempUserRequest(); + GifLoaderDialogUtils.showMyDialog(context); + this.authService.registerUser(request).then((result) => { + GifLoaderDialogUtils.hideDialog(context), + // userData = result.list; + //AuthenticatedUser.fromJson(result['List'][0]), + if(result is String){ + new ConfirmDialog( + context: context, + confirmMessage: result, + okText: TranslationBase.of(context).ok, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () => { + ConfirmDialog.closeAlertDialog(context) + }, + cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)}) + .showAlertDialog(context) + + }else + { + result.list.isFamily = false, + sharedPref.setObject(USER_PROFILE, result.list), + this.sharedPref.setObject(MAIN_USER, result.list), + sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), + sharedPref.setString(TOKEN, result.authenticationTokenID), + Navigator.of(context).pushNamed(HOME) + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: err, + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () => { + ConfirmDialog.closeAlertDialog(context) + }, + cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)}); + dialog.showAlertDialog(context); + }); } - registerNow() {} getRegisterInfo() async { - registerInfo = + var data = RegisterInfoResponse.fromJson(await sharedPref.getObject(NHIC_DATA)); + if (await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN) != null) { + var data2 = CheckPatientAuthenticationReq.fromJson( + await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN)); + + setState(() { + this.registerInfo = data; + + this.registerd_data = data2; + }); + } + } + + getTempUserRequest() { + DateFormat dateFormat = DateFormat("mm/dd/yyyy"); + print(dateFormat.parse(registerInfo.dateOfBirth)); + var hDate = + new HijriCalendar.fromDate(dateFormat.parse(registerInfo.dateOfBirth)); + var date = hDate.toString(); + return { + "Patientobject": { + "TempValue": true, + "PatientIdentificationType": 1, + "PatientIdentificationNo": registerInfo.idNumber, + "MobileNumber": registerd_data.patientMobileNumber, + "PatientOutSA": registerd_data.zipCode == '966' ? 0 : 1, + "FirstNameN":registerInfo.firstNameAr =='-' ?"": registerInfo.firstNameAr, + "FirstName": registerInfo.firstNameEn =='-' ?"":registerInfo.firstNameEn, + "MiddleNameN":registerInfo.secondNameAr =='-' ? "" : registerInfo.secondNameAr, + "MiddleName":registerInfo.secondNameEn == '-' ? "": registerInfo.secondNameEn, + "LastNameN": registerInfo.lastNameAr =='-'? "" : registerInfo.lastNameAr, + "LastName": registerInfo.lastNameEn =='-' ? "": registerInfo.lastNameEn, + "StrDateofBirth": registerInfo.dateOfBirth, + "DateofBirth": DateUtil.convertISODateToJsonDate( + registerInfo.dateOfBirth.replaceAll('/', '-')), + "Gender": registerInfo.gender == 'M' ? 1 : 2, + "NationalityID": registerInfo.nationality, + "DateofBirthN": date, + "EmailAddress": email, + "SourceType": location, + "PreferredLanguage": registerd_data.languageID.toString(), + "Marital": registerInfo.maritalStatusCode == 'U' + ? '0' + : registerInfo.maritalStatusCode == 'M' + ? '1' + : '2', + }, + "PatientIdentificationID": registerInfo.idNumber, + "PatientMobileNumber": registerd_data.patientMobileNumber, + }; + } - print(await sharedPref.getObject(NHIC_DATA)); + bool isValid() { + if (location != null || + language != null || + Utils.validEmail(email) == true) { + return true; + } else { + return false; + } } } + +class Language { + final String name; + final String value; + Language({this.name, this.value}); +} + +class Location { + final String name; + final String value; + Location({this.name, this.value}); +} diff --git a/lib/pages/login/register.dart b/lib/pages/login/register.dart index 3ee13a4c..ea47a4fa 100644 --- a/lib/pages/login/register.dart +++ b/lib/pages/login/register.dart @@ -8,11 +8,14 @@ import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_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:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/alert_dialog.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -46,9 +49,7 @@ class _Register extends State { appBarTitle: TranslationBase.of(context).register, isShowAppBar: true, isShowDecPage: false, - body: isLoading == true - ? AppCircularProgressIndicator() - : SingleChildScrollView( + body: SingleChildScrollView( child: Container( padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), @@ -76,7 +77,7 @@ class _Register extends State { controller: nationalIDorFile, onChanged: (value) => validateForm(), prefixIcon: - Icon(Icons.chrome_reader_mode, color: Colors.red), + Icon(Icons.chrome_reader_mode, color: Color(0xFF40ACC9)), padding: EdgeInsets.only( top: 20, bottom: 20, left: 10, right: 10), hintText: TranslationBase.of(context).nationalID, @@ -120,8 +121,12 @@ class _Register extends State { ), ], ), - Row(children: [ - Expanded( + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + width: SizeConfig.realScreenWidth * .9, + height:60, child: isHijri == 1 ? TextFields( onChanged: (value) => {dob = value}, @@ -129,6 +134,11 @@ class _Register extends State { prefixIcon: Icon(Icons.date_range), ) : RaisedButton.icon( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15.0), + + ), + color:Colors.white, onPressed: () => { if (isHijri != null) _selectDate(context) @@ -147,6 +157,11 @@ class _Register extends State { child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ + Divider( + color: Colors.grey, + height: 2, + ), + SizedBox(height: 10,), Row( children: [ Expanded( @@ -196,11 +211,28 @@ class _Register extends State { } checkPatientForRegisteration(request) { - showLoader(true); + GifLoaderDialogUtils.showMyDialog(context); this .authService .checkPatientForRegisteration(request) - .then((response) => {checkUserStatus(response, request)}); + .then((response) => {checkUserStatus(response, request)}).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + ConfirmDialog dialog = new ConfirmDialog( + context: context, + confirmMessage: err, + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel_nocaps, + okFunction: () => { + ConfirmDialog.closeAlertDialog(context), + Navigator.of(context).pushNamed( + REGISTER, + ), + + }, + cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)}); + dialog.showAlertDialog(context); + + }); } void validateForm() { @@ -219,12 +251,20 @@ class _Register extends State { } checkUserStatus(response, CheckPatientForRegistration request) async { - showLoader(false); + GifLoaderDialogUtils.hideDialog(context); if (response is Map) { var nRequest = request.toJson(); nRequest['LogInTokenID'] = response['LogInTokenID']; if (response['hasFile'] == true) { - AppToast.showErrorToast(message: response['ErrorEndUserMessage']); + // AppToast.showErrorToast(message: response['ErrorEndUserMessage']); + AlertDialogBox( + context: context, + confirmMessage: response['ErrorEndUserMessage'], + okText: TranslationBase.of(context).ok, + okFunction: () { + AlertDialogBox.closeAlertDialog(context); + Navigator.of(context).pop(); + }).showAlertDialog(context); } else { nRequest['forRegister'] = true; nRequest['isRegister'] = true; @@ -236,7 +276,15 @@ class _Register extends State { } } else { // if (response['ErrorCode'] == '-986') { - AppToast.showErrorToast(message: response); + //AppToast.showErrorToast(message: response); + AlertDialogBox( + context: context, + confirmMessage: response, + okText: TranslationBase.of(context).ok, + okFunction: () { + AlertDialogBox.closeAlertDialog(context); + Navigator.of(context).pop(); + }).showAlertDialog(context); //} } } diff --git a/lib/pages/login/welcome.dart b/lib/pages/login/welcome.dart index be406a55..419df302 100644 --- a/lib/pages/login/welcome.dart +++ b/lib/pages/login/welcome.dart @@ -1,15 +1,10 @@ -import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; -import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; class WelcomeLogin extends StatefulWidget { @override @@ -18,6 +13,7 @@ class WelcomeLogin extends StatefulWidget { class _WelcomeLogin extends State { bool isLoading = true; + @override void initState() { isLoading = true; @@ -40,25 +36,23 @@ class _WelcomeLogin extends State { mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset( - 'assets/images/habib-logo.png', - height: 80, - width: 80, - ), + Image.asset('assets/images/DQ/dq_logo_icon.png', + height: 90, width: 90), Text( TranslationBase.of(context).welcome, - style: TextStyle(fontSize: 30), - textAlign: TextAlign.left, + style: TextStyle( + fontSize: 30, fontWeight: FontWeight.bold), + textAlign: TextAlign.start, ), Text( TranslationBase.of(context).welcomeText, style: TextStyle(fontSize: 24), - textAlign: TextAlign.left, + textAlign: TextAlign.start, ), Text( TranslationBase.of(context).welcomeText2, style: TextStyle(fontSize: 24), - textAlign: TextAlign.left, + textAlign: TextAlign.start, ), SizedBox( height: SizeConfig.realScreenHeight * .15, @@ -81,7 +75,7 @@ class _WelcomeLogin extends State { LOGIN_TYPE, ), }, - color: Colors.red[900], + color: Color(0xFF40ACC9), textColor: Colors.white, )) ], diff --git a/lib/pages/medical/allergies_page.dart b/lib/pages/medical/allergies_page.dart index ea063e19..7fe30a8a 100644 --- a/lib/pages/medical/allergies_page.dart +++ b/lib/pages/medical/allergies_page.dart @@ -15,6 +15,7 @@ class AllergiesPage extends StatelessWidget { isShowAppBar: true, appBarTitle: TranslationBase.of(context).allergies, baseViewModel: model, + description: TranslationBase.of(context).infoAllergies, body: ListView.builder( itemCount: model.allergies.length, itemBuilder: (context, index) => Container( diff --git a/lib/pages/medical/balance/advance_payment_page.dart b/lib/pages/medical/balance/advance_payment_page.dart index 02d08682..f19b03ed 100644 --- a/lib/pages/medical/balance/advance_payment_page.dart +++ b/lib/pages/medical/balance/advance_payment_page.dart @@ -331,6 +331,7 @@ class _AdvancePaymentPageState extends State { void confirmSelectFamilyDialog( List getAllSharedRecordsByStatusList) { + if(getAllSharedRecordsByStatusList.isNotEmpty) showDialog( context: context, child: SelectPatientFamilyDialog( diff --git a/lib/pages/medical/balance/confirm_payment_page.dart b/lib/pages/medical/balance/confirm_payment_page.dart index 8847aaa1..dbc2537f 100644 --- a/lib/pages/medical/balance/confirm_payment_page.dart +++ b/lib/pages/medical/balance/confirm_payment_page.dart @@ -10,6 +10,7 @@ import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.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:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; @@ -30,6 +31,7 @@ class ConfirmPaymentPage extends StatelessWidget { MyInAppBrowser browser; AuthenticatedUser authenticatedUser; AppSharedPreferences sharedPref = AppSharedPreferences(); + String transID = ""; ConfirmPaymentPage( {this.advanceModel, @@ -54,7 +56,7 @@ class ConfirmPaymentPage extends StatelessWidget { new AppoitmentAllHistoryResultList(); appo.projectID = patientInfoAndMobileNumber.projectID; openPayment(selectedPaymentMethod, authenticatedUser, - double.parse(advanceModel.amount), appo); + double.parse(advanceModel.amount), null); } }); } @@ -205,13 +207,15 @@ class ConfirmPaymentPage extends StatelessWidget { appo: appo, onLoadStartCallback: onBrowserLoadStart); + transID = Utils.getAdvancePaymentTransID( + advanceModel.hospitalsModel.iD, int.parse(advanceModel.fileNumber)); + browser.openPaymentBrowser( amount, "Advance Payment", - Utils.getAdvancePaymentTransID( - authenticatedUser.projectID, authenticatedUser.patientID), - appo.projectID.toString(), - authenticatedUser.emailAddress, + transID, + advanceModel.hospitalsModel.iD.toString(), + advanceModel.email, paymentMethod, authenticatedUser, browser); @@ -244,59 +248,64 @@ class ConfirmPaymentPage extends StatelessWidget { } checkPaymentStatus(AppoitmentAllHistoryResultList appo) { + GifLoaderDialogUtils.showMyDialog(AppGlobal.context); DoctorsListService service = new DoctorsListService(); - service - .checkPaymentStatus( - Utils.getAdvancePaymentTransID( - appo.projectID, authenticatedUser.patientID), - AppGlobal.context) - .then((res) { + service.checkPaymentStatus(transID, AppGlobal.context).then((res) { print("Printing Payment Status Reponse!!!!"); print(res); String paymentInfo = res['Response_Message']; if (paymentInfo == 'Success') { createAdvancePayment(res, appo); } else { + GifLoaderDialogUtils.hideDialog(AppGlobal.context); AppToast.showErrorToast(message: res['Response_Message']); } }).catchError((err) { + GifLoaderDialogUtils.hideDialog(AppGlobal.context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); String paymentReference = res['Fort_id'].toString(); - service - .createAdvancePayment(appo, res['Amount'], res['Fort_id'], - res['PaymentMethod'], AppGlobal.context) + service.HIS_createAdvancePayment( + appo, + advanceModel.hospitalsModel.iD.toString(), + res['Amount'], + res['Fort_id'], + res['PaymentMethod'], + AppGlobal.context) .then((res) { print(res['OnlineCheckInAppointments'][0]['AdvanceNumber']); addAdvancedNumberRequest( res['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), paymentReference, - appo.appointmentNo.toString(), + 0, appo); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(AppGlobal.context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } addAdvancedNumberRequest(String advanceNumber, String paymentReference, - String appointmentID, AppoitmentAllHistoryResultList appo) { + dynamic appointmentID, AppoitmentAllHistoryResultList appo) { DoctorsListService service = new DoctorsListService(); service .addAdvancedNumberRequest( advanceNumber, paymentReference, appointmentID, AppGlobal.context) .then((res) { print(res); + GifLoaderDialogUtils.hideDialog(AppGlobal.context); navigateToHome(AppGlobal.context); }).catchError((err) { + GifLoaderDialogUtils.hideDialog(AppGlobal.context); + AppToast.showErrorToast(message: err); print(err); - }).showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); + }); } Future navigateToHome(context) async { diff --git a/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart b/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart index 8dd2b29e..10d61f68 100644 --- a/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart +++ b/lib/pages/medical/balance/dialogs/ConfirmSMSDialog.dart @@ -7,12 +7,12 @@ import 'package:diplomaticquarterapp/core/model/my_balance/AdvanceModel.dart'; import 'package:diplomaticquarterapp/core/model/my_balance/patient_info_and_mobile_number.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/my_balance_view_model.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/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; class ConfirmSMSDialog extends StatefulWidget { final String phoneNumber; @@ -332,12 +332,11 @@ class _ConfirmSMSDialogState extends State { if (verifyAccountForm.currentState.validate()) { final activationCode = digit1.text + digit2.text + digit3.text + digit4.text; + GifLoaderDialogUtils.showMyDialog(AppGlobal.context); model .checkActivationCodeForAdvancePayment(activationCode: activationCode) - .then((value) {}) - .showProgressBar( - text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)) .then((value) { + GifLoaderDialogUtils.hideDialog(AppGlobal.context); Navigator.pop(context, true); }); } diff --git a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart index 17bee4b0..b004bc38 100644 --- a/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectBeneficiaryDialog.dart @@ -45,7 +45,7 @@ class _SelectBeneficiaryDialogState extends State { leading: Radio( value: BeneficiaryType.MyAccount, groupValue: beneficiaryType, - activeColor: Colors.red[800], + activeColor: Color(0xFF40ACC9), onChanged: (BeneficiaryType value) { setState(() { beneficiaryType = value; @@ -75,7 +75,7 @@ class _SelectBeneficiaryDialogState extends State { leading: Radio( value: BeneficiaryType.MyFamilyFiles, groupValue: beneficiaryType, - activeColor: Colors.red[800], + activeColor: Color(0xFF40ACC9), onChanged: (BeneficiaryType value) { setState(() { beneficiaryType = value; @@ -105,7 +105,7 @@ class _SelectBeneficiaryDialogState extends State { leading: Radio( value: BeneficiaryType.OtherAccount, groupValue: beneficiaryType, - activeColor: Colors.red[800], + activeColor: Color(0xFF40ACC9), onChanged: (BeneficiaryType value) { setState(() { beneficiaryType = value; diff --git a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart index 9a4a359d..42bd66b7 100644 --- a/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart +++ b/lib/pages/medical/balance/dialogs/SelectHospitalDialog.dart @@ -54,7 +54,7 @@ class _SelectHospitalDialogState extends State { leading: Radio( value: widget.hospitals[index], groupValue: widget.selectedHospital, - activeColor: Colors.red[800], + activeColor: Color(0xFF40ACC9), onChanged: (value) { setState(() { widget.selectedHospital = value; diff --git a/lib/pages/medical/doctor/doctor_home_page.dart b/lib/pages/medical/doctor/doctor_home_page.dart index d406b889..9687b931 100644 --- a/lib/pages/medical/doctor/doctor_home_page.dart +++ b/lib/pages/medical/doctor/doctor_home_page.dart @@ -22,7 +22,9 @@ class DoctorHomePage extends StatelessWidget { builder: (context, MyDoctorViewModel model, widget) => AppScaffold( baseViewModel: model, isShowAppBar: true, - appBarTitle: 'My Doctors', + appBarTitle: TranslationBase.of(context).myDoctor, + description: TranslationBase.of(context).infoMyDoctor, + infoList: TranslationBase.of(context).infoMyDoctorPoints, body: SingleChildScrollView( physics: BouncingScrollPhysics(), child: FractionallySizedBox( @@ -94,6 +96,7 @@ class DoctorHomePage extends StatelessWidget { nationalityFlagURL: doctor.nationalityFlagURL); return DoctorView( doctor: doctorList, + isLiveCareAppointment: false, ); }).toList(), diff --git a/lib/pages/medical/labs/labs_home_page.dart b/lib/pages/medical/labs/labs_home_page.dart index 995365d9..68dc180e 100644 --- a/lib/pages/medical/labs/labs_home_page.dart +++ b/lib/pages/medical/labs/labs_home_page.dart @@ -84,7 +84,7 @@ class LabsHomePage extends StatelessWidget { patientLabOrders: labOrder, ), ), - ), + ),isInOutPatient: labOrder.isInOutPatient, name: labOrder.doctorName, profileUrl: labOrder.doctorImageURL, subName: TranslationBase.of(context).billNo+' ${labOrder.invoiceNo}', diff --git a/lib/pages/medical/medical_profile_page.dart b/lib/pages/medical/medical_profile_page.dart index eaaf8d6d..6dabf9d3 100644 --- a/lib/pages/medical/medical_profile_page.dart +++ b/lib/pages/medical/medical_profile_page.dart @@ -1,8 +1,10 @@ import 'dart:math'; +import 'package:badges/badges.dart'; import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/medical_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart'; @@ -13,10 +15,13 @@ import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_h import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart'; +import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart'; import 'package:diplomaticquarterapp/widgets/data_display/medical/time_line_widget.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/alert_dialog.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/sliver_app_bar_delegate.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -25,6 +30,7 @@ import 'package:flutter/material.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_card_screen.dart'; import 'package:provider/provider.dart'; import '../../locator.dart'; +import '../../uitl/gif_loader_dialog_utils.dart'; import 'active_medications/ActiveMedicationsPage.dart'; import 'allergies_page.dart'; import 'ask_doctor/ask_doctor_home_page.dart'; @@ -43,9 +49,12 @@ class MedicalProfilePage extends StatefulWidget { } class _MedicalProfilePageState extends State { + var authProvider = new AuthProvider(); + @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); + var appoCountProvider = Provider.of(context); return BaseView( onModelReady: (model) => model.getAppointmentHistory(), builder: (_, model, widget) => AppScaffold( @@ -62,29 +71,21 @@ class _MedicalProfilePageState extends State { Container( width: double.infinity, height: 210, - decoration: BoxDecoration( - image: DecorationImage( - image: ExactAssetImage( - 'assets/images/timeline_bg.png'), - fit: BoxFit.cover), - ), child: Stack( children: [ Image.asset( 'assets/images/timeline_bg.png', fit: BoxFit.cover, width: double.infinity, + // color: Colors.black.withOpacity(0.0) ), - if (model.authenticatedUserObject.isLogin) + if (model.isLogin) ListView.builder( - itemBuilder: (context, index) => - TimeLineWidget( + itemBuilder: (context, index) => TimeLineWidget( isUp: index % 2 == 1, - appoitmentAllHistoryResul: model - .appoitmentAllHistoryResultList[index], + appoitmentAllHistoryResul: model.appoitmentAllHistoryResultList[index], ), - itemCount: model - .appoitmentAllHistoryResultList.length, + itemCount: model.appoitmentAllHistoryResultList.length, scrollDirection: Axis.horizontal, reverse: !projectViewModel.isArabic, ), @@ -95,10 +96,11 @@ class _MedicalProfilePageState extends State { padding: EdgeInsets.symmetric(vertical: 5.0), child: Column( children: [ - Container( - width: double.infinity, - height: 30, - ), + if (model.isLogin) + Container( + width: double.infinity, + height: 55, + ), Row( children: [ Expanded( @@ -112,39 +114,56 @@ class _MedicalProfilePageState extends State { ), ); }, - child: MedicalProfileItem( - title: TranslationBase.of(context) - .myAppointments, - imagePath: 'my_appointment_icon.png', - subTitle: TranslationBase.of(context) - .myAppointmentsList, - ), + child: authProvider.isLogin + ? Stack(children: [ + MedicalProfileItem( + title: TranslationBase.of(context).myAppointments, + imagePath: 'my_appointment_icon.png', + subTitle: TranslationBase.of(context).myAppointmentsList, + hasBadge: true, + ), + Positioned( + right: 0.0, + child: Badge( + toAnimate: false, + position: BadgePosition.topEnd(), + shape: BadgeShape.circle, + badgeColor: Color(0xFF40ACC9).withOpacity(1.0), + borderRadius: BorderRadius.circular(8), + badgeContent: Container( + padding: EdgeInsets.all(2.0), + child: Text(appoCountProvider.count.toString(), style: TextStyle(color: Colors.white, fontSize: 16.0)), + ), + ), + ), + ]) + : MedicalProfileItem( + title: TranslationBase.of(context).myAppointments, + imagePath: 'my_appointment_icon.png', + subTitle: TranslationBase.of(context).myAppointmentsList, + hasBadge: true, + ), ), ), Expanded( flex: 1, child: InkWell( - onTap: () => Navigator.push(context, - FadePage(page: LabsHomePage())), + onTap: () => Navigator.push(context, FadePage(page: LabsHomePage())), child: MedicalProfileItem( title: TranslationBase.of(context).lab, imagePath: 'lab_result_icon.png', - subTitle: - TranslationBase.of(context).lab, + subTitle: TranslationBase.of(context).labSubtitle, ), ), ), Expanded( flex: 1, child: InkWell( - onTap: () => Navigator.push(context, - FadePage(page: RadiologyHomePage())), + onTap: () => Navigator.push(context, FadePage(page: RadiologyHomePage())), child: MedicalProfileItem( - title: TranslationBase.of(context) - .radiology, + title: TranslationBase.of(context).radiology, imagePath: 'radiology_icon.png', - subTitle: TranslationBase.of(context) - .radiologySubtitle, + subTitle: TranslationBase.of(context).radiologySubtitle, ), ), ), @@ -164,11 +183,9 @@ class _MedicalProfilePageState extends State { ); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .medicines, + title: TranslationBase.of(context).medicines, imagePath: 'prescription_icon.png', - subTitle: TranslationBase.of(context) - .medicinesSubtitle, + subTitle: TranslationBase.of(context).medicinesSubtitle, ), ), ), @@ -182,27 +199,20 @@ class _MedicalProfilePageState extends State { ), ), child: MedicalProfileItem( - title: TranslationBase.of(context) - .vitalSigns, + title: TranslationBase.of(context).vitalSigns, imagePath: 'vital_signs.png', - subTitle: TranslationBase.of(context) - .vitalSignsSubtitle, + subTitle: TranslationBase.of(context).vitalSignsSubtitle, ), ), ), Expanded( flex: 1, child: InkWell( - onTap: () => Navigator.push( - context, - FadePage( - page: ActiveMedicationsPage())), + onTap: () => Navigator.push(context, FadePage(page: ActiveMedicationsPage())), child: MedicalProfileItem( - title: TranslationBase.of(context) - .myMedical, + title: TranslationBase.of(context).myMedical, imagePath: 'active_medications.png', - subTitle: TranslationBase.of(context) - .myMedicalSubtitle, + subTitle: TranslationBase.of(context).myMedicalSubtitle, ), ), ), @@ -222,11 +232,9 @@ class _MedicalProfilePageState extends State { ); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .myDoctor, + title: TranslationBase.of(context).myDoctor, imagePath: 'doctor_icon.png', - subTitle: TranslationBase.of(context) - .myDoctorSubtitle, + subTitle: TranslationBase.of(context).myDoctorSubtitle, ), ), ), @@ -234,16 +242,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push( - context, - FadePage( - page: EyeMeasurementsPage())); + Navigator.push(context, FadePage(page: EyeMeasurementsPage())); }, child: MedicalProfileItem( title: TranslationBase.of(context).eye, imagePath: 'eye_measurement_icon.png', - subTitle: TranslationBase.of(context) - .eyeSubtitle, + subTitle: TranslationBase.of(context).eyeSubtitle, ), ), ), @@ -251,15 +255,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: InsuranceCard())); + Navigator.push(context, FadePage(page: InsuranceCard())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .insurance, + title: TranslationBase.of(context).insurance, imagePath: 'insurance_card_icon.png', - subTitle: TranslationBase.of(context) - .insuranceSubtitle, + subTitle: TranslationBase.of(context).insuranceSubtitle, ), ), ), @@ -270,15 +271,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: InsuranceUpdate())); + Navigator.push(context, FadePage(page: InsuranceUpdate())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .updateInsurance, + title: TranslationBase.of(context).updateInsurance, imagePath: 'insurance_update_icon_.png', - subTitle: TranslationBase.of(context) - .updateInsuranceSubtitle, + subTitle: TranslationBase.of(context).updateInsuranceSubtitle, ), ), ), @@ -286,29 +284,23 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: InsuranceApproval())); + Navigator.push(context, FadePage(page: InsuranceApproval())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .insuranceApproval, + title: TranslationBase.of(context).insuranceApproval, imagePath: 'insurance_approvals_icon.png', - subTitle: TranslationBase.of(context) - .insuranceApprovalSubtitle, + subTitle: TranslationBase.of(context).insuranceApprovalSubtitle, ), ), ), Expanded( flex: 1, child: InkWell( - onTap: () => Navigator.push(context, - FadePage(page: AllergiesPage())), + onTap: () => Navigator.push(context, FadePage(page: AllergiesPage())), child: MedicalProfileItem( - title: - TranslationBase.of(context).allergies, + title: TranslationBase.of(context).allergies, imagePath: 'my_allergies_icon.png', - subTitle: TranslationBase.of(context) - .allergiesSubtitle, + subTitle: TranslationBase.of(context).allergiesSubtitle, ), ), ), @@ -318,15 +310,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: MyVaccines())); + Navigator.push(context, FadePage(page: MyVaccines())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .myVaccines, + title: TranslationBase.of(context).myVaccines, imagePath: 'my_vaccines_icon.png', - subTitle: TranslationBase.of(context) - .myVaccinesSubtitle, + subTitle: TranslationBase.of(context).myVaccinesSubtitle, ), ), ), @@ -334,15 +323,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: HomeReportPage())); + Navigator.push(context, FadePage(page: HomeReportPage())); }, child: MedicalProfileItem( - title: - TranslationBase.of(context).medical, + title: TranslationBase.of(context).medical, imagePath: 'medical_reports_icon.png', - subTitle: TranslationBase.of(context) - .medicalSubtitle, + subTitle: TranslationBase.of(context).medicalSubtitle, ), ), ), @@ -350,15 +336,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: MonthlyReportsPage())); + Navigator.push(context, FadePage(page: MonthlyReportsPage())); }, child: MedicalProfileItem( - title: - TranslationBase.of(context).monthly, + title: TranslationBase.of(context).monthly, imagePath: 'monthly_reports_icon.png', - subTitle: TranslationBase.of(context) - .monthlySubtitle, + subTitle: TranslationBase.of(context).monthlySubtitle, ), ), ), @@ -368,16 +351,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push( - context, - FadePage( - page: PatientSickLeavePage())); + Navigator.push(context, FadePage(page: PatientSickLeavePage())); }, child: MedicalProfileItem( title: TranslationBase.of(context).sick, imagePath: 'sick_leaves_icons.png', - subTitle: TranslationBase.of(context) - .sickSubtitle, + subTitle: TranslationBase.of(context).sickSubtitle, ), ), ), @@ -385,26 +364,21 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: MyBalancePage())); + Navigator.push(context, FadePage(page: MyBalancePage())); }, child: MedicalProfileItem( - title: - TranslationBase.of(context).myBalance, + title: TranslationBase.of(context).myBalance, imagePath: 'check-in.png', - subTitle: TranslationBase.of(context) - .myBalanceSubtitle, + subTitle: TranslationBase.of(context).myBalanceSubtitle, ), ), ), Expanded( flex: 1, child: MedicalProfileItem( - title: - TranslationBase.of(context).patientCall, + title: TranslationBase.of(context).patientCall, imagePath: 'medical_history_icon.png', - subTitle: TranslationBase.of(context) - .patientCallSubtitle, + subTitle: TranslationBase.of(context).patientCallSubtitle, ), ), ]), @@ -414,17 +388,12 @@ class _MedicalProfilePageState extends State { child: InkWell( //TODO onTap: () { - Navigator.push( - context, - FadePage( - page: SmartWatchInstructions())); + Navigator.push(context, FadePage(page: SmartWatchInstructions())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .smartWatches, + title: TranslationBase.of(context).smartWatches, imagePath: 'smartwatch_icon.png', - subTitle: TranslationBase.of(context) - .smartWatchesSubtitle, + subTitle: TranslationBase.of(context).smartWatchesSubtitle, ), ), ), @@ -432,15 +401,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: MyTrackers())); + Navigator.push(context, FadePage(page: MyTrackers())); }, child: MedicalProfileItem( - title: TranslationBase.of(context) - .myTrackers, + title: TranslationBase.of(context).myTrackers, imagePath: 'my_tracker_icon.png', - subTitle: TranslationBase.of(context) - .myTrackersSubtitle, + subTitle: TranslationBase.of(context).myTrackersSubtitle, ), ), ), @@ -448,15 +414,12 @@ class _MedicalProfilePageState extends State { flex: 1, child: InkWell( onTap: () { - Navigator.push(context, - FadePage(page: AskDoctorHomPage())); + Navigator.push(context, FadePage(page: AskDoctorHomPage())); }, child: MedicalProfileItem( - title: - TranslationBase.of(context).askYour, + title: TranslationBase.of(context).askYour, imagePath: 'ask_doctor_icon.png', - subTitle: TranslationBase.of(context) - .askYourSubtitle, + subTitle: TranslationBase.of(context).askYourSubtitle, ), ), ), @@ -465,23 +428,26 @@ class _MedicalProfilePageState extends State { Expanded( flex: 1, child: InkWell( + //TODO onTap: () { - if (projectViewModel.user == null) { - projectViewModel - .platformBridge() - .connectHMGGuestWifi( - "1231755" /*PatientID*/); + if (authProvider.isLogin) { + String patientID = authProvider.getAuthenticatedUser().patientID.toString(); + GifLoaderDialogUtils.showMyDialog(context); + projectViewModel.platformBridge().connectHMGInternetWifi(patientID).then((value) => {GifLoaderDialogUtils.hideDialog(context)}); } else { - Navigator.push(context, - FadePage(page: DoctorHomePage())); + AlertDialogBox( + context: context, + confirmMessage: "Please login with your account first to use this feature", + okText: "OK", + okFunction: () { + AlertDialogBox.closeAlertDialog(context); + }).showAlertDialog(context); } }, child: MedicalProfileItem( - title: - TranslationBase.of(context).internet, + title: TranslationBase.of(context).internet, imagePath: 'insurance_card_icon.png', - subTitle: TranslationBase.of(context) - .internetSubtitle, + subTitle: TranslationBase.of(context).internetSubtitle, ), ), ), @@ -493,11 +459,9 @@ class _MedicalProfilePageState extends State { // context, FadePage(page: InsuranceApproval())); // }, child: MedicalProfileItem( - title: - TranslationBase.of(context).chatbot, + title: TranslationBase.of(context).chatbot, imagePath: 'insurance_approvals_icon.png', - subTitle: TranslationBase.of(context) - .chatbotSubtitle, + subTitle: TranslationBase.of(context).chatbotSubtitle, ), ), ), @@ -506,44 +470,39 @@ class _MedicalProfilePageState extends State { child: Container(), ), ]), + SizedBox( + height: MediaQuery.of(context).size.height * 0.12, + ) ], ), ) ], ), - if (model.user != null) + if (model.user != null && model.isLogin) Positioned( - top: 175, + top: 185, left: 20, right: 20, child: Container( width: double.infinity, - height: 70, + height: 80, decoration: BoxDecoration( - color: Colors.grey[600], + color: Theme.of(context).primaryColor, shape: BoxShape.rectangle, - border: Border.all( - color: Colors.transparent, width: 0.5), - borderRadius: - BorderRadius.all(Radius.circular(9)), - image: DecorationImage( - image: ExactAssetImage( - 'assets/images/bg_graphic.png'), - fit: BoxFit.cover)), + border: Border.all(color: Colors.transparent, width: 0.5), + borderRadius: BorderRadius.all(Radius.circular(9)), + image: DecorationImage(image: ExactAssetImage('assets/images/bg_graphic.png'), fit: BoxFit.cover)), child: Column( crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ SizedBox( height: 8, ), Texts( - model.user.firstName + - " " + - model.user.lastName, + model.user.firstName + " " + model.user.lastName, color: Colors.white, - ), - SizedBox( - height: 8, + bold: true, ), Texts( '${model.user.patientID}', diff --git a/lib/pages/medical/patient_sick_leave_page.dart b/lib/pages/medical/patient_sick_leave_page.dart index dab3d6cf..dcb6eea3 100644 --- a/lib/pages/medical/patient_sick_leave_page.dart +++ b/lib/pages/medical/patient_sick_leave_page.dart @@ -18,7 +18,9 @@ class _PatientSickLeavePageState extends State { onModelReady: (model) => model.getSickLeave(), builder: (_, model, w) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Sick Leave', + appBarTitle: TranslationBase.of(context).sickLeaves, + description: TranslationBase.of(context).infoSickLeaves, + infoList: TranslationBase.of(context).infoSickLeavePoints, baseViewModel: model, body: Container( margin: EdgeInsets.all(12), @@ -31,8 +33,8 @@ class _PatientSickLeavePageState extends State { profileUrl: model.sickLeaveList[index].doctorImageURL, rat: model.sickLeaveList[index].actualDoctorRate.toDouble(), subName: model.sickLeaveList[index].projectName, - isInOutPatientDescription: - model.sickLeaveList[index].isInOutPatientDescription, + isInOutPatient: + model.sickLeaveList[index].isInOutPatient, onEmailTap: () { model.sendSickLeaveEmail( message: TranslationBase.of(context).emailSentSuccessfully, diff --git a/lib/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart b/lib/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart index c2f70091..1b1eaf3f 100644 --- a/lib/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart +++ b/lib/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; @@ -15,86 +16,86 @@ class PharmacyForPrescriptionsPage extends StatelessWidget { @override Widget build(BuildContext context) { - return BaseView( - onModelReady: (model) => model.getListPharmacyForPrescriptions(itemId: prescriptionReport.itemID), - builder: (_, model, widget) => AppScaffold( - isShowAppBar: true, - appBarTitle: 'Title', - baseViewModel: model, - body: ListView.builder( - itemBuilder: (context, index) => Container( - width: double.infinity, - margin: EdgeInsets.only(top: 10, left: 10, right: 10), - padding: EdgeInsets.all(8.0), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.all( - Radius.circular(10.0), - ), - border: Border.all(color: Colors.grey[200], width: 0.5), - ), - child: Row( - children: [ - ClipRRect( - borderRadius: BorderRadius.all(Radius.circular(5)), - child: Image.network( - model.pharmacyPrescriptionsList[index].projectImageURL, - fit: BoxFit.cover, - width: 60, - height: 70, - ), + return BaseView( + onModelReady: (model) => model.getListPharmacyForPrescriptions(itemId: prescriptionReport.itemID), + builder: (_, model, widget) => AppScaffold( + isShowAppBar: true, + appBarTitle: TranslationBase.of(context).ports, + baseViewModel: model, + body: ListView.builder( + itemBuilder: (context, index) => Container( + width: double.infinity, + margin: EdgeInsets.only(top: 10, left: 10, right: 10), + padding: EdgeInsets.all(8.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(10.0), ), - Expanded( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts(model.pharmacyPrescriptionsList[index] - .locationDescription), - SizedBox( - height: 5, - ), - Texts(model.pharmacyPrescriptionsList[index].cityName), - ], + border: Border.all(color: Colors.grey[200], width: 0.5), + ), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(5)), + child: Image.network( + model.pharmacyPrescriptionsList[index].projectImageURL, + fit: BoxFit.cover, + width: 60, + height: 70, ), ), - ), - InkWell( - onTap: () { - MapsLauncher.launchCoordinates( - double.parse( - model.pharmacyPrescriptionsList[index].latitude), - double.parse( - model.pharmacyPrescriptionsList[index].longitude)); - }, - child: Icon( - Icons.pin_drop, - size: 18, - color: Colors.red[900], + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts(model.pharmacyPrescriptionsList[index] + .locationDescription), + SizedBox( + height: 5, + ), + Texts(model.pharmacyPrescriptionsList[index].cityName), + ], + ), + ), ), - ), - SizedBox( - width: 15, - ), - InkWell( - onTap: Feedback.wrapForTap((){ - launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}"); - },context), - child: Container( + InkWell( + onTap: () { + MapsLauncher.launchCoordinates( + double.parse( + model.pharmacyPrescriptionsList[index].latitude), + double.parse( + model.pharmacyPrescriptionsList[index].longitude)); + }, child: Icon( - Icons.call, + Icons.pin_drop, size: 18, color: Colors.red[900], ), ), - ) - ], + SizedBox( + width: 15, + ), + InkWell( + onTap: Feedback.wrapForTap((){ + launch("tel://${model.pharmacyPrescriptionsList[index].phoneNumber}"); + },context), + child: Container( + child: Icon( + Icons.call, + size: 18, + color: Colors.red[900], + ), + ), + ) + ], + ), ), + itemCount: model.pharmacyPrescriptionsList.length, ), - itemCount: model.pharmacyPrescriptionsList.length, ), - ), - ); + ); } } diff --git a/lib/pages/medical/prescriptions/prescription_details_page.dart b/lib/pages/medical/prescriptions/prescription_details_page.dart index 72c82c55..4416b9fa 100644 --- a/lib/pages/medical/prescriptions/prescription_details_page.dart +++ b/lib/pages/medical/prescriptions/prescription_details_page.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -15,7 +16,7 @@ class PrescriptionDetailsPage extends StatelessWidget { Widget build(BuildContext context) { return AppScaffold( isShowAppBar: true, - appBarTitle: 'Prescription Details', + appBarTitle: TranslationBase.of(context).prescriptions, body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -46,9 +47,13 @@ class PrescriptionDetailsPage extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts(prescriptionReport.itemDescription)), + child: Texts( + prescriptionReport.itemDescription.isNotEmpty + ? prescriptionReport.itemDescription + : prescriptionReport.itemDescriptionN), + ), ), - ), + ) ], ), ), @@ -82,7 +87,7 @@ class PrescriptionDetailsPage extends StatelessWidget { SizedBox( height: 5, ), - Texts('Ports') + Texts(TranslationBase.of(context).ports) ], ), )), @@ -100,22 +105,22 @@ class PrescriptionDetailsPage extends StatelessWidget { color: Colors.white, height: 30, width: double.infinity, - child: Center(child: Texts('Way'))), + child: Center(child: Texts(TranslationBase.of(context).way))), Container( color: Colors.white, height: 30, width: double.infinity, - child: Center(child: Texts('Average'))), + child: Center(child: Texts(TranslationBase.of(context).average))), Container( color: Colors.white, height: 30, width: double.infinity, - child: Center(child: Texts('Daily doses'))), + child: Center(child: Texts(TranslationBase.of(context).dailyDoses))), Container( color: Colors.white, height: 30, width: double.infinity, - child: Center(child: Texts('Period'))), + child: Center(child: Texts(TranslationBase.of(context).period))), ], ), TableRow( @@ -158,7 +163,7 @@ class PrescriptionDetailsPage extends StatelessWidget { child: Center( child: Column( children: [ - Texts('Notes'), + Texts(TranslationBase.of(context).notes), SizedBox( height: 5, ), @@ -169,7 +174,7 @@ class PrescriptionDetailsPage extends StatelessWidget { SizedBox( height: 5, ), - Texts(' '), + Texts(prescriptionReport.remarks), ], ), ), diff --git a/lib/pages/medical/prescriptions/prescription_items_page.dart b/lib/pages/medical/prescriptions/prescription_items_page.dart index c84be7bd..d2fdae0b 100644 --- a/lib/pages/medical/prescriptions/prescription_items_page.dart +++ b/lib/pages/medical/prescriptions/prescription_items_page.dart @@ -3,6 +3,7 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -19,10 +20,10 @@ class PrescriptionItemsPage extends StatelessWidget { Widget build(BuildContext context) { return BaseView( onModelReady: (model) => - model.getPrescriptionReport(dischargeNo: prescriptions.dischargeNo), + model.getPrescriptionReport(dischargeNo: prescriptions.dischargeNo,setupID:prescriptions.setupID,clinicID: prescriptions.clinicID,projectId: prescriptions.projectID,episodeID: prescriptions.episodeID), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Items', + appBarTitle: TranslationBase.of(context).prescriptions, baseViewModel: model, body: Container( height: MediaQuery.of(context).size.height * 0.8, @@ -62,8 +63,9 @@ class PrescriptionItemsPage extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(8.0), child: Center( - child: Texts(model - .prescriptionReportList[index].itemDescription)), + child: Texts(model.prescriptionReportList[index].itemDescription.isNotEmpty? + model.prescriptionReportList[index].itemDescription :model + .prescriptionReportList[index].itemDescriptionN)), )), Icon( Icons.arrow_forward_ios, @@ -79,7 +81,7 @@ class PrescriptionItemsPage extends StatelessWidget { ), bottomSheet: Container( width: double.infinity, - height: MediaQuery.of(context).size.height * 0.2, + height: MediaQuery.of(context).size.height * 0.23, color: Colors.grey[100], child: Column( children: [ @@ -87,7 +89,7 @@ class PrescriptionItemsPage extends StatelessWidget { Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( - label: 'Send Copy', + label: TranslationBase.of(context).sendCopy, onTap: () => model.sendPrescriptionEmail( appointmentDate: prescriptions.appointmentDate, patientID: prescriptions.patientID, @@ -100,7 +102,7 @@ class PrescriptionItemsPage extends StatelessWidget { Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( - label: 'Resend order & deliver', + label:TranslationBase.of(context).resendOrder, backgroundColor: Colors.green[200], )) ], diff --git a/lib/pages/medical/prescriptions/prescriptions_history_details_page.dart b/lib/pages/medical/prescriptions/prescriptions_history_details_page.dart index 6a2bcdde..5061a8ba 100644 --- a/lib/pages/medical/prescriptions/prescriptions_history_details_page.dart +++ b/lib/pages/medical/prescriptions/prescriptions_history_details_page.dart @@ -1,8 +1,10 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescriptions_order.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/BottomButton.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -10,15 +12,16 @@ import 'package:flutter/material.dart'; class PrescriptionsHistoryDetailsPage extends StatelessWidget { final PrescriptionsOrder prescriptionsOrder; - PrescriptionsHistoryDetailsPage({Key key,this.prescriptionsOrder}); + PrescriptionsHistoryDetailsPage({Key key, this.prescriptionsOrder}); @override Widget build(BuildContext context) { return BaseView( - onModelReady: (model) => model.getPrescriptionReportEnh(prescriptionsOrder: prescriptionsOrder), - builder: (_,model,widget) => AppScaffold( + onModelReady: (model) => model.getPrescriptionReportEnh( + prescriptionsOrder: prescriptionsOrder), + builder: (_, model, widget) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Order History', + appBarTitle: TranslationBase.of(context).orderDetails, baseViewModel: model, body: SingleChildScrollView( physics: BouncingScrollPhysics(), @@ -27,82 +30,123 @@ class PrescriptionsHistoryDetailsPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + height: 5, + ), + Texts(TranslationBase.of(context).orderStatus +' : ${prescriptionsOrder.descriptionN}'), + SizedBox( + height: 5, + ), Table( border: TableBorder.symmetric( inside: BorderSide(width: 0.5), outside: BorderSide(width: 0.5)), children: [ - TableRow( - children: [ - Container( - height: 50, - color: Colors.white, - child: Center(child: Texts('Order No'),), - ), - Container( - height: 50, - color: Colors.white, - child: Center(child: Texts('Date'),), - ), - ] - ), - TableRow( - children: [ - Container( - height: 50, - color: Colors.white, - child: Center(child: Texts('12655'),), - ), - Container( - height: 50, - color: Colors.white, - child: Center(child: Texts('2020-7-15'),), - ), - ] - ) + TableRow(children: [ + Container( + height: 50, + color: Colors.white, + child: Center( + child: Texts(TranslationBase.of(context).orderNo), + ), + ), + Container( + height: 50, + color: Colors.white, + child: Center( + child: Texts(TranslationBase.of(context).date), + ), + ), + ]), + TableRow(children: [ + Container( + height: 50, + color: Colors.white, + child: Center( + child: Texts('${prescriptionsOrder.iD}'), + ), + ), + Container( + height: 50, + color: Colors.white, + child: Center( + child: Texts('${prescriptionsOrder.createdOn}'), + ), + ), + ]) ], ), - SizedBox(height: 15,), - ...List.generate(model.prescriptionReportEnhList.length, (index) => Container( - margin: EdgeInsets.all(8.0), - color: Colors.white, - child: Row( - children: [ - ClipRRect( - borderRadius: BorderRadius.all(Radius.circular(5)), - child: Image.network( - model.prescriptionReportEnhList[index].imageSRCUrl, - fit: BoxFit.cover, - width: 60, - height: 70, + SizedBox( + height: 15, + ), + ...List.generate( + model.prescriptionReportEnhList.length, + (index) => Container( + margin: EdgeInsets.all(8.0), + color: Colors.white, + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(5)), + child: Image.network( + model.prescriptionReportEnhList[index].imageSRCUrl, + fit: BoxFit.cover, + width: 60, + height: 70, + ), ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts(model.prescriptionReportEnhList[index] - .itemDescription), - ], + Expanded( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Texts(model.prescriptionReportEnhList[index] + .itemDescription), + ], + ), ), ), - ), - - ], + ], + ), ), - )) + ) ], ), ), ), bottomSheet: Container( //padding: EdgeInsets.all(8.0), - // margin: EdgeInsets.all(8.0), - child: BottomButton(label: 'Cancel order',color: Colors.red[300],), + // margin: EdgeInsets.all(8.0), + child: BottomButton( + label: TranslationBase.of(context).cancelOrder, + disabled: prescriptionsOrder.status != 1, + textColor: Colors.white, + onTap: (){ + + showCDialog(model,context); + //showAlertDialog(context); + }, + ), ), ), ); } + + showCDialog(PrescriptionsViewModel model,context){ + ConfirmDialog( + context: context, + confirmMessage: "Are you sure ?", + okText: TranslationBase.of(context).confirm, + cancelText: TranslationBase.of(context).cancel, + okFunction: () { + Navigator.of(context).pop(); + model.updatePressOrder(presOrderID: prescriptionsOrder.iD).then((value) { + Navigator.of(context).pop(); + }); + }, + cancelFunction: () => {}).showAlertDialog(context); + // dialog.showAlertDialog(context); + } + } diff --git a/lib/pages/medical/prescriptions/prescriptions_home_page.dart b/lib/pages/medical/prescriptions/prescriptions_home_page.dart index 182fca30..dad6fd17 100644 --- a/lib/pages/medical/prescriptions/prescriptions_home_page.dart +++ b/lib/pages/medical/prescriptions/prescriptions_home_page.dart @@ -38,6 +38,8 @@ class _HomePrescriptionsPageState extends State builder: (_, model, widget) => AppScaffold( isShowAppBar: true, appBarTitle: TranslationBase.of(context).prescriptions, + description: TranslationBase.of(context).infoPrescriptions, + infoList: TranslationBase.of(context).infoPrescriptionsPoints, body: Scaffold( extendBodyBehindAppBar: true, appBar: PreferredSize( diff --git a/lib/pages/medical/prescriptions/prescriptions_page.dart b/lib/pages/medical/prescriptions/prescriptions_page.dart index e6e90d9e..6b852db9 100644 --- a/lib/pages/medical/prescriptions/prescriptions_page.dart +++ b/lib/pages/medical/prescriptions/prescriptions_page.dart @@ -86,8 +86,9 @@ class PrescriptionsPage extends StatelessWidget { child: DoctorCard( name: prescriptions.doctorName, profileUrl: prescriptions.doctorImageURL, - rat: prescriptions.doctorRate.toDouble(), + rat: prescriptions.actualDoctorRate.toDouble(), subName: prescriptions.name, + isInOutPatient: prescriptions.isInOutPatient, date: DateUtil.getMonthDayYearDateFormatted( prescriptions.dischargeDate), ), diff --git a/lib/pages/medical/reports/report_home_page.dart b/lib/pages/medical/reports/report_home_page.dart index 8f24d1dd..5c6812e2 100644 --- a/lib/pages/medical/reports/report_home_page.dart +++ b/lib/pages/medical/reports/report_home_page.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/viewModels/medical/reports_view_model. 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/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; @@ -38,7 +39,8 @@ class _HomeReportPageState extends State onModelReady: (model) => model.getReports(), //model.getPrescriptions(), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, - appBarTitle: 'Request', + appBarTitle: TranslationBase.of(context).monthReport, + description: TranslationBase.of(context).infoMonthReport, baseViewModel: model, //bottomSheet: Container(), diff --git a/lib/pages/medical/reports/reports_page.dart b/lib/pages/medical/reports/reports_page.dart index 5b64bc4e..be4195d9 100644 --- a/lib/pages/medical/reports/reports_page.dart +++ b/lib/pages/medical/reports/reports_page.dart @@ -12,8 +12,7 @@ import 'package:flutter/material.dart'; class MedicalReports extends StatelessWidget { @override Widget build(BuildContext context) { - void confirmBox( - AppointmentHistory model, ReportsViewModel reportsViewModel) { + void confirmBox(AppointmentHistory model, ReportsViewModel reportsViewModel) { showDialog( context: context, child: ConfirmDialog( @@ -69,13 +68,8 @@ class MedicalReports extends StatelessWidget { ), Texts(model.appointHistoryList[index].projectName), Texts(model.appointHistoryList[index].clinicName), - Texts(DateUtil.getMonthDayYearDateFormatted( - model.appointHistoryList[index].appointmentDate)), - StarRating( - totalAverage: model - .appointHistoryList[index].actualDoctorRate - .toDouble(), - forceStars: true), + Texts(DateUtil.getMonthDayYearDateFormatted(model.appointHistoryList[index].appointmentDate)), + StarRating(totalAverage: model.appointHistoryList[index].actualDoctorRate.toDouble(), forceStars: true), SizedBox( height: 12, ), @@ -86,15 +80,13 @@ class MedicalReports extends StatelessWidget { Expanded( flex: 1, child: InkWell( - onTap: () => - confirmBox(model.appointHistoryList[index], model), + onTap: () => confirmBox(model.appointHistoryList[index], model), child: Container( width: 80, height: 50, decoration: BoxDecoration( color: Colors.black54, - border: - Border.all(color: Colors.transparent, width: 2), + border: Border.all(color: Colors.transparent, width: 2), shape: BoxShape.rectangle, borderRadius: BorderRadius.all( Radius.circular(8.0), diff --git a/lib/pages/medical/vital_sign/vital_sign_details_screen.dart b/lib/pages/medical/vital_sign/vital_sign_details_screen.dart index b8c4eda2..667620a2 100644 --- a/lib/pages/medical/vital_sign/vital_sign_details_screen.dart +++ b/lib/pages/medical/vital_sign/vital_sign_details_screen.dart @@ -55,7 +55,7 @@ class VitalSignDetailsScreen extends StatelessWidget { mode.vitalSignResModelList.length - 1] .heightCm .toString(), - unit: ' Cm', + unit: TranslationBase.of(context).cm, ), ), ), @@ -73,7 +73,7 @@ class VitalSignDetailsScreen extends StatelessWidget { child: VitalSignItem( des: TranslationBase.of(context).weight, icon: DQIcons.weight_scale, - unit: ' Kg', + unit: TranslationBase.of(context).kg, lastVal: mode .vitalSignResModelList[ mode.vitalSignResModelList.length - 1] @@ -98,12 +98,12 @@ class VitalSignDetailsScreen extends StatelessWidget { ), ), child: VitalSignItem( - des: TranslationBase.of(context).bodyMeasurements, + des: TranslationBase.of(context).body, icon: DQIcons.bmi, lastVal: mode .vitalSignResModelList[0].pulseBeatPerMinute .toString(), - unit: 'BMI', + unit: TranslationBase.of(context).mass, ), ), InkWell( @@ -125,7 +125,7 @@ class VitalSignDetailsScreen extends StatelessWidget { lastVal: mode .vitalSignResModelList[0].temperatureCelcius .toString(), - unit: 'C', + unit: TranslationBase.of(context).tempC, ), ), ), @@ -152,7 +152,7 @@ class VitalSignDetailsScreen extends StatelessWidget { mode.vitalSignResModelList.length - 1] .pulseBeatPerMinute .toString(), - unit: ' bpm', + unit: TranslationBase.of(context).bpm, ), ), InkWell( @@ -175,7 +175,7 @@ class VitalSignDetailsScreen extends StatelessWidget { mode.vitalSignResModelList.length - 1] .respirationBeatPerMinute .toString(), - unit: ' bmp', + unit: TranslationBase.of(context).respirationSigns, ), ), ], @@ -202,7 +202,7 @@ class VitalSignDetailsScreen extends StatelessWidget { mode.vitalSignResModelList.length - 1] .bloodPressure .toString(), - unit: ' SBP/DBP', + unit: TranslationBase.of(context).sysDias, ), ), ], diff --git a/lib/pages/paymentService/payment_service.dart b/lib/pages/paymentService/payment_service.dart index 0d19045b..c31981f7 100644 --- a/lib/pages/paymentService/payment_service.dart +++ b/lib/pages/paymentService/payment_service.dart @@ -16,6 +16,7 @@ class PaymentService extends StatelessWidget { ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( isShowAppBar: true, + isShowDecPage: false, appBarTitle: TranslationBase.of(context).paymentService, body: SingleChildScrollView( child: Container( diff --git a/lib/pages/pharmacies/medicine_search_screen.dart b/lib/pages/pharmacies/medicine_search_screen.dart index 644134b2..a41fde16 100644 --- a/lib/pages/pharmacies/medicine_search_screen.dart +++ b/lib/pages/pharmacies/medicine_search_screen.dart @@ -25,6 +25,8 @@ class MedicineSearch extends StatelessWidget { AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).searchMedicine, + isShowAppBar: true, + isShowDecPage: false, body: Container( height: SizeConfig.screenHeight, child: Column( @@ -49,9 +51,10 @@ class MedicineSearch extends StatelessWidget { controller: textController, validator: (value) { if (value.isEmpty) { - return TranslationBase.of(context) - .pleaseEnterMedicineName; - } + return TranslationBase.of(context).pleaseEnterMedicineName; + }else if( value.length <4){ + return TranslationBase.of(context).searchItemError; + }else return null; }, ), @@ -78,6 +81,7 @@ class MedicineSearch extends StatelessWidget { ], ), ), + if(model.pharmacy.isNotEmpty) Container( margin: EdgeInsets.only( left: SizeConfig.heightMultiplier * 2), @@ -85,9 +89,9 @@ class MedicineSearch extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( - 'You Can Find ' + - '${model.pharmacy == null ? '0' : model.pharmacy.length.toString()}' - ' Item In Search ', + TranslationBase.of(context).youCanFind+ + '${model.pharmacy == null ? '0' : model.pharmacy.length.toString()}'+ + TranslationBase.of(context).itemInSearch, ), ], ), diff --git a/lib/pages/pharmacies/screens/pharmacy_module_page.dart b/lib/pages/pharmacies/screens/pharmacy_module_page.dart index 25d3ce95..2ae2be65 100644 --- a/lib/pages/pharmacies/screens/pharmacy_module_page.dart +++ b/lib/pages/pharmacies/screens/pharmacy_module_page.dart @@ -5,10 +5,9 @@ import 'package:diplomaticquarterapp/pages/landing/home_page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/order-preview-page.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/widgets/BannerPager.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductTileItem.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/widgets/manufacturerItem.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/borderedButton.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'; diff --git a/lib/pages/rateAppointment/rate_appointment_doctor.dart b/lib/pages/rateAppointment/rate_appointment_doctor.dart index d36ef9db..7a128b10 100644 --- a/lib/pages/rateAppointment/rate_appointment_doctor.dart +++ b/lib/pages/rateAppointment/rate_appointment_doctor.dart @@ -100,7 +100,7 @@ class _RateAppointmentDoctorState extends State { height: 4, ), Texts( - model.appointmentDetails.clinicName??'', + model.appointmentDetails.clinicName != null ? model.appointmentDetails.clinicName : "", bold: true, ), SizedBox( diff --git a/lib/pages/settings/general_setting.dart b/lib/pages/settings/general_setting.dart new file mode 100644 index 00000000..7085150a --- /dev/null +++ b/lib/pages/settings/general_setting.dart @@ -0,0 +1,434 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; +import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; +import 'package:diplomaticquarterapp/theme/theme_value.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:screen/screen.dart'; + +class GeneralSettings extends StatefulWidget { + @override + _GeneralSettings createState() => _GeneralSettings(); +} + +class _GeneralSettings extends State + with TickerProviderStateMixin { + var themeNotifier; + int blindValue = 0; + bool vibration =false; + bool accsibility =false; + bool camera =false; + bool location =false; + var sharedPref = new AppSharedPreferences(); + var permission = new PermissionService(); + var mediaQueryData; + @override + void initState() { + getValues(); + super.initState(); + } + + + Widget build(BuildContext context) { + mediaQueryData = MediaQuery.of(context); + themeNotifier = Provider.of(context); + return Container( + child: ListView(scrollDirection: Axis.vertical, children: [ + Container( + padding: EdgeInsets.all(10), + child: AppText( + TranslationBase.of(context).modes, + color: Colors.black, + fontWeight: FontWeight.bold, + ), + ), + Container( + color: Colors.white, + padding: EdgeInsets.all(10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).vibration), + Switch( + value: vibration, + onChanged: (value) { + setState(() { + vibration = value; + + }); + setVibration(value); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )), + Container( + color: Colors.white, + padding: EdgeInsets.all(10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).accessibility), + Switch( + value: accsibility, + onChanged: (value) { + setState(() { + accsibility = value; + }); + //setAccisibility(value); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )), + Container( + padding: EdgeInsets.all(10), + child: AppText( + TranslationBase.of(context).blindMode, + color: Colors.black, + fontWeight: FontWeight.bold, + ), + ), + new Container( + color: Colors.white, + padding: EdgeInsets.all(8.0), + child: new Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + new Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + new Text( + TranslationBase.of(context).offTheme, + style: new TextStyle(fontSize: 16.0), + ), + Radio( + value: 0, + groupValue: blindValue, + onChanged: (value) { + setState(() => {this.blindValue = value}); + setTheme(value); + }, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + new Text( + TranslationBase.of(context).invertTheme, + style: new TextStyle( + fontSize: 16.0, + ), + ), + new Radio( + value: 1, + groupValue: blindValue, + onChanged: (value) { + setState(() => {this.blindValue = value}); + setTheme(value); + }, + ) + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + new Text( + TranslationBase.of(context).dimTheme, + style: new TextStyle(fontSize: 16.0), + ), + new Radio( + value: 2, + groupValue: blindValue, + onChanged: (value) { + setState(() => {this.blindValue = value}); + setTheme(value); + }, + ), + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + new Text( + TranslationBase.of(context).bwTheme, + style: new TextStyle(fontSize: 16.0), + ), + new Radio( + value: 3, + groupValue: blindValue, + onChanged: (value) { + setState(() => {this.blindValue = value}); + + setTheme(value); + }, + ), + ], + ), + ], + ) + ])), + Container( + padding: EdgeInsets.all(10), + child: AppText( + TranslationBase.of(context).permissions, + color: Colors.black, + fontWeight: FontWeight.bold, + ), + ), + Container( + color: Colors.white, + padding: EdgeInsets.all(10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).cameraPermission), + Switch( + value: camera, + onChanged: (value) { + setState(() { + camera = value; + }); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )), + Container( + color: Colors.white, + padding: EdgeInsets.all(10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).locationPermission), + Switch( + value: location, + onChanged: (value) { + setState(() { + location = value; + }); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )) + ])); + } + + setTheme(value) async{ + switch (value) { + case 0: + { + themeNotifier.setTheme(await getTheme(value)); + Screen.setBrightness(1.0); + } + break; + case 1: + { + themeNotifier.setTheme(ThemeData( + fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.grey, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + cardColor: Colors.black, + buttonColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Colors.grey, + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.grey, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Colors.grey, + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Colors.grey, + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Colors.grey, + ), + ), + )); + Screen.setBrightness(1.0); + } + break; + case 2: + themeNotifier.setTheme(await getTheme(value)); + Screen.setBrightness(0.01); + break; + case 3: + { + themeNotifier.setTheme(await getTheme(value)); + Screen.setBrightness(1.0); + } + break; + default: + { + themeNotifier.setTheme(await getTheme(value)); + Screen.setBrightness(1.0); + } + break; + } + //permission.setTheme(value); + + } + setVibration(value){ + permission.setVibrationPermission(value); + } + + setAccisibility(){ + if(!accsibility){ + + } + // permission.setVibrationPermission(value); + } + getValues() async{ + blindValue= permission.isThemeEnabled() == null ? 0 : permission.isThemeEnabled(); + vibration = permission.isVibrationEnabled() ==null ? false : permission.isVibrationEnabled(); + accsibility =mediaQueryData.accessibleNavigation; + } + getTheme(value) async{ + if(value ==1){ + return ThemeData( + fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.grey, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + cardColor: Colors.black, + buttonColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Colors.grey, + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.grey, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Colors.grey, + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Colors.grey, + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Colors.grey, + ), + ), + ); + + }else if(value ==3){ + return ThemeData( + fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.grey, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + cardColor: Colors.black, + buttonColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Colors.grey, + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.grey, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Colors.grey, + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Colors.black45, + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Colors.grey, + ), + ), + ); + + }else { + return ThemeData( + fontFamily: await sharedPref.getString(APP_LANGUAGE) == 'ar' ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.blue, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Color(0xffEEEEEE), + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.white, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Color(0xff40ACC9), + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + cardColor: Colors.white, + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Color(0xff40ACC9), + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Color(0xff40ACC9), + ), + ), + ); + + } + } +} diff --git a/lib/pages/settings/profile_setting.dart b/lib/pages/settings/profile_setting.dart new file mode 100644 index 00000000..0658e2e6 --- /dev/null +++ b/lib/pages/settings/profile_setting.dart @@ -0,0 +1,196 @@ +import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class ProfileSettings extends StatefulWidget { + @override + _ProfileSettings createState() => _ProfileSettings(); +} + +class _ProfileSettings extends State + with TickerProviderStateMixin { + Widget build(BuildContext context) { + bool isVibration = true; + var language = 1; + return BaseView( + onModelReady: (model) => model.getPatientRadOrders(), + builder: (_, model, wi) => Container( + child: + ListView(scrollDirection: Axis.vertical, children: [ + Container( + padding: EdgeInsets.all(15), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText( + TranslationBase.of(context).fileNo, + color: Colors.black, + ), + AppText( + model.user.patientID.toString(), + color: Colors.black, + ), + ], + ), + ), + SizedBox( + height: 1, + width: MediaQuery.of(context).size.width, + child: Container( + color: Colors.grey[300], + ), + ), + Padding( + child: AppText(TranslationBase.of(context).languageSetting, + fontWeight: FontWeight.bold), + padding: EdgeInsets.all(10), + ), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).english), + new Radio( + value: 2, + groupValue: language, + onChanged: (value) { + language = value; + }, + ) + ], + )), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).arabic), + new Radio( + value: 1, + groupValue: language, + onChanged: (value) { + language = value; + }, + ) + ], + )), + Padding( + child: AppText(TranslationBase.of(context).alert), + padding: EdgeInsets.all(10), + ), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).emailAlert), + Switch( + value: isVibration, + onChanged: (value) { + setState(() { + isVibration = value; + }); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppText(TranslationBase.of(context).smsAlert), + Switch( + value: isVibration, + onChanged: (value) { + setState(() { + isVibration = value; + }); + }, + activeTrackColor: Colors.lightGreenAccent, + activeColor: Colors.green, + ) + ], + )), + Padding( + child: AppText(TranslationBase.of(context).contactInfo), + padding: EdgeInsets.all(10), + ), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(TranslationBase.of(context).email), + TextField( + style: TextStyle(color: Colors.red), + decoration: InputDecoration( + suffixIcon: Icon(Icons.edit), + )) + ], + )), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(TranslationBase.of(context).emergencyName), + TextField( + style: TextStyle(color: Colors.red), + decoration: InputDecoration( + suffixIcon: Icon(Icons.edit), + )) + ], + )), + Container( + color: Colors.white, + padding: + EdgeInsets.only(top: 0, left: 10, right: 10, bottom: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(TranslationBase.of(context).emergencyContact), + TextField( + style: TextStyle(color: Colors.red), + decoration: InputDecoration( + suffixIcon: Icon(Icons.edit), + ), + ) + ], + )), + Container( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + child: DefaultButton( + TranslationBase.of(context).submit, + () { +// print(mobileNo.text); + }, + )), + ], + )) + ]))); + } +} diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart new file mode 100644 index 00000000..abdac118 --- /dev/null +++ b/lib/pages/settings/settings.dart @@ -0,0 +1,55 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/pages/settings/profile_setting.dart'; +import 'package:diplomaticquarterapp/pages/settings/general_setting.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/others/arrow_back.dart'; +import 'package:flutter/material.dart'; + +class Settings extends StatefulWidget { + final int type; + + Settings({this.type = 0}); + @override + _Settings createState() => _Settings(); +} + +class _Settings extends State with TickerProviderStateMixin { + TabController _tabController; + + @override + void initState() { + _tabController = + new TabController(length: 2, vsync: this, initialIndex: widget.type); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + AppGlobal.context = context; + return Scaffold( + appBar: AppBar( + bottom: TabBar( + tabs: [ + Tab(text: TranslationBase.of(context).general), + Tab( + text: TranslationBase.of(context).profile, + ) + ], + controller: _tabController, + ), + title: Text(TranslationBase.of(context).settings, + style: TextStyle(color: Colors.white)), + leading: Builder( + builder: (BuildContext context) { + return ArrowBack(); + }, + ), + ), + body: TabBarView( + physics: NeverScrollableScrollPhysics(), + children: [GeneralSettings(), ProfileSettings()], + controller: _tabController), + ); + } +} diff --git a/lib/routes.dart b/lib/routes.dart index ada7c54c..b11025c2 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -1,4 +1,6 @@ -import 'package:diplomaticquarterapp/pages/family/my-family.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/family/add-family-member.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/family/add-family_type.dart'; +import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/login/confirm-login.dart'; @@ -8,14 +10,15 @@ import 'package:diplomaticquarterapp/pages/login/welcome.dart'; import 'package:diplomaticquarterapp/pages/login/login-type.dart'; import 'package:diplomaticquarterapp/pages/login/login.dart'; import 'package:diplomaticquarterapp/pages/login/register.dart'; -import 'package:diplomaticquarterapp/pages/family/add-family_type.dart'; -import 'package:diplomaticquarterapp/pages/family/add-family-member.dart'; +import 'package:diplomaticquarterapp/pages/settings/settings.dart'; import 'package:diplomaticquarterapp/pages/symptom-checker/info.dart'; import 'package:diplomaticquarterapp/pages/symptom-checker/select-gender.dart'; import 'package:diplomaticquarterapp/pages/symptom-checker/symtom-checker.dart'; +import 'package:diplomaticquarterapp/splashPage.dart'; const String INIT_ROUTE = '/'; -const String HOME = '/'; +const String HOME = 'home'; +const String SPLASH = '/'; const String LOGIN = 'login'; const String WELCOME_LOGIN = 'welcome-login'; const String LOGIN_TYPE = 'login-type'; @@ -31,7 +34,9 @@ const String LIVE_CARE = 'live-care'; const String SYMPTOM_CHECKER = 'symptom-checker'; const String SYMPTOM_CHECKER_INFO = 'symptom-checker-info'; const String SELECT_GENDER = 'select-gender'; +const String SETTINGS = 'settings'; var routes = { + SPLASH: (_) => SplashScreen(), HOME: (_) => LandingPage(), WELCOME_LOGIN: (_) => WelcomeLogin(), LOGIN_TYPE: (_) => LoginType(), @@ -46,5 +51,6 @@ var routes = { LIVE_CARE: (_) => LiveCareHome(), SYMPTOM_CHECKER: (_) => SymptomChecker(), SYMPTOM_CHECKER_INFO: (_) => SymptomInfo(), - SELECT_GENDER: (_) => SelectGender() + SELECT_GENDER: (_) => SelectGender(), + SETTINGS: (_) => Settings() }; diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index 39117783..eb1ab98f 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/PatientShareResposne.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; -import 'package:diplomaticquarterapp/models/LiveCare/insertVIDARequest.dart'; import 'package:diplomaticquarterapp/models/Request.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; @@ -42,7 +41,7 @@ class DoctorsListService extends BaseService { long = await this.sharedPref.getDouble(USER_LONG); } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -106,7 +105,7 @@ class DoctorsListService extends BaseService { long = await this.sharedPref.getDouble(USER_LONG); } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -146,7 +145,7 @@ class DoctorsListService extends BaseService { Future getDoctorsProfile( int docID, int clinicID, int projectID, context) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -181,7 +180,7 @@ class DoctorsListService extends BaseService { Future getDoctorFreeSlots( int docID, int clinicID, int projectID, BuildContext context) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "DoctorID": docID, @@ -216,7 +215,7 @@ class DoctorsListService extends BaseService { Future getDoctorScheduledFreeSlots(int docID, int clinicID, int projectID, int serviceID, BuildContext context) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "DoctorID": docID, @@ -259,7 +258,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "IsForLiveCare": false, @@ -318,7 +317,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "IsForLiveCare": true, @@ -372,7 +371,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -416,7 +415,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -461,7 +460,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -495,7 +494,7 @@ class DoctorsListService extends BaseService { Future getPatientAppointmentCurfewHistory( bool isActiveAppointment) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -536,7 +535,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -589,7 +588,7 @@ class DoctorsListService extends BaseService { long = await this.sharedPref.getDouble(USER_LONG); } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -636,7 +635,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -686,7 +685,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -737,7 +736,7 @@ class DoctorsListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -782,7 +781,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "ClientRequestID": transactionID, @@ -813,7 +812,7 @@ class DoctorsListService extends BaseService { Future addAdvancedNumberRequest( String advanceNumber, String paymentReference, - String appointmentID, + dynamic appointmentID, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -821,7 +820,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "AdvanceNumber": advanceNumber, @@ -858,7 +857,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "IsForAskYourDoctor": true, @@ -898,7 +897,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "VersionID": req.VersionID, @@ -934,7 +933,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { @@ -993,7 +992,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "AppointmentNo": appoNo, @@ -1030,7 +1029,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "AppointmentNo": appo.appointmentNo, @@ -1071,7 +1070,7 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "AppointmentDate": appoDate, @@ -1109,6 +1108,7 @@ class DoctorsListService extends BaseService { Future createAdvancePayment( AppoitmentAllHistoryResultList appo, + String projectID, double payedAmount, String paymentReference, String paymentMethodName, @@ -1119,12 +1119,12 @@ class DoctorsListService extends BaseService { await this.sharedPref.getObject(USER_PROFILE)); authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { - "ProjectID": appo.projectID.toString(), + "ProjectID": projectID, "OnlineCheckInAppointment": { - "AppointmentNo": appo.appointmentNo.toString(), + "AppointmentNo": appo != null ? appo.appointmentNo.toString() : "0", "PaymentMethodName": paymentMethodName, "PaymentAmount": payedAmount == 0 ? "0" : payedAmount.toString(), "PaymentDate": payedAmount == 0 @@ -1133,9 +1133,9 @@ class DoctorsListService extends BaseService { DateTime.now().millisecondsSinceEpoch.toString() + ")/", "PaymentReferenceNumber": payedAmount == 0 ? "" : paymentReference, - "ProjectID": appo.projectID.toString(), + "ProjectID": appo != null ? appo.projectID.toString() : projectID, "PatientID": authUser.patientID, - "ClinicID": appo.clinicID, + "ClinicID": appo != null ? appo.clinicID : "0", "UserID": authUser.patientID, "Status": authUser.patientType }, @@ -1161,4 +1161,56 @@ class DoctorsListService extends BaseService { }, body: request); return Future.value(localRes); } + + Future HIS_createAdvancePayment( + AppoitmentAllHistoryResultList appo, + String projectID, + double payedAmount, + String paymentReference, + String paymentMethodName, + BuildContext context) async { + Map request; + if (await this.sharedPref.getObject(USER_PROFILE) != null) { + 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 = { + "CustName": authUser.firstName + " " + authUser.lastName, + "CustID": authUser.patientID, + "SetupID": "010266", + "ProjectID": projectID, + "PatientID": authUser.patientID, + "AccountID": authUser.patientID, + "PaymentAmount": payedAmount, + "NationalityID": null, + "DepositorName": authUser.firstName + " " + authUser.lastName, + "CreatedBy": 3, + "PaymentMethodName": paymentMethodName, + "PaymentReference": paymentReference, + "PaymentMethod": paymentMethodName, + "VersionID": req.VersionID, + "Channel": req.Channel, + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": req.IPAdress, + "generalid": req.generalid, + "PatientOutSA": authUser.outSA, + "SessionID": "YckwoXhUmWBsnHKEKig", + "isDentalAllowedBackend": false, + "TokenID": "@dm!n", + "PatientTypeID": authUser.patientType, + "PatientType": authUser.patientType + }; + dynamic localRes; + await baseAppClient.post(HIS_CREATE_ADVANCE_PAYMENT, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } } diff --git a/lib/services/authentication/auth_provider.dart b/lib/services/authentication/auth_provider.dart index 28b5e73b..8bdfa09b 100644 --- a/lib/services/authentication/auth_provider.dart +++ b/lib/services/authentication/auth_provider.dart @@ -1,17 +1,18 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; -import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart'; import 'package:diplomaticquarterapp/models/Authentication/check_user_status_req.dart'; import 'package:diplomaticquarterapp/models/Authentication/checkpatient_for_registration.dart'; import 'package:diplomaticquarterapp/models/Authentication/insert_device_imei_request.dart'; import 'package:diplomaticquarterapp/models/Authentication/register_user_requet.dart'; -import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; import 'package:diplomaticquarterapp/models/Authentication/registered_authenticated_user_req.dart'; -import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/models/Request.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:flutter/cupertino.dart'; @@ -19,26 +20,25 @@ import '../../locator.dart'; // SharedPreferences sharedPref = new SharedPreferences(); enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } + AppSharedPreferences sharedPref = new AppSharedPreferences(); +AppGlobal appGlobal = new AppGlobal(); -const String INSERT_DEVICE_IMEI = - 'Services/Patients.svc/REST/Patient_INSERTDeviceIMEI'; -const String SELECT_DEVICE_IMEI = - 'Services/Patients.svc/REST/Patient_SELECTDeviceIMEIbyIMEI'; -const String CHECK_PATIENT_AUTH = - 'Services/Authentication.svc/REST/CheckPatientAuthentication'; +const String INSERT_DEVICE_IMEI = 'Services/Patients.svc/REST/Patient_INSERTDeviceIMEI'; +const String SELECT_DEVICE_IMEI = 'Services/Patients.svc/REST/Patient_SELECTDeviceIMEIbyIMEI'; +const String CHECK_PATIENT_AUTH = 'Services/Authentication.svc/REST/CheckPatientAuthentication'; const GET_MOBILE_INFO = 'Services/Authentication.svc/REST/GetMobileLoginInfo'; -const SEND_ACTIVATION_CODE = - 'Services/Authentication.svc/REST/SendActivationCodebyOTPNotificationType'; -const CHECK_ACTIVATION_CODE = - 'Services/Authentication.svc/REST/CheckActivationCode'; -const CHECK_PATIENT_FOR_REGISTRATION = - "Services/Authentication.svc/REST/CheckPatientForRegisteration"; +const SEND_ACTIVATION_CODE = 'Services/Authentication.svc/REST/SendActivationCodebyOTPNotificationType'; +const CHECK_ACTIVATION_CODE = 'Services/Authentication.svc/REST/CheckActivationCode'; +const FORGOT_PASSWORD = 'Services/Authentication.svc/REST/CheckActivationCodeForSendFileNo'; +const CHECK_PATIENT_FOR_REGISTRATION = "Services/Authentication.svc/REST/CheckPatientForRegisteration"; const CHECK_USER_STATUS = "Services/NHIC.svc/REST/GetPatientInfo"; const REGISTER_USER = 'Services/Authentication.svc/REST/PatientRegistration'; -const LOGGED_IN_USER_URL = - 'Services/MobileNotifications.svc/REST/Insert_PatientMobileDeviceInfo'; +const LOGGED_IN_USER_URL = 'Services/MobileNotifications.svc/REST/Insert_PatientMobileDeviceInfo'; + +const FORGOT_PATIENT_ID = 'Services/Authentication.svc/REST/SendPatientIDSMSByMobileNumber'; +const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class AuthProvider with ChangeNotifier { bool isLogin = false; @@ -98,13 +98,12 @@ class AuthProvider with ChangeNotifier { var lastLogin = lstLogin; //await sharedPref.getInt( // LAST_LOGIN); //this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN); //this.cs.sharedService.getSharedData(AuthenticationService.LAST_LOGIN, false); - var request = - AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + var request = AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); var newRequest = INSERTDeviceIMEIRequest(); var imei = await sharedPref.getString(PUSH_TOKEN); // if (!request.) { - newRequest.iMEI = imei; + newRequest.iMEI = imei; //imei!=null ? imei : ''; newRequest.firstName = request.firstName + " " + request.lastName; newRequest.firstNameN = request.firstNameN + " " + request.lastNameN; newRequest.lastNameN = request.lastNameN ?? ""; @@ -121,8 +120,7 @@ class AuthProvider with ChangeNotifier { newRequest.tokenID = await sharedPref.getString(TOKEN); // } - await new BaseAppClient().post(INSERT_DEVICE_IMEI, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(INSERT_DEVICE_IMEI, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -139,10 +137,8 @@ class AuthProvider with ChangeNotifier { dynamic localRes; Map request = {}; request['IMEI'] = imei; - await new BaseAppClient().post(SELECT_DEVICE_IMEI, - onSuccess: (dynamic response, int statusCode) { - localRes = SelectDeviceIMEIRES.fromJson( - response['Patient_SELECTDeviceIMEIbyIMEIList'][0]); + await new BaseAppClient().post(SELECT_DEVICE_IMEI, onSuccess: (dynamic response, int statusCode) { + localRes = SelectDeviceIMEIRES.fromJson(response['Patient_SELECTDeviceIMEIbyIMEIList'][0]); }, onFailure: (String error, int statusCode) { throw error; }, body: request); @@ -153,8 +149,7 @@ class AuthProvider with ChangeNotifier { } } - Future checkPatientAuthentication( - CheckPatientAuthenticationReq request) async { + Future checkPatientAuthentication(CheckPatientAuthenticationReq request) async { request.versionID = VERSION_ID; request.channel = CHANNEL; request.iPAdress = IP_ADDRESS; @@ -163,8 +158,7 @@ class AuthProvider with ChangeNotifier { request.patientOutSA = request.zipCode == '966' ? 0 : 1; dynamic localRes; - await new BaseAppClient().post(CHECK_PATIENT_AUTH, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(CHECK_PATIENT_AUTH, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -183,8 +177,7 @@ class AuthProvider with ChangeNotifier { request.isDentalAllowedBackend = false; dynamic localRes; - await new BaseAppClient().post(GET_MOBILE_INFO, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(GET_MOBILE_INFO, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; @@ -203,8 +196,7 @@ class AuthProvider with ChangeNotifier { request.isDentalAllowedBackend = false; dynamic localRes; - await new BaseAppClient().post(SEND_ACTIVATION_CODE, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(SEND_ACTIVATION_CODE, onSuccess: (dynamic response, int statusCode) { localRes = response; authenticatedUser = CheckActivationCode.fromJson(localRes); }, onFailure: (String error, int statusCode) { @@ -224,15 +216,14 @@ class AuthProvider with ChangeNotifier { neRequest.languageID = LANGUAGE_ID; neRequest.deviceTypeID = DeviceTypeID; neRequest.patientOutSA = neRequest.zipCode == '966' ? 0 : 1; - neRequest.projectOutSA = neRequest.zipCode == '966' ? 0 : 1; + neRequest.projectOutSA = neRequest.zipCode == '966' ? false : true; neRequest.isDentalAllowedBackend = false; - neRequest.forRegisteration = - neRequest.isRegister != null ? neRequest.isRegister : false; + neRequest.deviceToken = null; + neRequest.forRegisteration = neRequest.isRegister != null ? neRequest.isRegister : false; neRequest.isRegister = false; dynamic localRes; try { - await new BaseAppClient().post(CHECK_ACTIVATION_CODE, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(CHECK_ACTIVATION_CODE, onSuccess: (dynamic response, int statusCode) { localRes = response; //CheckActivationCode.fromJson(); }, onFailure: (String error, int statusCode) { localRes = error; @@ -248,11 +239,11 @@ class AuthProvider with ChangeNotifier { AuthenticatedUser getAuthenticatedUser() { this.isLogin = true; + authenticatedUser = authenticatedUserObject.user; return authenticatedUser; } - Future checkPatientForRegisteration( - CheckPatientForRegistration request) async { + Future checkPatientForRegisteration(CheckPatientForRegistration request) async { request.versionID = VERSION_ID; request.channel = CHANNEL; request.iPAdress = IP_ADDRESS; @@ -263,8 +254,7 @@ class AuthProvider with ChangeNotifier { // request.tokenID = ''; dynamic localRes; try { - await new BaseAppClient().post(CHECK_PATIENT_FOR_REGISTRATION, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(CHECK_PATIENT_FOR_REGISTRATION, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { localRes = error; @@ -287,8 +277,7 @@ class AuthProvider with ChangeNotifier { // request.tokenID = ''; dynamic localRes; try { - await new BaseAppClient().post(CHECK_USER_STATUS, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(CHECK_USER_STATUS, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { localRes = error; @@ -300,51 +289,48 @@ class AuthProvider with ChangeNotifier { } } - Future registerUser(RegisterUserRequest request) async { - request.versionID = VERSION_ID; - request.channel = CHANNEL; - request.iPAdress = IP_ADDRESS; - request.generalid = GENERAL_ID; - request.deviceTypeID = DeviceTypeID; - request.languageID = LANGUAGE_ID; - + Future registerUser(request) async { + request['VersionID'] = VERSION_ID; + request['Channel'] = CHANNEL; + request['IPAdress'] = IP_ADDRESS; + request['Generalid'] = GENERAL_ID; + request['DeviceTypeID'] = DeviceTypeID; + request['LanguageID'] = LANGUAGE_ID; + var requestN = RegisterUserRequest.fromJson(request); // request.tokenID = ''; dynamic localRes; try { - await new BaseAppClient().post(REGISTER_USER, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(REGISTER_USER, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { localRes = error; return Future.value(error); - }, body: request.toJson()); + }, body: requestN.toJson()); return Future.value(localRes); } catch (error) { throw error; } } - Future registeredAuthenticatedUser( - AuthenticatedUser user, deviceToken, lat, long) async { + Future registeredAuthenticatedUser(AuthenticatedUser user, deviceToken, lat, long) async { var request = new RegisteredAuthenticatedUserRequest(); request.deviceToken = deviceToken; - request.voipToken = - ""; //this.cs.sharedService.getSharedData(AuthenticationService.APNS_TOKEN, false); + request.voipToken = ""; //this.cs.sharedService.getSharedData(AuthenticationService.APNS_TOKEN, false); request.deviceType = DeviceTypeID.toString(); request.patientMobileNumber = '0' + user.mobileNumber; request.nationalID = user.patientIdentificationNo; request.gender = user.gender; request.patientID = user.patientID; request.patientOutSA = user.outSA; - request.loginType = await sharedPref.getInt(LAST_LOGIN) ?? 1; + request.loginType = await sharedPref.getInt(LAST_LOGIN) != null ? await sharedPref.getInt(LAST_LOGIN) : 1; request.mACAddress = '00:00:00:00:00:00'; request.latitude = lat; request.longitude = long; request.languageID = int.parse(user.preferredLanguage); + request.patientTypeID = 2; dynamic localRes; try { - await new BaseAppClient().post(LOGGED_IN_USER_URL, - onSuccess: (dynamic response, int statusCode) { + await new BaseAppClient().post(LOGGED_IN_USER_URL, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { localRes = error; @@ -355,4 +341,88 @@ class AuthProvider with ChangeNotifier { throw error; } } + + Future sendPatientIDSMS(mobileNo, context) async { + Map request; + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": 0, + "PatientID": 0, + "TokenID": "", + "PatientMobileNumber": mobileNo, + "SearchType": 2, + "ZipCode": "966", + "PatientIdentificationID": "", + "DeviceTypeID": req.DeviceTypeID, + "SessionID": null + }; + + dynamic localRes; + + await new BaseAppClient().post(FORGOT_PATIENT_ID, onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + + Future forgotPasswordActivation(request, [value]) async { + // var neRequest = CheckActivationCodeReq.fromJson(request); + // neRequest.activationCode = value ?? "0000"; + // neRequest.isSilentLogin = value != null ? false : true; + request['VersionID'] = VERSION_ID; + request['Channel'] = CHANNEL; + request['IPAdress'] = IP_ADDRESS; + request['generalid'] = GENERAL_ID; + request['LanguageID'] = LANGUAGE_ID; + request['DeviceTypeID'] = DeviceTypeID; + + dynamic localRes; + try { + await new BaseAppClient().post(FORGOT_PASSWORD, onSuccess: (dynamic response, int statusCode) { + localRes = response; //CheckActivationCode.fromJson(); + }, onFailure: (String error, int statusCode) { + localRes = error; + return Future.value(error); + // throw error; + }, body: request); + return Future.value(localRes); + } catch (error) { + throw error; + //return Future.value(error); + } + } + + Future getDashboard() async { + Map request = {}; + request['VersionID'] = VERSION_ID; + request['Channel'] = CHANNEL; + request['IPAdress'] = IP_ADDRESS; + request['generalid'] = GENERAL_ID; + request['LanguageID'] = LANGUAGE_ID; + request['DeviceTypeID'] = DeviceTypeID; + request["PatientTypeID"] = 1; + request["PatientType"] = 1; + dynamic localRes; + try { + await new BaseAppClient().post(DASHBOARD, onSuccess: (dynamic response, int statusCode) { + localRes = response; //CheckActivationCode.fromJson(); + }, onFailure: (String error, int statusCode) { + localRes = error; + return Future.value(error); + // throw error; + }, body: request); + return Future.value(localRes); + } catch (error) { + throw error; + //return Future.value(error); + } + } } diff --git a/lib/services/clinic_services/get_clinic_service.dart b/lib/services/clinic_services/get_clinic_service.dart index 61c5ad59..99345030 100644 --- a/lib/services/clinic_services/get_clinic_service.dart +++ b/lib/services/clinic_services/get_clinic_service.dart @@ -19,7 +19,7 @@ class ClinicListService extends BaseService { Future getClinicsList(context) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -44,9 +44,39 @@ class ClinicListService extends BaseService { return Future.value(localRes); } + Future getActiveAppointmentNo(context) async { + Map request; + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + Request req = appGlobal.getPublicRequest(); + request = { + "LanguageID": languageID == 'ar' ? 1 : 2, + "IPAdress": "10.20.10.20", + "VersionID": req.VersionID, + "Channel": req.Channel, + "generalid": 'Cs2020@2016\$2958', + "PatientOutSA": 0, + "TokenID": "", + "IsActiveAppointment": true, + "DeviceTypeID": req.DeviceTypeID, + "PatientType": user.patientType, + "PatientTypeID": user.patientType, + "SessionID": null + }; + + dynamic localRes; + + await baseAppClient.post(GET_ACTIVE_APPOINTMENTS_LIST_URL, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); + return Future.value(localRes); + } + Future getProjectsList(context) async { Map request; - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -83,7 +113,7 @@ class ClinicListService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "ClinicID": clinicID, @@ -133,7 +163,7 @@ class ClinicListService extends BaseService { long = await this.sharedPref.getDouble(USER_LONG); } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "ChiefComplaintID": chiefComplaintID, diff --git a/lib/services/covid-drivethru/covid-drivethru.dart b/lib/services/covid-drivethru/covid-drivethru.dart index 2681783b..3943a8b3 100644 --- a/lib/services/covid-drivethru/covid-drivethru.dart +++ b/lib/services/covid-drivethru/covid-drivethru.dart @@ -23,7 +23,7 @@ class CovidDriveThruService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -59,7 +59,7 @@ class CovidDriveThruService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -96,7 +96,7 @@ class CovidDriveThruService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, diff --git a/lib/services/family_files/family_files_provider.dart b/lib/services/family_files/family_files_provider.dart index f5a06df9..79ea67d0 100644 --- a/lib/services/family_files/family_files_provider.dart +++ b/lib/services/family_files/family_files_provider.dart @@ -42,7 +42,7 @@ class FamilyFilesProvider with ChangeNotifier { bool isLogin = false; bool isLoading = true; dynamic authenticatedUser; - + GetAllSharedRecordsByStatusResponse allSharedRecordsByStatusResponse; Future getSharedRecordByStatus() async { try { dynamic localRes; @@ -55,6 +55,7 @@ class FamilyFilesProvider with ChangeNotifier { AppToast.showErrorToast(message: error); throw error; }, body: request.toJson()); + sharedPref.setObject(FAMILY_FILE, localRes); return Future.value( GetAllSharedRecordsByStatusResponse.fromJson(localRes)); @@ -64,7 +65,8 @@ class FamilyFilesProvider with ChangeNotifier { } } - Future getUserViewRequest(responseID) async { + Future getUserViewRequest( + responseID) async { try { dynamic localRes; Map request = {}; @@ -73,14 +75,18 @@ class FamilyFilesProvider with ChangeNotifier { onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { - return Future.value(error); + return Future.error(error); }, body: request); - sharedPref.setObject(FAMILY_FILE, localRes); - return Future.value( - GetAllSharedRecordsByStatusResponse.fromJson(localRes)); + if (localRes != null) { + sharedPref.setObject(FAMILY_FILE, localRes); + allSharedRecordsByStatusResponse = + GetAllSharedRecordsByStatusResponse.fromJson(localRes); + return Future.value(allSharedRecordsByStatusResponse); + } else + return Future.error("No Data"); } catch (error) { print(error); - throw error; + return Future.error(error); } } @@ -154,7 +160,7 @@ class FamilyFilesProvider with ChangeNotifier { request.zipCode = zipCode; request.patientMobileNumber = int.parse(cellNumber); request.patientIdentificationID = patientIdentificationID; - request.projectOutSA = zipCode == '966' ? 0 : 1; + request.projectOutSA = zipCode == '966' ? false : true; request.loginType = request.searchType = 1; request.oTPSendType = 1; request.isRegister = false; @@ -173,6 +179,7 @@ class FamilyFilesProvider with ChangeNotifier { } } + //TODO Future checkActivationCode( loginTokenID, activationCode, indentification, mobileNo) async { try { @@ -240,29 +247,42 @@ class FamilyFilesProvider with ChangeNotifier { } Future silentLoggin(GetAllSharedRecordsByStatusList switchUser, - {onSuccess}) async { - //var currentUser = this.authService.getAuthenticatedUser(); - var currentUser = - AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); - //const request = new SwitchUserRequest(); + {onSuccess, mainUser}) async { Map request = {}; - request['LogInTokenID'] = ''; - request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; - request['PatientMobileNumber'] = - switchUser.mobileNumber; //['MobileNumber']; - request['SearchType'] = 2; - request['SuperUser'] = currentUser.patientID; //currentUser.PatientID; - request['PatientIdentificationID'] = ''; - request['IsSilentLogin'] = true; - if (switchUser.mobileNumber != null && - switchUser.patientID != currentUser.patientID) { - request['PatientID'] = switchUser.patientID; //['PatientID']; - } else { - request['PatientID'] = switchUser.responseID; //['ResponseID']; + if(mainUser ==true){ + var currentUser = + AuthenticatedUser.fromJson(await sharedPref.getObject(MAIN_USER)); + //const request = new SwitchUserRequest(); + request['LogInTokenID'] = ''; + request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; + request['PatientMobileNumber'] = + currentUser.mobileNumber; //['MobileNumber']; + request['SearchType'] = 2; + request['SuperUser'] = currentUser.patientID; //currentUser.PatientID; + request['PatientIdentificationID'] = ''; + request['IsSilentLogin'] = true; + request['PatientID'] = currentUser.patientID; //['PatientID']; + request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; + request['activationCode'] = '0000'; + request['isRegister'] = false; + }else { + var currentUser = + AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + //const request = new SwitchUserRequest(); + + request['LogInTokenID'] = ''; + request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; + request['PatientMobileNumber'] = + switchUser.mobileNumber; //['MobileNumber']; + request['SearchType'] = 2; + request['SuperUser'] = switchUser.patientID; //currentUser.PatientID; + request['PatientIdentificationID'] = ''; + request['IsSilentLogin'] = true; + request['PatientID'] = switchUser.responseID; //['PatientID']; + request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; + request['activationCode'] = '0000'; + request['isRegister'] = false; } - request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; - request['activationCode'] = '0000'; - request['isRegister'] = false; try { dynamic localRes; diff --git a/lib/services/livecare_services/livecare_provider.dart b/lib/services/livecare_services/livecare_provider.dart index 65cf6daf..285fa0bf 100644 --- a/lib/services/livecare_services/livecare_provider.dart +++ b/lib/services/livecare_services/livecare_provider.dart @@ -25,7 +25,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -62,7 +62,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -99,7 +99,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -137,7 +137,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); // Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -166,7 +166,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -203,7 +203,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -243,7 +243,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -290,7 +290,7 @@ class LiveCareService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, diff --git a/lib/services/permission/permission_service.dart b/lib/services/permission/permission_service.dart new file mode 100644 index 00000000..6f01f3c8 --- /dev/null +++ b/lib/services/permission/permission_service.dart @@ -0,0 +1,39 @@ +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/Request.dart'; +import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:localstorage/localstorage.dart'; + +class PermissionService extends BaseService { + final LocalStorage storage = new LocalStorage("permission"); + + AppGlobal appGlobal = new AppGlobal(); + + setVibrationPermission(flag) async { + storage.setItem('isVibration', flag); + } + + isVibrationEnabled() { + return storage.getItem('isVibration') ==null ? false :true; + } + vibrate(){ + if(isVibrationEnabled() ==true){ + HapticFeedback.vibrate(); + } + } + + + setTheme(flag) async { + storage.setItem('isTheme', flag); + } + + isThemeEnabled() { + return storage.getItem('isTheme'); + } + +} diff --git a/lib/services/smartwatch_integration/SmartWatchIntegrationService.dart b/lib/services/smartwatch_integration/SmartWatchIntegrationService.dart index 315249c8..3bfe62e3 100644 --- a/lib/services/smartwatch_integration/SmartWatchIntegrationService.dart +++ b/lib/services/smartwatch_integration/SmartWatchIntegrationService.dart @@ -23,7 +23,7 @@ class SmartWatchIntegrationService extends BaseService { authUser = data; } - var languageID = await sharedPref.getString(APP_LANGUAGE); + var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { diff --git a/lib/splashPage.dart b/lib/splashPage.dart new file mode 100644 index 00000000..d367d3ec --- /dev/null +++ b/lib/splashPage.dart @@ -0,0 +1,63 @@ +import 'dart:async'; +import 'package:diplomaticquarterapp/pages/landing/landing_page.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'config/shared_pref_kay.dart'; +import 'core/service/AuthenticatedUserObject.dart'; +import 'core/viewModels/project_view_model.dart'; +import 'locator.dart'; +import 'models/Authentication/authenticated_user.dart'; + +AppSharedPreferences sharedPref = new AppSharedPreferences(); +AuthenticatedUserObject authenticatedUserObject = + locator(); + +class SplashScreen extends StatefulWidget { + @override + _SplashScreenState createState() => _SplashScreenState(); +} + +class _SplashScreenState extends State { + //Provider.of(context, listen: false).isLogin + @override + void initState() { + super.initState(); + Timer( + Duration(seconds: 1, milliseconds: 500), + () { + getUserData().then((value) { + Navigator.of(context).pushReplacement( + MaterialPageRoute( + builder: (BuildContext context) => LandingPage(), + ), + ); + }); + }, + ); + } + + Future getUserData() async { + var data = await sharedPref.getObject(USER_PROFILE); + if (data != null) { + AuthenticatedUser userData = AuthenticatedUser.fromJson(data); + Provider.of(context, listen: false).isLogin = true; + authenticatedUserObject.isLogin = true; + authenticatedUserObject.user = userData; + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + body: Center( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Image.asset('assets/images/DQ/DQ_logo.png'), + ), + ), + ); + } +} diff --git a/lib/theme/theme_notifier.dart b/lib/theme/theme_notifier.dart new file mode 100644 index 00000000..e414d159 --- /dev/null +++ b/lib/theme/theme_notifier.dart @@ -0,0 +1,15 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/theme/theme_value.dart'; +import 'package:flutter/material.dart'; + +class ThemeNotifier with ChangeNotifier { + ThemeData _themeData = defaultTheme; + ThemeNotifier(this._themeData); + getTheme() => _themeData; + + setTheme(ThemeData themeData) async { + _themeData = themeData; + + notifyListeners(); + } +} diff --git a/lib/theme/theme_value.dart b/lib/theme/theme_value.dart new file mode 100644 index 00000000..d19e13b2 --- /dev/null +++ b/lib/theme/theme_value.dart @@ -0,0 +1,129 @@ +import 'dart:ui'; +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +/// ---- Default Theme ---- +/// + +//final projectProvider = Provider.of(AppGlobal.context); +final bluePrimary = Color(0xFF3F51B5); +final blueAccent = Color(0xFFFF9800); +final blueBackground = Color(0xFFFFFFFF); + +// ProjectViewModel projectProvider = Provider.of(AppGlobal.context); + final bwTheme = ThemeData( + //fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.grey, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + cardColor: Colors.black, + buttonColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Colors.grey, + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.grey, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Colors.grey, + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Colors.black45, + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Colors.grey, + ), + ), + ); + + final defaultTheme = ThemeData( + //fontFamily: ProjectViewModel().isArabic? 'Cairo' : 'WorkSans', + primarySwatch: Colors.blue, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Color(0xffEEEEEE), + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.white, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Color(0xff40ACC9), + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + cardColor: Colors.white, + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Color(0xff40ACC9), + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Color(0xff40ACC9), + ), + ), + ); + + final invertTheme = ThemeData( + //fontFamily: projectProvider.isArabic ? 'Cairo' : 'WorkSans', + primarySwatch: Colors.grey, + visualDensity: VisualDensity.adaptivePlatformDensity, + brightness: Brightness.light, + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: ZoomPageTransitionsBuilder(), + TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), + }, + ), + hintColor: Colors.grey[400], + cardColor: Colors.black, + buttonColor: Colors.grey[400], + disabledColor: Colors.grey[300], + errorColor: Color.fromRGBO(235, 80, 60, 1.0), + scaffoldBackgroundColor: Colors.grey, + textSelectionColor: Color.fromRGBO(80, 100, 253, 0.5), + textSelectionHandleColor: Colors.grey, + canvasColor: Colors.white, + backgroundColor: Colors.grey, + highlightColor: Colors.grey[100].withOpacity(0.4), + splashColor: Colors.transparent, + primaryColor: Colors.grey, + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Color(0xffE0E0E0)), + cursorColor: Colors.grey, + + iconTheme: IconThemeData(), + appBarTheme: AppBarTheme( + color: Colors.grey, + brightness: Brightness.dark, + elevation: 10.0, + actionsIconTheme: IconThemeData( + color: Colors.grey, + ), + ), + ); + diff --git a/lib/uitl/HMGNetworkConnectivity.dart b/lib/uitl/HMGNetworkConnectivity.dart new file mode 100644 index 00000000..228edf93 --- /dev/null +++ b/lib/uitl/HMGNetworkConnectivity.dart @@ -0,0 +1,120 @@ +import 'dart:developer'; +import 'dart:io'; + +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/utils.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/alert_dialog.dart'; +import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:wifi/wifi.dart'; + +import 'gif_loader_dialog_utils.dart'; + +class HMGNetworkConnectivity { + final BuildContext context; + final Function callBack; + + final String SSID = "HMG-MobileApp"; + + HMGNetworkConnectivity(this.context, this.callBack); + + void checkAndConnectIfNoInternet() async { + String pingUrl = "$BASE_URL$PING_SERVICE"; + // pingUrl = "https://captive.apple.com"; + + String ssid = await Wifi.ssid.catchError((error) { + log(error.toString()); + }); + + bool alreadyConnected = ssid == SSID; + + BaseAppClient().simpleGet(pingUrl, onSuccess: (dynamic response, int statusCode) { + log("Having internet with status code: $statusCode"); + }, onFailure: (String error, int statusCode) { + if (alreadyConnected) + showFailDailog(TranslationBase.of(context).failedToAccessHmgServices); + else { + confirmFromUser(); + } + }); + } + + void confirmFromUser() { + TranslationBase translator = TranslationBase.of(context); + ConfirmDialog( + context: context, + confirmMessage: translator.wantToConnectWithHmgNetwork, + okText: translator.yes, + okFunction: () { + ConfirmDialog.closeAlertDialog(context); + callBack(); + }, + cancelText: translator.no, + cancelFunction: () { + ConfirmDialog.closeAlertDialog(context); + }).showAlertDialog(context); + } + + void showFailDailog(String message) { + TranslationBase translator = TranslationBase.of(context); + AlertDialogBox( + context: context, + okText: translator.ok, + confirmMessage: message, + okFunction: () { + AlertDialogBox.closeAlertDialog(context); + }).showAlertDialog(context); + } + + // void next() { + // if (Platform.isIOS) { + // confirmFromUser_iOS(); + // } else if (Platform.isAndroid) { + // confirmFromUser(); + // } + // } + + // void confirmFromUser_iOS() { + // String message = "You don't have internet access, Do you want to connect with HMG Network to use App.\n\nMake sure you are in HMG Network range"; + // ConfirmDialog( + // context: context, + // confirmMessage: message, + // okText: "Yes", + // okFunction: () { + // ConfirmDialog.closeAlertDialog(context); + // callBack(); + // }, + // cancelText: "No", + // cancelFunction: () { + // ConfirmDialog.closeAlertDialog(context); + // }).showAlertDialog(context); + // } + + // void connect_Android() { + // // enable the Wifi if its off + // PlatformBridge() + // .enableWifiIfNot() + // .then((value) => { + // if (value == true) + // { + // callBack() + // // Wifi.list(SSID) + // // .then((value1) => { + // // if (value1.length > 0) {callBack()} else {log("No HMG network in range")} + // // }) + // // .catchError((e) { + // // log(e); + // // }) + // } + // }) + // .catchError((error) { + // showFailDailog(error); + // }); + // } +} diff --git a/lib/uitl/PlatformBridge.dart b/lib/uitl/PlatformBridge.dart index e4e0b6d4..b4769475 100644 --- a/lib/uitl/PlatformBridge.dart +++ b/lib/uitl/PlatformBridge.dart @@ -1,16 +1,107 @@ +import 'dart:developer'; + +import 'package:diplomaticquarterapp/config/localized_values.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; class PlatformBridge { static const platform = const MethodChannel("HMG-Platform-Bridge"); + static PlatformBridge _shared; + static BuildContext _context; + + // // Singleton + // static final PlatformBridge _singleton = PlatformBridge._internal(); + // factory PlatformBridge() { + // return _singleton; + // } + // PlatformBridge._internal(); + + static PlatformBridge shared() { + if (_shared == null) { + assert(true, "PlatformBridge is not initialized, (Initialized it by calling 'PlatformBridge.init(BuildContext))'."); + } + return _shared; + } + + static void init(BuildContext context) { + _context = context; + _shared = PlatformBridge(); + + Future incoming(MethodCall methodCall) async { + switch (methodCall.method) { + case 'localizedValue': + String key = methodCall.arguments.toString(); + return platformLocalizedText(key); + + case 'test': + return 123.0; + default: + throw MissingPluginException('notImplemented'); + } + } + platform.setMethodCallHandler(incoming); + } + + //--------------------------------- + // Incoming below + //--------------------------------- + static Future platformLocalizedText(String forKey) async { + String currentLanguage = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + Object localized = platformLocalizedValues[forKey][currentLanguage]; + return (localized != null || (localized is String)) ? localized : forKey; + } + + //--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--// + //--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--// + + //--------------------------------- + // Outgoing below + //--------------------------------- // Method Names - static const wifi_connect_method = "connectHMGGuestWifi"; + static const hmg_internet_wifi_connect_method = "connectHMGInternetWifi"; + static const hmg_guest_wifi_connect_method = "connectHMGGuestWifi"; + static const is_hmg_network_available_method = "isHMGNetworkAvailable"; + static const enable_wifi_if_not = "enableWifiIfNot"; static const show_loading_method = "loading"; - Future connectHMGGuestWifi(String patientId) { - print("Invoking platform method: $wifi_connect_method"); + Future connectHMGInternetWifi(String patientId) { + print("Invoking platform method: $hmg_internet_wifi_connect_method"); + try { + return platform.invokeMethod(hmg_internet_wifi_connect_method, [patientId]); + } on PlatformException catch (e) { + print(e); + return Future.error(e); + } + } + + Future connectHMGGuestWifi() { + print("Invoking platform method: $hmg_guest_wifi_connect_method"); + try { + return platform.invokeMethod(hmg_guest_wifi_connect_method); + } on PlatformException catch (e) { + print(e); + return Future.error(e); + } + } + + Future isHMGNetworkAvailable(String ssid) { + print("Invoking platform method: $is_hmg_network_available_method"); + try { + return platform.invokeMethod(is_hmg_network_available_method, ssid); + } on PlatformException catch (e) { + print(e); + return Future.error(e); + } + } + + Future enableWifiIfNot() async { + print("Invoking platform method: $enable_wifi_if_not"); try { - return platform.invokeMethod(wifi_connect_method, [patientId]); + return platform.invokeMethod(enable_wifi_if_not); } on PlatformException catch (e) { print(e); return Future.error(e); @@ -20,8 +111,7 @@ class PlatformBridge { void showLoading(String message, bool show) async { print("Invoking platform method: $show_loading_method"); try { - final int result = - await platform.invokeMethod(show_loading_method, [message, show]); + final int result = await platform.invokeMethod(show_loading_method, [message, show]); } on PlatformException catch (e) { print(e); } diff --git a/lib/uitl/date_uitl.dart b/lib/uitl/date_uitl.dart index 8ffaf97c..1068dc74 100644 --- a/lib/uitl/date_uitl.dart +++ b/lib/uitl/date_uitl.dart @@ -112,6 +112,37 @@ class DateUtil { } } + /// get month by + /// [month] convert month number in to month name in Arabic + static getMonthArabic(int month) { + switch (month) { + case 1: + return "يناير"; + case 2: + return " فبراير"; + case 3: + return "مارس"; + case 4: + return "أبريل"; + case 5: + return "مايو"; + case 6: + return "يونيو"; + case 7: + return "يوليو"; + case 8: + return "أغسطس"; + case 9: + return "سبتمبر"; + case 10: + return " اكتوبر"; + case 11: + return " نوفمبر"; + case 12: + return "ديسمبر"; + } + } + static getMonthByName(String month) { switch (month.toLowerCase()) { case 'january': @@ -172,6 +203,27 @@ class DateUtil { } } + /// get month by + /// [weekDay] convert week day in int to week day name arabic + static getWeekDayArabic(int weekDay) { + switch (weekDay) { + case 1: + return "الاثنين"; + case 2: + return "الثلاثاء"; + case 3: + return "الاربعاء"; + case 4: + return "الخميس"; + case 5: + return "الجمعه"; + case 6: + return "السبت "; + case 7: + return "الاحد"; + } + } + /// get data formatted like Apr 26,2020 /// [dateTime] convert DateTime to data formatted static String getMonthDayYearDateFormatted(DateTime dateTime) { @@ -185,6 +237,30 @@ class DateUtil { return ""; } + /// get data formatted like Thursday, Apr 26,2020 + /// [dateTime] convert DateTime to date formatted + static String getWeekDayMonthDayYearDateFormatted( + DateTime dateTime, String lang) { + if (dateTime != null) + return lang == 'en' + ? getDay(dateTime.weekday.getDayOfWeekEnumValue) + + ", " + + getMonth(dateTime.month) + + " " + + dateTime.day.toString() + + " " + + dateTime.year.toString() + : getWeekDayArabic(dateTime.weekday) + + ", " + + dateTime.day.toString() + + " " + + getMonthArabic(dateTime.month) + + " " + + dateTime.year.toString(); + else + return ""; + } + /// get data formatted like 26/4/2020 /// [dateTime] convert DateTime to data formatted static String getDayMonthYearDateFormatted(DateTime dateTime) { diff --git a/lib/uitl/gif_loader_dialog_utils.dart b/lib/uitl/gif_loader_dialog_utils.dart new file mode 100644 index 00000000..ac37cdfb --- /dev/null +++ b/lib/uitl/gif_loader_dialog_utils.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +import '../widgets/Loader/gif_loader_container.dart'; + +class GifLoaderDialogUtils { + static showMyDialog(BuildContext context) { + showDialog(context: context, child: GifLoaderContainer()); + } + + static hideDialog(BuildContext context) { + Navigator.of(context).pop(); + } +} diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index c5246e35..8ed07987 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -14,8 +14,11 @@ class TranslationBase { return Localizations.of(context, TranslationBase); } - String get dashboardScreenToolbarTitle => - localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; + String by(String key) { + return localizedValues[key][locale.languageCode]; + } + + String get dashboardScreenToolbarTitle => localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; String get settings => localizedValues['settings'][locale.languageCode]; @@ -55,11 +58,9 @@ class TranslationBase { String get nearestAppo => localizedValues['nearestAppo'][locale.languageCode]; - String get searchByDocText => - localizedValues['searchByDocText'][locale.languageCode]; + String get searchByDocText => localizedValues['searchByDocText'][locale.languageCode]; - String get enterDocName => - localizedValues['enterDocName'][locale.languageCode]; + String get enterDocName => localizedValues['enterDocName'][locale.languageCode]; String get search => localizedValues['search'][locale.languageCode]; @@ -69,41 +70,33 @@ class TranslationBase { String get appoInfo => localizedValues['appoInfo'][locale.languageCode]; - String get availableAppo => - localizedValues['availableAppo'][locale.languageCode]; + String get availableAppo => localizedValues['availableAppo'][locale.languageCode]; String get gender => localizedValues['gender'][locale.languageCode]; String get nationality => localizedValues['nationality'][locale.languageCode]; - String get docQualifications => - localizedValues['docQualifications'][locale.languageCode]; + String get docQualifications => localizedValues['docQualifications'][locale.languageCode]; - String get confirmAppoHeading => - localizedValues['confirmAppoHeading'][locale.languageCode]; + String get confirmAppoHeading => localizedValues['confirmAppoHeading'][locale.languageCode]; String get patientInfo => localizedValues['patientInfo'][locale.languageCode]; String get bookSuccess => localizedValues['bookSuccess'][locale.languageCode]; - String get patientShare => - localizedValues['patientShare'][locale.languageCode]; + String get patientShare => localizedValues['patientShare'][locale.languageCode]; - String get patientShareWithTax => - localizedValues['patientShareWithTax'][locale.languageCode]; + String get patientShareWithTax => localizedValues['patientShareWithTax'][locale.languageCode]; String get confirmAppo => localizedValues['confirmAppo'][locale.languageCode]; String get confirm => localizedValues['confirm'][locale.languageCode]; - String get confirmLiveCare => - localizedValues['confirmLiveCare'][locale.languageCode]; + String get confirmLiveCare => localizedValues['confirmLiveCare'][locale.languageCode]; - String get waitingForDoctor => - localizedValues['waitingForDoctor'][locale.languageCode]; + String get waitingForDoctor => localizedValues['waitingForDoctor'][locale.languageCode]; - String get confirmLater => - localizedValues['confirmLater'][locale.languageCode]; + String get confirmLater => localizedValues['confirmLater'][locale.languageCode]; String get todoList => localizedValues['todoList'][locale.languageCode]; @@ -119,40 +112,38 @@ class TranslationBase { String get login => localizedValues['login'][locale.languageCode]; - String get loginregister => - localizedValues['loginregister'][locale.languageCode]; + String get loginregister => localizedValues['loginregister'][locale.languageCode]; + + String get poweredBy => localizedValues['poweredBy'][locale.languageCode]; String get welcome => localizedValues['welcome'][locale.languageCode]; - String get welcomeText => - localizedValues['welcome_text'][locale.languageCode]; + String get welcomeText => localizedValues['welcome_text'][locale.languageCode]; - String get welcomeText2 => - localizedValues['welcome_text2'][locale.languageCode]; + String get welcomeText2 => localizedValues['welcome_text2'][locale.languageCode]; String get yes => localizedValues['yes'][locale.languageCode]; String get no => localizedValues['no'][locale.languageCode]; - String get logintypeRadio => - localizedValues['logintyperadio'][locale.languageCode]; - String get registerInfoFamily => - localizedValues['register-info-family'][locale.languageCode]; + String get logintypeRadio => localizedValues['logintyperadio'][locale.languageCode]; + String get registerInfoFamily => localizedValues['register-info-family'][locale.languageCode]; String get registerNow => localizedValues['registernow'][locale.languageCode]; String get nationalID => localizedValues['nationalID'][locale.languageCode]; + String get idNo => localizedValues['national-id'][locale.languageCode]; + String get fileNo => localizedValues['fileNo'][locale.languageCode]; + String get fileno => localizedValues['fileno'][locale.languageCode]; + String get forgotPassword => localizedValues['forgotFileNo'][locale.languageCode]; - String get forgotPassword => - localizedValues['forgotFileNo'][locale.languageCode]; + String get forgotFileNoTitle => localizedValues['forgotFileNoTitle'][locale.languageCode]; - String get enterNationalId => - localizedValues['enter-national-id'][locale.languageCode]; + String get enterNationalId => localizedValues['enter-national-id'][locale.languageCode]; - String get profileInfo => - localizedValues['profile-info'][locale.languageCode]; + String get profileInfo => localizedValues['profile-info'][locale.languageCode]; String get submit => localizedValues['submit'][locale.languageCode]; @@ -162,42 +153,31 @@ class TranslationBase { String get hijriDate => localizedValues['hijri-date'][locale.languageCode]; - String get gregorianDate => - localizedValues['gregorian-date'][locale.languageCode]; + String get gregorianDate => localizedValues['gregorian-date'][locale.languageCode]; - String get verifyLoginWith => - localizedValues['verify-login-with'][locale.languageCode]; + String get verifyLoginWith => localizedValues['verify-login-with'][locale.languageCode]; String get register => localizedValues['register-user'][locale.languageCode]; - String get verifyFingerprint => - localizedValues['verify-with-fingerprint'][locale.languageCode]; + String get verifyFingerprint => localizedValues['verify-with-fingerprint'][locale.languageCode]; - String get verifyFaceID => - localizedValues['verify-with-faceid'][locale.languageCode]; + String get verifyFaceID => localizedValues['verify-with-faceid'][locale.languageCode]; - String get verifySMS => - localizedValues['verify-with-sms'][locale.languageCode]; + String get verifySMS => localizedValues['verify-with-sms'][locale.languageCode]; - String get verifyWhatsApp => - localizedValues['verify-with-whatsapp'][locale.languageCode]; + String get verifyWhatsApp => localizedValues['verify-with-whatsapp'][locale.languageCode]; String get lastLoginAt => localizedValues['last-login'][locale.languageCode]; - String get lastLoginWith => - localizedValues['last-login-with'][locale.languageCode]; + String get lastLoginWith => localizedValues['last-login-with'][locale.languageCode]; - String get verifyFingerprint2 => - localizedValues['verify-fingerprint'][locale.languageCode]; + String get verifyFingerprint2 => localizedValues['verify-fingerprint'][locale.languageCode]; - String get searchMedicine => - localizedValues['searchMedicine'][locale.languageCode]; + String get searchMedicine => localizedValues['searchMedicine'][locale.languageCode]; - String get searchMedicineHere => - localizedValues['searchMedicineHere'][locale.languageCode]; + String get searchMedicineHere => localizedValues['searchMedicineHere'][locale.languageCode]; - String get pendingPayment => - localizedValues['pendingPayment'][locale.languageCode]; + String get pendingPayment => localizedValues['pendingPayment'][locale.languageCode]; String get payNow => localizedValues['payNow'][locale.languageCode]; @@ -207,31 +187,23 @@ class TranslationBase { String get livecare => localizedValues['livecare'][locale.languageCode]; - String get upcomingNoAction => - localizedValues['upcoming-noAction'][locale.languageCode]; + String get upcomingNoAction => localizedValues['upcoming-noAction'][locale.languageCode]; - String get upcomingConfirm => - localizedValues['upcoming-confirm'][locale.languageCode]; + String get upcomingConfirm => localizedValues['upcoming-confirm'][locale.languageCode]; - String get upcomingPaymentPending => - localizedValues['upcoming-payment-pending'][locale.languageCode]; + String get upcomingPaymentPending => localizedValues['upcoming-payment-pending'][locale.languageCode]; - String get upcomingPaymentNow => - localizedValues['upcoming-payment-now'][locale.languageCode]; + String get upcomingPaymentNow => localizedValues['upcoming-payment-now'][locale.languageCode]; String get upcomingQR => localizedValues['upcoming-QR'][locale.languageCode]; - String get upcomingVirtual => - localizedValues['upcoming-virtual'][locale.languageCode]; + String get upcomingVirtual => localizedValues['upcoming-virtual'][locale.languageCode]; - String get upcomingLivecare => - localizedValues['upcoming-livecare'][locale.languageCode]; + String get upcomingLivecare => localizedValues['upcoming-livecare'][locale.languageCode]; - String get liveCareAppo => - localizedValues['livecareAppo'][locale.languageCode]; + String get liveCareAppo => localizedValues['livecareAppo'][locale.languageCode]; - String get upcomingDetails => - localizedValues['upcoming-details'][locale.languageCode]; + String get upcomingDetails => localizedValues['upcoming-details'][locale.languageCode]; String get reschedule => localizedValues['reschedule'][locale.languageCode]; @@ -249,96 +221,67 @@ class TranslationBase { String get payment => localizedValues['payment'][locale.languageCode]; - String get cancel_nocaps => - localizedValues['cancel-nocaps'][locale.languageCode]; + String get cancel_nocaps => localizedValues['cancel-nocaps'][locale.languageCode]; - String get cancelAppoMsg => - localizedValues['cancelAppoMsg'][locale.languageCode]; + String get cancelAppoMsg => localizedValues['cancelAppoMsg'][locale.languageCode]; - String get pharmaciesList => - localizedValues['pharmaciesList'][locale.languageCode]; + String get pharmaciesList => localizedValues['pharmaciesList'][locale.languageCode]; String get description => localizedValues['description'][locale.languageCode]; String get price => localizedValues['price'][locale.languageCode]; - String get youCanFindItIn => - localizedValues['youCanFindItIn'][locale.languageCode]; + String get youCanFindItIn => localizedValues['youCanFindItIn'][locale.languageCode]; - String get pleaseEnterMedicineName => - localizedValues['pleaseEnterMedicineName'][locale.languageCode]; + String get pleaseEnterMedicineName => localizedValues['pleaseEnterMedicineName'][locale.languageCode]; - String get verificationMessage => - localizedValues['verification_message'][locale.languageCode]; + String get verificationMessage => localizedValues['verification_message'][locale.languageCode]; - String get validationMessage => - localizedValues['validation_message'][locale.languageCode]; + String get validationMessage => localizedValues['validation_message'][locale.languageCode]; - String get arabicChange => - localizedValues['arabic-change'][locale.languageCode]; + String get arabicChange => localizedValues['arabic-change'][locale.languageCode]; - String get notification => - localizedValues['notification'][locale.languageCode]; + String get notification => localizedValues['notification'][locale.languageCode]; String get appsetting => localizedValues['app-settings'][locale.languageCode]; String get rateApp => localizedValues['rate-app'][locale.languageCode]; - String get setReminder => - localizedValues['set-reminder'][locale.languageCode]; + String get setReminder => localizedValues['set-reminder'][locale.languageCode]; String get before => localizedValues['before'][locale.languageCode]; String get minute => localizedValues['minute'][locale.languageCode]; String get hour => localizedValues['hour'][locale.languageCode]; - String get reminderSuccess => - localizedValues['reminderSuccess'][locale.languageCode]; - String get patientShareToDo => - localizedValues['patientShareToDo'][locale.languageCode]; - String get patientTaxToDo => - localizedValues['patientTaxToDo'][locale.languageCode]; - String get patientShareTotalToDo => - localizedValues['patientShareTotalToDo'][locale.languageCode]; - String get paymentMethod => - localizedValues['paymentMethod'][locale.languageCode]; + String get reminderSuccess => localizedValues['reminderSuccess'][locale.languageCode]; + String get patientShareToDo => localizedValues['patientShareToDo'][locale.languageCode]; + String get patientTaxToDo => localizedValues['patientTaxToDo'][locale.languageCode]; + String get patientShareTotalToDo => localizedValues['patientShareTotalToDo'][locale.languageCode]; + String get paymentMethod => localizedValues['paymentMethod'][locale.languageCode]; - String get moreVerification => - localizedValues['more-verify'][locale.languageCode]; + String get moreVerification => localizedValues['more-verify'][locale.languageCode]; - String get welcomeBack => - localizedValues['welcome-back'][locale.languageCode]; + String get welcomeBack => localizedValues['welcome-back'][locale.languageCode]; - String get accountInfo => - localizedValues['account-info'][locale.languageCode]; + String get accountInfo => localizedValues['account-info'][locale.languageCode]; - String get useAnotherAccount => - localizedValues['another-acc'][locale.languageCode]; + String get useAnotherAccount => localizedValues['another-acc'][locale.languageCode]; String get next => localizedValues['next'][locale.languageCode]; - String get noNeedToWaitInLine => - localizedValues['noNeedToWaitInLine'][locale.languageCode]; - String get useQRAppoAttend => - localizedValues['useQRAppoAttend'][locale.languageCode]; - String get passQRAppoAttend => - localizedValues['passQRAppoAttend'][locale.languageCode]; - String get sitWaitingQR => - localizedValues['sitWaitingQR'][locale.languageCode]; - String get attendRegisterCode => - localizedValues['attendRegisterCode'][locale.languageCode]; - String get scanQRHospital => - localizedValues['scanQRHospital'][locale.languageCode]; + String get noNeedToWaitInLine => localizedValues['noNeedToWaitInLine'][locale.languageCode]; + String get useQRAppoAttend => localizedValues['useQRAppoAttend'][locale.languageCode]; + String get passQRAppoAttend => localizedValues['passQRAppoAttend'][locale.languageCode]; + String get sitWaitingQR => localizedValues['sitWaitingQR'][locale.languageCode]; + String get attendRegisterCode => localizedValues['attendRegisterCode'][locale.languageCode]; + String get scanQRHospital => localizedValues['scanQRHospital'][locale.languageCode]; String get sendEmail => localizedValues['sendEmail'][locale.languageCode]; String get close => localizedValues['close'][locale.languageCode]; String get booked => localizedValues['booked'][locale.languageCode]; String get confirmed => localizedValues['confirmed'][locale.languageCode]; String get arrived => localizedValues['arrived'][locale.languageCode]; - String get payNowBookSuccess => - localizedValues['payNowBookSuccess'][locale.languageCode]; - String get payNowBookSuccesstext1 => - localizedValues['payNowBookSuccesstext1'][locale.languageCode]; - String get payNowBookSuccesstext2 => - localizedValues['payNowBookSuccesstext2'][locale.languageCode]; + String get payNowBookSuccess => localizedValues['payNowBookSuccess'][locale.languageCode]; + String get payNowBookSuccesstext1 => localizedValues['payNowBookSuccesstext1'][locale.languageCode]; + String get payNowBookSuccesstext2 => localizedValues['payNowBookSuccesstext2'][locale.languageCode]; String get payLater => localizedValues['payLater'][locale.languageCode]; - String get askDocNotAllowed => - localizedValues['askDocNotAllowed'][locale.languageCode]; + String get askDocNotAllowed => localizedValues['askDocNotAllowed'][locale.languageCode]; String get firstName => localizedValues['first-name'][locale.languageCode]; String get middleName => localizedValues['middle-name'][locale.languageCode]; @@ -349,15 +292,13 @@ class TranslationBase { String get female => localizedValues['female'][locale.languageCode]; - String get prefferedLanguage => - localizedValues['preferred-language'][locale.languageCode]; + String get prefferedLanguage => localizedValues['preferred-language'][locale.languageCode]; String get english => localizedValues['english'][locale.languageCode]; String get arabic => localizedValues['arabic'][locale.languageCode]; - String get registrLocation => - localizedValues['locations-register'][locale.languageCode]; + String get registrLocation => localizedValues['locations-register'][locale.languageCode]; String get ksa => localizedValues['ksa'][locale.languageCode]; @@ -367,15 +308,13 @@ class TranslationBase { String get family => localizedValues['family'][locale.languageCode]; - String get myFamilyFiles => - localizedValues['family-title'][locale.languageCode]; + String get myFamilyFiles => localizedValues['family-title'][locale.languageCode]; + String get myFamily => localizedValues['myFamily'][locale.languageCode]; String get oxygenation => localizedValues['oxygenation'][locale.languageCode]; - String get respirationRate => - localizedValues['respirationRate'][locale.languageCode]; + String get respirationRate => localizedValues['respirationRate'][locale.languageCode]; - String get bodyMeasurements => - localizedValues['bodyMeasurements'][locale.languageCode]; + String get bodyMeasurements => localizedValues['bodyMeasurements'][locale.languageCode]; String get height => localizedValues['height'][locale.languageCode]; String get temperature => localizedValues['temperature'][locale.languageCode]; @@ -384,8 +323,7 @@ class TranslationBase { String get respiration => localizedValues['respiration'][locale.languageCode]; - String get bloodPressure => - localizedValues['bloodPressure'][locale.languageCode]; + String get bloodPressure => localizedValues['bloodPressure'][locale.languageCode]; String get painScale => localizedValues['painScale'][locale.languageCode]; String get heart => localizedValues['heart'][locale.languageCode]; @@ -394,8 +332,7 @@ class TranslationBase { String get request => localizedValues['request'][locale.languageCode]; String get memberName => localizedValues['member-name'][locale.languageCode]; String get switchUser => localizedValues['switch-login'][locale.languageCode]; - String get removeMember => - localizedValues['remove-membe'][locale.languageCode]; + String get removeMember => localizedValues['remove-membe'][locale.languageCode]; String get allowView => localizedValues['allow-view'][locale.languageCode]; String get rejectView => localizedValues['reject-view'][locale.languageCode]; String get deleteView => localizedValues['delete-view'][locale.languageCode]; @@ -404,60 +341,39 @@ class TranslationBase { String get companyName => localizedValues['companyName'][locale.languageCode]; String get receiptOn => localizedValues['receiptOn'][locale.languageCode]; String get expiryDate => localizedValues['expiryDate'][locale.languageCode]; - String get procedureName => - localizedValues['procedureName'][locale.languageCode]; - String get procedureStatus => - localizedValues['procedureStatus'][locale.languageCode]; + String get procedureName => localizedValues['procedureName'][locale.languageCode]; + String get procedureStatus => localizedValues['procedureStatus'][locale.languageCode]; String get usageStatus => localizedValues['usageStatus'][locale.languageCode]; String get unusedCount => localizedValues['unusedCount'][locale.languageCode]; - String get totalApproval => - localizedValues['totalApproval'][locale.languageCode]; + String get totalApproval => localizedValues['totalApproval'][locale.languageCode]; String get category => localizedValues['category'][locale.languageCode]; - String get expirationDate => - localizedValues['expirationDate'][locale.languageCode]; + String get expirationDate => localizedValues['expirationDate'][locale.languageCode]; String get patientCard => localizedValues['patientCard'][locale.languageCode]; - String get policyNumber => - localizedValues['policyNumber'][locale.languageCode]; + String get policyNumber => localizedValues['policyNumber'][locale.languageCode]; String get seeDetails => localizedValues['seeDetails'][locale.languageCode]; - String get insuranceCards => - localizedValues['insuranceCards'][locale.languageCode]; + String get insuranceCards => localizedValues['insuranceCards'][locale.languageCode]; String get requestType => localizedValues['requestType'][locale.languageCode]; - String get addFamilyMember => - localizedValues['add-new-member'][locale.languageCode]; - String get removeFamilyMember => - localizedValues['remove-family-member'][locale.languageCode]; - - String get myMedicalFile => - localizedValues['MyMedicalFile'][locale.languageCode]; - String get myMedicalFileSubTitle => - localizedValues['myMedicalFileSubTitle'][locale.languageCode]; + String get addFamilyMember => localizedValues['add-new-member'][locale.languageCode]; + String get removeFamilyMember => localizedValues['remove-family-member'][locale.languageCode]; + + String get myMedicalFile => localizedValues['MyMedicalFile'][locale.languageCode]; + String get myMedicalFileSubTitle => localizedValues['myMedicalFileSubTitle'][locale.languageCode]; String get viewMore => localizedValues['viewMore'][locale.languageCode]; - String get homeHealthCareService => - localizedValues['homeHealthCareService'][locale.languageCode]; - String get onlinePharmacy => - localizedValues['OnlinePharmacy'][locale.languageCode]; - String get emergencyService => - localizedValues['EmergencyService'][locale.languageCode]; - String get onlinePaymentService => - localizedValues['OnlinePaymentService'][locale.languageCode]; - String get offersAndPackages => - localizedValues['OffersAndPackages'][locale.languageCode]; - String get comprehensiveMedicalCheckup => - localizedValues['ComprehensiveMedicalCheckup'][locale.languageCode]; + String get homeHealthCareService => localizedValues['homeHealthCareService'][locale.languageCode]; + String get onlinePharmacy => localizedValues['OnlinePharmacy'][locale.languageCode]; + String get emergencyService => localizedValues['EmergencyService'][locale.languageCode]; + String get onlinePaymentService => localizedValues['OnlinePaymentService'][locale.languageCode]; + String get offersAndPackages => localizedValues['OffersAndPackages'][locale.languageCode]; + String get comprehensiveMedicalCheckup => localizedValues['ComprehensiveMedicalCheckup'][locale.languageCode]; String get hMGService => localizedValues['HMGService'][locale.languageCode]; - String get viewAllHabibMedicalService => - localizedValues['ViewAllHabibMedicalService'][locale.languageCode]; + String get viewAllHabibMedicalService => localizedValues['ViewAllHabibMedicalService'][locale.languageCode]; String get viewAll => localizedValues['viewAll'][locale.languageCode]; String get contactUs => localizedValues['ContactUs'][locale.languageCode]; - String get viewAllWaysReachUs => - localizedValues['ViewAllWaysReachUs'][locale.languageCode]; - String get medicalProfile => - localizedValues['medicalProfile'][locale.languageCode]; + String get viewAllWaysReachUs => localizedValues['ViewAllWaysReachUs'][locale.languageCode]; + String get medicalProfile => localizedValues['medicalProfile'][locale.languageCode]; String get parking => localizedValues['parking'][locale.languageCode]; - String get alhabiServices => - localizedValues['alhabiServices'][locale.languageCode]; - String get parkingTitle => - localizedValues['parkingTitle'][locale.languageCode]; + String get alhabiServices => localizedValues['alhabiServices'][locale.languageCode]; + String get parkingTitle => localizedValues['parkingTitle'][locale.languageCode]; String get readBarcode => localizedValues['readBarcode'][locale.languageCode]; String get showMyPark => localizedValues['showMyPark'][locale.languageCode]; String get clearMyData => localizedValues['clearMyData'][locale.languageCode]; @@ -465,186 +381,117 @@ class TranslationBase { String get gate => localizedValues['gate'][locale.languageCode]; String get building => localizedValues['building'][locale.languageCode]; String get branch => localizedValues['branch'][locale.languageCode]; - String get emergencyServices => - localizedValues['emergencyServices'][locale.languageCode]; + String get emergencyServices => localizedValues['emergencyServices'][locale.languageCode]; String get nearester => localizedValues['nearester'][locale.languageCode]; String get locationa => localizedValues['locationa'][locale.languageCode]; - String get ambulancerequest => - localizedValues['ambulancerequest'][locale.languageCode]; + String get ambulancerequest => localizedValues['ambulancerequest'][locale.languageCode]; String get requestA => localizedValues['requestA'][locale.languageCode]; - String get consultation => - localizedValues['consultation'][locale.languageCode]; + String get consultation => localizedValues['consultation'][locale.languageCode]; String get logs => localizedValues['logs'][locale.languageCode]; - String get textToSpeech => - localizedValues['textToSpeech'][locale.languageCode]; - - String get myAppointments => - localizedValues['MyAppointments'][locale.languageCode]; - String get noBookedAppointments => - localizedValues['NoBookedAppointments'][locale.languageCode]; - String get noConfirmedAppointments => - localizedValues['NoConfirmedAppointments'][locale.languageCode]; - String get noArrivedAppointments => - localizedValues['noArrivedAppointments'][locale.languageCode]; - String get myAppointmentsList => - localizedValues['MyAppointmentsList'][locale.languageCode]; + String get textToSpeech => localizedValues['textToSpeech'][locale.languageCode]; + + String get myAppointments => localizedValues['MyAppointments'][locale.languageCode]; + String get noBookedAppointments => localizedValues['NoBookedAppointments'][locale.languageCode]; + String get noConfirmedAppointments => localizedValues['NoConfirmedAppointments'][locale.languageCode]; + String get noArrivedAppointments => localizedValues['noArrivedAppointments'][locale.languageCode]; + String get myAppointmentsList => localizedValues['MyAppointmentsList'][locale.languageCode]; String get radiology => localizedValues['Radiology'][locale.languageCode]; - String get radiologySubtitle => - localizedValues['RadiologySubtitle'][locale.languageCode]; + String get radiologySubtitle => localizedValues['RadiologySubtitle'][locale.languageCode]; String get lab => localizedValues['Lab'][locale.languageCode]; String get labSubtitle => localizedValues['LabSubtitle'][locale.languageCode]; String get medicines => localizedValues['Medicines'][locale.languageCode]; - String get medicinesSubtitle => - localizedValues['MedicinesSubtitle'][locale.languageCode]; + String get medicinesSubtitle => localizedValues['MedicinesSubtitle'][locale.languageCode]; String get vitalSigns => localizedValues['VitalSigns'][locale.languageCode]; - String get vitalSignsSubtitle => - localizedValues['VitalSignsSubTitle'][locale.languageCode]; + String get vitalSignsSubtitle => localizedValues['VitalSignsSubTitle'][locale.languageCode]; String get myMedical => localizedValues['MyMedical'][locale.languageCode]; - String get myMedicalSubtitle => - localizedValues['MyMedicalSubtitle'][locale.languageCode]; + String get myMedicalSubtitle => localizedValues['MyMedicalSubtitle'][locale.languageCode]; String get myDoctor => localizedValues['MyDoctor'][locale.languageCode]; - String get myDoctorSubtitle => - localizedValues['MyDoctorSubtitle'][locale.languageCode]; + String get myDoctorSubtitle => localizedValues['MyDoctorSubtitle'][locale.languageCode]; String get eye => localizedValues['Eye'][locale.languageCode]; String get eyeSubtitle => localizedValues['EyeSubtitle'][locale.languageCode]; String get insurance => localizedValues['Insurance'][locale.languageCode]; - String get insuranceSubtitle => - localizedValues['InsuranceSubtitle'][locale.languageCode]; - String get updateInsurance => - localizedValues['UpdateInsurance'][locale.languageCode]; - String get updateInsuranceSubtitle => - localizedValues['UpdateInsuranceSubtitle'][locale.languageCode]; - String get insuranceApproval => - localizedValues['InsuranceApproval'][locale.languageCode]; - String get insuranceApprovalSubtitle => - localizedValues['InsuranceApprovalSubtitle'][locale.languageCode]; + String get insuranceSubtitle => localizedValues['InsuranceSubtitle'][locale.languageCode]; + String get updateInsurance => localizedValues['UpdateInsurance'][locale.languageCode]; + String get updateInsuranceSubtitle => localizedValues['UpdateInsuranceSubtitle'][locale.languageCode]; + String get insuranceApproval => localizedValues['InsuranceApproval'][locale.languageCode]; + String get insuranceApprovalSubtitle => localizedValues['InsuranceApprovalSubtitle'][locale.languageCode]; String get allergies => localizedValues['Allergies'][locale.languageCode]; - String get allergiesSubtitle => - localizedValues['AllergiesSubtitle'][locale.languageCode]; + String get allergiesSubtitle => localizedValues['AllergiesSubtitle'][locale.languageCode]; String get myVaccines => localizedValues['MyVaccines'][locale.languageCode]; - String get myVaccinesSubtitle => - localizedValues['MyVaccinesSubtitle'][locale.languageCode]; + String get myVaccinesSubtitle => localizedValues['MyVaccinesSubtitle'][locale.languageCode]; String get medical => localizedValues['Medical'][locale.languageCode]; - String get medicalSubtitle => - localizedValues['MedicalSubtitle'][locale.languageCode]; + String get medicalSubtitle => localizedValues['MedicalSubtitle'][locale.languageCode]; String get monthly => localizedValues['Monthly'][locale.languageCode]; - String get monthlySubtitle => - localizedValues['MonthlySubtitle'][locale.languageCode]; + String get monthlySubtitle => localizedValues['MonthlySubtitle'][locale.languageCode]; String get sick => localizedValues['Sick'][locale.languageCode]; - String get sickSubtitle => - localizedValues['SickSubtitle'][locale.languageCode]; + String get sickSubtitle => localizedValues['SickSubtitle'][locale.languageCode]; String get myBalance => localizedValues['MyBalance'][locale.languageCode]; - String get myBalanceSubtitle => - localizedValues['MyBalanceSubtitle'][locale.languageCode]; + String get myBalanceSubtitle => localizedValues['MyBalanceSubtitle'][locale.languageCode]; String get patientCall => localizedValues['PatientCall'][locale.languageCode]; - String get patientCallSubtitle => - localizedValues['PatientCallSubtitle'][locale.languageCode]; - String get smartWatches => - localizedValues['SmartWatches'][locale.languageCode]; - String get smartWatchesSubtitle => - localizedValues['SmartWatchesSubtitle'][locale.languageCode]; + String get patientCallSubtitle => localizedValues['PatientCallSubtitle'][locale.languageCode]; + String get smartWatches => localizedValues['SmartWatches'][locale.languageCode]; + String get smartWatchesSubtitle => localizedValues['SmartWatchesSubtitle'][locale.languageCode]; String get myTrackers => localizedValues['MyTrackers'][locale.languageCode]; - String get myTrackersSubtitle => - localizedValues['MyTrackersSubtitle'][locale.languageCode]; + String get myTrackersSubtitle => localizedValues['MyTrackersSubtitle'][locale.languageCode]; String get askYour => localizedValues['AskYour'][locale.languageCode]; - String get askYourSubtitle => - localizedValues['AskYourSubtitle'][locale.languageCode]; + String get askYourSubtitle => localizedValues['AskYourSubtitle'][locale.languageCode]; String get internet => localizedValues['Internet'][locale.languageCode]; - String get internetSubtitle => - localizedValues['InternetSubtitle'][locale.languageCode]; + String get internetSubtitle => localizedValues['InternetSubtitle'][locale.languageCode]; String get chatbot => localizedValues['Chatbot'][locale.languageCode]; - String get chatbotSubtitle => - localizedValues['ChatbotSubtitle'][locale.languageCode]; + String get chatbotSubtitle => localizedValues['ChatbotSubtitle'][locale.languageCode]; String get timeLine => localizedValues['TimeLine'][locale.languageCode]; String get labOrders => localizedValues['LabOrders'][locale.languageCode]; String get billNo => localizedValues['BillNo'][locale.languageCode]; - String get prescriptions => - localizedValues['Prescriptions'][locale.languageCode]; + String get prescriptions => localizedValues['Prescriptions'][locale.languageCode]; String get history => localizedValues['History'][locale.languageCode]; String get orderNo => localizedValues['OrderNo'][locale.languageCode]; - String get orderDetails => - localizedValues['OrderDetails'][locale.languageCode]; + String get orderDetails => localizedValues['OrderDetails'][locale.languageCode]; String get vitalSign => localizedValues['VitalSign'][locale.languageCode]; - String get monthlyReports => - localizedValues['MonthlyReports'][locale.languageCode]; + String get monthlyReports => localizedValues['MonthlyReports'][locale.languageCode]; - String get locationDialogMessage => - localizedValues['locationDialogMessage'][locale.languageCode]; - String get userViewRequest => - localizedValues['user-view-requester'][locale.languageCode]; + String get locationDialogMessage => localizedValues['locationDialogMessage'][locale.languageCode]; + String get userViewRequest => localizedValues['user-view-requester'][locale.languageCode]; String get userView => localizedValues['user-view'][locale.languageCode]; - String get sentRequest => - localizedValues['sent-requests'][locale.languageCode]; + String get sentRequest => localizedValues['sent-requests'][locale.languageCode]; String get km => localizedValues['km'][locale.languageCode]; - String get patientHealthSummaryReport => - localizedValues['PatientHealthSummaryReport'][locale.languageCode]; - String get toViewTheTermsAndConditions => - localizedValues['ToViewTheTermsAndConditions'][locale.languageCode]; + String get patientHealthSummaryReport => localizedValues['PatientHealthSummaryReport'][locale.languageCode]; + String get toViewTheTermsAndConditions => localizedValues['ToViewTheTermsAndConditions'][locale.languageCode]; String get clickHere => localizedValues['ClickHere'][locale.languageCode]; - String get iAgreeToTheTermsAndConditions => - localizedValues['IAgreeToTheTermsAndConditions'][locale.languageCode]; - String get iAgreeToTheTermsAndConditionsSubtitle => - localizedValues['IAgreeToTheTermsAndConditionsSubtitle'] - [locale.languageCode]; + String get iAgreeToTheTermsAndConditions => localizedValues['IAgreeToTheTermsAndConditions'][locale.languageCode]; + String get iAgreeToTheTermsAndConditionsSubtitle => localizedValues['IAgreeToTheTermsAndConditionsSubtitle'][locale.languageCode]; String get save => localizedValues['Save'][locale.languageCode]; - String get userAgreement => - localizedValues['UserAgreement'][locale.languageCode]; - String get updateSuccessfully => - localizedValues['UpdateSuccessfully'][locale.languageCode]; - String get emailSentSuccessfully => - localizedValues['EmailSentSuccessfully'][locale.languageCode]; - String get checkVaccineAvailability => - localizedValues['CHECK_VACCINE_AVAILABILITY'][locale.languageCode]; - String get myVaccinesAvailability => - localizedValues['MyVaccinesAvailability'][locale.languageCode]; - String get paymentService => - localizedValues['PaymentService'][locale.languageCode]; - String get paymentOnline => - localizedValues['PaymentOnline'][locale.languageCode]; - String get onlineCheckIn => - localizedValues['OnlineCheckIn'][locale.languageCode]; + String get userAgreement => localizedValues['UserAgreement'][locale.languageCode]; + String get updateSuccessfully => localizedValues['UpdateSuccessfully'][locale.languageCode]; + String get emailSentSuccessfully => localizedValues['EmailSentSuccessfully'][locale.languageCode]; + String get checkVaccineAvailability => localizedValues['CHECK_VACCINE_AVAILABILITY'][locale.languageCode]; + String get myVaccinesAvailability => localizedValues['MyVaccinesAvailability'][locale.languageCode]; + String get paymentService => localizedValues['PaymentService'][locale.languageCode]; + String get paymentOnline => localizedValues['PaymentOnline'][locale.languageCode]; + String get onlineCheckIn => localizedValues['OnlineCheckIn'][locale.languageCode]; String get myBalances => localizedValues['MyBalances'][locale.languageCode]; - String get balanceAmount => - localizedValues['BalanceAmount'][locale.languageCode]; - String get totalBalance => - localizedValues['TotalBalance'][locale.languageCode]; - String get createAdvancedPayment => - localizedValues['CreateAdvancedPayment'][locale.languageCode]; - String get advancePayment => - localizedValues['AdvancePayment'][locale.languageCode]; - String get advancePaymentLabel => - localizedValues['AdvancePaymentLabel'][locale.languageCode]; + String get balanceAmount => localizedValues['BalanceAmount'][locale.languageCode]; + String get totalBalance => localizedValues['TotalBalance'][locale.languageCode]; + String get createAdvancedPayment => localizedValues['CreateAdvancedPayment'][locale.languageCode]; + String get advancePayment => localizedValues['AdvancePayment'][locale.languageCode]; + String get advancePaymentLabel => localizedValues['AdvancePaymentLabel'][locale.languageCode]; String get fileNumber => localizedValues['FileNumber'][locale.languageCode]; String get amount => localizedValues['Amount'][locale.languageCode]; - String get depositorEmail => - localizedValues['DepositorEmail'][locale.languageCode]; + String get depositorEmail => localizedValues['DepositorEmail'][locale.languageCode]; String get notes => localizedValues['Notes'][locale.languageCode]; - String get selectPatientName => - localizedValues['SelectPatientName'][locale.languageCode]; - String get selectFamilyPatientName => - localizedValues['SelectFamilyPatientName'][locale.languageCode]; - String get selectHospital => - localizedValues['SelectHospital'][locale.languageCode]; + String get selectPatientName => localizedValues['SelectPatientName'][locale.languageCode]; + String get selectFamilyPatientName => localizedValues['SelectFamilyPatientName'][locale.languageCode]; + String get selectHospital => localizedValues['SelectHospital'][locale.languageCode]; String get myAccount => localizedValues['MyAccount'][locale.languageCode]; - String get otherAccount => - localizedValues['OtherAccount'][locale.languageCode]; - String get selectBeneficiary => - localizedValues['SelectBeneficiary'][locale.languageCode]; - String get confirmThePayment => - localizedValues['ConfirmThePayment'][locale.languageCode]; - String get depositorName => - localizedValues['DepositorName'][locale.languageCode]; - String get mobileNumber => - localizedValues['MobileNumber'][locale.languageCode]; + String get otherAccount => localizedValues['OtherAccount'][locale.languageCode]; + String get selectBeneficiary => localizedValues['SelectBeneficiary'][locale.languageCode]; + String get confirmThePayment => localizedValues['ConfirmThePayment'][locale.languageCode]; + String get depositorName => localizedValues['DepositorName'][locale.languageCode]; + String get mobileNumber => localizedValues['MobileNumber'][locale.languageCode]; String get ok => localizedValues['Ok'][locale.languageCode]; - String get theVerificationCodeExpiresIn => - localizedValues['TheVerificationCodeExpiresIn'][locale.languageCode]; - String get pleaseEnterTheVerificationCode => - localizedValues['PleaseEnterTheVerificationCode'][locale.languageCode]; - String get eyeMeasurements => - localizedValues['EyeMeasurements'][locale.languageCode]; - String get measurements => - localizedValues['Measurements'][locale.languageCode]; + String get theVerificationCodeExpiresIn => localizedValues['TheVerificationCodeExpiresIn'][locale.languageCode]; + String get pleaseEnterTheVerificationCode => localizedValues['PleaseEnterTheVerificationCode'][locale.languageCode]; + String get eyeMeasurements => localizedValues['EyeMeasurements'][locale.languageCode]; + String get measurements => localizedValues['Measurements'][locale.languageCode]; String get classes => localizedValues['Classes'][locale.languageCode]; String get contactLens => localizedValues['ContactLens'][locale.languageCode]; String get rightEye => localizedValues['RightEye'][locale.languageCode]; @@ -658,41 +505,29 @@ class TranslationBase { String get power => localizedValues['Power'][locale.languageCode]; String get diameter => localizedValues['Diameter'][locale.languageCode]; String get remarks => localizedValues['Remarks'][locale.languageCode]; - String get activeMedications => - localizedValues['ActiveMedications'][locale.languageCode]; + String get activeMedications => localizedValues['ActiveMedications'][locale.languageCode]; String get expDate => localizedValues['ExpDate'][locale.languageCode]; String get route => localizedValues['Route'][locale.languageCode]; String get frequency => localizedValues['Frequency'][locale.languageCode]; - String get dailyQuantity => - localizedValues['DailyQuantity'][locale.languageCode]; + String get dailyQuantity => localizedValues['DailyQuantity'][locale.languageCode]; String get addReminder => localizedValues['AddReminder'][locale.languageCode]; String get reminderDes => localizedValues['reminderDes'][locale.languageCode]; String get startDay => localizedValues['StartDay'][locale.languageCode]; String get endDay => localizedValues['EndDay'][locale.languageCode]; String get days => localizedValues['Days'][locale.languageCode]; - String get scheduleTime => - localizedValues['ScheduleTime'][locale.languageCode]; + String get scheduleTime => localizedValues['ScheduleTime'][locale.languageCode]; String get askDoctor => localizedValues['AskDoctor'][locale.languageCode]; - String get doctorResponses => - localizedValues['DoctorResponses'][locale.languageCode]; + String get doctorResponses => localizedValues['DoctorResponses'][locale.languageCode]; String get newDes => localizedValues['New'][locale.languageCode]; String get all => localizedValues['All'][locale.languageCode]; - String get questionHere => - localizedValues['QuestionHere'][locale.languageCode]; - String get viewDoctorResponses => - localizedValues['ViewDoctorResponses'][locale.languageCode]; - String get serviceInformationButton => - localizedValues['ServiceInformationButton'][locale.languageCode]; - String get serviceInformationTitle => - localizedValues['ServiceInformationTitle'][locale.languageCode]; - String get serviceInformation => - localizedValues['ServiceInformation'][locale.languageCode]; - String get homeHealthCare => - localizedValues['HomeHealthCare'][locale.languageCode]; - String get homeHealthCareText => - localizedValues['HomeHealthCareText'][locale.languageCode]; - String get loginRegister => - localizedValues['LoginRegister'][locale.languageCode]; + String get questionHere => localizedValues['QuestionHere'][locale.languageCode]; + String get viewDoctorResponses => localizedValues['ViewDoctorResponses'][locale.languageCode]; + String get serviceInformationButton => localizedValues['ServiceInformationButton'][locale.languageCode]; + String get serviceInformationTitle => localizedValues['ServiceInformationTitle'][locale.languageCode]; + String get serviceInformation => localizedValues['ServiceInformation'][locale.languageCode]; + String get homeHealthCare => localizedValues['HomeHealthCare'][locale.languageCode]; + String get homeHealthCareText => localizedValues['HomeHealthCareText'][locale.languageCode]; + String get loginRegister => localizedValues['LoginRegister'][locale.languageCode]; String get orderLog => localizedValues['OrderLog'][locale.languageCode]; String get infoLab => localizedValues['info-lab'][locale.languageCode]; String get infoRadiology => localizedValues['info-radiology'][locale.languageCode]; @@ -707,30 +542,124 @@ class TranslationBase { String get bestSellers => localizedValues['bestSellers'][locale.languageCode]; String get deleteAllItems => localizedValues['deleteAllItems'][locale.languageCode]; - String get termsService => - localizedValues['TermsService'][locale.languageCode]; + String get termsService => localizedValues['TermsService'][locale.languageCode]; String get beforeUsing => localizedValues['Beforeusing'][locale.languageCode]; String get accept => localizedValues['accept'][locale.languageCode]; - String get dataSafeInfo => - localizedValues['data-safe-info'][locale.languageCode]; + String get dataSafeInfo => localizedValues['data-safe-info'][locale.languageCode]; String get dataSafe => localizedValues['data-safe'][locale.languageCode]; - String get informational => - localizedValues['informational'][locale.languageCode]; - String get checkDiagnosis => - localizedValues['check-diagnosis'][locale.languageCode]; + String get informational => localizedValues['informational'][locale.languageCode]; + String get checkDiagnosis => localizedValues['check-diagnosis'][locale.languageCode]; String get remeberthat => localizedValues['remeberthat'][locale.languageCode]; - String get notUseInEmbergency => - localizedValues['not-use-in-emerbency'][locale.languageCode]; - String get notUseInEmbergencyDetails => - localizedValues['not-use-in-emerbency-details'][locale.languageCode]; - String get notUseInEmbergencyCall => - localizedValues['not-use-in-emerbency-details-call'][locale.languageCode]; - String get selectGender => - localizedValues['select-gender'][locale.languageCode]; + String get notUseInEmbergency => localizedValues['not-use-in-emerbency'][locale.languageCode]; + String get notUseInEmbergencyDetails => localizedValues['not-use-in-emerbency-details'][locale.languageCode]; + String get notUseInEmbergencyCall => localizedValues['not-use-in-emerbency-details-call'][locale.languageCode]; + String get selectGender => localizedValues['select-gender'][locale.languageCode]; String get iAma => localizedValues['i-am-a'][locale.languageCode]; String get selectAge => localizedValues['select-age'][locale.languageCode]; String get iAm => localizedValues['i-am'][locale.languageCode]; String get yearOld => localizedValues['years-old'][locale.languageCode]; + String get email => localizedValues['email'][locale.languageCode]; + String get book => localizedValues['Book'][locale.languageCode]; + String get appointmentLabel => localizedValues['AppointmentLabel'][locale.languageCode]; + String get bloodType => localizedValues['BloodType'][locale.languageCode]; + + String get loginToUseService => localizedValues['loginToUseService'][locale.languageCode]; + String get maritalStatus => localizedValues['marital-status'][locale.languageCode]; + String get general => localizedValues['general'][locale.languageCode]; + String get profile => localizedValues['profile'][locale.languageCode]; + String get notifications => localizedValues['notifications'][locale.languageCode]; + String get notificationDetails => localizedValues['notificationDetails'][locale.languageCode]; + List get infoMyDoctorPoints => localizedValues['info-my-doctor-points'][locale.languageCode]; + String get infoMyDoctor => localizedValues['info-my-doctor'][locale.languageCode]; + String get infoPrescriptions => localizedValues['info-prescriptions'][locale.languageCode]; + List get infoPrescriptionsPoints => localizedValues['info-my-prescription-points'][locale.languageCode]; + + String get infoInsuranceCards => localizedValues['info-insurance-cards'][locale.languageCode]; + List get infoInsuranceCardsPoints => localizedValues['info-insurance-cards-points'][locale.languageCode]; + + String get infoAllergies => localizedValues['info-allergies'][locale.languageCode]; + + String get sickLeaves => localizedValues['sick-leaves'][locale.languageCode]; + String get infoSickLeaves => localizedValues['info-sick-leaves'][locale.languageCode]; + List get infoSickLeavePoints => localizedValues['info-sick-leave-points'][locale.languageCode]; + + String get infoApprovals => localizedValues['info-approvals'][locale.languageCode]; + List get infoApprovalPoints => localizedValues['info-approval-points'][locale.languageCode]; + + String get monthReport => localizedValues['month-report'][locale.languageCode]; + String get infoMonthReport => localizedValues['info-month-report'][locale.languageCode]; + String get languageSetting => localizedValues['language-setting'][locale.languageCode]; + String get alert => localizedValues['alert'][locale.languageCode]; + String get emailAlert => localizedValues['email-alert'][locale.languageCode]; + String get smsAlert => localizedValues['sms-alert'][locale.languageCode]; + String get contactInfo => localizedValues['contact-info'][locale.languageCode]; + String get emergencyName => localizedValues['emrg-name'][locale.languageCode]; + String get emergencyContact => localizedValues['emrg-no'][locale.languageCode]; + String get modes => localizedValues['modes'][locale.languageCode]; + String get vibration => localizedValues['vibration'][locale.languageCode]; + String get blindMode => localizedValues['blind-modes'][locale.languageCode]; + String get invertTheme => localizedValues['invert-theme'][locale.languageCode]; + String get offTheme => localizedValues['off-theme'][locale.languageCode]; + String get dimTheme => localizedValues['dim-theme'][locale.languageCode]; + String get bwTheme => localizedValues['bw-theme'][locale.languageCode]; + + String get permissions => localizedValues['permissions'][locale.languageCode]; + String get cameraPermission => localizedValues['camera-permission'][locale.languageCode]; + String get locationPermission => localizedValues['location-permission'][locale.languageCode]; + String get accessibility => localizedValues['accessibility'][locale.languageCode]; + String get selectClinic => localizedValues['selectClinic'][locale.languageCode]; + String get reviews => localizedValues['reviews'][locale.languageCode]; + + String get orderStatus => localizedValues['orderStatus'][locale.languageCode]; + String get cancelOrder => localizedValues['CancelOrder'][locale.languageCode]; + String get findUs => localizedValues['FindUs'][locale.languageCode]; + String get feedback => localizedValues['Feedback'][locale.languageCode]; + String get liveChat => localizedValues['LiveChat'][locale.languageCode]; + String get service => localizedValues['Service'][locale.languageCode]; + String get hMGServiceLabel => localizedValues['HMGServiceLabel'][locale.languageCode]; + String get healthWeatherIndicators => localizedValues['HealthWeatherIndicators'][locale.languageCode]; + String get healthTipsBasedOnCurrentWeather => localizedValues['HealthTipsBasedOnCurrentWeather'][locale.languageCode]; + String get moreDetails => localizedValues['MoreDetails'][locale.languageCode]; + String get sendCopy => localizedValues['SendCopy'][locale.languageCode]; + String get resendOrder => localizedValues['ResendOrder'][locale.languageCode]; + String get ports => localizedValues['Ports'][locale.languageCode]; + String get way => localizedValues['Way'][locale.languageCode]; + String get average => localizedValues['Average'][locale.languageCode]; + String get dailyDoses => localizedValues['DailyDoses'][locale.languageCode]; + String get period => localizedValues['Period'][locale.languageCode]; + String get cm => localizedValues['cm'][locale.languageCode]; + String get kg => localizedValues['kg'][locale.languageCode]; + String get mass => localizedValues['mass'][locale.languageCode]; + String get tempC => localizedValues['temp-c'][locale.languageCode]; + String get bpm => localizedValues['bpm'][locale.languageCode]; + String get respirationSigns => localizedValues['respiration-signs'][locale.languageCode]; + String get sysDias => localizedValues['sys-dias'][locale.languageCode]; + String get body => localizedValues['body'][locale.languageCode]; + String get feedbackTitle => localizedValues['feedback'][locale.languageCode]; + String get send => localizedValues['send'][locale.languageCode]; + String get status => localizedValues['status'][locale.languageCode]; + String get likeToHear => localizedValues['like-to-hear'][locale.languageCode]; + String get subject => localizedValues['subject'][locale.languageCode]; + String get message => localizedValues['message'][locale.languageCode]; + String get emptySubject => localizedValues['empty-subject'][locale.languageCode]; + String get emptyMessage => localizedValues['empty-message'][locale.languageCode]; + String get selectAttachment => localizedValues['select-attachment'][locale.languageCode]; + String get complainAppo => localizedValues['complain-appo'][locale.languageCode]; + String get complainWithoutAppo => localizedValues['complain-without-appo'][locale.languageCode]; + String get question => localizedValues['question'][locale.languageCode]; + String get messageType => localizedValues['message-type'][locale.languageCode]; + String get compliment => localizedValues['compliment'][locale.languageCode]; + String get suggestion => localizedValues['suggestion'][locale.languageCode]; + String get yourFeedback => localizedValues['your-feedback'][locale.languageCode]; + String get selectPart => localizedValues['select-part'][locale.languageCode]; + String get number => localizedValues['number'][locale.languageCode]; + String get notClassified => localizedValues['not-classified'][locale.languageCode]; + String get searchItemError => localizedValues['searchItemError'][locale.languageCode]; + String get youCanFind => localizedValues['YouCanFind'][locale.languageCode]; + String get itemInSearch => localizedValues['ItemInSearch'][locale.languageCode]; + String get wantToConnectWithHmgNetwork => localizedValues['wantConnectHmgNetwork'][locale.languageCode]; + String get failedToAccessHmgServices => localizedValues['failedToAccessHmgServices'][locale.languageCode]; + String get enablingWifi => localizedValues['enablingWifi'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/uitl/utils.dart b/lib/uitl/utils.dart index 3b9fa975..3e1e4892 100644 --- a/lib/uitl/utils.dart +++ b/lib/uitl/utils.dart @@ -1,7 +1,5 @@ import 'dart:convert'; import 'dart:core'; -import 'dart:core'; -import 'dart:core'; import 'dart:typed_data'; import 'package:connectivity/connectivity.dart'; @@ -156,6 +154,12 @@ class Utils { return base64Decode(base64String); } + static validEmail(email) { + return RegExp( + r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+") + .hasMatch(email); + } + } // extension function that use in iterations(list.. etc) to iterate items and get index and item it self extension IndexedIterable on Iterable { diff --git a/lib/widgets/Loader/gif_loader_container.dart b/lib/widgets/Loader/gif_loader_container.dart new file mode 100644 index 00000000..06c151c9 --- /dev/null +++ b/lib/widgets/Loader/gif_loader_container.dart @@ -0,0 +1,43 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter_gifimage/flutter_gifimage.dart'; + +class GifLoaderContainer extends StatefulWidget { + @override + _GifLoaderContainerState createState() => _GifLoaderContainerState(); +} + +class _GifLoaderContainerState extends State + with TickerProviderStateMixin { + GifController controller1; + + @override + void initState() { + controller1 = GifController(vsync: this); + + WidgetsBinding.instance.addPostFrameCallback((_) { + controller1.repeat( + min: 0, max: 11, period: Duration(milliseconds: 750), reverse: true); + }); + super.initState(); + } + + @override + void dispose() { + controller1.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Center( + //progress-loading.gif + child: Container( + // margin: EdgeInsets.only(bottom: 40), + child: GifImage( + controller: controller1, + image: AssetImage( + "assets/images/progress-loading.gif"), //NetworkImage("http://img.mp.itc.cn/upload/20161107/5cad975eee9e4b45ae9d3c1238ccf91e.jpg"), + ), + )); + } +} \ No newline at end of file diff --git a/lib/widgets/bottom_navigation/bottom_nav_bar.dart b/lib/widgets/bottom_navigation/bottom_nav_bar.dart index ee0734b9..21cbebba 100644 --- a/lib/widgets/bottom_navigation/bottom_nav_bar.dart +++ b/lib/widgets/bottom_navigation/bottom_nav_bar.dart @@ -5,6 +5,7 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import '../../d_q_icons_icons.dart'; import 'bottom_navigation_item.dart'; class BottomNavBar extends StatefulWidget { @@ -44,50 +45,50 @@ class _BottomNavBarState extends State { name: TranslationBase.of(context).home, ), BottomNavigationItem( - icon: EvaIcons.list, - activeIcon: EvaIcons.list, + icon: DQIcons.my_medical_file, + activeIcon: DQIcons.my_medical_file, changeIndex: _changeIndex, index: widget.index, currentIndex: 1, name: TranslationBase.of(context).medicalProfile, ), -// Expanded( -// child: SizedBox( -// height: 50, -// child: Column( -// mainAxisSize: MainAxisSize.min, -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// SizedBox(height: 22), -// ], -// ), -// ), -// ), - - // Added Calendar Icon to access book appointment flow + if(widget.index == 0) + Expanded( + child: SizedBox( + height: 50, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox(height: 22), + ], + ), + ), + ), + if(widget.index != 0) BottomNavigationItem( icon: EvaIcons.calendar, - activeIcon: EvaIcons.calendarOutline, + activeIcon: EvaIcons.calendar, changeIndex: _changeIndex, index: _index, - currentIndex: 4, + currentIndex: 2, name: TranslationBase.of(context).bookAppo, ), BottomNavigationItem( - icon: EvaIcons.person, - activeIcon: EvaIcons.person, + icon: DQIcons.family, + activeIcon: DQIcons.family, changeIndex: _changeIndex, index: widget.index, - currentIndex: 2, - name: TranslationBase.of(context).mySchedule, + currentIndex: 3, + name: TranslationBase.of(context).myFamily, ), BottomNavigationItem( icon: EvaIcons.calendar, activeIcon: EvaIcons.calendar, changeIndex: _changeIndex, index: widget.index, - currentIndex: 3, + currentIndex: 4, name: TranslationBase.of(context).todoList, ) ], diff --git a/lib/widgets/bottom_navigation/bottom_navigation_item.dart b/lib/widgets/bottom_navigation/bottom_navigation_item.dart index e623dde5..ba35f3c6 100644 --- a/lib/widgets/bottom_navigation/bottom_navigation_item.dart +++ b/lib/widgets/bottom_navigation/bottom_navigation_item.dart @@ -1,6 +1,12 @@ +import 'package:badges/badges.dart'; +import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; +import 'package:diplomaticquarterapp/locator.dart'; +import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; +import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; class BottomNavigationItem extends StatelessWidget { final IconData icon; @@ -10,6 +16,8 @@ class BottomNavigationItem extends StatelessWidget { final int currentIndex; final String name; + AuthenticatedUserObject authenticatedUserObject = locator(); + BottomNavigationItem( {this.icon, this.activeIcon, @@ -20,6 +28,7 @@ class BottomNavigationItem extends StatelessWidget { @override Widget build(BuildContext context) { + var model = Provider.of(context); return Expanded( child: SizedBox( // height: 72.0, @@ -29,35 +38,122 @@ class BottomNavigationItem extends StatelessWidget { highlightColor: Colors.transparent, splashColor: Colors.transparent, onTap: () => changeIndex(currentIndex), - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - height: 15, - ), - Container( - child: Icon(currentIndex == index ? activeIcon : icon, - color: currentIndex == index - ? Theme.of(context).primaryColor - : Theme.of(context).dividerColor, - size: 22.0), - ), - SizedBox( - height: 5, - ), - - // Added TextAlign Property - Texts( - name, - textAlign: TextAlign.center, - color: currentIndex == index - ? Theme.of(context).primaryColor - : Theme.of(context).dividerColor, - fontSize: 11, - ), - ], - ), + child: currentIndex != 4 + ? Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 15, + ), + Container( + child: Icon(currentIndex == index ? activeIcon : icon, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Theme.of(context).dividerColor, + size: 22.0), + ), + SizedBox( + height: 2, + ), + Texts( + name, + textAlign: TextAlign.center, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Colors.grey, + fontSize: 11, + ), + SizedBox( + height: 7, + ), + ], + ) + : authenticatedUserObject.isLogin + ? Stack( + alignment: AlignmentDirectional.center, + children: [ + Positioned( + right: 18.0, + bottom: 28.0, + child: Badge( + toAnimate: false, + position: BadgePosition.topEnd(), + shape: BadgeShape.circle, + badgeColor: Color(0xFF40ACC9).withOpacity(1.0), + borderRadius: BorderRadius.circular(8), + badgeContent: Container( + padding: EdgeInsets.all(2.0), + child: Text(model.count.toString(), + style: TextStyle( + color: Colors.white, fontSize: 14.0)), + ), + ), + ), + Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 15, + ), + Container( + child: Icon( + currentIndex == index ? activeIcon : icon, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Theme.of(context).dividerColor, + size: 22.0), + ), + SizedBox( + height: 2, + ), + Texts( + name, + textAlign: TextAlign.center, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Colors.grey, + fontSize: 11, + ), + SizedBox( + height: 7, + ), + ], + ), + ], + ) + : Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 15, + ), + Container( + child: Icon( + currentIndex == index ? activeIcon : icon, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Theme.of(context).dividerColor, + size: 22.0), + ), + SizedBox( + height: 2, + ), + Texts( + name, + textAlign: TextAlign.center, + color: currentIndex == index + ? Theme.of(context).primaryColor + : Colors.grey, + fontSize: 11, + ), + SizedBox( + height: 7, + ), + ], + ), ), ), ), diff --git a/lib/widgets/buttons/button.dart b/lib/widgets/buttons/button.dart index b6ae08b1..597106c9 100644 --- a/lib/widgets/buttons/button.dart +++ b/lib/widgets/buttons/button.dart @@ -1,4 +1,6 @@ +import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:hexcolor/hexcolor.dart'; /// Button widget @@ -33,7 +35,7 @@ class _ButtonState extends State

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