From d76ff5828f40bd9f9ce59f792f1613a186882cbc Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Wed, 14 Jan 2026 09:44:31 +0300 Subject: [PATCH 01/67] fixes --- lib/core/api_consts.dart | 2 +- lib/core/dependencies.dart | 25 ++-- .../blood_donation_view_model.dart | 11 +- .../blood_donation/blood_donation_page.dart | 15 ++- .../hmg_services/services_page.dart | 127 +++++++----------- 5 files changed, 86 insertions(+), 94 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index fe0b4d58..7c808e57 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -661,7 +661,7 @@ var GET_PRESCRIPTION_INSTRUCTIONS_PDF = 'Services/ChatBot_Service.svc/REST/Chatb class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index e8d30713..237f798d 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -35,6 +35,7 @@ import 'package:hmg_patient_app_new/features/medical_file/medical_file_repo.dart import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/features/monthly_report/monthly_report_repo.dart'; import 'package:hmg_patient_app_new/features/monthly_report/monthly_report_view_model.dart'; +import 'package:hmg_patient_app_new/features/monthly_reports/monthly_reports_repo.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_repo.dart'; @@ -290,11 +291,11 @@ class AppDependencies { getIt.registerLazySingleton(() => MyInvoicesViewModel(myInvoicesRepo: getIt(), errorHandlerService: getIt(), navServices: getIt())); getIt.registerLazySingleton(() => MonthlyReportViewModel(errorHandlerService: getIt(), monthlyReportRepo: getIt())); - getIt.registerLazySingleton(() => MyInvoicesViewModel( - myInvoicesRepo: getIt(), - errorHandlerService: getIt(), - navServices: getIt(), - )); + // getIt.registerLazySingleton(() => MyInvoicesViewModel( + // myInvoicesRepo: getIt(), + // errorHandlerService: getIt(), + // navServices: getIt(), + // )); getIt.registerLazySingleton(() => HealthTrackersViewModel(healthTrackersRepo: getIt(), errorHandlerService: getIt())); getIt.registerLazySingleton( () => ActivePrescriptionsViewModel( @@ -302,13 +303,13 @@ class AppDependencies { activePrescriptionsRepo: getIt() ), ); - getIt.registerFactory( - () => QrParkingViewModel( - qrParkingRepo: getIt(), - errorHandlerService: getIt(), - cacheService: getIt(), - ), - ); + // getIt.registerFactory( + // () => QrParkingViewModel( + // qrParkingRepo: getIt(), + // errorHandlerService: getIt(), + // cacheService: getIt(), + // ), + // ); } } diff --git a/lib/features/blood_donation/blood_donation_view_model.dart b/lib/features/blood_donation/blood_donation_view_model.dart index 8325cf78..94fa6e6b 100644 --- a/lib/features/blood_donation/blood_donation_view_model.dart +++ b/lib/features/blood_donation/blood_donation_view_model.dart @@ -233,7 +233,7 @@ class BloodDonationViewModel extends ChangeNotifier { return false; } - if (selectedBloodGroup == null) { + if (selectedGender == null) { await dialogService.showErrorBottomSheet( message: "Please choose Gender", ); @@ -258,7 +258,7 @@ class BloodDonationViewModel extends ChangeNotifier { Future updateBloodGroup() async { LoaderBottomSheet.showLoader(); - // body['City'] = detailsModel.city; + // body['City'] = detailsModel.city; // body['cityCode'] = detailsModel.cityCode; // body['Gender'] = detailsModel.gender; // body['BloodGroup'] = detailsModel.bloodGroup; @@ -283,4 +283,11 @@ class BloodDonationViewModel extends ChangeNotifier { Map payload = {"IsAgreed": true}; await bloodDonationRepo.addUserAgreementForBloodDonation(request: payload); } + + Future fetchAllData() async { + LoaderBottomSheet.showLoader(loadingText: "Fetching Data..."); + await getRegionSelectedClinics(); + // await getPatientBloodGroupDetails(); + LoaderBottomSheet.hideLoader(); + } } diff --git a/lib/presentation/blood_donation/blood_donation_page.dart b/lib/presentation/blood_donation/blood_donation_page.dart index a987220a..9432c672 100644 --- a/lib/presentation/blood_donation/blood_donation_page.dart +++ b/lib/presentation/blood_donation/blood_donation_page.dart @@ -28,11 +28,22 @@ import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; -class BloodDonationPage extends StatelessWidget { +class BloodDonationPage extends StatefulWidget { BloodDonationPage({super.key}); + @override + State createState() => _BloodDonationPageState(); +} + +class _BloodDonationPageState extends State { late AppState appState; + @override + void initState() { + super.initState(); + Future.microtask(() => getIt.get().fetchAllData()); + } + @override Widget build(BuildContext context) { appState = getIt(); @@ -52,8 +63,6 @@ class BloodDonationPage extends StatelessWidget { showCommonBottomSheetWithoutHeight(context, title: "Select Hospital", isDismissible: false, child: Consumer(builder: (_, data, __) { return HospitalBottomSheetBodySelection( onUserHospitalSelection: (BdGetProjectsHaveBdClinic userChoice) { - print("============User Choice==============="); - bloodDonationVM.getFreeBloodDonationSlots(request: {"ClinicID": 134, "ProjectID": userChoice.projectId}); }, ); diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index e49a6216..175d4d3b 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -46,18 +46,9 @@ class ServicesPage extends StatelessWidget { late MedicalFileViewModel medicalFileViewModel; late final List hmgServices = [ - HmgServicesComponentModel( - 11, - "Emergency Services".needTranslation, - "".needTranslation, - AppAssets.emergency_services_icon, - bgColor: AppColors.primaryRedColor, - true, - route: null, onTap: () { + HmgServicesComponentModel(11, "Emergency Services".needTranslation, "".needTranslation, AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () { getIt.get().flushData(); - getIt.get().getTransportationOrders( - showLoader: false, - ); + getIt.get().getTransportationOrders(showLoader: false); getIt.get().getRRTOrders( showLoader: false, ); @@ -106,72 +97,57 @@ class ServicesPage extends StatelessWidget { route: AppRoutes.eReferralPage, ), HmgServicesComponentModel( - 3, - "Blood Donation".needTranslation, - "".needTranslation, - AppAssets.blood_donation_icon, - bgColor: AppColors.bloodDonationCardColor, - true, - route: null, onTap: () async { - LoaderBottomSheet.showLoader(loadingText: "Fetching Data..."); - await bloodDonationViewModel.getRegionSelectedClinics(onSuccess: (val) async { - // await bloodDonationViewModel.getPatientBloodGroupDetails(onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - Navigator.of(GetIt.instance().navigatorKey.currentContext!).push( - CustomPageRoute( - page: BloodDonationPage(), - ), - ); - // }, onError: (err) { - // LoaderBottomSheet.hideLoader(); - // }); - }, onError: (err) { - LoaderBottomSheet.hideLoader(); - }); - }), - // HmgServicesComponentModel( - // 11, - // "Covid 19 Test".needTranslation, - // "".needTranslation, - // AppAssets.covid19icon, - // bgColor: AppColors.covid29Color, - // true, - // route: AppRoutes.covid19Test, - // ), + 3, + "Blood Donation".needTranslation, + "".needTranslation, + AppAssets.blood_donation_icon, + bgColor: AppColors.bloodDonationCardColor, + true, + route: AppRoutes.bloodDonationPage, + ), +// HmgServicesComponentModel( +// 11, +// "Covid 19 Test".needTranslation, +// "".needTranslation, +// AppAssets.covid19icon, +// bgColor: AppColors.covid29Color, +// true, +// route: AppRoutes.covid19Test, +// ), - // HmgServicesComponentModel( - // 11, - // "Vital Sign".needTranslation, - // "".needTranslation, - // AppAssets.covid19icon, - // bgColor: AppColors.covid29Color, - // true, - // route: AppRoutes.vitalSign, - // ) +// HmgServicesComponentModel( +// 11, +// "Vital Sign".needTranslation, +// "".needTranslation, +// AppAssets.covid19icon, +// bgColor: AppColors.covid29Color, +// true, +// route: AppRoutes.vitalSign, +// ) - // HmgServicesComponentModel( - // 3, - // "Home Health Care".needTranslation, - // "".needTranslation, - // AppAssets.homeBottom, - // bgColor: AppColors.primaryRedColor, - // true, - // route: AppRoutes.homeHealthCarePage, - // ), - // HmgServicesComponentModel( - // 11, - // "Virtual Tour".needTranslation, - // "".needTranslation, - // AppAssets.my_address, - // bgColor: AppColors.quickLoginColor, - // true, - // route: null, - // onTap:(){ - // Utils.openWebView( - // url: 'https://hmgwebservices.com/vt_mobile/html/index.html', - // ); - // }, - // ) +// HmgServicesComponentModel( +// 3, +// "Home Health Care".needTranslation, +// "".needTranslation, +// AppAssets.homeBottom, +// bgColor: AppColors.primaryRedColor, +// true, +// route: AppRoutes.homeHealthCarePage, +// ), +// HmgServicesComponentModel( +// 11, +// "Virtual Tour".needTranslation, +// "".needTranslation, +// AppAssets.my_address, +// bgColor: AppColors.quickLoginColor, +// true, +// route: null, +// onTap:(){ +// Utils.openWebView( +// url: 'https://hmgwebservices.com/vt_mobile/html/index.html', +// ); +// }, +// ) ]; late final List hmgHealthToolServices = [ @@ -539,7 +515,6 @@ class ServicesPage extends StatelessWidget { ), ), ); - }), ), ), From 77a04e637e914493198d91ca979a58febbb6f6e3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 14 Jan 2026 10:15:49 +0300 Subject: [PATCH 02/67] UI/UX improvements. --- assets/images/svg/arrow-back_new.svg | 4 + assets/images/svg/book_appo_bottom.svg | 4 +- assets/images/svg/close_bottom_nav_new.svg | 4 + assets/images/svg/close_bottom_nav_trans.svg | 3 + assets/images/svg/close_bottom_sheet_icon.svg | 5 +- assets/images/svg/feedback_fill.svg | 5 + assets/images/svg/home_bottom.svg | 5 +- assets/images/svg/home_bottom_fill.svg | 3 + assets/images/svg/location_fill.svg | 3 + assets/images/svg/my_files_bottom.svg | 4 +- assets/images/svg/my_files_bottom_fill.svg | 4 + assets/images/svg/news.svg | 10 +- assets/images/svg/news_fill.svg | 3 + assets/images/svg/services_bottom.svg | 8 +- assets/images/svg/services_bottom_fill.svg | 6 + assets/images/svg/symptom_bottom_icon.svg | 2 +- .../images/svg/symptom_bottom_icon_fill.svg | 3 + lib/core/app_assets.dart | 10 + lib/core/utils/size_utils.dart | 4 +- lib/core/utils/utils.dart | 3 +- lib/extensions/string_extensions.dart | 3 +- .../habib_wallet/habib_wallet_page.dart | 26 +- .../habib_wallet/recharge_wallet_page.dart | 71 +-- .../hmg_services/services_page.dart | 92 ++- .../home/data/landing_page_data.dart | 2 +- lib/presentation/home/landing_page.dart | 398 ++++++------ lib/presentation/home/navigation_screen.dart | 4 +- .../home/widgets/habib_wallet_card.dart | 114 ++-- .../home/widgets/large_service_card.dart | 127 ++++ .../home/widgets/small_service_card.dart | 43 +- lib/presentation/lab/lab_orders_page.dart | 2 +- .../medical_file/medical_file_page.dart | 454 +++++++------- .../onboarding/onboarding_screen.dart | 23 +- .../profile_settings/profile_settings.dart | 21 +- .../radiology/radiology_orders_page.dart | 589 +++++++++--------- .../bottom_navigation/bottom_navigation.dart | 47 +- lib/widgets/common_bottom_sheet.dart | 96 ++- 37 files changed, 1205 insertions(+), 1000 deletions(-) create mode 100644 assets/images/svg/arrow-back_new.svg create mode 100644 assets/images/svg/close_bottom_nav_new.svg create mode 100644 assets/images/svg/close_bottom_nav_trans.svg create mode 100644 assets/images/svg/feedback_fill.svg create mode 100644 assets/images/svg/home_bottom_fill.svg create mode 100644 assets/images/svg/location_fill.svg create mode 100644 assets/images/svg/my_files_bottom_fill.svg create mode 100644 assets/images/svg/news_fill.svg create mode 100644 assets/images/svg/services_bottom_fill.svg create mode 100644 assets/images/svg/symptom_bottom_icon_fill.svg diff --git a/assets/images/svg/arrow-back_new.svg b/assets/images/svg/arrow-back_new.svg new file mode 100644 index 00000000..cae96941 --- /dev/null +++ b/assets/images/svg/arrow-back_new.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/book_appo_bottom.svg b/assets/images/svg/book_appo_bottom.svg index d09107ec..18b65b8f 100644 --- a/assets/images/svg/book_appo_bottom.svg +++ b/assets/images/svg/book_appo_bottom.svg @@ -1,3 +1,3 @@ - - + + diff --git a/assets/images/svg/close_bottom_nav_new.svg b/assets/images/svg/close_bottom_nav_new.svg new file mode 100644 index 00000000..1b7b9378 --- /dev/null +++ b/assets/images/svg/close_bottom_nav_new.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/close_bottom_nav_trans.svg b/assets/images/svg/close_bottom_nav_trans.svg new file mode 100644 index 00000000..e00aaf96 --- /dev/null +++ b/assets/images/svg/close_bottom_nav_trans.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/close_bottom_sheet_icon.svg b/assets/images/svg/close_bottom_sheet_icon.svg index 599ce85f..e00aaf96 100644 --- a/assets/images/svg/close_bottom_sheet_icon.svg +++ b/assets/images/svg/close_bottom_sheet_icon.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/assets/images/svg/feedback_fill.svg b/assets/images/svg/feedback_fill.svg new file mode 100644 index 00000000..bb7c6a23 --- /dev/null +++ b/assets/images/svg/feedback_fill.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/home_bottom.svg b/assets/images/svg/home_bottom.svg index 1bf82f98..70c3f1f2 100644 --- a/assets/images/svg/home_bottom.svg +++ b/assets/images/svg/home_bottom.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/assets/images/svg/home_bottom_fill.svg b/assets/images/svg/home_bottom_fill.svg new file mode 100644 index 00000000..30ed655f --- /dev/null +++ b/assets/images/svg/home_bottom_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/location_fill.svg b/assets/images/svg/location_fill.svg new file mode 100644 index 00000000..a5afffb7 --- /dev/null +++ b/assets/images/svg/location_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/my_files_bottom.svg b/assets/images/svg/my_files_bottom.svg index 813805e0..a21fb4b3 100644 --- a/assets/images/svg/my_files_bottom.svg +++ b/assets/images/svg/my_files_bottom.svg @@ -1,4 +1,4 @@ - - + + diff --git a/assets/images/svg/my_files_bottom_fill.svg b/assets/images/svg/my_files_bottom_fill.svg new file mode 100644 index 00000000..e4916e00 --- /dev/null +++ b/assets/images/svg/my_files_bottom_fill.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/news.svg b/assets/images/svg/news.svg index 82f9dcfc..6ed40d3a 100644 --- a/assets/images/svg/news.svg +++ b/assets/images/svg/news.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/assets/images/svg/news_fill.svg b/assets/images/svg/news_fill.svg new file mode 100644 index 00000000..ed9697cc --- /dev/null +++ b/assets/images/svg/news_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/services_bottom.svg b/assets/images/svg/services_bottom.svg index baa3d6b8..2b0733f2 100644 --- a/assets/images/svg/services_bottom.svg +++ b/assets/images/svg/services_bottom.svg @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/assets/images/svg/services_bottom_fill.svg b/assets/images/svg/services_bottom_fill.svg new file mode 100644 index 00000000..41f4f5b2 --- /dev/null +++ b/assets/images/svg/services_bottom_fill.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/symptom_bottom_icon.svg b/assets/images/svg/symptom_bottom_icon.svg index bc729711..e9b3bd03 100644 --- a/assets/images/svg/symptom_bottom_icon.svg +++ b/assets/images/svg/symptom_bottom_icon.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/images/svg/symptom_bottom_icon_fill.svg b/assets/images/svg/symptom_bottom_icon_fill.svg new file mode 100644 index 00000000..7192ae8a --- /dev/null +++ b/assets/images/svg/symptom_bottom_icon_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index a581e786..c5a03caf 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -4,6 +4,7 @@ class AppAssets { static const String hmg = '$svgBasePath/hmg.svg'; static const String arrow_back = '$svgBasePath/arrow-back.svg'; + static const String arrow_back_new = '$svgBasePath/arrow-back_new.svg'; static const String arrow_forward = '$svgBasePath/arrow_forward.svg'; static const String externalLink = '$svgBasePath/external_link.svg'; static const String calendar = '$svgBasePath/calendar.svg'; @@ -25,6 +26,7 @@ class AppAssets { static const String download = '$svgBasePath/download.svg'; static const String language = '$svgBasePath/language.svg'; static const String location = '$svgBasePath/location.svg'; + static const String locationFill = '$svgBasePath/location_fill.svg'; static const String pin_location = '$svgBasePath/pin_location.svg'; static const String whatsapp = '$svgBasePath/whatsapp.svg'; static const String card_user = '$svgBasePath/card_user.svg'; @@ -225,13 +227,20 @@ class AppAssets { //bottom navigation// static const String homeBottom = '$svgBasePath/home_bottom.svg'; + static const String homeBottomFill = '$svgBasePath/home_bottom_fill.svg'; static const String bookAppoBottom = '$svgBasePath/book_appo_bottom.svg'; static const String myFilesBottom = '$svgBasePath/my_files_bottom.svg'; + static const String myFilesBottomFill = '$svgBasePath/my_files_bottom_fill.svg'; static const String toDoBottom = '$svgBasePath/todo_bottom.svg'; static const String servicesBottom = '$svgBasePath/services_bottom.svg'; + static const String servicesBottomFill = '$svgBasePath/services_bottom_fill.svg'; static const String closeBottomNav = '$svgBasePath/close_bottom_nav.svg'; + static const String close_bottom_nav_new = '$svgBasePath/close_bottom_nav_new.svg'; + static const String close_bottom_nav_trans = '$svgBasePath/close_bottom_nav_trans.svg'; static const String feedback = '$svgBasePath/feedback.svg'; + static const String feedbackFill = '$svgBasePath/feedback_fill.svg'; static const String news = '$svgBasePath/news.svg'; + static const String newsFill = '$svgBasePath/news_fill.svg'; static const String heart = '$svgBasePath/heart.svg'; static const String alertSquare = '$svgBasePath/alert-square.svg'; static const String arrowRight = '$svgBasePath/arrow-right.svg'; @@ -248,6 +257,7 @@ class AppAssets { static const String homeBorderedIcon = '$svgBasePath/home_bordered.svg'; static const String symptomCheckerIcon = '$svgBasePath/symptom_checker_icon.svg'; static const String symptomCheckerBottomIcon = '$svgBasePath/symptom_bottom_icon.svg'; + static const String symptomCheckerBottomFillIcon = '$svgBasePath/symptom_bottom_icon_fill.svg'; // Water Monitor static const String waterBottle = '$svgBasePath/water_bottle.svg'; diff --git a/lib/core/utils/size_utils.dart b/lib/core/utils/size_utils.dart index 4fdc09cf..3adf7ad3 100644 --- a/lib/core/utils/size_utils.dart +++ b/lib/core/utils/size_utils.dart @@ -4,8 +4,8 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; // These are the Viewport values of your Figma Design. // These are used in the code as a reference to create your UI Responsively. -const num figmaDesignWidth = 375; // iPhone X / 12 base width -const num figmaDesignHeight = 812; // iPhone X / 12 base height +const num figmaDesignWidth = 430; // iPhone X / 12 base width, +const num figmaDesignHeight = 927; // iPhone X / 12 base height extension ConstrainedResponsive on num { diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 03ff6b59..c25481f6 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -387,7 +387,7 @@ class Utils { crossAxisAlignment: CrossAxisAlignment.center, children: [ Lottie.asset(AppAnimations.loadingAnimation, - repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.fill), SizedBox(height: 8.h), (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor, isCenter: true), SizedBox(height: 8.h), @@ -839,6 +839,7 @@ class Utils { color: textColor, fontSize: fontSize ?? 32.f, letterSpacing: letterSpacing ?? -4, + fontFamily: "Poppins", fontWeight: fontWeight ?? FontWeight.w600, height: 1), ), diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 309dde19..1df051ea 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -92,6 +92,7 @@ extension EmailValidator on String { FontWeight? fontWeight, bool isCenter = false, double? height, + double? letterSpacing, int maxLine = 0}) => Text( this, @@ -101,7 +102,7 @@ extension EmailValidator on String { fontSize: 12.f, fontWeight: fontWeight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, - letterSpacing: 0, + letterSpacing: letterSpacing ?? 0, height: height, decorationColor: isUnderLine ? AppColors.blackColor : null, decoration: isUnderLine ? TextDecoration.underline : null, diff --git a/lib/presentation/habib_wallet/habib_wallet_page.dart b/lib/presentation/habib_wallet/habib_wallet_page.dart index a7ec23db..444d8566 100644 --- a/lib/presentation/habib_wallet/habib_wallet_page.dart +++ b/lib/presentation/habib_wallet/habib_wallet_page.dart @@ -82,28 +82,26 @@ class _HabibWalletState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ CustomButton( + height: 40.h, icon: AppAssets.recharge_icon, - iconSize: 21.h, + iconSize: 24.w, + backgroundColor: AppColors.infoColor, + textColor: AppColors.whiteColor, text: "Recharge".needTranslation, + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, onPressed: () { Navigator.of(context) - .push( - CustomPageRoute( - page: RechargeWalletPage(), - ), - ) + .push(CustomPageRoute( + page: RechargeWalletPage(), + )) .then((val) { habibWalletVM.getPatientBalanceAmount(); }); }, - backgroundColor: AppColors.infoColor, - borderColor: AppColors.infoColor, - textColor: AppColors.whiteColor, - fontSize: 14, - fontWeight: FontWeight.bold, - borderRadius: 12, - // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, ), ], ), diff --git a/lib/presentation/habib_wallet/recharge_wallet_page.dart b/lib/presentation/habib_wallet/recharge_wallet_page.dart index 74eebec3..c2b378dd 100644 --- a/lib/presentation/habib_wallet/recharge_wallet_page.dart +++ b/lib/presentation/habib_wallet/recharge_wallet_page.dart @@ -85,30 +85,26 @@ class _RechargeWalletPageState extends State { Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - Utils.getPaymentAmountWithSymbol( - SizedBox( - width: 150.h, - child: TextInputWidget( - controller: amountTextController, - labelText: "", - hintText: "", - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - autoFocus: true, - fontSize: 40, - padding: EdgeInsets.symmetric(horizontal: 8.h, vertical: 0.h), - focusNode: textFocusNode, - isWalletAmountInput: true, - keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), - // leadingIcon: AppAssets.student_card, - ), - ), - AppColors.textColor, - 13.h, - isExpanded: false), + SizedBox( + width: 150.h, + child: TextInputWidget( + controller: amountTextController, + labelText: "", + hintText: "", + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + autoFocus: true, + fontSize: 40, + padding: EdgeInsets.symmetric(horizontal: 8.h, vertical: 0.h), + focusNode: textFocusNode, + isWalletAmountInput: true, + keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), + // leadingIcon: AppAssets.student_card, + ), + ), const Spacer(), "SAR".needTranslation.toText20(color: AppColors.greyTextColor, weight: FontWeight.w500), ], @@ -140,9 +136,9 @@ class _RechargeWalletPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (habibWalletVM.getSelectedRechargeTypeValue()).toText16(color: AppColors.textColor, weight: FontWeight.w500), + (habibWalletVM.getSelectedRechargeTypeValue()).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), "${LocaleKeys.medicalFile.tr(context: context)}: ${habibWalletVM.fileNumber}" - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + .toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), ], ), ], @@ -178,11 +174,11 @@ class _RechargeWalletPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.hospital.tr(context: context).toText16(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.hospital.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), SizedBox( width: MediaQuery.of(context).size.width * 0.55, child: (habibWalletVM.selectedHospital != null ? habibWalletVM.selectedHospital!.name : LocaleKeys.selectHospital.tr(context: context))! - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + .toText14(color: AppColors.textColor, weight: FontWeight.w500), ), ], ), @@ -198,19 +194,14 @@ class _RechargeWalletPageState extends State { Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), SizedBox(height: 16.h), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( + Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h), + SizedBox(width: 8.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "${appState.getAuthenticatedUser()!.emailAddress}".toText16(color: AppColors.textColor, weight: FontWeight.w500), - ], - ), + LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + "${appState.getAuthenticatedUser()!.emailAddress}".toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), ], ), ], @@ -229,7 +220,7 @@ class _RechargeWalletPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.notes.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "Lorem Ipsum".toText16(color: AppColors.textColor, weight: FontWeight.w500), + "Lorem Ipsum".toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), ], ), ], diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index f2cab90b..a17b04b7 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -38,19 +38,15 @@ import 'package:provider/provider.dart'; import '../../core/dependencies.dart' show getIt; class ServicesPage extends StatelessWidget { - ServicesPage({super.key}); + bool showBackIcon; + + ServicesPage({super.key, this.showBackIcon = true}); late BloodDonationViewModel bloodDonationViewModel; late MedicalFileViewModel medicalFileViewModel; late final List hmgServices = [ - HmgServicesComponentModel( - 11, - "Emergency Services".needTranslation, - "".needTranslation, - AppAssets.emergency_services_icon, - bgColor: AppColors.primaryRedColor, - true, route: null, onTap: () { + HmgServicesComponentModel(11, "Emergency Services".needTranslation, "".needTranslation, AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () { getIt.get().flushData(); getIt.get().getTransportationOrders( showLoader: false, @@ -102,14 +98,7 @@ class ServicesPage extends StatelessWidget { true, route: AppRoutes.eReferralPage, ), - HmgServicesComponentModel( - 3, - "Blood Donation".needTranslation, - "".needTranslation, - AppAssets.blood_donation_icon, - bgColor: AppColors.bloodDonationCardColor, - true, - route: null, onTap: () async { + HmgServicesComponentModel(3, "Blood Donation".needTranslation, "".needTranslation, AppAssets.blood_donation_icon, bgColor: AppColors.bloodDonationCardColor, true, route: null, onTap: () async { LoaderBottomSheet.showLoader(loadingText: "Fetching Data..."); await bloodDonationViewModel.getRegionSelectedClinics(onSuccess: (val) async { // await bloodDonationViewModel.getPatientBloodGroupDetails(onSuccess: (val) { @@ -239,20 +228,19 @@ class ServicesPage extends StatelessWidget { backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( title: "Explore Services".needTranslation, - isLeading: false, + isLeading: showBackIcon, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 16.h), - "Medical & Care Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + "Medical & Care Services".needTranslation.toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row - crossAxisSpacing: 12.w, - mainAxisSpacing: 18.h, - childAspectRatio: 0.8, - ), + crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row + crossAxisSpacing: 21.w, + mainAxisSpacing: 18.h, + childAspectRatio: 80 / 94), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: hmgServices.length, @@ -262,7 +250,7 @@ class ServicesPage extends StatelessWidget { }, ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "HMG Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + "HMG Services".needTranslation.toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), SizedBox( height: 350.h, @@ -293,13 +281,14 @@ class ServicesPage extends StatelessWidget { ), ), SizedBox(height: 24.h), - "Personal Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + "Personal Services".needTranslation.toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), Row( children: [ Expanded( child: Container( - height: 170.h, + height: 183.h, + width: 183.h, padding: EdgeInsets.all(16.w), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -313,21 +302,21 @@ class ServicesPage extends StatelessWidget { spacing: 8.w, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 30.w, height: 30.h), - "Habib Wallet".needTranslation.toText14(weight: FontWeight.w600, maxlines: 2).expanded, + Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h), + "Habib Wallet".needTranslation.toText16(weight: FontWeight.w600, maxlines: 2).expanded, Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), ], ), Spacer(), Consumer(builder: (context, habibWalletVM, child) { - return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false) + return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false, iconColor: AppColors.textColor.withValues(alpha: .31)) .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); }), Spacer(), CustomButton( height: 40.h, icon: AppAssets.recharge_icon, - iconSize: 16.w, + iconSize: 24.w, iconColor: AppColors.infoColor, textColor: AppColors.infoColor, text: "Recharge".needTranslation, @@ -336,7 +325,7 @@ class ServicesPage extends StatelessWidget { borderColor: Colors.transparent, backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), padding: EdgeInsets.all(8.w), - fontSize: 12.f, + fontSize: 14.f, onPressed: () { Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); }, @@ -350,7 +339,8 @@ class ServicesPage extends StatelessWidget { SizedBox(width: 16.w), Expanded( child: Container( - height: 170.h, + height: 183.h, + width: 183.h, padding: EdgeInsets.all(16.w), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -364,36 +354,36 @@ class ServicesPage extends StatelessWidget { spacing: 8.w, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 30.w, height: 30.h), - "Medical Files".needTranslation.toText14(weight: FontWeight.w600, maxlines: 2).expanded, + Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h), + "Medical Files".needTranslation.toText16(weight: FontWeight.w600, maxlines: 2).expanded, Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), ], ), Spacer(), Wrap( - spacing: -8.h, + spacing: -12.h, // runSpacing: 0.h, children: [ Utils.buildImgWithAssets( icon: AppAssets.babyGirlImg, - height: 28.h, - width: 28.w, + height: 32.h, + width: 32.w, border: 1, fit: BoxFit.contain, borderRadius: 50.r, ), Utils.buildImgWithAssets( icon: AppAssets.femaleImg, - height: 28.h, - width: 28.w, + height: 32.h, + width: 32.w, border: 1, borderRadius: 50.r, fit: BoxFit.contain, ), Utils.buildImgWithAssets( icon: AppAssets.maleImg, - height: 28.h, - width: 28.w, + height: 32.h, + width: 32.w, border: 1, borderRadius: 50.r, fit: BoxFit.contain, @@ -404,7 +394,7 @@ class ServicesPage extends StatelessWidget { CustomButton( height: 40.h, icon: AppAssets.add_icon, - iconSize: 16.w, + iconSize: 24.h, iconColor: AppColors.primaryRedColor, textColor: AppColors.primaryRedColor, text: "Add Member".needTranslation, @@ -413,7 +403,7 @@ class ServicesPage extends StatelessWidget { borderColor: Colors.transparent, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), padding: EdgeInsets.all(8.w), - fontSize: 12.f, + fontSize: 14.f, onPressed: () { DialogService dialogService = getIt.get(); medicalFileViewModel.clearAuthValues(); @@ -438,14 +428,14 @@ class ServicesPage extends StatelessWidget { ], ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "Health Tools".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + "Health Tools".needTranslation.toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row - crossAxisSpacing: 12.w, + crossAxisSpacing: 21.w, mainAxisSpacing: 18.h, - childAspectRatio: 0.8, + childAspectRatio: 80 / 94, ), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, @@ -461,7 +451,7 @@ class ServicesPage extends StatelessWidget { }, ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "Support Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + "Support Services".needTranslation.toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -486,7 +476,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Virtual Tour".needTranslation.toText12(fontWeight: FontWeight.w500) + "Virtual Tour".needTranslation.toText14(weight: FontWeight.w500) ], ), ), @@ -515,7 +505,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Car Parking".needTranslation.toText12(fontWeight: FontWeight.w500) + "Car Parking".needTranslation.toText14(weight: FontWeight.w500) ], ), ), @@ -544,7 +534,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Latest News".needTranslation.toText12(fontWeight: FontWeight.w500) + "Latest News".needTranslation.toText14(weight: FontWeight.w500) ], ), ), @@ -573,7 +563,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "HMG Contact".needTranslation.toText12(fontWeight: FontWeight.w500) + "HMG Contact".needTranslation.toText14(weight: FontWeight.w500) ], ), ), diff --git a/lib/presentation/home/data/landing_page_data.dart b/lib/presentation/home/data/landing_page_data.dart index c6934790..0a6c600a 100644 --- a/lib/presentation/home/data/landing_page_data.dart +++ b/lib/presentation/home/data/landing_page_data.dart @@ -100,7 +100,7 @@ class LandingPageData { ServiceCardData( serviceName: "prescriptions", icon: AppAssets.my_prescription_icon, - title: "Prescriptions", + title: "Prescription", subtitle: "Details", backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index b25ae823..e93a2fa4 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -83,6 +83,15 @@ class _LandingPageState extends State { final SwiperController _controller = SwiperController(); + final ScrollController _horizontalScrollController = ScrollController(); + + @override + void dispose() { + _horizontalScrollController.dispose(); + super.dispose(); + } + + @override void initState() { authVM = context.read(); @@ -106,11 +115,14 @@ class _LandingPageState extends State { myAppointmentsViewModel.getPatientAppointments(true, false); emergencyServicesViewModel.checkPatientERAdvanceBalance(); myAppointmentsViewModel.getPatientAppointmentQueueDetails(); - if(!appState.isRatedVisible) { - appointmentRatingViewModel.getLastRatingAppointment(onSuccess: (response) { - if (appointmentRatingViewModel.appointmentRatedList.isNotEmpty) { - appointmentRatingViewModel.getAppointmentDetails(appointmentRatingViewModel.appointmentRatedList.last.appointmentNo!, appointmentRatingViewModel.appointmentRatedList.last.projectID!, - onSuccess: ((response) { + if (!appState.isRatedVisible) { + appointmentRatingViewModel.getLastRatingAppointment( + onSuccess: (response) { + if (appointmentRatingViewModel.appointmentRatedList.isNotEmpty) { + appointmentRatingViewModel.getAppointmentDetails( + appointmentRatingViewModel.appointmentRatedList.last.appointmentNo!, + appointmentRatingViewModel.appointmentRatedList.last.projectID!, + onSuccess: ((response) { appointmentRatingViewModel.setClinicOrDoctor(false); appointmentRatingViewModel.setTitle("Rate Doctor".needTranslation); appointmentRatingViewModel.setSubTitle("How was your last visit with doctor?".needTranslation); @@ -177,22 +189,23 @@ class _LandingPageState extends State { fontSize: 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), + padding: EdgeInsets.fromLTRB(12.h, 0, 12.h, 0), height: 40.h, ), Row( mainAxisSize: MainAxisSize.min, - spacing: 12.h, + spacing: 18.h, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 18.h, width: 18.h).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: MedicalFilePage(), - // page: LoginScreen(), - ), - ); - }), - Utils.buildSvgWithAssets(icon: AppAssets.indoor_nav_icon, height: 18.h, width: 18.h).onPress(() { + if (appState.isAuthenticated) + Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 24.h, width: 24.h).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: MedicalFilePage(), + // page: LoginScreen(), + ), + ); + }), + Utils.buildSvgWithAssets(icon: AppAssets.locationFill, height: 24.h, width: 24.h).onPress(() { // Navigator.of(context).push( // CustomPageRoute( // page: MedicalFilePage(), @@ -200,7 +213,7 @@ class _LandingPageState extends State { // ), // ); }), - Utils.buildSvgWithAssets(icon: AppAssets.contact_icon, height: 18.h, width: 18.h).onPress(() { + Utils.buildSvgWithAssets(icon: AppAssets.contact_icon, height: 24.h, width: 24.h).onPress(() { showCommonBottomSheetWithoutHeight( context, title: LocaleKeys.contactUs.tr(), @@ -234,7 +247,7 @@ class _LandingPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "How are you feeling today?".needTranslation.toText14(isBold: true), + "How are you feeling today?".needTranslation.toText14(weight: FontWeight.w600), "Check your symptoms with this scale".needTranslation.toText12(fontWeight: FontWeight.w500), SizedBox(height: 14.h), CustomButton( @@ -242,6 +255,7 @@ class _LandingPageState extends State { onPressed: () async { context.navigateWithName(AppRoutes.userInfoSelection); }, + padding: EdgeInsetsGeometry.zero, backgroundColor: Color(0xFF2B353E), borderColor: Color(0xFF2B353E), textColor: AppColors.whiteColor, @@ -251,7 +265,7 @@ class _LandingPageState extends State { height: 40.h, ), ], - ) + ).expanded ], ), ), @@ -264,12 +278,12 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Appointments & Visits".toText16(isBold: true), + "Appointments & Visits".toText16(weight: FontWeight.w600), Row( children: [ - LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor), + LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor,weight: FontWeight.w500), SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], ), ], @@ -362,29 +376,38 @@ class _LandingPageState extends State { SizedBox(height: 8.h), myAppointmentsVM.currentPatientQueueDetails.queueNo!.toText28(isBold: true), SizedBox(height: 6.h), - myAppointmentsVM.patientQueueDetailsList.isNotEmpty ? Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - "Serving Now: ".needTranslation.toText14(isBold: true), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - myAppointmentsVM.patientQueueDetailsList.first.queueNo!.toText12(isBold: true), - SizedBox(width: 8.w), - AppCustomChipWidget( - deleteIcon: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, - labelText: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? "Call for vital signs".needTranslation : "Call for Doctor".needTranslation, - iconColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, - textColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, - iconSize: 14.w, - backgroundColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor.withValues(alpha: 0.1) : AppColors.successColor.withValues(alpha: 0.1), - labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h), - ), - ], - ), - ], - ) : SizedBox(height: 12.h), + myAppointmentsVM.patientQueueDetailsList.isNotEmpty + ? Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + "Serving Now: ".needTranslation.toText14(isBold: true), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + myAppointmentsVM.patientQueueDetailsList.first.queueNo!.toText12(isBold: true), + SizedBox(width: 8.w), + AppCustomChipWidget( + deleteIcon: + myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, + labelText: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 + ? "Call for vital signs".needTranslation + : "Call for Doctor".needTranslation, + iconColor: + myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, + textColor: + myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, + iconSize: 14.w, + backgroundColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 + ? AppColors.primaryRedColor.withValues(alpha: 0.1) + : AppColors.successColor.withValues(alpha: 0.1), + labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h), + ), + ], + ), + ], + ) + : SizedBox(height: 12.h), SizedBox(height: 5.h), CustomButton( text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus, myAppointmentsVM.currentPatientQueueDetails.roomNo ?? ""), @@ -415,86 +438,86 @@ class _LandingPageState extends State { children: [ SizedBox(height: 12.h), Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: true, - side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "Immediate LiveCare Request".needTranslation.toText16(isBold: true), - SizedBox(height: 10.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + hasShadow: true, + side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ + "Immediate LiveCare Request".needTranslation.toText16(isBold: true), + SizedBox(height: 10.h), Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - AppCustomChipWidget( - labelText: immediateLiveCareVM.patientLiveCareHistoryList[0].stringCallStatus, - backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), - textColor: AppColors.alertColor, + Row( + children: [ + AppCustomChipWidget( + labelText: immediateLiveCareVM.patientLiveCareHistoryList[0].stringCallStatus, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), + textColor: AppColors.alertColor, + ), + SizedBox(width: 8.w), + AppCustomChipWidget( + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate(immediateLiveCareVM.patientLiveCareHistoryList[0].arrivalTime), false)), + ], ), - SizedBox(width: 8.w), - AppCustomChipWidget( - icon: AppAssets.appointment_calendar_icon, - labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate(immediateLiveCareVM.patientLiveCareHistoryList[0].arrivalTime), false)), + Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), + // Lottie.asset(AppAnimations.pending_loading_animation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.cover), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), - // Lottie.asset(AppAnimations.pending_loading_animation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.cover), - ], - ), - SizedBox(height: 10.h), - "Hala ${appState.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true), - SizedBox(height: 8.h), + SizedBox(height: 10.h), + "Hala ${appState.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true), + SizedBox(height: 8.h), "Your turn is after ${immediateLiveCareVM.patientLiveCareHistoryList[0].patCount} patients.".needTranslation.toText14(isBold: true), SizedBox(height: 8.h), Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ + crossAxisAlignment: CrossAxisAlignment.start, + children: [ "Expected waiting time: ".needTranslation.toText12(isBold: true), SizedBox(height: 7.h), ValueListenableBuilder( valueListenable: immediateLiveCareVM.durationNotifier, - builder: (context, duration, child) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - buildTime(duration), - ], - ); - }, - ), + builder: (context, duration, child) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + buildTime(duration), + ], + ); + }, + ), ], ), - // CustomButton( - // text: "View Details".needTranslation, - // onPressed: () async { - // Navigator.of(context).push(CustomPageRoute(page: ImmediateLiveCarePendingRequestPage())); - // }, - // backgroundColor: Color(0xffFEE9EA), - // borderColor: Color(0xffFEE9EA), - // textColor: Color(0xffED1C2B), - // fontSize: 14.f, - // fontWeight: FontWeight.w500, - // borderRadius: 12.r, - // padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), - // height: 40.h, - // ), - ], - ), - ), - ).paddingSymmetrical(0.h, 0.h).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: ImmediateLiveCarePendingRequestPage())); - }), - SizedBox(height: 12.h), - ], - ) + // CustomButton( + // text: "View Details".needTranslation, + // onPressed: () async { + // Navigator.of(context).push(CustomPageRoute(page: ImmediateLiveCarePendingRequestPage())); + // }, + // backgroundColor: Color(0xffFEE9EA), + // borderColor: Color(0xffFEE9EA), + // textColor: Color(0xffED1C2B), + // fontSize: 14.f, + // fontWeight: FontWeight.w500, + // borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), + // height: 40.h, + // ), + ], + ), + ), + ).paddingSymmetrical(0.h, 0.h).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: ImmediateLiveCarePendingRequestPage())); + }), + SizedBox(height: 12.h), + ], + ) : (todoSectionVM.patientAncillaryOrdersList.isNotEmpty && index == 1) ? AncillaryOrderCard( order: todoSectionVM.patientAncillaryOrdersList.first, @@ -530,7 +553,7 @@ class _LandingPageState extends State { isLoading: false, isFromHomePage: true, ), - ); + ); }, ) : Container( @@ -629,12 +652,13 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Quick Links".needTranslation.toText16(isBold: true), + "Quick Links".needTranslation.toText16(weight: FontWeight.w600), + Row( children: [ - "View medical file".needTranslation.toText12(color: AppColors.primaryRedColor), + "View medical file".needTranslation.toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], ), ], @@ -643,92 +667,119 @@ class _LandingPageState extends State { }), SizedBox(height: 16.h), Container( - height: 121.h, + // height: 121.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), child: Column( children: [ - Expanded( - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getLoggedInServiceCardsList.length, - shrinkWrap: true, - padding: EdgeInsets.only(left: 16.h, right: 16.h), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SmallServiceCard( - icon: LandingPageData.getLoggedInServiceCardsList[index].icon, - title: LandingPageData.getLoggedInServiceCardsList[index].title, - subtitle: LandingPageData.getLoggedInServiceCardsList[index].subtitle, - iconColor: LandingPageData.getLoggedInServiceCardsList[index].iconColor!, - textColor: LandingPageData.getLoggedInServiceCardsList[index].textColor, - backgroundColor: LandingPageData.getLoggedInServiceCardsList[index].backgroundColor, - isBold: LandingPageData.getLoggedInServiceCardsList[index].isBold, - serviceName: LandingPageData.getLoggedInServiceCardsList[index].serviceName, + SizedBox( + height: 92.h + 32.h - 4.h, + child: RawScrollbar( + controller: _horizontalScrollController, + thumbVisibility: true, + radius: Radius.circular(10.0), + thumbColor: AppColors.primaryRedColor, + trackVisibility: true, + trackColor: Color(0xffD9D9D9), + trackBorderColor: Colors.transparent, + trackRadius: Radius.circular(10.0), + padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2 - 35, right: MediaQuery.sizeOf(context).width / 2 - 35), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData.getLoggedInServiceCardsList.length, + shrinkWrap: true, + padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SmallServiceCard( + icon: LandingPageData.getLoggedInServiceCardsList[index].icon, + title: LandingPageData.getLoggedInServiceCardsList[index].title, + subtitle: LandingPageData.getLoggedInServiceCardsList[index].subtitle, + iconColor: LandingPageData.getLoggedInServiceCardsList[index].iconColor!, + textColor: LandingPageData.getLoggedInServiceCardsList[index].textColor, + backgroundColor: LandingPageData.getLoggedInServiceCardsList[index].backgroundColor, + isBold: LandingPageData.getLoggedInServiceCardsList[index].isBold, + serviceName: LandingPageData.getLoggedInServiceCardsList[index].serviceName, + ), ), ), - ), - ); - }, - separatorBuilder: (BuildContext cxt, int index) => 10.width, + ); + }, + separatorBuilder: (BuildContext cxt, int index) => 10.width, + ), ), ), + SizedBox(height: 16.h), ], ), ).paddingSymmetrical(24.h, 0.h), ], ) : Container( - height: 127.h, + // height: 141.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), child: Column( children: [ - Expanded( - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getNotLoggedInServiceCardsList.length, - shrinkWrap: true, - padding: EdgeInsets.only(left: 16.h, right: 16.h), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SmallServiceCard( - serviceName: LandingPageData.getNotLoggedInServiceCardsList[index].serviceName, - icon: LandingPageData.getNotLoggedInServiceCardsList[index].icon, - title: LandingPageData.getNotLoggedInServiceCardsList[index].title, - subtitle: LandingPageData.getNotLoggedInServiceCardsList[index].subtitle, - iconColor: LandingPageData.getNotLoggedInServiceCardsList[index].iconColor!, - textColor: LandingPageData.getNotLoggedInServiceCardsList[index].textColor, - backgroundColor: LandingPageData.getNotLoggedInServiceCardsList[index].backgroundColor, - isBold: LandingPageData.getNotLoggedInServiceCardsList[index].isBold, + SizedBox( + height: 92.h + 32.h - 4.h, + child: RawScrollbar( + controller: _horizontalScrollController, + thumbVisibility: true, + radius: Radius.circular(10.0), + thumbColor: AppColors.primaryRedColor, + trackVisibility: true, + trackColor: Color(0xffD9D9D9), + trackBorderColor: Colors.transparent, + trackRadius: Radius.circular(10.0), + padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2 - 35, right: MediaQuery.sizeOf(context).width / 2 - 35), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData.getNotLoggedInServiceCardsList.length, + shrinkWrap: true, + padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), + // padding: EdgeInsets.zero, + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SmallServiceCard( + serviceName: LandingPageData.getNotLoggedInServiceCardsList[index].serviceName, + icon: LandingPageData.getNotLoggedInServiceCardsList[index].icon, + title: LandingPageData.getNotLoggedInServiceCardsList[index].title, + subtitle: LandingPageData.getNotLoggedInServiceCardsList[index].subtitle, + iconColor: LandingPageData.getNotLoggedInServiceCardsList[index].iconColor!, + textColor: LandingPageData.getNotLoggedInServiceCardsList[index].textColor, + backgroundColor: LandingPageData.getNotLoggedInServiceCardsList[index].backgroundColor, + isBold: LandingPageData.getNotLoggedInServiceCardsList[index].isBold, + ), ), ), - ), - ); - }, - separatorBuilder: (BuildContext cxt, int index) => 0.width, + ); + }, + separatorBuilder: (BuildContext cxt, int index) => 0.width, + ), ), ), + SizedBox(height: 16.h), ], ), ).paddingSymmetrical(24.h, 0.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Services".toText16(isBold: true), + "Services".toText18(weight: FontWeight.w600), Row( children: [ - "View all services".toText12(color: AppColors.primaryRedColor), + "View all services".toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], ).onPress(() { Navigator.of(context).push(CustomPageRoute(page: ServicesPage())); @@ -736,7 +787,7 @@ class _LandingPageState extends State { ], ).paddingSymmetrical(24.w, 0.h), SizedBox( - height: 340.h, + height: 411.h, child: ListView.separated( scrollDirection: Axis.horizontal, itemCount: LandingPageData.getServiceCardsList.length, @@ -749,7 +800,7 @@ class _LandingPageState extends State { child: SlideAnimation( horizontalOffset: 100.0, child: FadeInAnimation( - child: LargeServiceCard( + child: FadedLargeServiceCard( serviceCardData: LandingPageData.getServiceCardsList[index], image: LandingPageData.getServiceCardsList[index].icon, title: LandingPageData.getServiceCardsList[index].title, @@ -822,7 +873,6 @@ class _LandingPageState extends State { isCloseButtonVisible: true, child: StatefulBuilder( builder: (context, setState) { - return RateAppointmentDoctor(); }, ), diff --git a/lib/presentation/home/navigation_screen.dart b/lib/presentation/home/navigation_screen.dart index 43cc3b90..8264ba6f 100644 --- a/lib/presentation/home/navigation_screen.dart +++ b/lib/presentation/home/navigation_screen.dart @@ -34,12 +34,12 @@ class _LandingNavigationState extends State { physics: const NeverScrollableScrollPhysics(), children: [ const LandingPage(), - appState.isAuthenticated ? MedicalFilePage() : /* need add feedback page */ FeedbackPage(), + appState.isAuthenticated ? MedicalFilePage(showBackIcon: false) : /* need add feedback page */ FeedbackPage(), SizedBox(), // const ToDoPage(), // appState.isAuthenticated ? UserInfoSelectionScreen() : /* need add news page */ SizedBox(), SizedBox(), - ServicesPage(), + ServicesPage(showBackIcon: false), ], ), bottomNavigationBar: BottomNavigation( diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index b2649f9c..5f27404e 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; @@ -21,12 +22,12 @@ class HabibWalletCard extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "My Balance".toText16(isBold: true), + "My Balance".toText16(weight: FontWeight.w600), Row( children: [ - "View all services".toText12(color: AppColors.primaryRedColor), + "View all services".toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], ), ], @@ -45,31 +46,31 @@ class HabibWalletCard extends StatelessWidget { child: ClipRRect(borderRadius: BorderRadius.circular(24.0), child: Utils.buildSvgWithAssets(icon: AppAssets.habib_background_icon, width: 150.h, height: 150.h)), ), Padding( - padding: EdgeInsets.all(14.h), + padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Habib Wallet".toText15(isBold: true), - Container( - height: 40.h, - width: 40.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.textColor, - borderRadius: 8.h, - ), - child: Padding( - padding: EdgeInsets.all(8.h), - child: Utils.buildSvgWithAssets( - icon: AppAssets.show_icon, - width: 12.h, - height: 12.h, - fit: BoxFit.contain, - ), - ), - ), + "Habib Wallet".toText16(weight: FontWeight.w500, letterSpacing: -0.2), + // Container( + // height: 40.h, + // width: 40.h, + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.textColor, + // borderRadius: 8.h, + // ), + // child: Padding( + // padding: EdgeInsets.all(8.h), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.show_icon, + // width: 12.h, + // height: 12.h, + // fit: BoxFit.contain, + // ), + // ), + // ), ], ), SizedBox(height: 4.h), @@ -78,32 +79,37 @@ class HabibWalletCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets( icon: AppAssets.saudi_riyal_icon, - iconColor: AppColors.dividerColor, + iconColor: AppColors.textColor.withValues(alpha: .31), width: 24.h, height: 24.h, fit: BoxFit.contain, ), SizedBox(width: 8.h), - habibWalletVM.habibWalletAmount.toString().toText32(isBold: true).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + habibWalletVM.habibWalletAmount + .toDouble() + .toStringAsFixed(2) + .toText32(isBold: true) + .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + Container( + height: 40.h, + width: 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.textColor, + borderRadius: 8.h, + ), + child: Padding( + padding: EdgeInsets.all(8.h), + child: Utils.buildSvgWithAssets( + icon: AppAssets.show_icon, + width: 12.h, + height: 12.h, + fit: BoxFit.contain, + ), + ), + ), ], ); }), - Padding( - padding: EdgeInsets.symmetric(horizontal: 50.h), - child: Row( - children: [ - "View details".toText12(color: AppColors.primaryRedColor), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), - ], - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: HabibWalletPage(), - ), - ); - }), - ), SizedBox(height: 16.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -113,18 +119,20 @@ class HabibWalletCard extends StatelessWidget { child: Utils.getPaymentMethods(), ), CustomButton( + height: 40.h, icon: AppAssets.recharge_icon, - iconSize: 18.h, - text: "Recharge".needTranslation, - onPressed: () {}, + iconSize: 24.w, backgroundColor: AppColors.infoColor, - borderColor: AppColors.infoColor, textColor: AppColors.whiteColor, - fontSize: 12, - fontWeight: FontWeight.bold, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 35.h, + text: "Recharge".needTranslation, + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, ), ], ), @@ -132,7 +140,13 @@ class HabibWalletCard extends StatelessWidget { ), ), ]), - ).paddingSymmetrical(24.h, 0.h), + ).paddingSymmetrical(24.h, 0.h).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: HabibWalletPage(), + ), + ); + }), ], ); } diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 5274d5b6..ee8ac4f3 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -146,3 +146,130 @@ class LargeServiceCard extends StatelessWidget { } } } + +class FadedLargeServiceCard extends StatelessWidget { + final ServiceCardData serviceCardData; + final String image; + final String icon; + final String title; + final String subtitle; + + const FadedLargeServiceCard({ + super.key, + required this.serviceCardData, + this.image = "", + this.icon = "", + this.title = "", + this.subtitle = "", + }); + + @override + Widget build(BuildContext context) { + return Container( + height: 411.h, + width: 252.w, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.transparent, borderRadius: 24.r), + child: Column( + children: [ + Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(24.r), + child: Image.asset(serviceCardData.largeCardIcon, fit: BoxFit.cover, width: 520.w, height: 250.h), + ), + Positioned( + top: 0, + left: 0, + right: 0, + height: 250.h, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(24.r), + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + stops: [0.536, 1.0], // 53.6% and 100% + colors: [ + Color(0xFFF8F8F8).withValues(alpha: 0), // Transparent + Color(0xFFF8F8F8), // Solid #F8F8F8 + ], + ), + ), + ), + ), + ], + ), + SizedBox(height: 16.h), + Spacer(), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + height: 32.h, + width: 32.w, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: serviceCardData.backgroundColor, + borderRadius: 30.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(8.h), + child: Utils.buildSvgWithAssets( + icon: serviceCardData.icon, + iconColor: serviceCardData.iconColor, + fit: BoxFit.contain, + ), + ), + ), + SizedBox(width: 12.w), + serviceCardData.title.toText18(weight: FontWeight.w500, color: AppColors.textColor).expanded, + ], + ), + SizedBox(height: 10.h), + serviceCardData.subtitle.toText14(weight: FontWeight.w500, color: AppColors.blackBgColor, letterSpacing: 0), + SizedBox(height: 12.h), + CustomButton( + text: serviceCardData.isBold ? "Visit Pharmacy Online".needTranslation : LocaleKeys.bookNow.tr(context: context), + onPressed: () { + handleOnTap(); + }, + backgroundColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.2) : AppColors.blackBgColor, + borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.blackBgColor, + textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.whiteColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 10.r, + height: 40.h, + ), + ], + ), + ); + } + + void handleOnTap() { + switch (serviceCardData.serviceName) { + case "livecare": + { + getIt.get().onTabChanged(1); + Navigator.of(getIt.get().navigatorKey.currentContext!).push( + CustomPageRoute( + page: BookAppointmentPage(), + ), + ); + } + case "home_health_care": + { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: HhcProceduresPage(), + ), + ); + } + case "pharmacy": + { + Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); + launchUrl(uri, mode: LaunchMode.externalApplication); + } + } + } +} diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 62168808..ecc34b59 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -46,25 +46,22 @@ class SmallServiceCard extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 0.h, vertical: 12.h), - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: backgroundColor, - borderRadius: 16, - ), - child: Padding( - padding: EdgeInsets.all(12.0), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), - SizedBox(height: 6.h), - title.toText11(color: textColor, isBold: isBold, isCenter: true), - subtitle.toText11(color: textColor, isBold: isBold, isCenter: true), - ], - ), - ), + return Container( + height: 92.h, + width: 92.w, + padding: EdgeInsets.all(6.0), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: backgroundColor, + borderRadius: 16, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), + SizedBox(height: 6.h), + title.toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true), + subtitle.toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true), + ], ), ).onPress(() { switch (serviceName) { @@ -114,8 +111,12 @@ class SmallServiceCard extends StatelessWidget { break; case "emergency": context.read().flushData(); - context.read().getTransportationOrders(showLoader: false,); - context.read().getRRTOrders(showLoader: false,); + context.read().getTransportationOrders( + showLoader: false, + ); + context.read().getRRTOrders( + showLoader: false, + ); Navigator.of(context).push( CustomPageRoute( page: EmergencyServicesPage(), diff --git a/lib/presentation/lab/lab_orders_page.dart b/lib/presentation/lab/lab_orders_page.dart index 90651f13..6bd67489 100644 --- a/lib/presentation/lab/lab_orders_page.dart +++ b/lib/presentation/lab/lab_orders_page.dart @@ -1 +1 @@ -import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingToolbar( title: LocaleKeys.labResults.tr(), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, "By Visit".needTranslation), CustomTabBarModel(null, "By Test".needTranslation), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...group.map((order) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("Order No: ".needTranslation + order.orderNo!), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex:2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: "View Results".needTranslation, onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), SizedBox(height: 12.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), SizedBox(height: 12.h), ], ); }).toList(), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: "You don't have any lab results yet.".needTranslation)) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file +import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingListView( title: LocaleKeys.labResults.tr(), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, "By Visit".needTranslation), CustomTabBarModel(null, "By Test".needTranslation), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: ListView.separated( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemBuilder: (cxt, index) { PatientLabOrdersResponseModel order = group[index]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("Order No: ".needTranslation + order.orderNo!), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex: 2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: "View Results".needTranslation, onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), // SizedBox(height: 12.h), // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), // SizedBox(height: 12.h), ], ).paddingOnly(top: 16, bottom: 16); }, separatorBuilder: (cxt, index) => Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), itemCount: group.length)) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: "You don't have any lab results yet.".needTranslation)) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], )); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index 6dde9580..d2946886 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -78,7 +78,9 @@ import '../prescriptions/prescription_detail_page.dart'; import 'widgets/medical_file_appointment_card.dart'; class MedicalFilePage extends StatefulWidget { - const MedicalFilePage({super.key}); + bool showBackIcon; + + MedicalFilePage({super.key, this.showBackIcon = true}); @override State createState() => _MedicalFilePageState(); @@ -156,21 +158,21 @@ class _MedicalFilePageState extends State { trailing: Row( children: [ Wrap( - spacing: -8.h, + spacing: -12.h, // runSpacing: 0.h, children: [ Utils.buildImgWithAssets( icon: AppAssets.babyGirlImg, - height: 28.h, - width: 28.w, + height: 32.h, + width: 32.w, border: 1, fit: BoxFit.contain, borderRadius: 50.r, ), Utils.buildImgWithAssets( icon: AppAssets.femaleImg, - height: 28.h, - width: 28.w, + height: 32.h, + width: 32.w, border: 1, borderRadius: 50.r, fit: BoxFit.contain, @@ -178,6 +180,7 @@ class _MedicalFilePageState extends State { Utils.buildImgWithAssets( icon: AppAssets.maleImg, height: 32.h, + width: 32.w, border: 1.5, borderRadius: 50.r, fit: BoxFit.contain, @@ -187,7 +190,7 @@ class _MedicalFilePageState extends State { SizedBox(width: 4.h), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w) ], - ).withHorizontalPadding(24.w).onPress(() { + ).onPress(() { DialogService dialogService = getIt.get(); dialogService.showFamilyBottomSheetWithoutH( label: "Family Files".needTranslation, @@ -197,15 +200,15 @@ class _MedicalFilePageState extends State { }, profiles: medicalFileViewModel.patientFamilyFiles); }), - isLeading: true, - leadingCallback: () { - Navigator.pushAndRemoveUntil( - navigationService.navigatorKey.currentContext!, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); - }, + isLeading: widget.showBackIcon, + // leadingCallback: () { + // Navigator.pushAndRemoveUntil( + // navigationService.navigatorKey.currentContext!, + // CustomPageRoute( + // page: LandingNavigation(), + // ), + // (r) => false); + // }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -243,9 +246,9 @@ class _MedicalFilePageState extends State { labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), onChipTap: () { navigationService.pushPage( - page: FamilyMedicalScreen( - profiles: medicalFileViewModel.patientFamilyFiles, - onSelect: (FamilyFileResponseModelLists p1) {}, + page: FamilyMedicalScreen( + profiles: medicalFileViewModel.patientFamilyFiles, + onSelect: (FamilyFileResponseModelLists p1) {}, ), ); }, @@ -390,9 +393,7 @@ class _MedicalFilePageState extends State { width: hmgServicesVM.vitalSignCurrentPage == index ? 24.w : 8.w, height: 8.h, decoration: BoxDecoration( - color: hmgServicesVM.vitalSignCurrentPage == index - ? AppColors.primaryRedColor - : AppColors.dividerColor, + color: hmgServicesVM.vitalSignCurrentPage == index ? AppColors.primaryRedColor : AppColors.dividerColor, borderRadius: BorderRadius.circular(4.r), ), ), @@ -564,7 +565,7 @@ class _MedicalFilePageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Appointments & visits".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + "Appointments & Visits".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), @@ -633,57 +634,57 @@ class _MedicalFilePageState extends State { itemCount: myAppointmentsVM.patientAppointmentsHistoryList.length, itemBuilder: (context, index) { return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: AnimatedContainer( - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - child: MedicalFileAppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], - myAppointmentsViewModel: myAppointmentsViewModel, - onRescheduleTap: () { - openDoctorScheduleCalendar(myAppointmentsVM.patientAppointmentsHistoryList[index]); - }, - onAskDoctorTap: () async { - LoaderBottomSheet.showLoader(loadingText: "Checking doctor availability...".needTranslation); - await myAppointmentsViewModel.isDoctorAvailable( - projectID: myAppointmentsVM.patientAppointmentsHistoryList[index].projectID, - doctorId: myAppointmentsVM.patientAppointmentsHistoryList[index].doctorID, - clinicId: myAppointmentsVM.patientAppointmentsHistoryList[index].clinicID, - onSuccess: (value) async { - if (value) { - await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: MedicalFileAppointmentCard( + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], + myAppointmentsViewModel: myAppointmentsViewModel, + onRescheduleTap: () { + openDoctorScheduleCalendar(myAppointmentsVM.patientAppointmentsHistoryList[index]); + }, + onAskDoctorTap: () async { + LoaderBottomSheet.showLoader(loadingText: "Checking doctor availability...".needTranslation); + await myAppointmentsViewModel.isDoctorAvailable( + projectID: myAppointmentsVM.patientAppointmentsHistoryList[index].projectID, + doctorId: myAppointmentsVM.patientAppointmentsHistoryList[index].doctorID, + clinicId: myAppointmentsVM.patientAppointmentsHistoryList[index].clinicID, + onSuccess: (value) async { + if (value) { + await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.askDoctor.tr(context: context), + child: AskDoctorRequestTypeSelect( + askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, + myAppointmentsViewModel: myAppointmentsViewModel, + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - title: LocaleKeys.askDoctor.tr(context: context), - child: AskDoctorRequestTypeSelect( - askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, - myAppointmentsViewModel: myAppointmentsViewModel, - patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], - ), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - } else { + print("Doctor is not available"); + } + }, + onError: (_) { LoaderBottomSheet.hideLoader(); - print("Doctor is not available"); - } - }, - onError: (_) { - LoaderBottomSheet.hideLoader(); - }, - ); - }, + }, + ); + }, + ), ), ), - ), - )); + )); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 12.h), ), @@ -748,110 +749,110 @@ class _MedicalFilePageState extends State { physics: NeverScrollableScrollPhysics(), itemBuilder: (context, index) { return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - verticalOffset: 100.0, - child: FadeInAnimation( - child: Row( - children: [ - Image.network( - prescriptionVM.patientPrescriptionOrders[index].doctorImageURL!, - width: 40.w, - height: 40.h, - fit: BoxFit.cover, - ).circle(100.r), - SizedBox(width: 16.w), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - prescriptionVM.patientPrescriptionOrders[index].doctorName!.toText16(isBold: true), - SizedBox(height: 4.h), - Wrap( - direction: Axis.horizontal, - spacing: 3.w, - runSpacing: 4.w, - children: [ - AppCustomChipWidget(labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate(prescriptionVM.patientPrescriptionOrders[index].appointmentDate), - false, + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: Row( + children: [ + Image.network( + prescriptionVM.patientPrescriptionOrders[index].doctorImageURL!, + width: 40.w, + height: 40.h, + fit: BoxFit.cover, + ).circle(100.r), + SizedBox(width: 16.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + prescriptionVM.patientPrescriptionOrders[index].doctorName!.toText16(isBold: true), + SizedBox(height: 4.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.w, + runSpacing: 4.w, + children: [ + AppCustomChipWidget(labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), + AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate(prescriptionVM.patientPrescriptionOrders[index].appointmentDate), + false, + ), ), - ), - ], - ), - ], + ], + ), + ], + ), ), - ), - // SizedBox(width: 40.h), - Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, width: 15.w, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), - ], - ).onPress(() { - prescriptionVM.setPrescriptionsDetailsLoading(); - Navigator.of(context).push( - CustomPageRoute( - page: PrescriptionDetailPage(isFromAppointments: false, prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), - ), - ); - }), - ), - )); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), - ), - SizedBox(height: 16.h), - const Divider(color: AppColors.dividerColor), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: CustomButton( - text: "All Prescriptions".needTranslation, - onPressed: () { - Navigator.of(context).push( - CustomPageRoute( - page: PrescriptionsListPage(), - ), - ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - height: 40.h, - icon: AppAssets.requests, - iconColor: AppColors.primaryRedColor, - iconSize: 16.w, - ), + // SizedBox(width: 40.h), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon_small, width: 15.w, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), + ], + ).onPress(() { + prescriptionVM.setPrescriptionsDetailsLoading(); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionDetailPage(isFromAppointments: false, prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), + ), + ); + }), + ), + )); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), + ), + SizedBox(height: 16.h), + const Divider(color: AppColors.dividerColor), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: "All Prescriptions".needTranslation, + onPressed: () { + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionsListPage(), + ), + ); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 12.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + icon: AppAssets.requests, + iconColor: AppColors.primaryRedColor, + iconSize: 16.w, ), - SizedBox(width: 6.w), - Expanded( - child: CustomButton( - text: "All Medications".needTranslation, - onPressed: () {}, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.h, - height: 40.h, - icon: AppAssets.all_medications_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - ), + ), + SizedBox(width: 6.w), + Expanded( + child: CustomButton( + text: "All Medications".needTranslation, + onPressed: () {}, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 12.f, + fontWeight: FontWeight.w500, + borderRadius: 12.h, + height: 40.h, + icon: AppAssets.all_medications_icon, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, ), - ], - ), - ], + ), + ], + ), + ], ), ), ).paddingSymmetrical(0.w, 0.h) @@ -932,58 +933,58 @@ class _MedicalFilePageState extends State { shrinkWrap: true, itemBuilder: (context, index) { return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SizedBox( - // width: 80.w, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.network( - myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, - width: 64.w, - height: 64.h, - fit: BoxFit.cover, - ).circle(100).toShimmer2(isShow: false, radius: 50.r), - SizedBox(height: 8.h), - Expanded( - child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName) - .toString() - .toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2) - .toShimmer2(isShow: false), - ), - ], - ), - ).onPress(() async { - bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( - clinicID: myAppointmentsVM.patientMyDoctorsList[index].clinicID, - projectID: myAppointmentsVM.patientMyDoctorsList[index].projectID, - doctorID: myAppointmentsVM.patientMyDoctorsList[index].doctorID, - )); - LoaderBottomSheet.showLoader(); - await bookAppointmentsViewModel.getDoctorProfile(onSuccess: (dynamic respData) { - LoaderBottomSheet.hideLoader(); - Navigator.of(context).push( - CustomPageRoute( - page: DoctorProfilePage(), - ), - ); - }, onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - }), - ), - )); + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SizedBox( + // width: 80.w, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.network( + myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, + width: 64.w, + height: 64.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: false, radius: 50.r), + SizedBox(height: 8.h), + Expanded( + child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName) + .toString() + .toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2) + .toShimmer2(isShow: false), + ), + ], + ), + ).onPress(() async { + bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( + clinicID: myAppointmentsVM.patientMyDoctorsList[index].clinicID, + projectID: myAppointmentsVM.patientMyDoctorsList[index].projectID, + doctorID: myAppointmentsVM.patientMyDoctorsList[index].doctorID, + )); + LoaderBottomSheet.showLoader(); + await bookAppointmentsViewModel.getDoctorProfile(onSuccess: (dynamic respData) { + LoaderBottomSheet.hideLoader(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorProfilePage(), + ), + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }), + ), + )); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 8.h), ), @@ -1489,9 +1490,7 @@ class _MedicalFilePageState extends State { child: _buildVitalSignCard( icon: AppAssets.bloodPressure, label: "Blood Pressure", - value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null - ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" - : '--', + value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" : '--', unit: '', status: _getBloodPressureStatus( systolic: vitalSign.bloodPressureHigher, @@ -1563,7 +1562,6 @@ class _MedicalFilePageState extends State { ], ), SizedBox(height: 14.h), - Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 6.h), decoration: BoxDecoration( @@ -1601,7 +1599,6 @@ class _MedicalFilePageState extends State { ), ), SizedBox(height: 8.h), - Align( alignment: AlignmentDirectional.centerEnd, child: Utils.buildSvgWithAssets( @@ -1619,6 +1616,3 @@ class _MedicalFilePageState extends State { ); } } - - - diff --git a/lib/presentation/onboarding/onboarding_screen.dart b/lib/presentation/onboarding/onboarding_screen.dart index a40a27b4..721db75e 100644 --- a/lib/presentation/onboarding/onboarding_screen.dart +++ b/lib/presentation/onboarding/onboarding_screen.dart @@ -36,7 +36,7 @@ class _OnboardingScreenState extends State { CustomPageRoute( page: LandingNavigation(), ), - (r) => false); + (r) => false); // Navigator.of(context).pushReplacement(FadePage(page: LandingNavigation())); } @@ -88,15 +88,13 @@ class _OnboardingScreenState extends State { duration: const Duration(milliseconds: 250), height: 6.h, width: selectedIndex == 0 ? 18.w : 6.w, - decoration: BoxDecoration( - color: selectedIndex == 0 ? AppColors.textColor : AppColors.inputLabelTextColor, borderRadius: BorderRadius.circular(30.r)), + decoration: BoxDecoration(color: selectedIndex == 0 ? AppColors.textColor : AppColors.inputLabelTextColor, borderRadius: BorderRadius.circular(30.r)), ), AnimatedContainer( duration: const Duration(milliseconds: 250), height: 6.h, width: selectedIndex == 1 ? 18.w : 6.w, - decoration: BoxDecoration( - color: selectedIndex == 1 ? AppColors.textColor : AppColors.inputLabelTextColor, borderRadius: BorderRadius.circular(30.r)), + decoration: BoxDecoration(color: selectedIndex == 1 ? AppColors.textColor : AppColors.inputLabelTextColor, borderRadius: BorderRadius.circular(30.r)), ), ], ).paddingOnly(left: 24.w, right: 24.w), @@ -121,7 +119,7 @@ class _OnboardingScreenState extends State { AnimatedContainer( duration: const Duration(milliseconds: 400), curve: Curves.easeInOut, - width: selectedIndex == 0 ? 86.w : MediaQuery.of(context).size.width - 48.w, + width: selectedIndex == 0 ? 56.w : MediaQuery.of(context).size.width - 48.w, margin: EdgeInsets.only(left: 24.w, right: 24.w), decoration: BoxDecoration( color: AppColors.primaryRedColor, @@ -134,7 +132,7 @@ class _OnboardingScreenState extends State { ? CustomButton( icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, iconSize: 32.w, - width: 86.w, + width: 56.w, height: 56.h, text: "".needTranslation, backgroundColor: Colors.transparent, @@ -153,7 +151,7 @@ class _OnboardingScreenState extends State { ), ), ], - ).paddingOnly(bottom: (isFoldable || isTablet) ? 20.h : 10.h), + ).paddingOnly(bottom: (isFoldable || isTablet) ? 20.h : 32.h), ], ), ), @@ -170,16 +168,11 @@ class _OnboardingScreenState extends State { alignment: Alignment.bottomCenter, child: Transform.flip( flipX: getIt.get().isArabic() ? true : false, - child: Lottie.asset(icon, - repeat: true, - reverse: false, - frameRate: FrameRate(60), - width: MediaQuery.sizeOf(context).width - 50.w, - height: MediaQuery.sizeOf(context).width - 50.w))) + child: Lottie.asset(icon, repeat: true, reverse: false, frameRate: FrameRate(60), width: MediaQuery.sizeOf(context).width - 50.w, height: MediaQuery.sizeOf(context).width - 50.w))) .expanded, Text( heading, - style: TextStyle(fontSize: 36.f, fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -0.4, height: 1), + style: TextStyle(fontSize: 36.f, fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -1, height: 1.2), ), Text( body, diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index e463ae78..ffd005c4 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -183,10 +183,7 @@ class ProfileSettingsState extends State { ), ], ), - "Quick Actions" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + "Quick Actions".needTranslation.toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -194,8 +191,7 @@ class ProfileSettingsState extends State { child: Column( children: [ actionItem(AppAssets.language_change, "Language".needTranslation, () { - showCommonBottomSheetWithoutHeight(context, - title: "Application Language".needTranslation, child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); + showCommonBottomSheetWithoutHeight(context, title: "Application Language".needTranslation, child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); }, trailingLabel: Utils.appState.isArabic() ? "العربية".needTranslation : "English".needTranslation), 1.divider, actionItem(AppAssets.accessibility, "Accessibility".needTranslation, () {}), @@ -206,10 +202,7 @@ class ProfileSettingsState extends State { ], ), ), - "Personal Information" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + "Personal Information".needTranslation.toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -226,10 +219,7 @@ class ProfileSettingsState extends State { ], ), ), - "Help & Support" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + "Help & Support".needTranslation.toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -290,8 +280,7 @@ class ProfileSettingsState extends State { children: [ Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.greyTextColor), label.toText14(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - if (trailingLabel.isNotEmpty) - trailingLabel.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1), + if (trailingLabel.isNotEmpty) trailingLabel.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1), switchValue != null ? Switch( value: switchValue, diff --git a/lib/presentation/radiology/radiology_orders_page.dart b/lib/presentation/radiology/radiology_orders_page.dart index fb153ead..8e11ce81 100644 --- a/lib/presentation/radiology/radiology_orders_page.dart +++ b/lib/presentation/radiology/radiology_orders_page.dart @@ -35,6 +35,7 @@ class _RadiologyOrdersPageState extends State { late RadiologyViewModel radiologyViewModel; String selectedFilterText = ''; int? expandedIndex; + // Scroll controller to ensure expanded group is visible late ScrollController _scrollController; final Map _groupKeys = {}; @@ -58,320 +59,320 @@ class _RadiologyOrdersPageState extends State { Widget build(BuildContext context) { radiologyViewModel = Provider.of(context); return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: LocaleKeys.radiology.tr(context: context), - search: () async { - final lavVM = Provider.of(context, listen: false); - if (lavVM.isLabOrdersLoading) { - return; - } else { - String? value = await Navigator.of(context).push( - CustomPageRoute( - page: SearchRadiologyContent(radiologySuggestionsList: radiologyViewModel.radiologySuggestions), - fullScreenDialog: true, - direction: AxisDirection.down, - ), - ); - if (value != null) { - selectedFilterText = value; - radiologyViewModel.filterRadiologyReports(value); - } + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.radiology.tr(context: context), + search: () async { + final lavVM = Provider.of(context, listen: false); + if (lavVM.isLabOrdersLoading) { + return; + } else { + String? value = await Navigator.of(context).push( + CustomPageRoute( + page: SearchRadiologyContent(radiologySuggestionsList: radiologyViewModel.radiologySuggestions), + fullScreenDialog: true, + direction: AxisDirection.down, + ), + ); + if (value != null) { + selectedFilterText = value; + radiologyViewModel.filterRadiologyReports(value); } - }, - child: SingleChildScrollView( - controller: _scrollController, - physics: NeverScrollableScrollPhysics(), - child: Consumer( - builder: (context, model, child) { - // Build grouping lists if we have data and none constructed yet - if (!model.isRadiologyOrdersLoading && model.patientRadiologyOrders.isNotEmpty && model.patientRadiologyOrdersViewList.isEmpty) { - final clinicMap = >{}; - final hospitalMap = >{}; - for (var order in model.patientRadiologyOrders) { - final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); - clinicMap.putIfAbsent(clinicKey, () => []).add(order); - final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); - hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); - } - model.patientRadiologyOrdersByClinic = clinicMap.values.toList(); - model.patientRadiologyOrdersByHospital = hospitalMap.values.toList(); - model.patientRadiologyOrdersViewList = model.isSortByClinic ? model.patientRadiologyOrdersByClinic : model.patientRadiologyOrdersByHospital; + } + }, + child: SingleChildScrollView( + controller: _scrollController, + physics: NeverScrollableScrollPhysics(), + child: Consumer( + builder: (context, model, child) { + // Build grouping lists if we have data and none constructed yet + if (!model.isRadiologyOrdersLoading && model.patientRadiologyOrders.isNotEmpty && model.patientRadiologyOrdersViewList.isEmpty) { + final clinicMap = >{}; + final hospitalMap = >{}; + for (var order in model.patientRadiologyOrders) { + final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); + clinicMap.putIfAbsent(clinicKey, () => []).add(order); + final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); + hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); } + model.patientRadiologyOrdersByClinic = clinicMap.values.toList(); + model.patientRadiologyOrdersByHospital = hospitalMap.values.toList(); + model.patientRadiologyOrdersViewList = model.isSortByClinic ? model.patientRadiologyOrdersByClinic : model.patientRadiologyOrdersByHospital; + } - return Padding( - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Clinic / Hospital toggle - SizedBox(height: 16.h), - Row( - children: [ - CustomButton( - text: LocaleKeys.byClinic.tr(context: context), - onPressed: () { - model.setIsSortByClinic(true); - }, - backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, - borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), - textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - SizedBox(width: 8.h), - CustomButton( - text: LocaleKeys.byHospital.tr(context: context), - onPressed: () { - model.setIsSortByClinic(false); - }, - backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, - borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, - textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ], - ), - - SizedBox(height: 8.h), - selectedFilterText.isNotEmpty - ? AppCustomChipWidget( - padding: EdgeInsets.symmetric(horizontal: 5.h), - labelText: selectedFilterText, - deleteIcon: 'assets/images/svg/cross_circle.svg', - backgroundColor: AppColors.alertColor, - textColor: AppColors.whiteColor, - deleteIconColor: AppColors.whiteColor, - deleteIconHasColor: true, - onDeleteTap: () { - setState(() { - selectedFilterText = ''; - model.filterRadiologyReports(''); - }); - }, - // chipType: ChipTypeEnum.alert, - // isSelected: true, - ) - : SizedBox(), - - // Grouped view when available - Builder(builder: (ctx) { - if (model.isRadiologyOrdersLoading) { - return ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - itemCount: 5, - itemBuilder: (context, index) => LabResultItemView( - onTap: () {}, - labOrder: null, - index: index, - isLoading: true, - ), - ); - } + return Padding( + padding: EdgeInsets.symmetric(horizontal: 24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Clinic / Hospital toggle + SizedBox(height: 16.h), + Row( + children: [ + CustomButton( + text: LocaleKeys.byClinic.tr(context: context), + onPressed: () { + model.setIsSortByClinic(true); + }, + backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), + textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w500, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + SizedBox(width: 8.h), + CustomButton( + text: LocaleKeys.byHospital.tr(context: context), + onPressed: () { + model.setIsSortByClinic(false); + }, + backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, + textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + fontSize: 12, + fontWeight: FontWeight.w500, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + ], + ), - if (model.patientRadiologyOrdersViewList.isEmpty) { - return Utils.getNoDataWidget(ctx, noDataText: "You don't have any radiology results yet.".needTranslation); - } + SizedBox(height: 8.h), + selectedFilterText.isNotEmpty + ? AppCustomChipWidget( + padding: EdgeInsets.symmetric(horizontal: 5.h), + labelText: selectedFilterText, + deleteIcon: 'assets/images/svg/cross_circle.svg', + backgroundColor: AppColors.alertColor, + textColor: AppColors.whiteColor, + deleteIconColor: AppColors.whiteColor, + deleteIconHasColor: true, + onDeleteTap: () { + setState(() { + selectedFilterText = ''; + model.filterRadiologyReports(''); + }); + }, + // chipType: ChipTypeEnum.alert, + // isSelected: true, + ) + : SizedBox(), + // Grouped view when available + Builder(builder: (ctx) { + if (model.isRadiologyOrdersLoading) { return ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, - itemCount: model.patientRadiologyOrdersViewList.length, - itemBuilder: (context, index) { - final group = model.patientRadiologyOrdersViewList[index]; - final displayName = model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'); - final isExpanded = expandedIndex == index; - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 400), - child: SlideAnimation( - verticalOffset: 50.0, - child: FadeInAnimation( - child: AnimatedContainer( - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - margin: EdgeInsets.symmetric(vertical: 8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, - ), - child: InkWell( - onTap: () { - setState(() { - expandedIndex = isExpanded ? null : index; - }); - WidgetsBinding.instance.addPostFrameCallback((_) { - final key = _groupKeys.putIfAbsent(index, () => GlobalKey()); - if (key.currentContext != null && expandedIndex == index) { - Future.delayed(const Duration(milliseconds: 450), () { - if (key.currentContext != null) { - Scrollable.ensureVisible( - key.currentContext!, - duration: const Duration(milliseconds: 350), - curve: Curves.easeInOut, - alignment: 0.0, - ); - } - }); - } - }); - }, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - key: _groupKeys.putIfAbsent(index, () => GlobalKey()), - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), - ], - ), - SizedBox(height: 8.h), - Text( - displayName, - style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), - overflow: TextOverflow.ellipsis, - ), - ], - ), - ), - AnimatedSwitcher( - duration: const Duration(milliseconds: 500), - switchInCurve: Curves.easeIn, - switchOutCurve: Curves.easeOut, - transitionBuilder: (Widget child, Animation animation) { - return FadeTransition( - opacity: animation, - child: SizeTransition( - sizeFactor: animation, - axisAlignment: 0.0, - child: child, - ), + itemCount: 5, + itemBuilder: (context, index) => LabResultItemView( + onTap: () {}, + labOrder: null, + index: index, + isLoading: true, + ), + ); + } + + if (model.patientRadiologyOrdersViewList.isEmpty) { + return Utils.getNoDataWidget(ctx, noDataText: "You don't have any radiology results yet.".needTranslation); + } + + return ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemCount: model.patientRadiologyOrdersViewList.length, + itemBuilder: (context, index) { + final group = model.patientRadiologyOrdersViewList[index]; + final displayName = model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'); + final isExpanded = expandedIndex == index; + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 400), + child: SlideAnimation( + verticalOffset: 50.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + margin: EdgeInsets.symmetric(vertical: 8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, + ), + child: InkWell( + onTap: () { + setState(() { + expandedIndex = isExpanded ? null : index; + }); + WidgetsBinding.instance.addPostFrameCallback((_) { + final key = _groupKeys.putIfAbsent(index, () => GlobalKey()); + if (key.currentContext != null && expandedIndex == index) { + Future.delayed(const Duration(milliseconds: 450), () { + if (key.currentContext != null) { + Scrollable.ensureVisible( + key.currentContext!, + duration: const Duration(milliseconds: 350), + curve: Curves.easeInOut, + alignment: 0.0, ); - }, - child: isExpanded - ? Container( - key: ValueKey(index), - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ...group.map((order) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.network( - order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 24.w, - height: 24.h, - fit: BoxFit.cover, - ).circle(100), - SizedBox(width: 8.h), - Expanded( - child: (order.doctorName ?? '').toString().toText14(weight: FontWeight.w500), - ), - ], - ), - SizedBox(height: 8.h), - Wrap( - direction: Axis.horizontal, - spacing: 4.h, - runSpacing: 4.h, - children: [ - if ((order.description ?? '').isNotEmpty) - AppCustomChipWidget( - labelText: (order.description ?? '').toString(), - ), + } + }); + } + }); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + key: _groupKeys.putIfAbsent(index, () => GlobalKey()), + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), + Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + ], + ), + SizedBox(height: 8.h), + Text( + displayName, + style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + switchInCurve: Curves.easeIn, + switchOutCurve: Curves.easeOut, + transitionBuilder: (Widget child, Animation animation) { + return FadeTransition( + opacity: animation, + child: SizeTransition( + sizeFactor: animation, + axisAlignment: 0.0, + child: child, + ), + ); + }, + child: isExpanded + ? Container( + key: ValueKey(index), + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...group.map((order) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Image.network( + order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + width: 24.w, + height: 24.h, + fit: BoxFit.cover, + ).circle(100), + SizedBox(width: 8.h), + Expanded( + child: (order.doctorName ?? '').toString().toText14(weight: FontWeight.w500), + ), + ], + ), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 4.h, + runSpacing: 4.h, + children: [ + if ((order.description ?? '').isNotEmpty) AppCustomChipWidget( - labelText: DateUtil.formatDateToDate( - (order.orderDate ?? order.appointmentDate), - false, - ), + labelText: (order.description ?? '').toString(), ), - AppCustomChipWidget( - labelText: model.isSortByClinic ? (order.clinicDescription ?? '') : (order.projectName ?? ''), + AppCustomChipWidget( + labelText: DateUtil.formatDateToDate( + (order.orderDate ?? order.appointmentDate), + false, ), - ], - ), - SizedBox(height: 12.h), - Row( - children: [ - Expanded(flex: 2, child: const SizedBox()), - Expanded( - flex: 2, - child: CustomButton( - icon: AppAssets.view_report_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - text: "View Results".needTranslation, - onPressed: () { - model.navigationService.push( - CustomPageRoute( - page: RadiologyResultPage(patientRadiologyResponseModel: order), - ), - ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), + ), + AppCustomChipWidget( + labelText: model.isSortByClinic ? (order.clinicDescription ?? '') : (order.projectName ?? ''), + ), + ], + ), + SizedBox(height: 12.h), + Row( + children: [ + Expanded(flex: 2, child: const SizedBox()), + Expanded( + flex: 2, + child: CustomButton( + icon: AppAssets.view_report_icon, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, + text: "View Results".needTranslation, + onPressed: () { + model.navigationService.push( + CustomPageRoute( + page: RadiologyResultPage(patientRadiologyResponseModel: order), + ), + ); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14, + fontWeight: FontWeight.w500, + borderRadius: 12, + padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, ), - ], - ), - SizedBox(height: 12.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - SizedBox(height: 12.h), - ], - ); - }).toList(), - ], - ), - ) - : const SizedBox.shrink(), - ), - ], - ), + ), + ], + ), + SizedBox(height: 12.h), + Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + SizedBox(height: 12.h), + ], + ); + }).toList(), + ], + ), + ) + : const SizedBox.shrink(), + ), + ], ), ), ), ), - ); - }, - ); - }), - ], - ), - ); - }, - ), + ), + ); + }, + ); + }), + ], + ), + ); + }, ), ), - ); + ), + ); } Color getLabOrderStatusColor(num status) { diff --git a/lib/widgets/bottom_navigation/bottom_navigation.dart b/lib/widgets/bottom_navigation/bottom_navigation.dart index 2da1d443..8c40a4ce 100644 --- a/lib/widgets/bottom_navigation/bottom_navigation.dart +++ b/lib/widgets/bottom_navigation/bottom_navigation.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -19,26 +20,28 @@ class BottomNavigation extends StatelessWidget { Widget build(BuildContext context) { AppState appState = getIt.get(); final items = [ - BottomNavItem(icon: AppAssets.homeBottom, label: LocaleKeys.home.tr(context: context)), + BottomNavItem(icon: AppAssets.homeBottom, fillIcon: AppAssets.homeBottomFill, label: LocaleKeys.home.tr(context: context)), appState.isAuthenticated - ? BottomNavItem(icon: AppAssets.myFilesBottom, label: LocaleKeys.medicalFile.tr(context: context)) - : BottomNavItem(icon: AppAssets.feedback, label: LocaleKeys.feedback.tr()), + ? BottomNavItem(icon: AppAssets.myFilesBottom, fillIcon: AppAssets.myFilesBottomFill, label: LocaleKeys.medicalFile.tr(context: context)) + : BottomNavItem(icon: AppAssets.feedback, fillIcon: AppAssets.feedbackFill, label: LocaleKeys.feedback.tr()), BottomNavItem( icon: AppAssets.bookAppoBottom, + fillIcon: AppAssets.bookAppoBottom, label: LocaleKeys.appointment.tr(context: context), - iconSize: 27, + iconSize: 32, isSpecial: true, ), appState.isAuthenticated // ? BottomNavItem(icon: AppAssets.toDoBottom, label: LocaleKeys.todoList.tr(context: context)) - ? BottomNavItem(icon: AppAssets.symptomCheckerBottomIcon, label: "Symptoms") - : BottomNavItem(icon: AppAssets.news, label: LocaleKeys.news.tr()), - BottomNavItem(icon: AppAssets.servicesBottom, label: LocaleKeys.services2.tr(context: context)), + ? BottomNavItem(icon: AppAssets.symptomCheckerBottomIcon, fillIcon: AppAssets.symptomCheckerBottomFillIcon, label: "Symptoms") + : BottomNavItem(icon: AppAssets.news, fillIcon: AppAssets.newsFill, label: LocaleKeys.news.tr()), + BottomNavItem(icon: AppAssets.servicesBottom, fillIcon: AppAssets.servicesBottomFill, label: LocaleKeys.services2.tr(context: context)), ]; return Container( decoration: _containerDecoration, padding: _containerPadding, + // height: 84.h, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: List.generate( @@ -55,28 +58,33 @@ class BottomNavigation extends StatelessWidget { return GestureDetector( onTap: () => onTap(index), behavior: HitTestBehavior.opaque, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Center( - child: Utils.buildSvgWithAssets( - icon: item.icon, + child: SizedBox( + height: 50.h, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets( + icon: isSelected ? item.fillIcon : item.icon, height: item.iconSize.h, width: item.iconSize.w, // iconColor: isSelected ? Colors.black87 : Colors.black87, ), - ), - const SizedBox(height: 10), - item.label.toText11(weight: FontWeight.w500), - SizedBox(height: item.isSpecial ? 5 : 0) - ], + // const SizedBox(height: 10), + SizedBox(height: item.isSpecial ? 0 : 8.h), + item.label.toText11(weight: FontWeight.w500), + // SizedBox(height: item.isSpecial ? 5 : 0) + ], + ), ), - ); + ).expanded; } } class BottomNavItem { final String icon; + final String fillIcon; final String label; final double iconSize; final bool isSpecial; @@ -84,6 +92,7 @@ class BottomNavItem { const BottomNavItem({ required this.icon, + required this.fillIcon, required this.label, this.iconSize = 24, this.isSpecial = false, diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart index 6ff5cc59..4d88320a 100644 --- a/lib/widgets/common_bottom_sheet.dart +++ b/lib/widgets/common_bottom_sheet.dart @@ -12,9 +12,8 @@ import 'package:hmg_patient_app_new/services/permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:permission_handler/permission_handler.dart'; - -class BottomSheetUtils{ - showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, +class BottomSheetUtils { + showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, {required Function() onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool isMultiAllowed = false}) async { if (Platform.isAndroid) { if (await PermissionService.isCalendarPermissionEnabled()) { @@ -44,7 +43,7 @@ class BottomSheetUtils{ setReminder: (int value) async { if (!isMultiAllowed!) { if (onMultiDateSuccess == null) { - CalenderUtilsNew calendarUtils = CalenderUtilsNew.instance; + CalenderUtilsNew calendarUtils = CalenderUtilsNew.instance; await calendarUtils.createOrUpdateEvent( title: title ?? "You have appointment with Dr. ".needTranslation + doctorName, description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, @@ -60,6 +59,7 @@ class BottomSheetUtils{ ), callBackFunc: () {}, isFullScreen: false); } } + void showCommonBottomSheet(BuildContext context, {required Widget child, Function(String?)? callBackFunc, @@ -108,7 +108,7 @@ class ButtonSheetContent extends StatelessWidget { @override Widget build(BuildContext context) { return Column( - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 20.h, @@ -127,9 +127,7 @@ class ButtonSheetContent extends StatelessWidget { // Close button isCloseButtonVisible && isFullScreen - ? Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ + ? Row(mainAxisAlignment: MainAxisAlignment.end, children: [ Padding( padding: EdgeInsets.symmetric( horizontal: 16, @@ -168,7 +166,7 @@ void showCommonBottomSheetWithoutHeight( Widget? titleWidget, bool useSafeArea = false, bool hasBottomPadding = true, - EdgeInsets? padding, + EdgeInsets? padding, Color backgroundColor = AppColors.bottomSheetBgColor, VoidCallback? onCloseClicked, }) { @@ -177,10 +175,8 @@ void showCommonBottomSheetWithoutHeight( duration: Duration(milliseconds: 500), reverseDuration: Duration(milliseconds: 300), ), - constraints: BoxConstraints( - - maxWidth: MediaQuery.sizeOf(context).width//MediaQuery.of(context).size.width, // Full width - ), + constraints: BoxConstraints(maxWidth: MediaQuery.sizeOf(context).width //MediaQuery.of(context).size.width, // Full width + ), context: context, isScrollControlled: true, showDragHandle: false, @@ -201,46 +197,48 @@ void showCommonBottomSheetWithoutHeight( physics: ClampingScrollPhysics(), child: isCloseButtonVisible ? Container( - padding: padding ?? const EdgeInsets.only( - left: 24, - top: 24, - right: 24, - bottom: 12, - ), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.bottomSheetBgColor, - borderRadius: 24.h, - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Padding( - padding: padding != null? EdgeInsets.symmetric(horizontal: 24.w): EdgeInsets.zero, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + padding: padding ?? + const EdgeInsets.only( + left: 24, + top: 24, + right: 24, + bottom: 12, + ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.bottomSheetBgColor, + borderRadius: 24.h, + ), + child: Column( + mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ - titleWidget ?? - Expanded( - child: title.toText20(weight: FontWeight.w600), - ), - if (isCloseButtonVisible) ...[ - Utils.buildSvgWithAssets( - icon: AppAssets.close_bottom_sheet_icon, - iconColor: Color(0xff2B353E), - ).onPress(() { - onCloseClicked?.call(); - Navigator.of(context).pop(); - }),], + Padding( + padding: padding != null ? EdgeInsets.symmetric(horizontal: 24.w) : EdgeInsets.zero, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + titleWidget ?? + Expanded( + child: title.toText20(weight: FontWeight.w600), + ), + if (isCloseButtonVisible) ...[ + Utils.buildSvgWithAssets( + icon: AppAssets.close_bottom_sheet_icon, + iconColor: Color(0xff2B353E), + ).onPress(() { + onCloseClicked?.call(); + Navigator.of(context).pop(); + }), + ], + ], + ), + ), + isCloseButtonVisible ? SizedBox(height: 16.h) : SizedBox.shrink(), + child, ], ), - ), - isCloseButtonVisible ? SizedBox(height: 16.h) : SizedBox.shrink(), - child, - ], - ), - ) + ) : child, ), ), From 1599cfed4e2fc76edc35d6003c3c53290dc2cbc6 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 14 Jan 2026 12:06:59 +0300 Subject: [PATCH 03/67] UI/UX improvements-1. --- .../medical_file/medical_file_page.dart | 4 ++-- lib/widgets/appbar/collapsing_list_view.dart | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index d2946886..8782736c 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -1022,7 +1022,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Allergy Info".needTranslation, + label: "Allergy Information".needTranslation, textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.allergy_info_icon, @@ -1037,7 +1037,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Vaccine Info".needTranslation, + label: "Vaccine Information".needTranslation, textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.vaccine_info_icon, diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 5409fcf5..df7f1630 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -64,7 +63,7 @@ class CollapsingListView extends StatelessWidget { SliverAppBar( automaticallyImplyLeading: isLeading, pinned: true, - // toolbarHeight: isLeading ? 24.h : kToolbarHeight, + toolbarHeight: isLeading ? 40.h : kToolbarHeight, leadingWidth: isLeading ? null : double.infinity, systemOverlayStyle: SystemUiOverlayStyle(statusBarBrightness: Brightness.light), surfaceTintColor: Colors.transparent, @@ -89,8 +88,10 @@ class CollapsingListView extends StatelessWidget { ? Transform.flip( flipX: appState.isArabic(), child: IconButton( - icon: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.closeBottomNav : AppAssets.arrow_back, width: 24.h, height: 24.h), - padding: EdgeInsets.only(left: 12), + icon: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + style: const ButtonStyle(tapTargetSize: MaterialTapTargetSize.shrinkWrap), onPressed: () { if (leadingCallback != null) { leadingCallback!(); @@ -206,7 +207,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget }); @override - Size get preferredSize => const Size.fromHeight(50); + Size get preferredSize => const Size.fromHeight(50.0); @override State createState() => _ScrollAnimatedTitleState(); @@ -252,9 +253,10 @@ class _ScrollAnimatedTitleState extends State { Widget build(BuildContext context) { final isRtl = Directionality.of(context) == TextDirection.rtl; return Container( - height: (widget.preferredSize.height - _fontSize / 2).h, + // height: (widget.preferredSize.height - _fontSize / 2).h, + height: 60.h, alignment: isRtl ? (widget.showBack ? Alignment.topRight : Alignment.centerRight) : (widget.showBack ? Alignment.topLeft : Alignment.centerLeft), - padding: EdgeInsets.fromLTRB(24, 0, 24, 0), + padding: EdgeInsets.fromLTRB(24.w, 0, 24.w, 0), child: Row( spacing: 4.h, children: [ From 45b013a048f863bbf6a0814953214ee5fd01cea8 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 14 Jan 2026 12:36:06 +0300 Subject: [PATCH 04/67] UI/UX improvements - insurance update. --- assets/images/svg/insurance_history_icon.svg | 6 +- .../insurance/insurance_home_page.dart | 115 +++++++++--------- lib/widgets/appbar/collapsing_list_view.dart | 4 +- 3 files changed, 61 insertions(+), 64 deletions(-) diff --git a/assets/images/svg/insurance_history_icon.svg b/assets/images/svg/insurance_history_icon.svg index 4ae2a1c5..e81bd873 100644 --- a/assets/images/svg/insurance_history_icon.svg +++ b/assets/images/svg/insurance_history_icon.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/lib/presentation/insurance/insurance_home_page.dart b/lib/presentation/insurance/insurance_home_page.dart index b005e42d..543d60de 100644 --- a/lib/presentation/insurance/insurance_home_page.dart +++ b/lib/presentation/insurance/insurance_home_page.dart @@ -46,66 +46,63 @@ class _InsuranceHomePageState extends State { Widget build(BuildContext context) { appState = getIt.get(); insuranceViewModel = Provider.of(context, listen: false); - return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.updateInsurance.tr(context: context)}", - history: () { - insuranceViewModel.setIsInsuranceHistoryLoading(true); - insuranceViewModel.getPatientInsuranceCardHistory(); - showCommonBottomSheetWithoutHeight(context, child: InsuranceHistory(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); - }, - child: SingleChildScrollView( - child: Consumer(builder: (context, insuranceVM, child) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - insuranceVM.isInsuranceLoading - ? LabResultItemView( - onTap: () {}, - labOrder: null, - index: 0, - isLoading: true, - ).paddingSymmetrical(24.h, 24.h) - : insuranceVM.patientInsuranceList.isNotEmpty - ? Padding( - padding: EdgeInsets.only(top: 24.h), - child: PatientInsuranceCard( - insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, - isInsuranceExpired: DateTime.now().isAfter(DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo))).paddingSymmetrical(24.w, 0.h), - ) - : Padding( - padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.12), - child: Utils.getNoDataWidget( - context, - noDataText: "You don't have insurance registered with HMG.".needTranslation, - callToActionButton: CustomButton( - icon: AppAssets.update_insurance_card_icon, - iconColor: AppColors.successColor, - iconSize: 15.h, - text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", - onPressed: () { - insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); - insuranceViewModel.getPatientInsuranceDetailsForUpdate( - appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); - showCommonBottomSheetWithoutHeight(context, - child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); - }, - backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), - borderColor: AppColors.bgGreenColor.withOpacity(0.0), - textColor: AppColors.bgGreenColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ).paddingSymmetrical(64.h, 0.h), - ), + return CollapsingListView( + title: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.updateInsurance.tr(context: context)}", + history: () { + insuranceViewModel.setIsInsuranceHistoryLoading(true); + insuranceViewModel.getPatientInsuranceCardHistory(); + showCommonBottomSheetWithoutHeight(context, child: InsuranceHistory(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + }, + child: SingleChildScrollView( + child: Consumer(builder: (context, insuranceVM, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + insuranceVM.isInsuranceLoading + ? LabResultItemView( + onTap: () {}, + labOrder: null, + index: 0, + isLoading: true, + ).paddingSymmetrical(24.h, 24.h) + : insuranceVM.patientInsuranceList.isNotEmpty + ? Padding( + padding: EdgeInsets.only(top: 24.h), + child: PatientInsuranceCard( + insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, + isInsuranceExpired: DateTime.now().isAfter(DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo))) + .paddingSymmetrical(24.w, 0.h), + ) + : Padding( + padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.12), + child: Utils.getNoDataWidget( + context, + noDataText: "You don't have insurance registered with HMG.".needTranslation, + callToActionButton: CustomButton( + icon: AppAssets.update_insurance_card_icon, + iconColor: AppColors.successColor, + iconSize: 15.h, + text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", + onPressed: () { + insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); + insuranceViewModel.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + }, + backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), + borderColor: AppColors.bgGreenColor.withOpacity(0.0), + textColor: AppColors.bgGreenColor, + fontSize: 14, + fontWeight: FontWeight.w500, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ).paddingSymmetrical(64.h, 0.h), ), - ], - ); - }), - ), + ), + ], + ); + }), ), ); } diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index df7f1630..759a3e76 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -289,7 +289,7 @@ class _ScrollAnimatedTitleState extends State { return AnimatedSize( duration: Duration(milliseconds: 150), child: Container( - height: 36.h + (4.h * t), + height: 40.h, padding: EdgeInsets.all(8.w), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.secondaryLightRedColor, @@ -301,7 +301,7 @@ class _ScrollAnimatedTitleState extends State { mainAxisSize: MainAxisSize.min, spacing: 8.h, children: [ - Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.primaryRedColor), + Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.primaryRedColor, height: 24.h, width: 24.w), if (t >= .5) Text( title, From 0b9df1f22bc087b9cfd0ebb0cbeaf0335725c4a5 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 14 Jan 2026 14:43:43 +0300 Subject: [PATCH 05/67] collapsing toolbar behaviour changed as like barq --- lib/widgets/appbar/collapsing_list_view.dart | 116 ++++++++++--------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 759a3e76..fdea8aba 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -61,62 +61,66 @@ class CollapsingListView extends StatelessWidget { controller: _controller, slivers: [ SliverAppBar( - automaticallyImplyLeading: isLeading, - pinned: true, - toolbarHeight: isLeading ? 40.h : kToolbarHeight, - leadingWidth: isLeading ? null : double.infinity, - systemOverlayStyle: SystemUiOverlayStyle(statusBarBrightness: Brightness.light), - surfaceTintColor: Colors.transparent, - backgroundColor: AppColors.bgScaffoldColor, - bottom: isLeading - ? ScrollAnimatedTitle( - title: title, - showBack: true, - controller: _controller, - search: search, - report: report, - logout: logout, - history: history, - instructions: instructions, - requests: requests, - sendEmail: sendEmail, - bottomChild: bottomChild, - trailing: trailing, - ) - : null, - leading: isLeading - ? Transform.flip( - flipX: appState.isArabic(), - child: IconButton( - icon: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), - padding: EdgeInsets.zero, - constraints: BoxConstraints(), - style: const ButtonStyle(tapTargetSize: MaterialTapTargetSize.shrinkWrap), - onPressed: () { - if (leadingCallback != null) { - leadingCallback!(); - } else { - context.pop(); - } - }, - highlightColor: Colors.transparent, - ), - ) - : ScrollAnimatedTitle( - title: title, - showBack: false, - controller: _controller, - search: search, - report: report, - logout: logout, - history: history, - instructions: instructions, - requests: requests, - sendEmail: sendEmail, - bottomChild: bottomChild, - trailing: trailing, + automaticallyImplyLeading: isLeading, + pinned: true, + toolbarHeight: 40, + leadingWidth: isLeading ? null : double.infinity, + systemOverlayStyle: SystemUiOverlayStyle(statusBarBrightness: Brightness.light), + surfaceTintColor: Colors.transparent, + backgroundColor: AppColors.bgScaffoldColor, + bottom: + // isLeading + // ? + ScrollAnimatedTitle( + title: title, + showBack: true, + controller: _controller, + search: search, + report: report, + logout: logout, + history: history, + instructions: instructions, + requests: requests, + sendEmail: sendEmail, + bottomChild: bottomChild, + trailing: trailing, + ), + // : null, + leading: Visibility( + visible: isLeading, + child: Transform.flip( + flipX: appState.isArabic(), + child: IconButton( + icon: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + style: const ButtonStyle(tapTargetSize: MaterialTapTargetSize.shrinkWrap), + onPressed: () { + if (leadingCallback != null) { + leadingCallback!(); + } else { + context.pop(); + } + }, + highlightColor: Colors.transparent, ), - ), + ), + ) + // : ScrollAnimatedTitle( + // title: title, + // showBack: false, + // controller: _controller, + // search: search, + // report: report, + // logout: logout, + // history: history, + // instructions: instructions, + // requests: requests, + // sendEmail: sendEmail, + // bottomChild: bottomChild, + // trailing: trailing, + // ), + ), SliverList( delegate: SliverChildBuilderDelegate( (context, index) => child, @@ -267,7 +271,7 @@ class _ScrollAnimatedTitleState extends State { style: TextStyle( fontSize: _fontSize, fontWeight: FontWeight.bold, - letterSpacing: -1.0, + letterSpacing: -0.5, ), ).expanded, ...[ From 0017c0601b1701a7d079a1baeb8f7f9ae28cf4ae Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Thu, 15 Jan 2026 10:52:04 +0300 Subject: [PATCH 06/67] blood donation changes --- lib/core/api_consts.dart | 6 +- .../blood_donation/blood_donation_repo.dart | 36 +- .../blood_donation_view_model.dart | 27 +- .../blood_donation/blood_donation_page.dart | 179 +- lib/services/dialog_service.dart | 20 + pubspec.lock | 1985 ----------------- 6 files changed, 186 insertions(+), 2067 deletions(-) delete mode 100644 pubspec.lock diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 50be5329..3acc574b 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -679,7 +679,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.preProd; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT @@ -889,6 +889,10 @@ class ApiConsts { static String getProjectsHaveBDClinics = "Services/OUTPs.svc/REST/BD_getProjectsHaveBDClinics"; static String getClinicsBDFreeSlots = "Services/OUTPs.svc/REST/BD_GetFreeSlots"; + + static String getPatientBloodGroup = "services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails"; + static String getPatientBloodAgreement = "Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation"; + // ************ static values for Api **************** static final double appVersionID = 50.3; static final int appChannelId = 3; diff --git a/lib/features/blood_donation/blood_donation_repo.dart b/lib/features/blood_donation/blood_donation_repo.dart index 56436356..c709b038 100644 --- a/lib/features/blood_donation/blood_donation_repo.dart +++ b/lib/features/blood_donation/blood_donation_repo.dart @@ -23,6 +23,8 @@ abstract class BloodDonationRepo { Future>> getFreeBloodDonationSlots({required Map request}); Future>> addUserAgreementForBloodDonation({required Map request}); + + Future>> getUserAgreementForBloodDonation(); } class BloodDonationRepoImp implements BloodDonationRepo { @@ -76,7 +78,7 @@ class BloodDonationRepoImp implements BloodDonationRepo { GenericApiModel? apiResponse; Failure? failure; await apiClient.post( - GET_BLOOD_REQUEST, + ApiConsts.getPatientBloodGroup, body: mapDevice, isAllowAny: true, onFailure: (error, statusCode, {messageStatus, failureType}) { @@ -287,4 +289,36 @@ class BloodDonationRepoImp implements BloodDonationRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>>> getUserAgreementForBloodDonation() async { + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + ApiConsts.getPatientBloodAgreement, + body: {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/blood_donation/blood_donation_view_model.dart b/lib/features/blood_donation/blood_donation_view_model.dart index 94fa6e6b..8ad5bdec 100644 --- a/lib/features/blood_donation/blood_donation_view_model.dart +++ b/lib/features/blood_donation/blood_donation_view_model.dart @@ -4,6 +4,7 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/doctor_response_mapper.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo.dart'; @@ -258,25 +259,11 @@ class BloodDonationViewModel extends ChangeNotifier { Future updateBloodGroup() async { LoaderBottomSheet.showLoader(); - // body['City'] = detailsModel.city; - // body['cityCode'] = detailsModel.cityCode; - // body['Gender'] = detailsModel.gender; - // body['BloodGroup'] = detailsModel.bloodGroup; - // body['CellNumber'] = user.mobileNumber; - // body['LanguageID'] = languageID; - // body['NationalID'] = user.nationalityID; - // body['ZipCode'] = user.zipCode ?? "+966"; - // body['isDentalAllowedBackend'] = false; - Map payload = { - "City": selectedCity?.description, - "cityCode": selectedCity?.iD, - "Gender": selectedGender?.value, - "isDentalAllowedBackend": false - // "Gender": selectedGender?.value, - }; + Map payload = {"City": selectedCity?.description, "cityCode": selectedCity?.iD, "Gender": selectedGender?.value, "isDentalAllowedBackend": false}; await bloodDonationRepo.updateBloodGroup(request: payload); await addUserAgreementForBloodDonation(); LoaderBottomSheet.hideLoader(); + dialogService.showSuccessBottomSheetWithoutH(message: "Blood Group Updated Successfully", onOkPressed: () {}); } Future addUserAgreementForBloodDonation() async { @@ -284,10 +271,16 @@ class BloodDonationViewModel extends ChangeNotifier { await bloodDonationRepo.addUserAgreementForBloodDonation(request: payload); } + Future getUserAgreementForBloodDonation() async { + await bloodDonationRepo.getUserAgreementForBloodDonation(); + } + Future fetchAllData() async { LoaderBottomSheet.showLoader(loadingText: "Fetching Data..."); await getRegionSelectedClinics(); - // await getPatientBloodGroupDetails(); + if (isUserAuthanticated()) { + // await getPatientBloodGroupDetails(); + } LoaderBottomSheet.hideLoader(); } } diff --git a/lib/presentation/blood_donation/blood_donation_page.dart b/lib/presentation/blood_donation/blood_donation_page.dart index 9432c672..fe365358 100644 --- a/lib/presentation/blood_donation/blood_donation_page.dart +++ b/lib/presentation/blood_donation/blood_donation_page.dart @@ -58,68 +58,68 @@ class _BloodDonationPageState extends State { trailing: CustomButton( text: "Book", onPressed: () { - // if (bloodDonationVM.isUserAuthanticated()) { - bloodDonationVM.fetchHospitalsList().then((value) { - showCommonBottomSheetWithoutHeight(context, title: "Select Hospital", isDismissible: false, child: Consumer(builder: (_, data, __) { - return HospitalBottomSheetBodySelection( - onUserHospitalSelection: (BdGetProjectsHaveBdClinic userChoice) { - bloodDonationVM.getFreeBloodDonationSlots(request: {"ClinicID": 134, "ProjectID": userChoice.projectId}); - }, - ); - }), callBackFunc: () {}); - }); - // } else { - // return showCommonBottomSheetWithoutHeight( - // context, - // title: LocaleKeys.notice.tr(context: context), - // child: Column( - // mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), - // SizedBox(height: 8.h), - // (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), - // SizedBox(height: 16.h), - // Row( - // children: [ - // Expanded( - // child: CustomButton( - // text: LocaleKeys.cancel.tr(), - // onPressed: () { - // Navigator.of(context).pop(); - // }, - // backgroundColor: AppColors.secondaryLightRedColor, - // borderColor: AppColors.secondaryLightRedColor, - // textColor: AppColors.primaryRedColor, - // icon: AppAssets.cancel, - // iconColor: AppColors.primaryRedColor, - // ), - // ), - // SizedBox(width: 8.h), - // Expanded( - // child: CustomButton( - // text: LocaleKeys.confirm.tr(), - // onPressed: () async { - // Navigator.of(context).pop(); - // // Navigator.pushAndRemoveUntil(context, CustomPageRoute(page: LandingNavigation()), (r) => false); - // await getIt().onLoginPressed(); - // }, - // backgroundColor: AppColors.bgGreenColor, - // borderColor: AppColors.bgGreenColor, - // textColor: Colors.white, - // icon: AppAssets.confirm, - // ), - // ), - // ], - // ), - // SizedBox(height: 16.h), - // ], - // ).center, - // callBackFunc: () {}, - // isFullScreen: false, - // isCloseButtonVisible: true, - // ); - // } + if (bloodDonationVM.isUserAuthanticated()) { + bloodDonationVM.fetchHospitalsList().then((value) { + showCommonBottomSheetWithoutHeight(context, title: "Select Hospital", isDismissible: false, child: Consumer(builder: (_, data, __) { + return HospitalBottomSheetBodySelection( + onUserHospitalSelection: (BdGetProjectsHaveBdClinic userChoice) { + bloodDonationVM.getFreeBloodDonationSlots(request: {"ClinicID": 134, "ProjectID": userChoice.projectId}); + }, + ); + }), callBackFunc: () {}); + }); + } else { + return showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox(height: 8.h), + (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(), + onPressed: () { + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + icon: AppAssets.cancel, + iconColor: AppColors.primaryRedColor, + ), + ), + SizedBox(width: 8.h), + Expanded( + child: CustomButton( + text: LocaleKeys.confirm.tr(), + onPressed: () async { + Navigator.of(context).pop(); + // Navigator.pushAndRemoveUntil(context, CustomPageRoute(page: LandingNavigation()), (r) => false); + await getIt().onLoginPressed(); + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + icon: AppAssets.confirm, + ), + ), + ], + ), + SizedBox(height: 16.h), + ], + ).center, + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } }, backgroundColor: AppColors.bgRedLightColor, borderColor: AppColors.bgRedLightColor, @@ -297,7 +297,60 @@ class _BloodDonationPageState extends State { onPressed: () async { DialogService dialogService = getIt.get(); if (await bloodDonationVM.validateSelections()) { - bloodDonationVM.updateBloodGroup(); + if (bloodDonationVM.isUserAuthanticated()) { + bloodDonationVM.updateBloodGroup(); + } else { + return showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox(height: 8.h), + (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(), + onPressed: () { + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + icon: AppAssets.cancel, + iconColor: AppColors.primaryRedColor, + ), + ), + SizedBox(width: 8.h), + Expanded( + child: CustomButton( + text: LocaleKeys.confirm.tr(), + onPressed: () async { + Navigator.of(context).pop(); + // Navigator.pushAndRemoveUntil(context, CustomPageRoute(page: LandingNavigation()), (r) => false); + await getIt().onLoginPressed(); + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + icon: AppAssets.confirm, + ), + ), + ], + ), + SizedBox(height: 16.h), + ], + ).center, + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } } }, backgroundColor: AppColors.primaryRedColor, diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index 30926749..48c32858 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; @@ -23,6 +24,9 @@ abstract class DialogService { Future showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); + + Future showSuccessBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); + Future showFamilyBottomSheetWithoutH( {String? label, required String message, @@ -122,6 +126,20 @@ class DialogServiceImp implements DialogService { ); } + + @override + Future showSuccessBottomSheetWithoutH( + {String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { + final context = navigationService.navigatorKey.currentContext; + if (context == null) return; + showCommonBottomSheetWithoutHeight( + context, + title: label ?? "", + child: Utils.getSuccessWidget(loadingText: message.needTranslation), + callBackFunc: () {}, + ); + } + @override Future showFamilyBottomSheetWithoutH( {String? label, @@ -256,6 +274,8 @@ Widget exceptionBottomSheetWidget( ); } + + Widget showPhoneNumberPickerWidget( {required BuildContext context, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) { return StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 42b828db..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,1985 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 - url: "https://pub.dev" - source: hosted - version: "1.3.59" - amazon_payfort: - dependency: "direct main" - description: - name: amazon_payfort - sha256: "7732df0764aecbb814f910db36d0dca2f696e7e5ea380b49aa3ec62965768b33" - url: "https://pub.dev" - source: hosted - version: "1.1.4" - archive: - dependency: transitive - description: - name: archive - sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" - url: "https://pub.dev" - source: hosted - version: "4.0.7" - args: - dependency: transitive - description: - name: args - sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.dev" - source: hosted - version: "2.7.0" - async: - dependency: transitive - description: - name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://pub.dev" - source: hosted - version: "2.13.0" - audio_session: - dependency: transitive - description: - name: audio_session - sha256: "8f96a7fecbb718cb093070f868b4cdcb8a9b1053dce342ff8ab2fde10eb9afb7" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - auto_size_text: - dependency: "direct main" - description: - name: auto_size_text - sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - barcode_scan2: - dependency: "direct main" - description: - name: barcode_scan2 - sha256: "0f3eb7c0a0c80a0f65d3fa88737544fdb6d27127a4fad566e980e626f3fb76e1" - url: "https://pub.dev" - source: hosted - version: "4.5.1" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" - url: "https://pub.dev" - source: hosted - version: "4.1.1" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - carp_serializable: - dependency: transitive - description: - name: carp_serializable - sha256: f039f8ea22e9437aef13fe7e9743c3761c76d401288dcb702eadd273c3e4dcef - url: "https://pub.dev" - source: hosted - version: "2.0.1" - characters: - dependency: transitive - description: - name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - chewie: - dependency: transitive - description: - name: chewie - sha256: "44bcfc5f0dfd1de290c87c9d86a61308b3282a70b63435d5557cfd60f54a69ca" - url: "https://pub.dev" - source: hosted - version: "1.13.0" - clock: - dependency: transitive - description: - name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.dev" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - connectivity_plus: - dependency: "direct main" - description: - name: connectivity_plus - sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec - url: "https://pub.dev" - source: hosted - version: "6.1.5" - connectivity_plus_platform_interface: - dependency: transitive - description: - name: connectivity_plus_platform_interface - sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" - url: "https://pub.dev" - source: hosted - version: "0.3.4+2" - crypto: - dependency: transitive - description: - name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "https://pub.dev" - source: hosted - version: "3.0.6" - csslib: - dependency: transitive - description: - name: csslib - sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - dartz: - dependency: "direct main" - description: - name: dartz - sha256: e6acf34ad2e31b1eb00948692468c30ab48ac8250e0f0df661e29f12dd252168 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - dbus: - dependency: transitive - description: - name: dbus - sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" - url: "https://pub.dev" - source: hosted - version: "0.7.11" - device_calendar: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: "5ea5ed9e2bb499c0633383b53103f2920b634755" - url: "https://github.com/bardram/device_calendar" - source: git - version: "4.3.1" - device_info_plus: - dependency: "direct main" - description: - name: device_info_plus - sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" - url: "https://pub.dev" - source: hosted - version: "11.5.0" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f - url: "https://pub.dev" - source: hosted - version: "7.0.3" - dropdown_search: - dependency: "direct main" - description: - name: dropdown_search - sha256: c29b3e5147a82a06a4a08b3b574c51cb48cc17ad89893d53ee72a6f86643622e - url: "https://pub.dev" - source: hosted - version: "6.0.2" - easy_localization: - dependency: "direct main" - description: - name: easy_localization - sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed" - url: "https://pub.dev" - source: hosted - version: "3.0.8" - easy_logger: - dependency: transitive - description: - name: easy_logger - sha256: c764a6e024846f33405a2342caf91c62e357c24b02c04dbc712ef232bf30ffb7 - url: "https://pub.dev" - source: hosted - version: "0.0.2" - equatable: - dependency: "direct main" - description: - name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" - url: "https://pub.dev" - source: hosted - version: "2.0.7" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - ffi: - dependency: transitive - description: - name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - file: - dependency: transitive - description: - name: file - sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" - source: hosted - version: "7.0.1" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: f2d9f173c2c14635cc0e9b14c143c49ef30b4934e8d1d274d6206fcb0086a06f - url: "https://pub.dev" - source: hosted - version: "10.3.3" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://pub.dev" - source: hosted - version: "0.9.3+2" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" - url: "https://pub.dev" - source: hosted - version: "0.9.4+4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.dev" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://pub.dev" - source: hosted - version: "0.9.3+4" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: "4f85b161772e1d54a66893ef131c0a44bd9e552efa78b33d5f4f60d2caa5c8a3" - url: "https://pub.dev" - source: hosted - version: "11.6.0" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: a44b6d1155ed5cae7641e3de7163111cfd9f6f6c954ca916dc6a3bdfa86bf845 - url: "https://pub.dev" - source: hosted - version: "4.4.3" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: c7d1ed1f86ae64215757518af5576ff88341c8ce5741988c05cc3b2e07b0b273 - url: "https://pub.dev" - source: hosted - version: "0.5.10+16" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" - url: "https://pub.dev" - source: hosted - version: "3.15.2" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: "5873a370f0d232918e23a5a6137dbe4c2c47cf017301f4ea02d9d636e52f60f0" - url: "https://pub.dev" - source: hosted - version: "6.0.1" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" - url: "https://pub.dev" - source: hosted - version: "2.24.1" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" - url: "https://pub.dev" - source: hosted - version: "15.2.10" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" - url: "https://pub.dev" - source: hosted - version: "4.6.10" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" - url: "https://pub.dev" - source: hosted - version: "3.10.10" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.dev" - source: hosted - version: "1.1.1" - fl_chart: - dependency: "direct main" - description: - name: fl_chart - sha256: "577aeac8ca414c25333334d7c4bb246775234c0e44b38b10a82b559dd4d764e7" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - flutter_hooks: - dependency: transitive - description: - name: flutter_hooks - sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70 - url: "https://pub.dev" - source: hosted - version: "0.20.5" - flutter_inappwebview: - dependency: "direct main" - description: - name: flutter_inappwebview - sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" - url: "https://pub.dev" - source: hosted - version: "6.1.5" - flutter_inappwebview_android: - dependency: transitive - description: - name: flutter_inappwebview_android - sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - flutter_inappwebview_internal_annotations: - dependency: transitive - description: - name: flutter_inappwebview_internal_annotations - sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - flutter_inappwebview_ios: - dependency: transitive - description: - name: flutter_inappwebview_ios - sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_macos: - dependency: transitive - description: - name: flutter_inappwebview_macos - sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_platform_interface: - dependency: transitive - description: - name: flutter_inappwebview_platform_interface - sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 - url: "https://pub.dev" - source: hosted - version: "1.3.0+1" - flutter_inappwebview_web: - dependency: transitive - description: - name: flutter_inappwebview_web - sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_windows: - dependency: transitive - description: - name: flutter_inappwebview_windows - sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" - url: "https://pub.dev" - source: hosted - version: "0.6.0" - flutter_ios_voip_kit_karmm: - dependency: "direct main" - description: - name: flutter_ios_voip_kit_karmm - sha256: "31a445d78aacacdf128a0354efb9f4e424285dfe4c0af3ea872e64f03e6f6bfc" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.dev" - source: hosted - version: "5.0.0" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - sha256: "7ed76be64e8a7d01dfdf250b8434618e2a028c9dfa2a3c41dc9b531d4b3fc8a5" - url: "https://pub.dev" - source: hosted - version: "19.4.2" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: e3c277b2daab8e36ac5a6820536668d07e83851aeeb79c446e525a70710770a5 - url: "https://pub.dev" - source: hosted - version: "6.0.0" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "277d25d960c15674ce78ca97f57d0bae2ee401c844b6ac80fcd972a9c99d09fe" - url: "https://pub.dev" - source: hosted - version: "9.1.0" - flutter_local_notifications_windows: - dependency: transitive - description: - name: flutter_local_notifications_windows - sha256: "8d658f0d367c48bd420e7cf2d26655e2d1130147bca1eea917e576ca76668aaf" - url: "https://pub.dev" - source: hosted - version: "1.0.3" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_nfc_kit: - dependency: "direct main" - description: - name: flutter_nfc_kit - sha256: "3cc4059626fa672031261512299458dd274de4ccb57a7f0ee0951ddd70a048e5" - url: "https://pub.dev" - source: hosted - version: "3.6.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 - url: "https://pub.dev" - source: hosted - version: "2.0.30" - flutter_rating_bar: - dependency: "direct main" - description: - name: flutter_rating_bar - sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93 - url: "https://pub.dev" - source: hosted - version: "4.0.1" - flutter_staggered_animations: - dependency: "direct main" - description: - name: flutter_staggered_animations - sha256: "81d3c816c9bb0dca9e8a5d5454610e21ffb068aedb2bde49d2f8d04f75538351" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - flutter_swiper_view: - dependency: "direct main" - description: - name: flutter_swiper_view - sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" - source: hosted - version: "1.1.8" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_widget_from_html: - dependency: "direct main" - description: - name: flutter_widget_from_html - sha256: "7f1daefcd3009c43c7e7fb37501e6bb752d79aa7bfad0085fb0444da14e89bd0" - url: "https://pub.dev" - source: hosted - version: "0.17.1" - flutter_widget_from_html_core: - dependency: transitive - description: - name: flutter_widget_from_html_core - sha256: "1120ee6ed3509ceff2d55aa6c6cbc7b6b1291434422de2411b5a59364dd6ff03" - url: "https://pub.dev" - source: hosted - version: "0.17.0" - flutter_zoom_videosdk: - dependency: "direct main" - description: - name: flutter_zoom_videosdk - sha256: "22731485fe48472a34ff0c7e787a382f5e1ec662fd89186e58e760974fc2a0cb" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8" - url: "https://pub.dev" - source: hosted - version: "8.2.14" - fwfh_cached_network_image: - dependency: transitive - description: - name: fwfh_cached_network_image - sha256: "484cb5f8047f02cfac0654fca5832bfa91bb715fd7fc651c04eb7454187c4af8" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_chewie: - dependency: transitive - description: - name: fwfh_chewie - sha256: ae74fc26798b0e74f3983f7b851e74c63b9eeb2d3015ecd4b829096b2c3f8818 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_just_audio: - dependency: transitive - description: - name: fwfh_just_audio - sha256: dfd622a0dfe049ac647423a2a8afa7f057d9b2b93d92710b624e3d370b1ac69a - url: "https://pub.dev" - source: hosted - version: "0.17.0" - fwfh_svg: - dependency: transitive - description: - name: fwfh_svg - sha256: "2e6bb241179eeeb1a7941e05c8c923b05d332d36a9085233e7bf110ea7deb915" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_url_launcher: - dependency: transitive - description: - name: fwfh_url_launcher - sha256: c38aa8fb373fda3a89b951fa260b539f623f6edb45eee7874cb8b492471af881 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_webview: - dependency: transitive - description: - name: fwfh_webview - sha256: f71b0aa16e15d82f3c017f33560201ff5ae04e91e970cab5d12d3bcf970b870c - url: "https://pub.dev" - source: hosted - version: "0.15.6" - geoclue: - dependency: transitive - description: - name: geoclue - sha256: c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f - url: "https://pub.dev" - source: hosted - version: "0.1.1" - geolocator: - dependency: "direct main" - description: - name: geolocator - sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" - url: "https://pub.dev" - source: hosted - version: "14.0.2" - geolocator_android: - dependency: transitive - description: - name: geolocator_android - sha256: "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a" - url: "https://pub.dev" - source: hosted - version: "5.0.2" - geolocator_apple: - dependency: transitive - description: - name: geolocator_apple - sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 - url: "https://pub.dev" - source: hosted - version: "2.3.13" - geolocator_linux: - dependency: transitive - description: - name: geolocator_linux - sha256: c4e966f0a7a87e70049eac7a2617f9e16fd4c585a26e4330bdfc3a71e6a721f3 - url: "https://pub.dev" - source: hosted - version: "0.2.3" - geolocator_platform_interface: - dependency: transitive - description: - name: geolocator_platform_interface - sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" - url: "https://pub.dev" - source: hosted - version: "4.2.6" - geolocator_web: - dependency: transitive - description: - name: geolocator_web - sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 - url: "https://pub.dev" - source: hosted - version: "4.1.3" - geolocator_windows: - dependency: transitive - description: - name: geolocator_windows - sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" - url: "https://pub.dev" - source: hosted - version: "0.2.5" - get_it: - dependency: "direct main" - description: - name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b - url: "https://pub.dev" - source: hosted - version: "8.2.0" - gms_check: - dependency: "direct main" - description: - name: gms_check - sha256: b3fc08fd41da233f9761f9981303346aa9778b4802e90ce9bd8122674fcca6f0 - url: "https://pub.dev" - source: hosted - version: "1.0.4" - google_api_availability: - dependency: "direct main" - description: - name: google_api_availability - sha256: "2ffdc91e1e0cf4e7974fef6c2988a24cefa81f03526ff04b694df6dc0fcbca03" - url: "https://pub.dev" - source: hosted - version: "5.0.1" - google_api_availability_android: - dependency: transitive - description: - name: google_api_availability_android - sha256: "4794147f43a8f3eee6b514d3ae30dbe6f7b9048cae8cd2a74cb4055cd28d74a8" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - google_api_availability_platform_interface: - dependency: transitive - description: - name: google_api_availability_platform_interface - sha256: "65b7da62fe5b582bb3d508628ad827d36d890710ea274766a992a56fa5420da6" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - google_maps: - dependency: transitive - description: - name: google_maps - sha256: "5d410c32112d7c6eb7858d359275b2aa04778eed3e36c745aeae905fb2fa6468" - url: "https://pub.dev" - source: hosted - version: "8.2.0" - google_maps_flutter: - dependency: "direct main" - description: - name: google_maps_flutter - sha256: c389e16fafc04b37a4105e0757ecb9d59806026cee72f408f1ba68811d01bfe6 - url: "https://pub.dev" - source: hosted - version: "2.13.1" - google_maps_flutter_android: - dependency: transitive - description: - name: google_maps_flutter_android - sha256: a6c9d43f6a944ff4bae5c3deb34817970ac3d591dcd7f5bd2ea450ab9e9c514a - url: "https://pub.dev" - source: hosted - version: "2.18.2" - google_maps_flutter_ios: - dependency: transitive - description: - name: google_maps_flutter_ios - sha256: ca02463b19a9abc7d31fcaf22631d021d647107467f741b917a69fa26659fd75 - url: "https://pub.dev" - source: hosted - version: "2.15.5" - google_maps_flutter_platform_interface: - dependency: transitive - description: - name: google_maps_flutter_platform_interface - sha256: f4b9b44f7b12a1f6707ffc79d082738e0b7e194bf728ee61d2b3cdf5fdf16081 - url: "https://pub.dev" - source: hosted - version: "2.14.0" - google_maps_flutter_web: - dependency: transitive - description: - name: google_maps_flutter_web - sha256: "53e5dbf73ff04153acc55a038248706967c21d5b6ef6657a57fce2be73c2895a" - url: "https://pub.dev" - source: hosted - version: "0.5.14+2" - gsettings: - dependency: transitive - description: - name: gsettings - sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" - url: "https://pub.dev" - source: hosted - version: "0.2.8" - health: - dependency: "direct main" - description: - name: health - sha256: "320633022fb2423178baa66508001c4ca5aee5806ffa2c913e66488081e9fd47" - url: "https://pub.dev" - source: hosted - version: "13.1.4" - hijri_gregorian_calendar: - dependency: "direct main" - description: - name: hijri_gregorian_calendar - sha256: aecdbe3c9365fac55f17b5e1f24086a81999b1e5c9372cb08888bfbe61e07fa1 - url: "https://pub.dev" - source: hosted - version: "0.1.1" - html: - dependency: transitive - description: - name: html - sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://pub.dev" - source: hosted - version: "0.15.6" - http: - dependency: "direct main" - description: - name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 - url: "https://pub.dev" - source: hosted - version: "1.5.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" - huawei_location: - dependency: "direct main" - description: - name: huawei_location - sha256: "3100d6b2b11df56481b8deade71baa84970e0bae0ade6ec56407be2b036af355" - url: "https://pub.dev" - source: hosted - version: "6.14.2+301" - huawei_map: - dependency: "direct main" - description: - path: flutter-hms-map - ref: HEAD - resolved-ref: "9a16541e4016e3bf58a2571e6aa658a4751af399" - url: "https://github.com/fleoparra/hms-flutter-plugin.git" - source: git - version: "6.11.2+303" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" - url: "https://pub.dev" - source: hosted - version: "0.8.13+3" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e - url: "https://pub.dev" - source: hosted - version: "0.8.13" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae - url: "https://pub.dev" - source: hosted - version: "0.2.2" - intl: - dependency: "direct main" - description: - name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://pub.dev" - source: hosted - version: "0.20.2" - jiffy: - dependency: "direct main" - description: - name: jiffy - sha256: "9bafbfe6d97587048bf449165e050029e716a12438f54a3d39e7e3a256decdac" - url: "https://pub.dev" - source: hosted - version: "6.4.3" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" - source: hosted - version: "4.9.0" - just_audio: - dependency: "direct main" - description: - name: just_audio - sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" - url: "https://pub.dev" - source: hosted - version: "0.10.5" - just_audio_platform_interface: - dependency: transitive - description: - name: just_audio_platform_interface - sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" - url: "https://pub.dev" - source: hosted - version: "4.6.0" - just_audio_web: - dependency: transitive - description: - name: just_audio_web - sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" - url: "https://pub.dev" - source: hosted - version: "0.4.16" - keyboard_actions: - dependency: "direct main" - description: - name: keyboard_actions - sha256: "31e0ab2a706ac8f58887efa60efc1f19aecdf37d8ab0f665a0f156d1fbeab650" - url: "https://pub.dev" - source: hosted - version: "4.2.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" - url: "https://pub.dev" - source: hosted - version: "11.0.2" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" - url: "https://pub.dev" - source: hosted - version: "3.0.10" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - lints: - dependency: transitive - description: - name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.dev" - source: hosted - version: "5.1.1" - local_auth: - dependency: "direct main" - description: - name: local_auth - sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - local_auth_android: - dependency: transitive - description: - name: local_auth_android - sha256: "1ee0e63fb8b5c6fa286796b5fb1570d256857c2f4a262127e728b36b80a570cf" - url: "https://pub.dev" - source: hosted - version: "1.0.53" - local_auth_darwin: - dependency: transitive - description: - name: local_auth_darwin - sha256: "699873970067a40ef2f2c09b4c72eb1cfef64224ef041b3df9fdc5c4c1f91f49" - url: "https://pub.dev" - source: hosted - version: "1.6.1" - local_auth_platform_interface: - dependency: transitive - description: - name: local_auth_platform_interface - sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" - url: "https://pub.dev" - source: hosted - version: "1.0.10" - local_auth_windows: - dependency: transitive - description: - name: local_auth_windows - sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5 - url: "https://pub.dev" - source: hosted - version: "1.0.11" - location: - dependency: "direct main" - description: - name: location - sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 - url: "https://pub.dev" - source: hosted - version: "8.0.1" - location_platform_interface: - dependency: transitive - description: - name: location_platform_interface - sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - location_web: - dependency: transitive - description: - name: location_web - sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - logger: - dependency: "direct main" - description: - name: logger - sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" - url: "https://pub.dev" - source: hosted - version: "2.6.1" - logging: - dependency: transitive - description: - name: logging - sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.dev" - source: hosted - version: "1.3.0" - lottie: - dependency: "direct main" - description: - name: lottie - sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95" - url: "https://pub.dev" - source: hosted - version: "3.3.2" - manage_calendar_events: - dependency: "direct main" - description: - name: manage_calendar_events - sha256: f17600fcb7dc7047120c185993045e493d686930237b4e3c2689c26a64513d66 - url: "https://pub.dev" - source: hosted - version: "2.0.3" - maps_launcher: - dependency: "direct main" - description: - name: maps_launcher - sha256: dac4c609720211fa6336b5903d917fe45e545c6b5665978efc3db2a3f436b1ae - url: "https://pub.dev" - source: hosted - version: "3.0.0+1" - matcher: - dependency: transitive - description: - name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://pub.dev" - source: hosted - version: "0.12.17" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.dev" - source: hosted - version: "0.11.1" - meta: - dependency: transitive - description: - name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://pub.dev" - source: hosted - version: "1.16.0" - mime: - dependency: transitive - description: - name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - ndef: - dependency: transitive - description: - name: ndef - sha256: "5083507cff4bb823b2a198a27ea2c70c4d6bc27a97b66097d966a250e1615d54" - url: "https://pub.dev" - source: hosted - version: "0.3.4" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - network_info_plus: - dependency: "direct main" - description: - name: network_info_plus - sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 - url: "https://pub.dev" - source: hosted - version: "6.1.4" - network_info_plus_platform_interface: - dependency: transitive - description: - name: network_info_plus_platform_interface - sha256: "7e7496a8a9d8136859b8881affc613c4a21304afeb6c324bcefc4bd0aff6b94b" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - nm: - dependency: transitive - description: - name: nm - sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - open_filex: - dependency: "direct main" - description: - name: open_filex - sha256: "9976da61b6a72302cf3b1efbce259200cd40232643a467aac7370addf94d6900" - url: "https://pub.dev" - source: hosted - version: "4.7.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" - url: "https://pub.dev" - source: hosted - version: "8.3.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" - url: "https://pub.dev" - source: hosted - version: "2.2.18" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 - url: "https://pub.dev" - source: hosted - version: "12.0.1" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" - url: "https://pub.dev" - source: hosted - version: "13.0.1" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 - url: "https://pub.dev" - source: hosted - version: "9.4.7" - permission_handler_html: - dependency: transitive - description: - name: permission_handler_html - sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" - url: "https://pub.dev" - source: hosted - version: "0.1.3+5" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 - url: "https://pub.dev" - source: hosted - version: "4.3.0" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" - url: "https://pub.dev" - source: hosted - version: "0.2.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" - url: "https://pub.dev" - source: hosted - version: "7.0.1" - platform: - dependency: transitive - description: - name: platform - sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.dev" - source: hosted - version: "3.1.6" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" - source: hosted - version: "2.1.8" - posix: - dependency: transitive - description: - name: posix - sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" - url: "https://pub.dev" - source: hosted - version: "6.0.3" - protobuf: - dependency: transitive - description: - name: protobuf - sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - provider: - dependency: "direct main" - description: - name: provider - sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" - url: "https://pub.dev" - source: hosted - version: "6.1.5+1" - quiver: - dependency: transitive - description: - name: quiver - sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - rrule: - dependency: transitive - description: - name: rrule - sha256: b7425410c594d4b6717c9f17ec8ef83c9d1ff2e513c428a135b5924fc2e8e045 - url: "https://pub.dev" - source: hosted - version: "0.2.17" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.dev" - source: hosted - version: "0.28.0" - sanitize_html: - dependency: transitive - description: - name: sanitize_html - sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - share_plus: - dependency: "direct main" - description: - name: share_plus - sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - share_plus_platform_interface: - dependency: transitive - description: - name: share_plus_platform_interface - sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" - url: "https://pub.dev" - source: hosted - version: "6.1.0" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" - url: "https://pub.dev" - source: hosted - version: "2.5.3" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e - url: "https://pub.dev" - source: hosted - version: "2.4.13" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" - url: "https://pub.dev" - source: hosted - version: "2.5.4" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 - url: "https://pub.dev" - source: hosted - version: "2.4.3" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shimmer: - dependency: "direct main" - description: - name: shimmer - sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - sizer: - dependency: "direct main" - description: - name: sizer - sha256: "9963c89e4d30d7c2108de3eafc0a7e6a4a8009799376ea6be5ef0a9ad87cfbad" - url: "https://pub.dev" - source: hosted - version: "3.1.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - smooth_corner: - dependency: "direct main" - description: - name: smooth_corner - sha256: "112d7331f82ead81ec870c5d1eb0624f2e7e367eccd166c2fffe4c11d4f87c4f" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - sms_otp_auto_verify: - dependency: "direct main" - description: - name: sms_otp_auto_verify - sha256: ee02af0d6b81d386ef70d7d0317a1929bc0b4a3a30a451284450bbcf6901ba1a - url: "https://pub.dev" - source: hosted - version: "2.2.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://pub.dev" - source: hosted - version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_android: - dependency: transitive - description: - name: sqflite_android - sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 - url: "https://pub.dev" - source: hosted - version: "2.4.2+2" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" - url: "https://pub.dev" - source: hosted - version: "2.5.6" - sqflite_darwin: - dependency: transitive - description: - name: sqflite_darwin - sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_platform_interface: - dependency: transitive - description: - name: sqflite_platform_interface - sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - syncfusion_flutter_calendar: - dependency: "direct main" - description: - name: syncfusion_flutter_calendar - sha256: "8e8a4eef01d6a82ae2c17e76d497ff289ded274de014c9f471ffabc12d1e2e71" - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_core: - dependency: transitive - description: - name: syncfusion_flutter_core - sha256: bfd026c0f9822b49ff26fed11cd3334519acb6a6ad4b0c81d9cd18df6af1c4c0 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_datepicker: - dependency: transitive - description: - name: syncfusion_flutter_datepicker - sha256: b5f35cc808e91b229d41613efe71dadab1549a35bfd493f922fc06ccc2fe908c - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_localizations: - dependency: transitive - description: - name: syncfusion_localizations - sha256: bb32b07879b4c1dee5d4c8ad1c57343a4fdae55d65a87f492727c11b68f23164 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 - url: "https://pub.dev" - source: hosted - version: "3.4.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - time: - dependency: transitive - description: - name: time - sha256: "370572cf5d1e58adcb3e354c47515da3f7469dac3a95b447117e728e7be6f461" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - timezone: - dependency: transitive - description: - name: timezone - sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://pub.dev" - source: hosted - version: "6.3.2" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "199bc33e746088546a39cc5f36bac5a278c5e53b40cb3196f99e7345fdcfae6b" - url: "https://pub.dev" - source: hosted - version: "6.3.22" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 - url: "https://pub.dev" - source: hosted - version: "6.3.4" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f - url: "https://pub.dev" - source: hosted - version: "3.2.3" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" - url: "https://pub.dev" - source: hosted - version: "3.1.4" - uuid: - dependency: "direct main" - description: - name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff - url: "https://pub.dev" - source: hosted - version: "4.5.1" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.dev" - source: hosted - version: "1.1.13" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b - url: "https://pub.dev" - source: hosted - version: "2.2.0" - video_player: - dependency: transitive - description: - name: video_player - sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: "6cfe0b1e102522eda1e139b82bf00602181c5844fd2885340f595fb213d74842" - url: "https://pub.dev" - source: hosted - version: "2.8.14" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd - url: "https://pub.dev" - source: hosted - version: "2.8.4" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a - url: "https://pub.dev" - source: hosted - version: "6.4.0" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" - url: "https://pub.dev" - source: hosted - version: "15.0.2" - wakelock_plus: - dependency: transitive - description: - name: wakelock_plus - sha256: "61713aa82b7f85c21c9f4cd0a148abd75f38a74ec645fcb1e446f882c82fd09b" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - wakelock_plus_platform_interface: - dependency: transitive - description: - name: wakelock_plus_platform_interface - sha256: "036deb14cd62f558ca3b73006d52ce049fabcdcb2eddfe0bf0fe4e8a943b5cf2" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - web: - dependency: "direct main" - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba - url: "https://pub.dev" - source: hosted - version: "4.13.0" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "21507ea5a326ceeba4d29dea19e37d92d53d9959cfc746317b9f9f7a57418d87" - url: "https://pub.dev" - source: hosted - version: "4.10.3" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0" - url: "https://pub.dev" - source: hosted - version: "2.14.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: fea63576b3b7e02b2df8b78ba92b48ed66caec2bb041e9a0b1cbd586d5d80bfd - url: "https://pub.dev" - source: hosted - version: "3.23.1" - win32: - dependency: transitive - description: - name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" - url: "https://pub.dev" - source: hosted - version: "5.14.0" - win32_registry: - dependency: transitive - description: - name: win32_registry - sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - xml: - dependency: transitive - description: - name: xml - sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" - url: "https://pub.dev" - source: hosted - version: "6.6.1" -sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" From 3ff9628cd3bf5405541bc898cdd57ed391045d05 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 15 Jan 2026 13:52:14 +0300 Subject: [PATCH 07/67] Translation updates --- assets/langs/ar-SA.json | 157 ++++++++- assets/langs/en-US.json | 160 ++++++++- lib/core/location_util.dart | 4 +- lib/core/utils/calendar_utils.dart | 6 +- .../widgets/hospital_selection.dart | 11 +- .../book_appointments_view_model.dart | 36 +- .../emergency_services_view_model.dart | 43 ++- .../utils/appointment_type.dart | 4 +- .../prescriptions_view_model.dart | 4 +- .../radiology/radiology_view_model.dart | 4 +- .../water_monitor_view_model.dart | 24 +- lib/generated/locale_keys.g.dart | 155 +++++++++ lib/presentation/home/landing_page.dart | 32 +- .../home/widgets/habib_wallet_card.dart | 4 +- .../home/widgets/large_service_card.dart | 2 +- .../home/widgets/welcome_widget.dart | 4 +- .../hhc_order_detail_page.dart | 7 +- .../home_health_care/hhc_procedures_page.dart | 33 +- .../hhc_selection_review_page.dart | 16 +- .../widgets/hhc_ui_selection_helper.dart | 4 +- .../insurance_approval_details_page.dart | 4 +- .../insurance/insurance_approvals_page.dart | 2 +- .../insurance/insurance_home_page.dart | 2 +- .../widgets/insurance_approval_card.dart | 2 +- .../insurance/widgets/insurance_history.dart | 2 +- .../insurance_update_details_card.dart | 2 +- .../widgets/patient_insurance_card.dart | 6 +- lib/presentation/lab/lab_order_by_test.dart | 2 +- lib/presentation/lab/lab_orders_page.dart | 2 +- .../LabResultByClinic.dart | 6 +- .../lab_result_via_clinic/LabResultList.dart | 5 +- .../lab_order_result_item.dart | 2 +- .../lab/lab_results/lab_result_details.dart | 21 +- .../eye_measurement_details_page.dart | 4 +- .../eye_measurements_appointments_page.dart | 4 +- .../medical_file/medical_file_page.dart | 111 ++++--- .../patient_sickleaves_list_page.dart | 4 +- .../medical_file/vaccine_list_page.dart | 6 +- .../medical_file_appointment_card.dart | 2 +- .../widgets/patient_sick_leave_card.dart | 4 +- .../medical_report_request_page.dart | 4 +- .../medical_report/medical_reports_page.dart | 16 +- .../widgets/patient_medical_report_card.dart | 2 +- .../monthly_report/monthly_report.dart | 9 +- .../monthly_reports/monthly_reports_page.dart | 310 ------------------ .../monthly_reports/user_agreement_page.dart | 117 ------- lib/presentation/my_family/my_family.dart | 8 +- .../my_family/widget/family_cards.dart | 26 +- .../my_family/widget/my_family_sheet.dart | 6 +- .../my_invoices/my_invoices_details_page.dart | 16 +- .../my_invoices/my_invoices_list.dart | 2 +- .../widgets/invoice_list_card.dart | 7 +- .../notifications_list_page.dart | 4 +- .../onboarding/onboarding_screen.dart | 16 +- lib/presentation/parking/paking_page.dart | 44 +-- lib/presentation/parking/parking_slot.dart | 20 +- ...scription_delivery_order_summary_page.dart | 4 +- ...rescription_delivery_orders_list_page.dart | 2 +- .../prescription_detail_page.dart | 14 +- .../prescription_reminder_view.dart | 2 +- .../prescriptions_list_page.dart | 4 +- .../profile_settings/profile_settings.dart | 52 ++- .../widgets/family_card_widget.dart | 12 +- .../radiology/radiology_orders_page.dart | 6 +- .../radiology/radiology_result_page.dart | 12 +- .../rate_appointment_clinic.dart | 14 +- .../rate_appointment_doctor.dart | 16 +- .../organ_selector_screen.dart | 14 +- .../possible_conditions_screen.dart | 6 +- .../symptoms_checker/risk_factors_screen.dart | 19 +- .../pages/age_selection_page.dart | 4 +- .../pages/gender_selection_page.dart | 8 +- .../pages/height_selection_page.dart | 4 +- .../pages/weight_selection_page.dart | 4 +- .../user_info_flow_manager.dart | 10 +- .../widgets/condition_card.dart | 6 +- .../widgets/selected_organs_section.dart | 6 +- 77 files changed, 887 insertions(+), 842 deletions(-) delete mode 100644 lib/presentation/monthly_reports/monthly_reports_page.dart delete mode 100644 lib/presentation/monthly_reports/user_agreement_page.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 19db9820..f49873a2 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1213,5 +1213,160 @@ "virtualTour": "جولة افتراضية", "carParking": "موقف السيارات", "latestNews": "آخر الأخبار", - "hmgContact": "اتصل بمجموعة الحبيب الطبية" + "hmgContact": "اتصل بمجموعة الحبيب الطبية", + "durationCannotExceed90": "لا يجوز أن تتجاوز المدة 90 دقيقة", + "unexpectedError": "حدث خطأ غير متوقع", + "gettingAmbulanceTransportOption": "جاري الحصول على خيارات نقل الإسعاف", + "fetchingAppointment": "جاري جلب الموعد", + "doYouWantToCancelTheRequest": "هل تريد إلغاء الطلب", + "cancellingRequest": "جاري إلغاء الطلب", + "fetchingTermsAndConditions": "جاري جلب الشروط والأحكام", + "selectLocationPrescriptionDelivery": "يرجى تحديد موقع توصيل الوصفة الطبية", + "noRadiologyOrders": "لم يتم العثور على أي طلبات تصوير شعاعي", + "ageIsRequired": "العمر مطلوب", + "invalidAge": "العمر غير صالح", + "ageMustBeBetween11And120": "يجب أن يكون العمر بين 11 و 120", + "heightIsRequired": "الطول مطلوب", + "invalidHeight": "الطول غير صالح", + "weightIsRequired": "الوزن مطلوب", + "invalidWeight": "الوزن غير صالح", + "timeToDrinkWater": "حان وقت شرب الماء! 💧", + "stayHydratedDrinkWater": "ابق رطبًا! اشرب {amount} مل من الماء.", + "visitPharmacyOnline": "زيارة الصيدلة على الانترنت", + "howAreYouFeelingToday": "كيف حالك اليوم؟", + "checkYourSymptomsWithScale": "تحقق من أعراضك باستخدام ذا المقياس", + "checkYourSymptoms": "تحقق من أعراضك", + "noUpcomingAppointmentPleaseBook": "ليس لديك أي مواعيد قادمة. يرجى حجز موعد", + "youHaveEROnlineCheckInRequest": "لديك طلب تسجيل وصول عبر الإنترنت للطوارئ", + "quickLinks": "روابط سريعة", + "viewMedicalFileLandingPage": "عرض الملف الطبي", + "immediateLiveCareRequest": "طلب LiveCare الفوري", + "yourTurnIsAfterPatients": "دورك بعد {count} مريض.", + "dontHaveHHCOrders": "ليس لديك أي أوامر رعاية صحية منزلية حتى الآن.", + "hhcOrders": "أوامر الرعاية الصحية المنزلية", + "requestedServices": "الخدمات المطلوبة", + "selectServices": "اختر الخدمات", + "selectedServices": "الخدمات المختارة", + "createNewRequest": "إنشاء طلب جديد", + "youHaveNoPendingRequests": "ليس لديك أي طلبات معلقة.", + "noInsuranceDataFound": "لم يتم العثور على بيانات التأمين...", + "noInsuranceUpdateRequest": "لم يتم العثور على أي طلبات لتحديث بيانات التأمين.", + "policyNumberInsurancePage": "الوثيقة: {number}", + "insuranceExpired": "التأمين منتهي الصلاحية", + "insuranceActive": "التأمين نشط", + "patientCardID": "رقم بطاقة المريض: {id}", + "noInsuranceApprovals": "لم تحصل على أي موافقات تأمينية حتى الآن.", + "noInsuranceWithHMG": "ليس لديك تأمين مسجل لدى مجموعة حبيب الطبية.", + "referenceRange": "النطاق المرجعي", + "downloadReport": "تنزيل التقرير", + "generatingReport": "جارٍ إنشاء التقرير، يرجى الانتظار...", + "noLabResults": "ليس لديك أي نتائج مختبرية حتى الآن.", + "labResultDetails": "تفاصيل نتائج المختبر", + "resultOf": "نتيجة", + "whatIsThisResult": "ما هي هذه النتيجة؟", + "lastTested": "آخر اختبار", + "byVisit": "حسب الزيارة", + "byTest": "حسب التحليل", + "results": "نتائج", + "viewResults": "عرض النتائج", + "rebook": "إعادة الحجز", + "noOphthalmologyAppointments": "لم يتم العثور على أي مواعيد في قسم طب العيون...", + "noVitalSignsRecordedYet": "لا توجد علامات حيوية مسجلة بعد", + "appointmentsAndVisits": "المواعيد والزيارات", + "labAndRadiology": "المختبر والأشعة", + "activeMedicationsAndPrescriptions": "الأدوية النشطة والوصفات الطبية", + "allPrescriptions": "جميع الوصفات", + "allMedications": "جميع الأدوية", + "youDontHaveAnyPrescriptionsYet": "ليس لديك أي وصفات طبية بعد.", + "youDontHaveAnyCompletedVisitsYet": "ليس لديك أي زيارات مكتملة بعد", + "others": "أخرى", + "allergyInfo": "معلومات الحساسية", + "vaccineInfo": "معلومات اللقاحات", + "updateInsuranceInfo": "تحديث التأمين", + "myInvoicesList": "قائمة فواتيري", + "ancillaryOrdersList": "قائمة الطلبات المساعدة", + "youDontHaveAnySickLeavesYet": "ليس لديك أي إجازات مرضية بعد.", + "medicalReports": "التقارير الطبية", + "sickLeaveReport": "تقرير الإجازة المرضية", + "weightTracker": "متتبع الوزن", + "askYourDoctor": "اسأل طبيبك", + "internetPairing": "الاقتران بالإنترنت", + "requested": "مطلوب", + "youDontHaveAnyMedicalReportsYet": "ليس لديك أي تقارير طبية بعد.", + "requestMedicalReport": "طلب تقرير طبي", + "youDoNotHaveAnyAppointmentsToRequestMedicalReport": "ليس لديك أي مواعيد لطلب تقرير طبي.", + "areYouSureYouWantToRequestMedicalReport": "هل أنت متأكد أنك تريد طلب تقرير طبي لهذا الموعد؟", + "yourMedicalReportRequestSubmittedSuccessfully": "تم إرسال طلب التقرير الطبي بنجاح.", + "monthlyHealthSummaryReportDisclaimer": "يعكس تقرير الملخص الصحي الشهري هذا المؤشرات الصحية ونتائج التحليل لأحدث الزيارات. يرجى ملاحظة أن هذا سيتم إرساله تلقائيًا من النظام ولا يعتبر تقريرًا رسميًا لذا لا ينبغي اتخاذ أي قرار طبي بناءً عليه", + "updatingMonthlyReportStatus": "جاري تحديث حالة التقرير الشهري...", + "monthlyReportStatusUpdatedSuccessfully": "تم تحديث حالة التقرير الشهري بنجاح", + "whoCanViewMyMedicalFile": "من يمكنه عرض ملفي الطبي؟", + "acceptedYourRequestToBeYourFamilyMember": "{status} طلبك لتكون فردًا من عائلتك", + "canViewYourFile": "يمكنه عرض ملفك", + "hasARequestPendingToBeYourFamilyMember": "لديه طلب {status} ليكون فردًا من عائلتك", + "wantsToAddYouAsTheirFamilyMember": "يريد إضافتك كفرد من عائلته", + "rejectedYourRequestToBeYourFamilyMember": "{status} طلبك لتكون فردًا من عائلتك", + "rejectedYourFamilyMemberRequest": "{status} طلب فرد عائلتك", + "notAvailable": "غير متاح", + "selectAProfile": "الرجاء تحديد ملف تعريف", + "switchFamilyFile": "قم بالتبديل من قائمة الملفات الطبية أدناه", + "medicalFiles": "الملفات الطبية", + "addANewFamilyMember": "إضافة فرد جديد من العائلة", + "viewInvoiceDetails": "عرض تفاصيل الفاتورة", + "outPatient": "مريض خارجي", + "invoiceDetails": "تفاصيل الفاتورة", + "sendingEmailPleaseWait": "جاري إرسال ال��ريد الإلكتروني، يرجى الانتظار...", + "emailSentSuccessfullyMessage": "تم إرسال البريد الإلكتروني بنجاح.", + "discount": "خصم", + "paid": "مدفوع", + "fetchingInvoiceDetails": "جارٍ جلب تفاصيل الفاتورة، يرجى الانتظار...", + "scanQRCode": "مسح رمز الاستجابة السريعة", + "parkingSlotDetails": "تفاصيل موقف السيارة", + "slotNumber": "رقم الموقف: {code}", + "basement": "الطابق: {description}", + "parkingDate": "التاريخ: {date}", + "parkedSince": "متوقف منذ: {time}", + "resetDirection": "إعادة تعيين الاتجاه", + "noPrescriptionOrdersYet": "ليس لديك أي طلبات وصفات طبية حتى الآن.", + "fetchingPrescriptionPDFPleaseWait": "جاري جلب ملف الوصفة الطبية، يرجى الانتظار...", + "ratingValue": "التقييم: {rating}", + "downloadPrescription": "تحميل الوصفة الطبية", + "fetchingPrescriptionDetails": "جاري جلب تفاصيل الوصفة الطبية...", + "switchBackFamilyFile": "العودة إلى ملف العائلة", + "profileAndSettings": "الملف الشخصي والإعدادات", + "quickActions": "إجراءات سريعة", + "notificationsSettings": "إعدادات الإشعارات", + "touchIDFaceIDServices": "خدمات Touch ID / Face ID", + "personalInformation": "المعلومات الشخصية", + "updateEmailAddress": "تحديث عنوان البريد الإلكتروني", + "helpAndSupport": "المساعدة والدعم", + "permissionsProfile": "الأذونات", + "privacyPolicy": "سياسة الخصوصية", + "deactivateAccount": "إلغاء تنشيط الحساب", + "ageYearsOld": "{age} {yearsOld}", + "youDontHaveRadiologyOrders": "ليس لديك أي نتائج للأشعة حتى الآن.", + "radiologyResult": "نتيجة الأشعة", + "viewRadiologyImage": "عرض صورة الأشعة", + "rateClinic": "تقييم العيادة", + "back": "رجوع", + "rateDoctor": "تقييم الطبيب", + "howWasYourLastVisitWithDoctor": "كيف كانت زيارتك الأخيرة مع الطبيب؟", + "dateOfBirthSymptoms": "ما هو تاريخ ميلادك؟", + "genderSymptoms": "ما هو جنسك؟", + "heightSymptoms": "كم طولك؟", + "weightSymptoms": "ما هو وزنك؟", + "femaleGender": "أنثى", + "previous": "سابق", + "selectedOrgans": "الهيئات المختارة", + "noOrgansSelected": "لم يتم تحديد أي أعضاء بعد", + "organSelector": "محدد الأعضاء", + "noPredictionsAvailable": "لا توجد تنبؤات متاحة", + "areYouSureYouWantToRestartOrganSelection": "هل أنت متأكد أنك تريد إعادة تشغيل اختيار الأعضاء؟", + "possibleConditions": "الحالات المحتملة", + "pleaseSelectAtLeastOneRiskBeforeProceeding": "يرجى اختيار عامل خطر واحد على الأقل قبل المتابعة", + "aboveYouSeeCommonRiskFactors": "أعلاه ترى عوامل الخطر الأكثر شيوعًا. على الرغم من أن /diagnosis قد تعيد أسئلة حول عوامل الخطر، ", + "readMore": "اقرأ المزيد", + "riskFactors": "عوامل الخطر", + "noRiskFactorsFound": "لم يتم العثور على عوامل خطر", + "basedOnYourSelectedSymptomsNoRiskFactors": "بناءً على الأعراض المحددة، لم يتم تحديد عوامل خطر إضافية." } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index ee489f5f..c4b6c191 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -889,7 +889,6 @@ "pickADate": "Pick a Date", "confirmingAppointmentPleaseWait": "Confirming Appointment, Please Wait...", "appointmentConfirmedSuccessfully": "Appointment Confirmed Successfully", - "appointmentPayment": "Appointment Payment", "checkingPaymentStatusPleaseWait": "Checking payment status, Please wait...", "paymentFailedPleaseTryAgain": "Payment Failed! Please try again.", @@ -1207,5 +1206,160 @@ "virtualTour": "Virtual Tour", "carParking": "Car Parking", "latestNews": "Latest News", - "hmgContact": "HMG Contact" -} \ No newline at end of file + "hmgContact": "HMG Contact", + "durationCannotExceed90": "Duration can not exceed 90 mins", + "unexpectedError": "Unexpected Error Occurred", + "gettingAmbulanceTransportOption": "Getting Ambulance Transport Option", + "fetchingAppointment": "Fetching Appointment", + "doYouWantToCancelTheRequest": "Do you want to cancel the request", + "cancellingRequest": "Cancelling request", + "fetchingTermsAndConditions": "Fetching Terms And Conditions", + "selectLocationPrescriptionDelivery": "Please select the location for prescription delivery", + "noRadiologyOrders": "No Radiology Orders Found", + "ageIsRequired": "Age is required", + "invalidAge": "Invalid age", + "ageMustBeBetween11And120": "Age must be between 11 and 120", + "heightIsRequired": "Height is required", + "invalidHeight": "Invalid height", + "weightIsRequired": "Weight is required", + "invalidWeight": "Invalid weight", + "timeToDrinkWater": "Time to Drink Water! 💧", + "stayHydratedDrinkWater": "Stay hydrated! Drink {amount}ml of water.", + "visitPharmacyOnline": "Visit Pharmacy Online", + "howAreYouFeelingToday": "How are you feeling today?", + "checkYourSymptomsWithScale": "Check your symptoms with this scale", + "checkYourSymptoms": "Check your symptoms", + "noUpcomingAppointmentPleaseBook": "You do not have any upcoming appointment. Please book an appointment", + "youHaveEROnlineCheckInRequest": "You have ER Online Check-In Request", + "quickLinks": "Quick Links", + "viewMedicalFileLandingPage": "View medical file", + "immediateLiveCareRequest": "Immediate LiveCare Request", + "yourTurnIsAfterPatients": "Your turn is after {count} patients.", + "dontHaveHHCOrders": "You don't have any Home Health Care orders yet.", + "hhcOrders": "HHC Orders", + "requestedServices": "Requested Services", + "selectServices": "Select Services", + "selectedServices": "Selected Services", + "createNewRequest": "Create new request", + "youHaveNoPendingRequests": "You have no pending requests.", + "noInsuranceDataFound": "No insurance data found...", + "noInsuranceUpdateRequest": "No insurance update requests found.", + "policyNumberInsurancePage": "Policy: {number}", + "insuranceExpired": "Insurance Expired", + "insuranceActive": "Insurance Active", + "patientCardID": "Patient Card ID: {id}", + "noInsuranceApprovals": "You don't have any insurance approvals yet.", + "noInsuranceWithHMG": "You don't have insurance registered with HMG.", + "referenceRange": "Reference Range", + "downloadReport": "Download report", + "generatingReport": "Generating report, Please wait...", + "noLabResults": "You don't have any lab results yet.", + "labResultDetails": "Lab Result Details", + "resultOf": "Result of", + "whatIsThisResult": "What is this result?", + "lastTested": "Last Tested", + "byVisit": "By Visit", + "byTest": "By Test", + "results": "results", + "viewResults": "View Results", + "rebook": "Rebook", + "noOphthalmologyAppointments": "No Ophthalmology appointments found...", + "noVitalSignsRecordedYet": "No vital signs recorded yet", + "appointmentsAndVisits": "Appointments & visits", + "labAndRadiology": "Lab & Radiology", + "activeMedicationsAndPrescriptions": "Active Medications & Prescriptions", + "allPrescriptions": "All Prescriptions", + "allMedications": "All Medications", + "youDontHaveAnyPrescriptionsYet": "You don't have any prescriptions yet.", + "youDontHaveAnyCompletedVisitsYet": "You don't have any completed visits yet", + "others": "Others", + "allergyInfo": "Allergy Info", + "vaccineInfo": "Vaccine Info", + "updateInsuranceInfo": "Update Insurance", + "myInvoicesList": "My Invoices List", + "ancillaryOrdersList": "Ancillary Orders List", + "youDontHaveAnySickLeavesYet": "You don't have any sick leaves yet.", + "medicalReports": "Medical Reports", + "sickLeaveReport": "Sick Leave Report", + "weightTracker": "Weight Tracker", + "askYourDoctor": "Ask Your Doctor", + "internetPairing": "Internet Pairing", + "requested": "Requested", + "youDontHaveAnyMedicalReportsYet": "You don't have any medical reports yet.", + "requestMedicalReport": "Request medical report", + "youDoNotHaveAnyAppointmentsToRequestMedicalReport": "You do not have any appointments to request a medical report.", + "areYouSureYouWantToRequestMedicalReport": "Are you sure you want to request a medical report for this appointment?", + "yourMedicalReportRequestSubmittedSuccessfully": "Your medical report request has been successfully submitted.", + "monthlyHealthSummaryReportDisclaimer": "This monthly health summary report reflects the health indicators and analysis results of the latest visits. Please note that this will be sent automatically from the system and it's not considered as a official report so no medical decision should be taken based on it", + "updatingMonthlyReportStatus": "Updating Monthly Report Status...", + "monthlyReportStatusUpdatedSuccessfully": "Monthly Report Status Updated Successfully", + "whoCanViewMyMedicalFile": "Who can view my medical file?", + "acceptedYourRequestToBeYourFamilyMember": "{status} your request to be your family member", + "canViewYourFile": "can view your file", + "hasARequestPendingToBeYourFamilyMember": "has a request {status} to be your family member", + "wantsToAddYouAsTheirFamilyMember": "wants to add you as their family member", + "rejectedYourRequestToBeYourFamilyMember": "{status} your request to be your family member", + "rejectedYourFamilyMemberRequest": "{status} your family member request", + "notAvailable": "N/A", + "selectAProfile": "Please select a profile", + "switchFamilyFile": "Switch from the below list of medical file", + "medicalFiles": "Medical Files", + "addANewFamilyMember": "Add a new family member", + "viewInvoiceDetails": "View invoice details", + "outPatient": "OutPatient", + "invoiceDetails": "Invoice Details", + "sendingEmailPleaseWait": "Sending email, Please wait...", + "emailSentSuccessfullyMessage": "Email sent successfully.", + "discount": "Discount", + "paid": "Paid", + "fetchingInvoiceDetails": "Fetching invoice details, Please wait...", + "scanQRCode": "Scan QR code", + "parkingSlotDetails": "Parking Slot Details", + "slotNumber": "Slot: {code}", + "basement": "Basement: {description}", + "parkingDate": "Date: {date}", + "parkedSince": "Parked Since: {time}", + "resetDirection": "Reset Direction", + "noPrescriptionOrdersYet": "You don't have any prescription orders yet.", + "fetchingPrescriptionPDFPleaseWait": "Fetching prescription PDF, Please wait...", + "ratingValue": "Rating: {rating}", + "downloadPrescription": "Download Prescription", + "fetchingPrescriptionDetails": "Fetching prescription details...", + "switchBackFamilyFile": "Switch Back To Family File", + "profileAndSettings": "Profile & Settings", + "quickActions": "Quick Actions", + "notificationsSettings": "Notifications Settings", + "touchIDFaceIDServices": "Touch ID / Face ID Services", + "personalInformation": "Personal Information", + "updateEmailAddress": "Update Email Address", + "helpAndSupport": "Help & Support", + "permissionsProfile": "Permissions", + "privacyPolicy": "Privacy Policy", + "deactivateAccount": "Deactivate account", + "ageYearsOld": "{age} {yearsOld}", + "youDontHaveRadiologyOrders": "You don't have any radiology results yet.", + "radiologyResult": "Radiology Result", + "viewRadiologyImage": "View Radiology Image", + "rateClinic": "Rate Clinic", + "back": "Back", + "rateDoctor": "Rate Doctor", + "howWasYourLastVisitWithDoctor": "How was your last visit with doctor?", + "dateOfBirthSymptoms": "What is your Date of Birth?", + "genderSymptoms": "What is your gender?", + "heightSymptoms": "How tall are you?", + "weightSymptoms": "What is your weight?", + "femaleGender": "Female", + "previous": "Previous", + "selectedOrgans": "Selected Organs", + "noOrgansSelected": "No organs selected yet", + "organSelector": "Organ Selector", + "noPredictionsAvailable": "No Predictions available", + "areYouSureYouWantToRestartOrganSelection": "Are you sure you want to restart the organ selection?", + "possibleConditions": "Possible Conditions", + "pleaseSelectAtLeastOneRiskBeforeProceeding": "Please select at least one risk before proceeding", + "aboveYouSeeCommonRiskFactors": "Above you see the most common risk factors. Although /diagnosis may return questions about risk factors, ", + "readMore": "Read more", + "riskFactors": "Risk Factors", + "noRiskFactorsFound": "No risk factors found", + "basedOnYourSelectedSymptomsNoRiskFactors": "Based on your selected symptoms, no additional risk factors were identified." +} diff --git a/lib/core/location_util.dart b/lib/core/location_util.dart index 9dcdbb5d..cf26d24e 100644 --- a/lib/core/location_util.dart +++ b/lib/core/location_util.dart @@ -104,7 +104,7 @@ class LocationUtils { title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, child: Utils.getWarningWidget( - loadingText: "Please grant location permission from app settings to see better results".needTranslation, + loadingText: "Please grant location permission from app settings to see better results", isShowActionButtons: true, onCancelTap: () { navigationService.pop(); @@ -265,7 +265,7 @@ class LocationUtils { title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, child: Utils.getWarningWidget( - loadingText: "Please grant location permission from app settings to see better results".needTranslation, + loadingText: "Please grant location permission from app settings to see better results", isShowActionButtons: true, onCancelTap: () { navigationService.pop(); diff --git a/lib/core/utils/calendar_utils.dart b/lib/core/utils/calendar_utils.dart index 8c0db187..8b21111f 100644 --- a/lib/core/utils/calendar_utils.dart +++ b/lib/core/utils/calendar_utils.dart @@ -215,14 +215,14 @@ showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorNa Future _showReminderBottomSheet(BuildContext providedContext, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, {required Function onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool? isMultiAllowed}) async { - showCommonBottomSheetWithoutHeight(providedContext, title: "Set the timer of reminder".needTranslation, child: PrescriptionReminderView( + showCommonBottomSheetWithoutHeight(providedContext, title: "Set the timer of reminder", child: PrescriptionReminderView( setReminder: (int value) async { if (!isMultiAllowed!) { if (onMultiDateSuccess == null) { CalendarUtils calendarUtils = await CalendarUtils.getInstance(); await calendarUtils.createOrUpdateEvent( - title: title ?? "You have appointment with Dr. ".needTranslation + doctorName, - description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, + title: title ?? "You have appointment with Dr. $doctorName", + description: description ?? "At $appoDateFormatted $appoTimeFormatted", scheduleDateTime: dateTime, eventId: eventId, location: ''); diff --git a/lib/features/blood_donation/widgets/hospital_selection.dart b/lib/features/blood_donation/widgets/hospital_selection.dart index 288ac34a..c6065ae9 100644 --- a/lib/features/blood_donation/widgets/hospital_selection.dart +++ b/lib/features/blood_donation/widgets/hospital_selection.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/models/blood_group_hospitals_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; import 'package:provider/provider.dart'; @@ -23,14 +25,7 @@ class HospitalBottomSheetBodySelection extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "Please select the hospital you want to make an appointment.".needTranslation, - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w500, - color: AppColors.greyTextColor, - ), - ), + LocaleKeys.selectHospital.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), SizedBox(height: 16.h), SizedBox( height: MediaQuery.sizeOf(context).height * .4, diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index 3f5517a0..664f2440 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -473,7 +473,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError!("No doctors found for the search criteria".needTranslation); + onError!(LocaleKeys.noDoctorFound.tr()); }, (apiResponse) { if (apiResponse.messageStatus == 2) { @@ -501,7 +501,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { isDoctorsListLoading = false; - if (onError != null) onError("No doctors found for the search criteria".needTranslation); + if (onError != null) onError(LocaleKeys.noDoctorFound.tr()); notifyListeners(); }, @@ -533,7 +533,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { isDoctorsListLoading = false; - if (onError != null) onError("No doctors found for the search criteria".needTranslation); + if (onError != null) onError(LocaleKeys.noDoctorFound.tr()); notifyListeners(); }, @@ -569,7 +569,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError?.call("No doctors found for the search criteria".needTranslation); + onError?.call(LocaleKeys.noDoctorFound.tr()); }, (apiResponse) async { if (apiResponse.messageStatus == 2) { @@ -784,7 +784,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { ); showCommonBottomSheet(navigationService.navigatorKey.currentContext!, - child: Utils.getLoadingWidget(loadingText: "Cancelling your previous appointment....".needTranslation), + child: Utils.getLoadingWidget(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr()), callBackFunc: (str) {}, title: "", height: ResponsiveExtension.screenHeight * 0.3, @@ -794,7 +794,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { navigationService.pop(); Future.delayed(Duration(milliseconds: 50)).then((value) async {}); - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: "Booking your appointment...".needTranslation); + LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: LocaleKeys.bookingYourAppointment.tr()); await insertSpecificAppointment( onError: (err) {}, onSuccess: (apiResp) async { @@ -880,7 +880,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { ); showCommonBottomSheet(navigationService.navigatorKey.currentContext!, - child: Utils.getLoadingWidget(loadingText: "Cancelling your previous appointment....".needTranslation), + child: Utils.getLoadingWidget(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr()), callBackFunc: (str) {}, title: "", height: ResponsiveExtension.screenHeight * 0.3, @@ -890,7 +890,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { navigationService.pop(); Future.delayed(Duration(milliseconds: 50)).then((value) async {}); - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: "Booking your appointment...".needTranslation); + LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: LocaleKeys.bookingYourAppointment.tr()); await insertSpecificAppointment( onError: (err) {}, onSuccess: (apiResp) async { @@ -1204,7 +1204,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError!("No doctors found for the search criteria...".needTranslation); + onError!(LocaleKeys.noDoctorFound.tr()); }, (apiResponse) { if (apiResponse.messageStatus == 2) { @@ -1291,18 +1291,18 @@ class BookAppointmentsViewModel extends ChangeNotifier { notifyListeners(); } else { - if (this.duration == 90) { - dialogService.showErrorBottomSheet( - message: "Duration can not exceed 90 min".needTranslation, - ); - return; - } + // if (this.duration == 90) { + // dialogService.showErrorBottomSheet( + // message: "Duration can not exceed 90 min".needTranslation, + // ); + // return; + // } selectedBodyPartList.add(part); var duration = getDuration(); if (duration > 90) { selectedBodyPartList.remove(part); dialogService.showErrorBottomSheet( - message: "Duration Exceeds 90 min".needTranslation, + message: LocaleKeys.durationCannotExceed90.tr(), ); return; } @@ -1336,7 +1336,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError!("Invalid verification point scanned.".needTranslation); + onError!("Invalid verification point scanned."); }, (apiResponse) { // if (apiResponse.data['returnValue'] == 0) { @@ -1410,7 +1410,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { ); } else if (apiResponse.messageStatus == 1) { if (apiResponse.data == null || apiResponse.data!.isEmpty) { - onError!("Unexpected Error Occurred".needTranslation); + onError!(LocaleKeys.unexpectedError.tr()); return; } notifyListeners(); diff --git a/lib/features/emergency_services/emergency_services_view_model.dart b/lib/features/emergency_services/emergency_services_view_model.dart index 400eb047..ec211793 100644 --- a/lib/features/emergency_services/emergency_services_view_model.dart +++ b/lib/features/emergency_services/emergency_services_view_model.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart' as GMSMapServices; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -32,6 +33,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/facility_sel import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/rrt_request_type_select.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/terms_and_condition.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/call_ambulance_page.dart'; @@ -152,7 +154,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { print("the app state is ${appState.isAuthenticated}"); if (!appState.isAuthenticated) { dialogService.showErrorBottomSheet( - message: "You Need To Login First To Continue".needTranslation, + message: LocaleKeys.loginToUseService.tr(), onOkPressed: () { navServices.pop(); getIt().onLoginPressed(); @@ -196,7 +198,6 @@ class EmergencyServicesViewModel extends ChangeNotifier { } void filterErList(String query) { - print("the query is $query"); if (query.isEmpty) { nearestERFilteredList = nearestERList; } else { @@ -277,7 +278,6 @@ class EmergencyServicesViewModel extends ChangeNotifier { flushData(); selectedFacility = FacilitySelection.ALL; - print("the app state is ${appState.isAuthenticated}"); if (appState.isAuthenticated) { locationUtils!.getLocation( isShowConfirmDialog: true, @@ -289,7 +289,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { }); } else { dialogService.showErrorBottomSheet( - message: "You Need To Login First To Continue".needTranslation, + message: LocaleKeys.loginToUseService.tr(), onOkPressed: () { navServices.pop(); navServices.pushAndReplace(AppRoutes.loginScreen); @@ -311,7 +311,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { void updateBottomSheetState(BottomSheetType sheetType) { if (sheetType == BottomSheetType.EXPANDED && selectedHospital == null) { - dialogService.showErrorBottomSheet(message: "Kindly Select Hospital".needTranslation); + dialogService.showErrorBottomSheet(message: LocaleKeys.selectHospital.tr()); return; } bottomSheetType = sheetType; @@ -481,21 +481,18 @@ class EmergencyServicesViewModel extends ChangeNotifier { Future getTransportationOption() async { //handle the cache if the data is present then dont fetch it in the authenticated lifecycle - - print("the app state is ${appState.isAuthenticated}"); if (appState.isAuthenticated == false) { dialogService.showErrorBottomSheet( - message: "You Need To Login First To Continue".needTranslation, + message: LocaleKeys.loginToUseService.tr(), onOkPressed: () { navServices.pop(); - print("inside the ok button"); getIt().onLoginPressed(); }); return; } int? id = appState.getAuthenticatedUser()?.patientId; - LoaderBottomSheet.showLoader(loadingText: "Getting Ambulance Transport Option".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.gettingAmbulanceTransportOption.tr()); notifyListeners(); var response = await emergencyServicesRepo.getTransportationMethods(id: id); @@ -514,7 +511,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { Future getTransportationMethods() async { int? id = appState.getAuthenticatedUser()?.patientId; - LoaderBottomSheet.showLoader(loadingText: "Getting Ambulance Transport Option".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.gettingAmbulanceTransportOption.tr()); notifyListeners(); var response = await emergencyServicesRepo.getTransportationMethods(id: id); @@ -703,7 +700,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { } Future getAppointments() async { - LoaderBottomSheet.showLoader(loadingText: "Fetching Appointment".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointment.tr()); var result = await appointmentRepo.getPatientAppointments(isActiveAppointment: true, isArrivedAppointments: false); LoaderBottomSheet.hideLoader(); @@ -860,10 +857,10 @@ class EmergencyServicesViewModel extends ChangeNotifier { Future cancelOrder(AmbulanceRequestOrdersModel? order, {bool shouldPop = false}) async { dialogService.showCommonBottomSheetWithoutH( - message: "Do you want to cancel the request".needTranslation, + message: LocaleKeys.doYouWantToCancelTheRequest.tr(), onOkPressed: () async { navServices.pop(); - LoaderBottomSheet.showLoader(loadingText: "Cancelling request".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingRequest.tr()); var response = await emergencyServicesRepo.cancelOrder(order?.iD, appState.getAuthenticatedUser()?.patientId ?? 0); LoaderBottomSheet.hideLoader(); response.fold((failure) => errorHandlerService.handleError(failure: failure), (success) { @@ -968,10 +965,10 @@ class EmergencyServicesViewModel extends ChangeNotifier { FutureOr cancelRRTOrder(int? orderID, {bool shouldPop = false}) async { dialogService.showCommonBottomSheetWithoutH( - message: "Do you want to cancel the request".needTranslation, + message: LocaleKeys.doYouWantToCancelTheRequest.tr(), onOkPressed: () async { navServices.pop(); - LoaderBottomSheet.showLoader(loadingText: "Cancelling request".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingRequest.tr()); var response = await emergencyServicesRepo.cancelRRTOrder(orderID); LoaderBottomSheet.hideLoader(); response.fold((failure) => errorHandlerService.handleError(failure: failure), (success) { @@ -1001,11 +998,10 @@ class EmergencyServicesViewModel extends ChangeNotifier { } void openRRT() { - print("the app state is ${appState.isAuthenticated}"); if (appState.isAuthenticated) { if (agreedToTermsAndCondition == false) { dialogService.showErrorBottomSheet( - message: "You Need To Agree To Terms And Conditions".needTranslation, + message: LocaleKeys.pleaseAcceptTermsConditions.tr(), onOkPressed: () { if (navServices.context == null) return; showCommonBottomSheetWithoutHeight( @@ -1042,9 +1038,9 @@ class EmergencyServicesViewModel extends ChangeNotifier { bool result = await navServices.push( CustomPageRoute( page: MapUtilityScreen( - confirmButtonString: "Submit Request".needTranslation, - titleString: "Select Location".needTranslation, - subTitleString: "Please select the location".needTranslation, + confirmButtonString: LocaleKeys.submitRequest.tr(), + titleString: LocaleKeys.selectLocation.tr(), + subTitleString: LocaleKeys.pleaseSelectTheLocation.tr(), isGmsAvailable: appState.isGMSAvailable, ), direction: AxisDirection.down), @@ -1059,7 +1055,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { }); } else { dialogService.showErrorBottomSheet( - message: "You Need To Login First To Continue".needTranslation, + message: LocaleKeys.loginToUseService.tr(), onOkPressed: () { navServices.pop(); getIt().onLoginPressed(); @@ -1072,12 +1068,11 @@ class EmergencyServicesViewModel extends ChangeNotifier { } FutureOr getTermsAndConditions() async { - LoaderBottomSheet.showLoader(loadingText: "Fetching Terms And Conditions".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingTermsAndConditions.tr()); var response = await emergencyServicesRepo.getTermsAndCondition(); LoaderBottomSheet.hideLoader(); response.fold((failure) => errorHandlerService.handleError(failure: failure), (success) { termsAndConditions = success.data; - print("the response terms are $termsAndConditions"); notifyListeners(); navServices.push( CustomPageRoute(page: TermsAndCondition(termsAndCondition: success.data ?? ""), direction: AxisDirection.down), diff --git a/lib/features/my_appointments/utils/appointment_type.dart b/lib/features/my_appointments/utils/appointment_type.dart index abc23dc0..aa2ef383 100644 --- a/lib/features/my_appointments/utils/appointment_type.dart +++ b/lib/features/my_appointments/utils/appointment_type.dart @@ -84,7 +84,7 @@ class AppointmentType { static String getNextActionText(nextAction) { switch (nextAction) { case 0: - return "No Action".needTranslation; + return LocaleKeys.upcomingNoAction.tr(); case 10: return LocaleKeys.confirm.tr(); case 15: @@ -96,7 +96,7 @@ class AppointmentType { case 90: return LocaleKeys.checkinOption.tr(); default: - return "No Action".needTranslation; + return LocaleKeys.upcomingNoAction.tr(); } } diff --git a/lib/features/prescriptions/prescriptions_view_model.dart b/lib/features/prescriptions/prescriptions_view_model.dart index ff864061..3f9af346 100644 --- a/lib/features/prescriptions/prescriptions_view_model.dart +++ b/lib/features/prescriptions/prescriptions_view_model.dart @@ -245,8 +245,8 @@ class PrescriptionsViewModel extends ChangeNotifier { CustomPageRoute( page: MapUtilityScreen( confirmButtonString: LocaleKeys.next.tr(), - titleString: "Select Location".needTranslation, - subTitleString: "Please select the location for prescription delivery".needTranslation, + titleString: LocaleKeys.selectLocation.tr(), + subTitleString: LocaleKeys.selectLocationPrescriptionDelivery.tr(), isGmsAvailable: getIt.get().isGMSAvailable, ), direction: AxisDirection.down), diff --git a/lib/features/radiology/radiology_view_model.dart b/lib/features/radiology/radiology_view_model.dart index 986945e6..46a27bfc 100644 --- a/lib/features/radiology/radiology_view_model.dart +++ b/lib/features/radiology/radiology_view_model.dart @@ -1,7 +1,9 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/authenticated_user_resp_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/radiology/radiology_result_page.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; @@ -97,7 +99,7 @@ class RadiologyViewModel extends ChangeNotifier { ); } else { if (onError != null) { - onError("No Radiology Orders Found".needTranslation); + onError(LocaleKeys.noRadiologyOrders.tr()); } } } diff --git a/lib/features/water_monitor/water_monitor_view_model.dart b/lib/features/water_monitor/water_monitor_view_model.dart index d82712a1..1ef2ef65 100644 --- a/lib/features/water_monitor/water_monitor_view_model.dart +++ b/lib/features/water_monitor/water_monitor_view_model.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -14,6 +15,7 @@ import 'package:hmg_patient_app_new/features/water_monitor/models/update_user_de import 'package:hmg_patient_app_new/features/water_monitor/models/user_progress_models.dart'; import 'package:hmg_patient_app_new/features/water_monitor/models/water_cup_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; @@ -598,36 +600,36 @@ class WaterMonitorViewModel extends ChangeNotifier { String? validateAge() { if (ageController.text.trim().isEmpty) { - return 'Age is required'.needTranslation; + return LocaleKeys.ageIsRequired.tr(); } final age = int.tryParse(ageController.text.trim()); if (age == null) { - return 'Invalid age'.needTranslation; + return LocaleKeys.invalidAge.tr(); } if (age < 11 || age > 120) { - return 'Age must be between 11 and 120'.needTranslation; + return LocaleKeys.ageMustBeBetween11And120.tr(); } return null; } String? validateHeight() { if (heightController.text.trim().isEmpty) { - return 'Height is required'.needTranslation; + return LocaleKeys.heightIsRequired.tr(); } final height = double.tryParse(heightController.text.trim()); if (height == null || height <= 0) { - return 'Invalid height'.needTranslation; + return LocaleKeys.invalidHeight.tr(); } return null; } String? validateWeight() { if (weightController.text.trim().isEmpty) { - return 'Weight is required'.needTranslation; + return LocaleKeys.weightIsRequired.tr(); } final weight = double.tryParse(weightController.text.trim()); if (weight == null || weight <= 0) { - return 'Invalid weight'.needTranslation; + return LocaleKeys.invalidWeight.tr(); } return null; } @@ -1212,8 +1214,8 @@ class WaterMonitorViewModel extends ChangeNotifier { // Schedule water reminders await notificationService.scheduleWaterReminders( reminderTimes: reminderTimes, - title: 'Time to Drink Water! 💧'.needTranslation, - body: 'Stay hydrated! Drink ${selectedCupCapacityMl}ml of water.'.needTranslation, + title: LocaleKeys.timeToDrinkWater.tr(), + body: LocaleKeys.stayHydratedDrinkWater.tr(namedArgs: {'amount': selectedCupCapacityMl.toString()}), ); // Save reminder enabled state to cache @@ -1334,8 +1336,8 @@ class WaterMonitorViewModel extends ChangeNotifier { await notificationService.scheduleNotification( id: 9999, // Use a unique ID for test notifications - title: 'Time to Drink Water! 💧'.needTranslation, - body: 'Stay hydrated! Drink ${selectedCupCapacityMl}ml of water.'.needTranslation, + title: LocaleKeys.timeToDrinkWater.tr(), + body: LocaleKeys.stayHydratedDrinkWater.tr(namedArgs: {'amount': selectedCupCapacityMl.toString()}), scheduledDate: scheduledTime, payload: 'test_notification', ); diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 689587c4..a3989ad0 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1208,5 +1208,160 @@ abstract class LocaleKeys { static const carParking = 'carParking'; static const latestNews = 'latestNews'; static const hmgContact = 'hmgContact'; + static const durationCannotExceed90 = 'durationCannotExceed90'; + static const unexpectedError = 'unexpectedError'; + static const gettingAmbulanceTransportOption = 'gettingAmbulanceTransportOption'; + static const fetchingAppointment = 'fetchingAppointment'; + static const doYouWantToCancelTheRequest = 'doYouWantToCancelTheRequest'; + static const cancellingRequest = 'cancellingRequest'; + static const fetchingTermsAndConditions = 'fetchingTermsAndConditions'; + static const selectLocationPrescriptionDelivery = 'selectLocationPrescriptionDelivery'; + static const noRadiologyOrders = 'noRadiologyOrders'; + static const ageIsRequired = 'ageIsRequired'; + static const invalidAge = 'invalidAge'; + static const ageMustBeBetween11And120 = 'ageMustBeBetween11And120'; + static const heightIsRequired = 'heightIsRequired'; + static const invalidHeight = 'invalidHeight'; + static const weightIsRequired = 'weightIsRequired'; + static const invalidWeight = 'invalidWeight'; + static const timeToDrinkWater = 'timeToDrinkWater'; + static const stayHydratedDrinkWater = 'stayHydratedDrinkWater'; + static const visitPharmacyOnline = 'visitPharmacyOnline'; + static const howAreYouFeelingToday = 'howAreYouFeelingToday'; + static const checkYourSymptomsWithScale = 'checkYourSymptomsWithScale'; + static const checkYourSymptoms = 'checkYourSymptoms'; + static const noUpcomingAppointmentPleaseBook = 'noUpcomingAppointmentPleaseBook'; + static const youHaveEROnlineCheckInRequest = 'youHaveEROnlineCheckInRequest'; + static const quickLinks = 'quickLinks'; + static const viewMedicalFileLandingPage = 'viewMedicalFileLandingPage'; + static const immediateLiveCareRequest = 'immediateLiveCareRequest'; + static const yourTurnIsAfterPatients = 'yourTurnIsAfterPatients'; + static const dontHaveHHCOrders = 'dontHaveHHCOrders'; + static const hhcOrders = 'hhcOrders'; + static const requestedServices = 'requestedServices'; + static const selectServices = 'selectServices'; + static const selectedServices = 'selectedServices'; + static const createNewRequest = 'createNewRequest'; + static const youHaveNoPendingRequests = 'youHaveNoPendingRequests'; + static const noInsuranceDataFound = 'noInsuranceDataFound'; + static const noInsuranceUpdateRequest = 'noInsuranceUpdateRequest'; + static const policyNumberInsurancePage = 'policyNumberInsurancePage'; + static const insuranceExpired = 'insuranceExpired'; + static const insuranceActive = 'insuranceActive'; + static const patientCardID = 'patientCardID'; + static const noInsuranceApprovals = 'noInsuranceApprovals'; + static const noInsuranceWithHMG = 'noInsuranceWithHMG'; + static const referenceRange = 'referenceRange'; + static const downloadReport = 'downloadReport'; + static const generatingReport = 'generatingReport'; + static const noLabResults = 'noLabResults'; + static const labResultDetails = 'labResultDetails'; + static const resultOf = 'resultOf'; + static const whatIsThisResult = 'whatIsThisResult'; + static const lastTested = 'lastTested'; + static const byVisit = 'byVisit'; + static const byTest = 'byTest'; + static const results = 'results'; + static const viewResults = 'viewResults'; + static const rebook = 'rebook'; + static const noOphthalmologyAppointments = 'noOphthalmologyAppointments'; + static const noVitalSignsRecordedYet = 'noVitalSignsRecordedYet'; + static const appointmentsAndVisits = 'appointmentsAndVisits'; + static const labAndRadiology = 'labAndRadiology'; + static const activeMedicationsAndPrescriptions = 'activeMedicationsAndPrescriptions'; + static const allPrescriptions = 'allPrescriptions'; + static const allMedications = 'allMedications'; + static const youDontHaveAnyPrescriptionsYet = 'youDontHaveAnyPrescriptionsYet'; + static const youDontHaveAnyCompletedVisitsYet = 'youDontHaveAnyCompletedVisitsYet'; + static const others = 'others'; + static const allergyInfo = 'allergyInfo'; + static const vaccineInfo = 'vaccineInfo'; + static const updateInsuranceInfo = 'updateInsuranceInfo'; + static const myInvoicesList = 'myInvoicesList'; + static const ancillaryOrdersList = 'ancillaryOrdersList'; + static const youDontHaveAnySickLeavesYet = 'youDontHaveAnySickLeavesYet'; + static const medicalReports = 'medicalReports'; + static const sickLeaveReport = 'sickLeaveReport'; + static const weightTracker = 'weightTracker'; + static const askYourDoctor = 'askYourDoctor'; + static const internetPairing = 'internetPairing'; + static const requested = 'requested'; + static const youDontHaveAnyMedicalReportsYet = 'youDontHaveAnyMedicalReportsYet'; + static const requestMedicalReport = 'requestMedicalReport'; + static const youDoNotHaveAnyAppointmentsToRequestMedicalReport = 'youDoNotHaveAnyAppointmentsToRequestMedicalReport'; + static const areYouSureYouWantToRequestMedicalReport = 'areYouSureYouWantToRequestMedicalReport'; + static const yourMedicalReportRequestSubmittedSuccessfully = 'yourMedicalReportRequestSubmittedSuccessfully'; + static const monthlyHealthSummaryReportDisclaimer = 'monthlyHealthSummaryReportDisclaimer'; + static const updatingMonthlyReportStatus = 'updatingMonthlyReportStatus'; + static const monthlyReportStatusUpdatedSuccessfully = 'monthlyReportStatusUpdatedSuccessfully'; + static const whoCanViewMyMedicalFile = 'whoCanViewMyMedicalFile'; + static const acceptedYourRequestToBeYourFamilyMember = 'acceptedYourRequestToBeYourFamilyMember'; + static const canViewYourFile = 'canViewYourFile'; + static const hasARequestPendingToBeYourFamilyMember = 'hasARequestPendingToBeYourFamilyMember'; + static const wantsToAddYouAsTheirFamilyMember = 'wantsToAddYouAsTheirFamilyMember'; + static const rejectedYourRequestToBeYourFamilyMember = 'rejectedYourRequestToBeYourFamilyMember'; + static const rejectedYourFamilyMemberRequest = 'rejectedYourFamilyMemberRequest'; + static const notAvailable = 'notAvailable'; + static const selectAProfile = 'selectAProfile'; + static const switchFamilyFile = 'switchFamilyFile'; + static const medicalFiles = 'medicalFiles'; + static const addANewFamilyMember = 'addANewFamilyMember'; + static const viewInvoiceDetails = 'viewInvoiceDetails'; + static const outPatient = 'outPatient'; + static const invoiceDetails = 'invoiceDetails'; + static const sendingEmailPleaseWait = 'sendingEmailPleaseWait'; + static const emailSentSuccessfullyMessage = 'emailSentSuccessfullyMessage'; + static const discount = 'discount'; + static const paid = 'paid'; + static const fetchingInvoiceDetails = 'fetchingInvoiceDetails'; + static const scanQRCode = 'scanQRCode'; + static const parkingSlotDetails = 'parkingSlotDetails'; + static const slotNumber = 'slotNumber'; + static const basement = 'basement'; + static const parkingDate = 'parkingDate'; + static const parkedSince = 'parkedSince'; + static const resetDirection = 'resetDirection'; + static const noPrescriptionOrdersYet = 'noPrescriptionOrdersYet'; + static const fetchingPrescriptionPDFPleaseWait = 'fetchingPrescriptionPDFPleaseWait'; + static const ratingValue = 'ratingValue'; + static const downloadPrescription = 'downloadPrescription'; + static const fetchingPrescriptionDetails = 'fetchingPrescriptionDetails'; + static const switchBackFamilyFile = 'switchBackFamilyFile'; + static const profileAndSettings = 'profileAndSettings'; + static const quickActions = 'quickActions'; + static const notificationsSettings = 'notificationsSettings'; + static const touchIDFaceIDServices = 'touchIDFaceIDServices'; + static const personalInformation = 'personalInformation'; + static const updateEmailAddress = 'updateEmailAddress'; + static const helpAndSupport = 'helpAndSupport'; + static const permissionsProfile = 'permissionsProfile'; + static const privacyPolicy = 'privacyPolicy'; + static const deactivateAccount = 'deactivateAccount'; + static const ageYearsOld = 'ageYearsOld'; + static const youDontHaveRadiologyOrders = 'youDontHaveRadiologyOrders'; + static const radiologyResult = 'radiologyResult'; + static const viewRadiologyImage = 'viewRadiologyImage'; + static const rateClinic = 'rateClinic'; + static const back = 'back'; + static const rateDoctor = 'rateDoctor'; + static const howWasYourLastVisitWithDoctor = 'howWasYourLastVisitWithDoctor'; + static const dateOfBirthSymptoms = 'dateOfBirthSymptoms'; + static const genderSymptoms = 'genderSymptoms'; + static const heightSymptoms = 'heightSymptoms'; + static const weightSymptoms = 'weightSymptoms'; + static const femaleGender = 'femaleGender'; + static const previous = 'previous'; + static const selectedOrgans = 'selectedOrgans'; + static const noOrgansSelected = 'noOrgansSelected'; + static const organSelector = 'organSelector'; + static const noPredictionsAvailable = 'noPredictionsAvailable'; + static const areYouSureYouWantToRestartOrganSelection = 'areYouSureYouWantToRestartOrganSelection'; + static const possibleConditions = 'possibleConditions'; + static const pleaseSelectAtLeastOneRiskBeforeProceeding = 'pleaseSelectAtLeastOneRiskBeforeProceeding'; + static const aboveYouSeeCommonRiskFactors = 'aboveYouSeeCommonRiskFactors'; + static const readMore = 'readMore'; + static const riskFactors = 'riskFactors'; + static const noRiskFactorsFound = 'noRiskFactorsFound'; + static const basedOnYourSelectedSymptomsNoRiskFactors = 'basedOnYourSelectedSymptomsNoRiskFactors'; } diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index f336c5bf..fc400c44 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -275,11 +275,11 @@ class _LandingPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "How are you feeling today?".needTranslation.toText14(isBold: true), - "Check your symptoms with this scale".needTranslation.toText12(fontWeight: FontWeight.w500), + LocaleKeys.howAreYouFeelingToday.tr(context: context).toText14(isBold: true), + LocaleKeys.checkYourSymptomsWithScale.tr(context: context).toText12(fontWeight: FontWeight.w500), SizedBox(height: 14.h), CustomButton( - text: "Check your symptoms".needTranslation, + text: LocaleKeys.checkYourSymptoms.tr(context: context), onPressed: () async { context.navigateWithName(AppRoutes.userInfoSelection); }, @@ -416,7 +416,7 @@ class _LandingPageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), SizedBox(height: 12.h), - "You do not have any upcoming appointment. Please book an appointment".needTranslation.toText12(isCenter: true), + LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), SizedBox(height: 12.h), CustomButton( text: LocaleKeys.bookAppo.tr(context: context), @@ -476,7 +476,7 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "You have ER Online Check-In Request".needTranslation.toText12(isBold: true), + LocaleKeys.youHaveEROnlineCheckInRequest.tr(context: context).toText12(isBold: true), Utils.buildSvgWithAssets( icon: AppAssets.forward_arrow_icon_small, iconColor: AppColors.blackColor, @@ -503,10 +503,10 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Quick Links".needTranslation.toText16(isBold: true), + LocaleKeys.quickLinks.tr(context: context).toText16(isBold: true), Row( children: [ - "View medical file".needTranslation.toText12(color: AppColors.primaryRedColor), + LocaleKeys.viewMedicalFile.tr(context: context).toText12(color: AppColors.primaryRedColor), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -664,7 +664,7 @@ class _LandingPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget( - labelText: myAppointmentsViewModel.currentQueueStatus == 0 ? "In Queue".needTranslation : "Your Turn".needTranslation, + labelText: myAppointmentsViewModel.currentQueueStatus == 0 ? LocaleKeys.inQueue.tr() : LocaleKeys.yourTurn.tr(), backgroundColor: Utils.getCardBorderColor(myAppointmentsViewModel.currentQueueStatus).withValues(alpha: 0.20), textColor: Utils.getCardBorderColor(myAppointmentsViewModel.currentQueueStatus), ), @@ -672,9 +672,9 @@ class _LandingPageState extends State { ], ), SizedBox(height: 8.h), - "Hala ${appState.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true), + LocaleKeys.halaFirstName.tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}).toText16(isBold: true), SizedBox(height: 2.h), - "Thank you for your patience, here is your queue number.".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + LocaleKeys.thankYouForPatience.tr().toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), SizedBox(height: 8.h), myAppointmentsViewModel.currentPatientQueueDetails.queueNo!.toText28(isBold: true), SizedBox(height: 6.h), @@ -683,7 +683,7 @@ class _LandingPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ - "Serving Now: ".needTranslation.toText14(isBold: true), + "${LocaleKeys.servingNow.tr()}: ".toText14(isBold: true), Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -691,7 +691,7 @@ class _LandingPageState extends State { SizedBox(width: 8.w), AppCustomChipWidget( deleteIcon: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, - labelText: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? "Call for vital signs".needTranslation : "Call for Doctor".needTranslation, + labelText: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? LocaleKeys.callForVitalSigns.tr() : LocaleKeys.callForDoctor.tr(), iconColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, textColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, iconSize: 14.w, @@ -746,7 +746,7 @@ class _LandingPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Immediate LiveCare Request".needTranslation.toText16(isBold: true), + LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), SizedBox(height: 10.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -769,14 +769,14 @@ class _LandingPageState extends State { ], ), SizedBox(height: 10.h), - "Hala ${appState.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true), + LocaleKeys.halaFirstName.tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}, context: context).toText16(isBold: true), SizedBox(height: 8.h), - "Your turn is after ${immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount} patients.".needTranslation.toText14(isBold: true), + LocaleKeys.yourTurnIsAfterPatients.tr(namedArgs: {'count': immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount.toString()}, context: context).toText14(isBold: true), SizedBox(height: 8.h), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Expected waiting time: ".needTranslation.toText12(isBold: true), + "${LocaleKeys.waitingTime.tr()}: ".toText12(isBold: true), SizedBox(height: 7.h), ValueListenableBuilder( valueListenable: immediateLiveCareViewModel.durationNotifier, diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index b2649f9c..9058c8f5 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -5,6 +6,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -115,7 +117,7 @@ class HabibWalletCard extends StatelessWidget { CustomButton( icon: AppAssets.recharge_icon, iconSize: 18.h, - text: "Recharge".needTranslation, + text: LocaleKeys.recharge.tr(context: context), onPressed: () {}, backgroundColor: AppColors.infoColor, borderColor: AppColors.infoColor, diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 5274d5b6..6025ba8a 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -98,7 +98,7 @@ class LargeServiceCard extends StatelessWidget { ], ).paddingSymmetrical(16.w, 20.h), CustomButton( - text: serviceCardData.isBold ? "Visit Pharmacy Online".needTranslation : LocaleKeys.bookNow.tr(context: context), + text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr() : LocaleKeys.bookNow.tr(context: context), onPressed: () { handleOnTap(); }, diff --git a/lib/presentation/home/widgets/welcome_widget.dart b/lib/presentation/home/widgets/welcome_widget.dart index 8ef0697d..1bb17b5b 100644 --- a/lib/presentation/home/widgets/welcome_widget.dart +++ b/lib/presentation/home/widgets/welcome_widget.dart @@ -1,7 +1,9 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class WelcomeWidget extends StatelessWidget { @@ -31,7 +33,7 @@ class WelcomeWidget extends StatelessWidget { spacing: 4.h, mainAxisSize: MainAxisSize.min, children: [ - "Welcome".needTranslation.toText14(color: AppColors.greyTextColor, height: 1, weight: FontWeight.w500), + LocaleKeys.welcome.tr(context: context).toText14(color: AppColors.greyTextColor, height: 1, weight: FontWeight.w500), Row( spacing: 4.h, crossAxisAlignment: CrossAxisAlignment.center, diff --git a/lib/presentation/home_health_care/hhc_order_detail_page.dart b/lib/presentation/home_health_care/hhc_order_detail_page.dart index 92c93d13..7017441c 100644 --- a/lib/presentation/home_health_care/hhc_order_detail_page.dart +++ b/lib/presentation/home_health_care/hhc_order_detail_page.dart @@ -10,6 +10,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_all_orders_resp_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -121,7 +122,7 @@ class _HhcOrderDetailPageState extends State { Row( children: [ if (!isLoading) ...[ - "Request ID:".needTranslation.toText14( + LocaleKeys.requestID.tr(context: context).toText14( color: AppColors.textColorLight, weight: FontWeight.w500, ), @@ -186,7 +187,7 @@ class _HhcOrderDetailPageState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any Home Health Care orders yet.".needTranslation, + noDataText: LocaleKeys.dontHaveHHCOrders.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -199,7 +200,7 @@ class _HhcOrderDetailPageState extends State { @override Widget build(BuildContext context) { return CollapsingListView( - title: "HHC Orders".needTranslation, + title: LocaleKeys.hhcOrders.tr(context: context), isLeading: true, child: SingleChildScrollView( child: Column( diff --git a/lib/presentation/home_health_care/hhc_procedures_page.dart b/lib/presentation/home_health_care/hhc_procedures_page.dart index be97a886..ef5dce5c 100644 --- a/lib/presentation/home_health_care/hhc_procedures_page.dart +++ b/lib/presentation/home_health_care/hhc_procedures_page.dart @@ -11,6 +11,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_all_orders_resp_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_services_resp_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_order_detail_page.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_selection_review_page.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/widgets/hhc_ui_selection_helper.dart'; @@ -93,7 +94,7 @@ class _HhcProceduresPageState extends State { children: [ Row( children: [ - "Request ID:".needTranslation.toText14(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.requestID.tr(context: context).toText14(color: AppColors.textColorLight, weight: FontWeight.w500), SizedBox(width: 4.w), "${order.iD ?? '-'}".toText16(isBold: true), ], @@ -132,7 +133,7 @@ class _HhcProceduresPageState extends State { color: AppColors.primaryRedColor, ), SizedBox(width: 6.w), - "Requested Services".needTranslation.toText14( + LocaleKeys.requestedServices.tr().toText14( weight: FontWeight.w600, color: AppColors.blackColor, ), @@ -209,7 +210,7 @@ class _HhcProceduresPageState extends State { ), SizedBox(width: 8.w), Expanded( - child: "You have a pending order. Please wait for it to be processed.".needTranslation.toText12( + child: LocaleKeys.pendingOrderWait.tr(context: context).toText12( color: AppColors.infoBannerTextColor, fontWeight: FontWeight.w500, ), @@ -223,7 +224,7 @@ class _HhcProceduresPageState extends State { children: [ Expanded( child: CustomButton( - text: "Cancel Order".needTranslation, + text: LocaleKeys.cancelOrder.tr(context: context), onPressed: () => HhcUiSelectionHelper.showCancelConfirmationDialog(context: context, order: order), backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, @@ -248,7 +249,7 @@ class _HhcProceduresPageState extends State { hasBottomPadding: false, padding: EdgeInsets.only(top: 24.h), context, - title: 'Select Services'.needTranslation, + title: LocaleKeys.selectServices.tr(context: context), isCloseButtonVisible: true, isDismissible: true, callBackFunc: () {}, @@ -257,9 +258,9 @@ class _HhcProceduresPageState extends State { child: Padding( padding: EdgeInsets.all(24.h), child: Text( - 'No services available'.needTranslation, + LocaleKeys.noServicesAvailable.tr(context: context), style: TextStyle( - fontSize: 16.h, + fontSize: 16.f, color: AppColors.greyTextColor, ), ), @@ -300,7 +301,7 @@ class _HhcProceduresPageState extends State { duration: const Duration(milliseconds: 300), curve: Curves.easeInOut, width: 24.w, - height: 24.w, + height: 24.h, decoration: BoxDecoration( color: isSelected ? AppColors.primaryRedColor : Colors.transparent, borderRadius: BorderRadius.circular(5.r), @@ -353,7 +354,7 @@ class _HhcProceduresPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Selected Services".needTranslation.toText12( + LocaleKeys.selectedServices.tr(context: context).toText12( color: AppColors.textColorLight, fontWeight: FontWeight.w600, ), @@ -368,7 +369,7 @@ class _HhcProceduresPageState extends State { SizedBox(height: 16.h), CustomButton( borderWidth: 0, - text: "Next".needTranslation, + text: LocaleKeys.next.tr(context: context), onPressed: () { Navigator.pop(context); _proceedWithSelectedService(); @@ -398,9 +399,9 @@ class _HhcProceduresPageState extends State { bool result = await navigationServices.push( CustomPageRoute( page: MapUtilityScreen( - confirmButtonString: "Submit Request ".needTranslation, - titleString: "Select Location", - subTitleString: "Please select the location".needTranslation, + confirmButtonString: LocaleKeys.submitRequest.tr(context: context), + titleString: LocaleKeys.selectLocation.tr(context: context), + subTitleString: LocaleKeys.pleaseSelectTheLocation.tr(context: context), isGmsAvailable: appState.isGMSAvailable, ), direction: AxisDirection.down), @@ -447,7 +448,7 @@ class _HhcProceduresPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Home Health Care".needTranslation, + title: LocaleKeys.homeHealthCare.tr(context: context), history: () => Navigator.of(context).push(CustomPageRoute(page: HhcOrderDetailPage(), direction: AxisDirection.up)), bottomChild: Consumer( builder: (BuildContext context, HmgServicesViewModel hmgServicesViewModel, Widget? child) { @@ -466,7 +467,7 @@ class _HhcProceduresPageState extends State { padding: EdgeInsets.all(24.w), child: CustomButton( borderWidth: 0, - text: "Create new request".needTranslation, + text: LocaleKeys.createNewRequest.tr(context: context), onPressed: () => _buildServicesListBottomsSheet(hmgServicesViewModel.hhcServicesList), textColor: AppColors.whiteColor, borderRadius: 12.r, @@ -494,7 +495,7 @@ class _HhcProceduresPageState extends State { Center( child: Utils.getNoDataWidget( context, - noDataText: "You have no pending requests.".needTranslation, + noDataText: LocaleKeys.youHaveNoPendingRequests.tr(context: context), ), ), ], diff --git a/lib/presentation/home_health_care/hhc_selection_review_page.dart b/lib/presentation/home_health_care/hhc_selection_review_page.dart index 37410e21..ae2430af 100644 --- a/lib/presentation/home_health_care/hhc_selection_review_page.dart +++ b/lib/presentation/home_health_care/hhc_selection_review_page.dart @@ -50,7 +50,7 @@ class _HhcSelectionReviewPageState extends State { final isArabic = appState.isArabic(); return CollapsingListView( - title: "Summary".needTranslation, + title: LocaleKeys.summary.tr(context: context), bottomChild: _buildBottomButton(), child: SingleChildScrollView( padding: EdgeInsets.all(16.w), @@ -75,7 +75,7 @@ class _HhcSelectionReviewPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Selected Services".needTranslation.toText14( + LocaleKeys.selectedServices.tr(context: context).toText14( weight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -0.4, @@ -86,7 +86,7 @@ class _HhcSelectionReviewPageState extends State { runSpacing: 12.w, children: widget.selectedServices.map((service) { final serviceName = isArabic ? (service.textN ?? service.text ?? '') : (service.text ?? ''); - return AppCustomChipWidget(labelText: serviceName.needTranslation); + return AppCustomChipWidget(labelText: serviceName); }).toList(), ), ], @@ -110,7 +110,7 @@ class _HhcSelectionReviewPageState extends State { if (lat == 0.0 || lng == 0.0) return SizedBox.shrink(); // Get address from geocode response - String address = "Selected Location".needTranslation; + String address = LocaleKeys.selectLocation.tr(context: context); if (geocodeResponse != null && geocodeResponse.results.isNotEmpty) { address = geocodeResponse.results.first.formattedAddress; } @@ -133,7 +133,7 @@ class _HhcSelectionReviewPageState extends State { ), child: CustomButton( borderWidth: 0, - text: "Confirm".needTranslation, + text: LocaleKeys.confirm.tr(context: context), onPressed: () => _handleConfirm(), textColor: AppColors.whiteColor, borderRadius: 12.r, @@ -155,10 +155,10 @@ class _HhcSelectionReviewPageState extends State { padding: EdgeInsets.all(16.w), child: Column( children: [ - Utils.getSuccessWidget(loadingText: "Your request has been successfully submitted.".needTranslation), + Utils.getSuccessWidget(loadingText: LocaleKeys.requestSubmittedSuccessfully.tr(context: context)), Row( children: [ - "Here is your request #: ".needTranslation.toText14( + LocaleKeys.hereIsYourRequestNumber.tr(context: context).toText14( color: AppColors.textColorLight, weight: FontWeight.w500, ), @@ -200,7 +200,7 @@ class _HhcSelectionReviewPageState extends State { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to submit this request?".needTranslation, + loadingText: LocaleKeys.confirmSubmitRequest.tr(context: context), isShowActionButtons: true, onCancelTap: () { Navigator.pop(context); diff --git a/lib/presentation/home_health_care/widgets/hhc_ui_selection_helper.dart b/lib/presentation/home_health_care/widgets/hhc_ui_selection_helper.dart index 688612c8..d5310b39 100644 --- a/lib/presentation/home_health_care/widgets/hhc_ui_selection_helper.dart +++ b/lib/presentation/home_health_care/widgets/hhc_ui_selection_helper.dart @@ -25,7 +25,7 @@ class HhcUiSelectionHelper { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to cancel this order?".needTranslation, + loadingText: LocaleKeys.cancelOrderConfirmation.tr(context: context), isShowActionButtons: true, onCancelTap: () { Navigator.pop(context); @@ -51,7 +51,7 @@ class HhcUiSelectionHelper { padding: EdgeInsets.all(16.w), child: Column( children: [ - Utils.getSuccessWidget(loadingText: "Order has been cancelled successfully".needTranslation), + Utils.getSuccessWidget(loadingText: LocaleKeys.orderCancelledSuccessfully.tr(context: context)), SizedBox(height: 24.h), Row( children: [ diff --git a/lib/presentation/insurance/insurance_approval_details_page.dart b/lib/presentation/insurance/insurance_approval_details_page.dart index 415d66fe..a6d81575 100644 --- a/lib/presentation/insurance/insurance_approval_details_page.dart +++ b/lib/presentation/insurance/insurance_approval_details_page.dart @@ -56,7 +56,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { AppCustomChipWidget( icon: (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppAssets.walkin_appointment_icon : AppAssets.small_livecare_icon), iconColor: !insuranceApprovalResponseModel.isLiveCareAppointment! ? AppColors.textColor : AppColors.whiteColor, - labelText: insuranceApprovalResponseModel.isLiveCareAppointment! ? LocaleKeys.livecare.tr(context: context) : "Walk In".needTranslation, + labelText: insuranceApprovalResponseModel.isLiveCareAppointment! ? LocaleKeys.livecare.tr(context: context) : LocaleKeys.walkin.tr(context: context), backgroundColor: (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppColors.greyColor : AppColors.successColor), textColor: (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppColors.textColor : AppColors.whiteColor), ), @@ -137,7 +137,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Status:".needTranslation.toText14(isBold: true), + "${LocaleKeys.status.tr(context: context)}: ".toText14(isBold: true), insuranceApprovalResponseModel.apporvalDetails!.status!.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), ], ), diff --git a/lib/presentation/insurance/insurance_approvals_page.dart b/lib/presentation/insurance/insurance_approvals_page.dart index b70c1162..52f8b1f6 100644 --- a/lib/presentation/insurance/insurance_approvals_page.dart +++ b/lib/presentation/insurance/insurance_approvals_page.dart @@ -95,7 +95,7 @@ class _InsuranceApprovalsPageState extends State { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "You don't have any insurance approvals yet.".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noInsuranceApprovals.tr(context: context)); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ), diff --git a/lib/presentation/insurance/insurance_home_page.dart b/lib/presentation/insurance/insurance_home_page.dart index b005e42d..04940fbc 100644 --- a/lib/presentation/insurance/insurance_home_page.dart +++ b/lib/presentation/insurance/insurance_home_page.dart @@ -78,7 +78,7 @@ class _InsuranceHomePageState extends State { padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.12), child: Utils.getNoDataWidget( context, - noDataText: "You don't have insurance registered with HMG.".needTranslation, + noDataText: LocaleKeys.noInsuranceWithHMG.tr(context: context), callToActionButton: CustomButton( icon: AppAssets.update_insurance_card_icon, iconColor: AppColors.successColor, diff --git a/lib/presentation/insurance/widgets/insurance_approval_card.dart b/lib/presentation/insurance/widgets/insurance_approval_card.dart index ee31538f..588f9887 100644 --- a/lib/presentation/insurance/widgets/insurance_approval_card.dart +++ b/lib/presentation/insurance/widgets/insurance_approval_card.dart @@ -54,7 +54,7 @@ class InsuranceApprovalCard extends StatelessWidget { ? "Walk In" : insuranceApprovalResponseModel.isLiveCareAppointment! ? LocaleKeys.livecare.tr(context: context) - : "Walk In".needTranslation, + : LocaleKeys.walkin.tr(context: context), backgroundColor: isLoading ? AppColors.greyColor : (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppColors.greyColor : AppColors.successColor), textColor: isLoading ? AppColors.textColor : (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppColors.textColor : AppColors.whiteColor), ).toShimmer2(isShow: isLoading), diff --git a/lib/presentation/insurance/widgets/insurance_history.dart b/lib/presentation/insurance/widgets/insurance_history.dart index 341e2340..7219a34e 100644 --- a/lib/presentation/insurance/widgets/insurance_history.dart +++ b/lib/presentation/insurance/widgets/insurance_history.dart @@ -111,7 +111,7 @@ class InsuranceHistory extends StatelessWidget { ) : Utils.getNoDataWidget( context, - noDataText: "No insurance update requests found.".needTranslation, + noDataText: LocaleKeys.noInsuranceUpdateRequest.tr(context: context), // isSmallWidget: true, // width: 62, // height: 62, diff --git a/lib/presentation/insurance/widgets/insurance_update_details_card.dart b/lib/presentation/insurance/widgets/insurance_update_details_card.dart index c3bbcd7d..c737732a 100644 --- a/lib/presentation/insurance/widgets/insurance_update_details_card.dart +++ b/lib/presentation/insurance/widgets/insurance_update_details_card.dart @@ -90,7 +90,7 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { ], ).paddingSymmetrical(16.h, 16.h), ).paddingSymmetrical(24.h, 0.h) - : Utils.getNoDataWidget(context, noDataText: "No insurance data found...".needTranslation), + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noInsuranceDataFound.tr(context: context)), SizedBox( height: 24.h, ), diff --git a/lib/presentation/insurance/widgets/patient_insurance_card.dart b/lib/presentation/insurance/widgets/patient_insurance_card.dart index fde58119..84fdee4b 100644 --- a/lib/presentation/insurance/widgets/patient_insurance_card.dart +++ b/lib/presentation/insurance/widgets/patient_insurance_card.dart @@ -50,12 +50,12 @@ class PatientInsuranceCard extends StatelessWidget { children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.45, child: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true)), - "Policy: ${insuranceCardDetailsModel.insurancePolicyNo}".needTranslation.toText12(isBold: true, color: AppColors.lightGrayColor), + LocaleKeys.policyNumber.tr(namedArgs: {'number': insuranceCardDetailsModel.insurancePolicyNo ?? ''}, context: context).toText12(isBold: true, color: AppColors.lightGrayColor), ], ), AppCustomChipWidget( icon: isInsuranceExpired ? AppAssets.cancel_circle_icon : AppAssets.insurance_active_icon, - labelText: isInsuranceExpired ? "Insurance Expired".needTranslation : "Insurance Active".needTranslation, + labelText: isInsuranceExpired ? LocaleKeys.insuranceExpired.tr(context: context) : LocaleKeys.insuranceActive.tr(context: context), iconColor: isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, textColor: isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, iconSize: 12, @@ -78,7 +78,7 @@ class PatientInsuranceCard extends StatelessWidget { labelText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}", labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), ), - AppCustomChipWidget(labelText: "Patient Card ID: ${insuranceCardDetailsModel.patientCardID}".needTranslation), + AppCustomChipWidget(labelText: LocaleKeys.patientCardID.tr(namedArgs: {'id': insuranceCardDetailsModel.patientCardID ?? ''}, context: context)), ], ), SizedBox(height: 10.h), diff --git a/lib/presentation/lab/lab_order_by_test.dart b/lib/presentation/lab/lab_order_by_test.dart index 837f4822..2e4a96b6 100644 --- a/lib/presentation/lab/lab_order_by_test.dart +++ b/lib/presentation/lab/lab_order_by_test.dart @@ -44,7 +44,7 @@ class LabOrderByTest extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget( - richText: '${"Last Tested:".needTranslation} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(tests!.createdOn), false)}'.toText12(fontWeight: FontWeight.w500), + richText: '${"${LocaleKeys.lastTested.tr(context: context)}:"} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(tests!.createdOn), false)}'.toText12(fontWeight: FontWeight.w500), backgroundColor: AppColors.greyLightColor, textColor: AppColors.textColor, ), diff --git a/lib/presentation/lab/lab_orders_page.dart b/lib/presentation/lab/lab_orders_page.dart index 90651f13..799f5742 100644 --- a/lib/presentation/lab/lab_orders_page.dart +++ b/lib/presentation/lab/lab_orders_page.dart @@ -1 +1 @@ -import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingToolbar( title: LocaleKeys.labResults.tr(), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, "By Visit".needTranslation), CustomTabBarModel(null, "By Test".needTranslation), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...group.map((order) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("Order No: ".needTranslation + order.orderNo!), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex:2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: "View Results".needTranslation, onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), SizedBox(height: 12.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), SizedBox(height: 12.h), ], ); }).toList(), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: "You don't have any lab results yet.".needTranslation)) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file +import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingToolbar( title: LocaleKeys.labResults.tr(), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...group.map((order) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr()}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex:2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), SizedBox(height: 12.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), SizedBox(height: 12.h), ], ); }), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart index ad4a0320..50fd1f1e 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart @@ -89,9 +89,9 @@ class LabResultByClinic extends StatelessWidget { hasShadow: true, ), child: CustomButton( - text: "Download report".needTranslation, + text: LocaleKeys.downloadReport.tr(context: context), onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: "Generating report, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.generatingReport.tr(context: context)); await labViewModel .getLabResultReportPDF( labOrder: labOrder, @@ -114,7 +114,7 @@ class LabResultByClinic extends StatelessWidget { } catch (ex) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation), + child: Utils.getErrorWidget(loadingText: "Cannot open file"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart index 3f054436..6caa4a59 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart @@ -1,8 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/lab_result.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart'; import 'package:provider/provider.dart' show Selector, Provider, ReadContext; @@ -17,8 +19,7 @@ class LabResultList extends StatelessWidget { builder: (__, list, ___) { if (list.isEmpty && context.read().labSpecialResult.isEmpty) { return Utils.getNoDataWidget(context, - noDataText: "You don't have any lab results yet." - .needTranslation); + noDataText: LocaleKeys.noLabResults.tr(context: context)); } else { return ListView.builder( physics: NeverScrollableScrollPhysics(), diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart index c6841b34..e3320662 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart @@ -71,7 +71,7 @@ class LabOrderResultItem extends StatelessWidget { child: Visibility( visible: tests?.referanceRange != null, child: Text( - "(Reference range: ${tests?.referanceRange})".needTranslation, + "(${LocaleKeys.referenceRange.tr(context: context)}: ${tests?.referanceRange})", style: TextStyle( fontSize: 12.f, fontWeight: FontWeight.w500, diff --git a/lib/presentation/lab/lab_results/lab_result_details.dart b/lib/presentation/lab/lab_results/lab_result_details.dart index 1d54e067..eb39fef7 100644 --- a/lib/presentation/lab/lab_results/lab_result_details.dart +++ b/lib/presentation/lab/lab_results/lab_result_details.dart @@ -32,7 +32,7 @@ class LabResultDetails extends StatelessWidget { @override Widget build(BuildContext context) { return CollapsingListView( - title: 'Lab Result Details'.needTranslation, + title: LocaleKeys.labResultDetails.tr(context: context), child: SingleChildScrollView( child: Column( spacing: 16.h, @@ -89,7 +89,7 @@ class LabResultDetails extends StatelessWidget { ], ), SizedBox(height: 4.h), - ("Result of ${recentLabResult.verifiedOn ?? ""}".needTranslation).toText11(weight: FontWeight.w500, color: AppColors.greyTextColor), + ("${LocaleKeys.resultOf.tr(context: context)} ${recentLabResult.verifiedOn ?? ""}").toText11(weight: FontWeight.w500, color: AppColors.greyTextColor), ], ), Row( @@ -116,7 +116,7 @@ class LabResultDetails extends StatelessWidget { Visibility( visible: recentLabResult.referanceRange != null, child: Text( - "Reference range: \n${recentLabResult.referanceRange!.trim()}".needTranslation, + "${LocaleKeys.referenceRange.tr(context: context)}: \n${recentLabResult.referanceRange!.trim()}", style: TextStyle( fontSize: 12.f, fontWeight: FontWeight.w500, @@ -261,13 +261,15 @@ class LabResultDetails extends StatelessWidget { leftLabelFormatter: (value) { value = double.parse(value.toStringAsFixed(1)); // return leftLabels(value.toStringAsFixed(2)); - if(value == labmodel.highRefrenceValue) - return leftLabels("High".needTranslation); + if (value == labmodel.highRefrenceValue) { + return leftLabels(LocaleKeys.high.tr()); + } - if(value== labmodel.lowRefenceValue) - return leftLabels("Low".needTranslation); + if (value == labmodel.lowRefenceValue) { + return leftLabels(LocaleKeys.low.tr()); + } - return SizedBox.shrink(); + return SizedBox.shrink(); // } }, graphColor:AppColors.blackColor, @@ -366,8 +368,7 @@ class LabResultDetails extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, children: [ - "What is this result?" - .needTranslation + LocaleKeys.whatIsThisResult.tr(context: context) .toText16(weight: FontWeight.w600, color: AppColors.textColor), testDescription?.toText12( fontWeight: FontWeight.w500, color: AppColors.textColorLight) ?? diff --git a/lib/presentation/medical_file/eye_measurement_details_page.dart b/lib/presentation/medical_file/eye_measurement_details_page.dart index 0662cb15..08226095 100644 --- a/lib/presentation/medical_file/eye_measurement_details_page.dart +++ b/lib/presentation/medical_file/eye_measurement_details_page.dart @@ -96,7 +96,7 @@ class EyeMeasurementDetailsPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.leftEye.tr().needTranslation.toText14(isBold: true), + LocaleKeys.leftEye.tr().toText14(isBold: true), SizedBox(height: 16.h), getRow(LocaleKeys.sphere.tr(), '${patientAppointmentHistoryResponseModel.listHISGetGlassPrescription![0].leftEyeSpherical}', '-'), getRow(LocaleKeys.cylinder.tr(), '${patientAppointmentHistoryResponseModel.listHISGetGlassPrescription![0].leftEyeCylinder}', '-'), @@ -139,7 +139,7 @@ class EyeMeasurementDetailsPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.leftEye.tr().needTranslation.toText14(isBold: true), + LocaleKeys.leftEye.tr().toText14(isBold: true), SizedBox(height: 16.h), getRow(LocaleKeys.brand.tr(), '${patientAppointmentHistoryResponseModel.listHISGetContactLensPrescription![1].brand}', ''), getRow('B.C', '${patientAppointmentHistoryResponseModel.listHISGetContactLensPrescription![1].baseCurve}', ''), diff --git a/lib/presentation/medical_file/eye_measurements_appointments_page.dart b/lib/presentation/medical_file/eye_measurements_appointments_page.dart index 3b82ad41..d8438ba4 100644 --- a/lib/presentation/medical_file/eye_measurements_appointments_page.dart +++ b/lib/presentation/medical_file/eye_measurements_appointments_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -7,6 +8,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -75,7 +77,7 @@ class EyeMeasurementsAppointmentsPage extends StatelessWidget { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "No Ophthalmology appointments found...".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noOphthalmologyAppointments.tr(context: context)); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ), diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index c6ff85f3..ad2461f1 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -195,8 +195,8 @@ class _MedicalFilePageState extends State { ).withHorizontalPadding(24.w).onPress(() { DialogService dialogService = getIt.get(); dialogService.showFamilyBottomSheetWithoutH( - label: "Family Files".needTranslation, - message: "This clinic or doctor is only available for the below eligible profiles.".needTranslation, + label: LocaleKeys.familyTitle.tr(context: context), + message: "", onSwitchPress: (FamilyFileResponseModelLists profile) { medicalFileViewModel.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); }, @@ -289,7 +289,7 @@ class _MedicalFilePageState extends State { Consumer(builder: (context, insuranceVM, child) { return AppCustomChipWidget( icon: insuranceVM.isInsuranceExpired ? AppAssets.cancel_circle_icon : AppAssets.insurance_active_icon, - labelText: insuranceVM.isInsuranceExpired ? "Insurance Expired".needTranslation : "Insurance Active".needTranslation, + labelText: insuranceVM.isInsuranceExpired ? LocaleKeys.insuranceExpired.tr(context: context) : LocaleKeys.insuranceActive.tr(context: context), iconColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, textColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, iconSize: 12.w, @@ -316,7 +316,7 @@ class _MedicalFilePageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Vital Signs".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.vitalSigns.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), @@ -359,7 +359,7 @@ class _MedicalFilePageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.call_for_vitals, width: 32.h, height: 32.h), SizedBox(height: 12.h), - "No vital signs recorded yet".needTranslation.toText12(isCenter: true), + LocaleKeys.noVitalSignsRecordedYet.tr().toText12(isCenter: true), ], ), ), @@ -417,20 +417,20 @@ class _MedicalFilePageState extends State { }), SizedBox(height: 16.h), - TextInputWidget( - labelText: LocaleKeys.search.tr(context: context), - hintText: "Type any record".needTranslation, - controller: TextEditingController(), - keyboardType: TextInputType.number, - isEnable: true, - prefix: null, - autoFocus: false, - isBorderAllowed: false, - isAllowLeadingIcon: true, - padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8.h), - leadingIcon: AppAssets.search_icon, - hintColor: AppColors.textColor, - ).paddingSymmetrical(24.w, 0.0), + // TextInputWidget( + // labelText: LocaleKeys.search.tr(context: context), + // hintText: "Type any record".needTranslation, + // controller: TextEditingController(), + // keyboardType: TextInputType.number, + // isEnable: true, + // prefix: null, + // autoFocus: false, + // isBorderAllowed: false, + // isAllowLeadingIcon: true, + // padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8.h), + // leadingIcon: AppAssets.search_icon, + // hintColor: AppColors.textColor, + // ).paddingSymmetrical(24.w, 0.0), SizedBox(height: 16.h), // Using CustomExpandableList CustomExpandableList( @@ -547,7 +547,7 @@ class _MedicalFilePageState extends State { onSuccess: (dynamic respData) async { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( - title: "Pick a Date".needTranslation, + title: LocaleKeys.pickADate.tr(context: context), context, child: AppointmentCalendar(), isFullScreen: false, @@ -577,7 +577,7 @@ class _MedicalFilePageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Appointments & visits".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.appointmentsAndVisits.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), @@ -615,7 +615,7 @@ class _MedicalFilePageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), SizedBox(height: 12.h), - "You do not have any appointments. Please book an appointment".needTranslation.toText12(isCenter: true), + LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), SizedBox(height: 12.h), CustomButton( text: LocaleKeys.bookAppo.tr(context: context), @@ -662,7 +662,7 @@ class _MedicalFilePageState extends State { openDoctorScheduleCalendar(myAppointmentsVM.patientAppointmentsHistoryList[index]); }, onAskDoctorTap: () async { - LoaderBottomSheet.showLoader(loadingText: "Checking doctor availability...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); await myAppointmentsViewModel.isDoctorAvailable( projectID: myAppointmentsVM.patientAppointmentsHistoryList[index].projectID, doctorId: myAppointmentsVM.patientAppointmentsHistoryList[index].doctorID, @@ -687,7 +687,6 @@ class _MedicalFilePageState extends State { }); } else { LoaderBottomSheet.hideLoader(); - print("Doctor is not available"); } }, onError: (_) { @@ -705,7 +704,7 @@ class _MedicalFilePageState extends State { ).paddingSymmetrical(0.w, 0.h); }), SizedBox(height: 10.h), - "Lab & Radiology".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.labAndRadiology.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), SizedBox(height: 16.h), Row( children: [ @@ -728,7 +727,7 @@ class _MedicalFilePageState extends State { Expanded( child: LabRadCard( icon: AppAssets.radiology_icon, - labelText: "${LocaleKeys.radiology.tr(context: context)} Results".needTranslation, + labelText: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.results.tr(context: context)}", // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar", // labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"], labOrderTests: [], @@ -744,7 +743,7 @@ class _MedicalFilePageState extends State { ], ).paddingSymmetrical(0.w, 0.h), SizedBox(height: 24.h), - "Active Medications & Prescriptions".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.activeMedicationsAndPrescriptions.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), SizedBox(height: 16.h), Consumer(builder: (context, prescriptionVM, child) { return prescriptionVM.isPrescriptionsOrdersLoading @@ -836,7 +835,7 @@ class _MedicalFilePageState extends State { children: [ Expanded( child: CustomButton( - text: "All Prescriptions".needTranslation, + text: LocaleKeys.allPrescriptions.tr(context: context), onPressed: () { Navigator.of(context).push( CustomPageRoute( @@ -859,7 +858,7 @@ class _MedicalFilePageState extends State { SizedBox(width: 6.w), Expanded( child: CustomButton( - text: "All Medications".needTranslation, + text: LocaleKeys.allMedications.tr(context: context), onPressed: () {}, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, @@ -887,7 +886,7 @@ class _MedicalFilePageState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any prescriptions yet.".needTranslation, + noDataText: LocaleKeys.youDontHaveAnyPrescriptionsYet.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -945,7 +944,7 @@ class _MedicalFilePageState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any completed visits yet".needTranslation, + noDataText: LocaleKeys.youDontHaveAnyCompletedVisitsYet.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -1017,7 +1016,7 @@ class _MedicalFilePageState extends State { ).paddingSymmetrical(0.w, 0); }), SizedBox(height: 24.h), - "Others".needTranslation.toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.others.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), SizedBox(height: 16.h), GridView( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( @@ -1031,7 +1030,7 @@ class _MedicalFilePageState extends State { shrinkWrap: true, children: [ MedicalFileCard( - label: "Eye Test Results".needTranslation, + label: LocaleKeys.eyeMeasurements.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.eye_result_icon, @@ -1048,7 +1047,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Allergy Info".needTranslation, + label: LocaleKeys.allergyInfo.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.allergy_info_icon, @@ -1063,7 +1062,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Vaccine Info".needTranslation, + label: LocaleKeys.vaccineInfo.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.vaccine_info_icon, @@ -1108,7 +1107,7 @@ class _MedicalFilePageState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have insurance registered with HMG.".needTranslation, + noDataText: LocaleKeys.noInsuranceWithHMG.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -1153,7 +1152,7 @@ class _MedicalFilePageState extends State { shrinkWrap: true, children: [ MedicalFileCard( - label: "Update Insurance".needTranslation, + label: LocaleKeys.updateInsuranceInfo.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.update_insurance_icon, @@ -1177,7 +1176,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "My Invoices List".needTranslation, + label: LocaleKeys.myInvoicesList.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.invoices_list_icon, @@ -1191,7 +1190,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Ancillary Orders List".needTranslation, + label: LocaleKeys.ancillaryOrdersList.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.ancillary_orders_list_icon, @@ -1232,7 +1231,7 @@ class _MedicalFilePageState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any sick leaves yet.".needTranslation, + noDataText: LocaleKeys.youDontHaveAnySickLeavesYet.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -1267,7 +1266,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Medical Reports".needTranslation, + label: LocaleKeys.medicalReports.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.medical_reports_icon, @@ -1283,7 +1282,7 @@ class _MedicalFilePageState extends State { ); }), MedicalFileCard( - label: "Sick Leave Report".needTranslation, + label: LocaleKeys.sickLeaveReport.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.sick_leave_report_icon, @@ -1308,7 +1307,7 @@ class _MedicalFilePageState extends State { children: [ Row( children: [ - "Health Trackers".needTranslation.toText16(weight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.healthTrackers.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.textColor), ], ), SizedBox(height: 16.h), @@ -1324,7 +1323,7 @@ class _MedicalFilePageState extends State { shrinkWrap: true, children: [ MedicalFileCard( - label: "Blood Sugar".needTranslation, + label: LocaleKeys.bloodSugar.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.blood_sugar_icon, @@ -1332,7 +1331,7 @@ class _MedicalFilePageState extends State { iconSize: 36.w, ).onPress(() => context.navigateWithName(AppRoutes.healthTrackerDetailPage, arguments: HealthTrackerTypeEnum.bloodSugar)), MedicalFileCard( - label: "Blood Pressure".needTranslation, + label: LocaleKeys.bloodPressure.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.lab_result_icon, @@ -1340,7 +1339,7 @@ class _MedicalFilePageState extends State { iconSize: 36.w, ).onPress(() => context.navigateWithName(AppRoutes.healthTrackerDetailPage, arguments: HealthTrackerTypeEnum.bloodPressure)), MedicalFileCard( - label: "Weight Tracker".needTranslation, + label: LocaleKeys.weightTracker.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.weight_tracker_icon, @@ -1352,7 +1351,7 @@ class _MedicalFilePageState extends State { SizedBox(height: 16.h), Row( children: [ - "Others".needTranslation.toText16(weight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.others.tr().toText16(weight: FontWeight.w500, color: AppColors.textColor), ], ), SizedBox(height: 16.h), @@ -1368,21 +1367,21 @@ class _MedicalFilePageState extends State { shrinkWrap: true, children: [ MedicalFileCard( - label: "Ask Your Doctor".needTranslation, + label: LocaleKeys.askYourDoctor.tr(context: context), textColor: AppColors.blackColor, backgroundColor: AppColors.whiteColor, svgIcon: AppAssets.ask_doctor_medical_file_icon, isLargeText: true, iconSize: 36.w, ).onPress(() {}), - MedicalFileCard( - label: "Internet Pairing".needTranslation, - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.internet_pairing_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() {}), + // MedicalFileCard( + // label: LocaleKeys.internetPairing.tr(context: context), + // textColor: AppColors.blackColor, + // backgroundColor: AppColors.whiteColor, + // svgIcon: AppAssets.internet_pairing_icon, + // isLargeText: true, + // iconSize: 36.w, + // ).onPress(() {}), ], ).paddingSymmetrical(0.w, 0.0), SizedBox(height: 24.h), diff --git a/lib/presentation/medical_file/patient_sickleaves_list_page.dart b/lib/presentation/medical_file/patient_sickleaves_list_page.dart index ef5aaeb4..fcdb12e4 100644 --- a/lib/presentation/medical_file/patient_sickleaves_list_page.dart +++ b/lib/presentation/medical_file/patient_sickleaves_list_page.dart @@ -245,7 +245,7 @@ class _PatientSickleavesListPageState extends State { Expanded( flex: 6, child: CustomButton( - text: "Download Report".needTranslation, + text: LocaleKeys.downloadReport.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(); await medicalFileViewModel.getPatientSickLeavePDF(sickLeave, appState.getAuthenticatedUser()!).then((val) async { @@ -293,7 +293,7 @@ class _PatientSickleavesListPageState extends State { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "You don't have any sick leaves yet.".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.youDontHaveAnySickLeavesYet.tr(context: context)); }, ).paddingSymmetrical(24.h, 0.h), ], diff --git a/lib/presentation/medical_file/vaccine_list_page.dart b/lib/presentation/medical_file/vaccine_list_page.dart index 777426f6..bf02cb74 100644 --- a/lib/presentation/medical_file/vaccine_list_page.dart +++ b/lib/presentation/medical_file/vaccine_list_page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -40,7 +42,7 @@ class _VaccineListPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Vaccine Info".needTranslation, + title: LocaleKeys.vaccineInfo.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, medicalFileVM, child) { return Column( @@ -170,7 +172,7 @@ class _VaccineListPageState extends State { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "No vaccines data found...".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDataAvailable.tr(context: context)); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ), diff --git a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart index fbe79bb7..3d3624d0 100644 --- a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart +++ b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart @@ -183,7 +183,7 @@ class MedicalFileAppointmentCard extends StatelessWidget { iconSize: 16.h, ) : CustomButton( - text: "Rebook".needTranslation, + text: LocaleKeys.rebook.tr(context: context), onPressed: () { onRescheduleTap(); }, diff --git a/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart b/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart index 6f9b8b51..16c05d8b 100644 --- a/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart +++ b/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart @@ -94,7 +94,7 @@ class PatientSickLeaveCard extends StatelessWidget { : Expanded( flex: 6, child: CustomButton( - text: "Download Report".needTranslation, + text: LocaleKeys.downloadReport.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(); await medicalFileViewModel.getPatientSickLeavePDF(patientSickLeavesResponseModel, _appState.getAuthenticatedUser()!).then((val) async { @@ -106,7 +106,7 @@ class PatientSickLeaveCard extends StatelessWidget { } catch (ex) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation), + child: Utils.getErrorWidget(loadingText: "Cannot open file"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/medical_report/medical_report_request_page.dart b/lib/presentation/medical_report/medical_report_request_page.dart index 8eabcdd1..47a2df32 100644 --- a/lib/presentation/medical_report/medical_report_request_page.dart +++ b/lib/presentation/medical_report/medical_report_request_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -20,7 +22,7 @@ class MedicalReportRequestPage extends StatelessWidget { Widget build(BuildContext context) { medicalFileViewModel = Provider.of(context, listen: false); return CollapsingListView( - title: "Medical Reports".needTranslation, + title: LocaleKeys.medicalReports.tr(context: context), isClose: true, child: Column( children: [ diff --git a/lib/presentation/medical_report/medical_reports_page.dart b/lib/presentation/medical_report/medical_reports_page.dart index f6d7576f..87420fd5 100644 --- a/lib/presentation/medical_report/medical_reports_page.dart +++ b/lib/presentation/medical_report/medical_reports_page.dart @@ -44,7 +44,7 @@ class _MedicalReportsPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Medical Reports".needTranslation, + title: LocaleKeys.medicalReports.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, medicalFileVM, child) { return Column( @@ -88,7 +88,7 @@ class _MedicalReportsPageState extends State { Row( children: [ CustomButton( - text: "Requested".needTranslation, + text: LocaleKeys.requested.tr(context: context), onPressed: () { setState(() { expandedIndex = null; @@ -300,7 +300,7 @@ class _MedicalReportsPageState extends State { Expanded( flex: 6, child: CustomButton( - text: "Download Report".needTranslation, + text: LocaleKeys.downloadReport.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(); await medicalFileViewModel.getPatientMedicalReportPDF(report, appState.getAuthenticatedUser()!).then((val) async { @@ -348,7 +348,7 @@ class _MedicalReportsPageState extends State { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "You don't have any medical reports yet.".needTranslation) + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.youDontHaveAnyMedicalReportsYet.tr(context: context)) .paddingSymmetrical(24.h, 24.h); }, ).paddingSymmetrical(24.h, 0.h), @@ -366,7 +366,7 @@ class _MedicalReportsPageState extends State { hasShadow: true, ), child: CustomButton( - text: "Request medical report".needTranslation, + text: LocaleKeys.requestMedicalReport.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(); await medicalFileViewModel.getPatientMedicalReportAppointmentsList(onSuccess: (val) async { @@ -385,7 +385,7 @@ class _MedicalReportsPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "You do not have any appointments to request a medical report.".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.youDoNotHaveAnyAppointmentsToRequestMedicalReport.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -414,7 +414,7 @@ class _MedicalReportsPageState extends State { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to request a medical report for this appointment?".needTranslation, + loadingText: LocaleKeys.areYouSureYouWantToRequestMedicalReport.tr(context: context), isShowActionButtons: true, onCancelTap: () { Navigator.pop(context); @@ -425,7 +425,7 @@ class _MedicalReportsPageState extends State { await medicalFileViewModel.insertRequestForMedicalReport(onSuccess: (val) { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight(context, - child: Utils.getSuccessWidget(loadingText: "Your medical report request has been successfully submitted.".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.yourMedicalReportRequestSubmittedSuccessfully.tr(context: context)), callBackFunc: () { medicalFileViewModel.setIsPatientMedicalReportsLoading(true); medicalFileViewModel.onMedicalReportTabChange(0); diff --git a/lib/presentation/medical_report/widgets/patient_medical_report_card.dart b/lib/presentation/medical_report/widgets/patient_medical_report_card.dart index 413858d7..282a2d60 100644 --- a/lib/presentation/medical_report/widgets/patient_medical_report_card.dart +++ b/lib/presentation/medical_report/widgets/patient_medical_report_card.dart @@ -144,7 +144,7 @@ class PatientMedicalReportCard extends StatelessWidget { } catch (ex) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation), + child: Utils.getErrorWidget(loadingText: "Cannot open file"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/monthly_report/monthly_report.dart b/lib/presentation/monthly_report/monthly_report.dart index 17765104..474863ba 100644 --- a/lib/presentation/monthly_report/monthly_report.dart +++ b/lib/presentation/monthly_report/monthly_report.dart @@ -95,10 +95,7 @@ class MonthlyReport extends StatelessWidget { Utils.buildSvgWithAssets(icon: AppAssets.prescription_remarks_icon, width: 18.w, height: 18.h), SizedBox(width: 9.h), Expanded( - child: - "This monthly health summary report reflects the health indicators and analysis results of the latest visits. Please note that this will be sent automatically from the system and it’s not considered as a official report so no medical decision should be taken based on it" - .needTranslation - .toText10(weight: FontWeight.w500, color: AppColors.greyTextColorLight), + child: LocaleKeys.monthlyHealthSummaryReportDisclaimer.tr(context: context).toText10(weight: FontWeight.w500, color: AppColors.greyTextColorLight), ), ], ), @@ -146,7 +143,7 @@ class MonthlyReport extends StatelessWidget { CustomButton( text: LocaleKeys.save.tr(), onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: "Updating Monthly Report Status...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.updatingMonthlyReportStatus.tr(context: context)); await monthlyReportVM.updatePatientHealthSummaryReport( rSummaryReport: monthlyReportVM.isHealthSummaryEnabled, onSuccess: (response) async { @@ -157,7 +154,7 @@ class MonthlyReport extends StatelessWidget { ); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: "Monthly Report Status Updated Successfully".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.monthlyReportStatusUpdatedSuccessfully.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/monthly_reports/monthly_reports_page.dart b/lib/presentation/monthly_reports/monthly_reports_page.dart deleted file mode 100644 index d1a4d0ce..00000000 --- a/lib/presentation/monthly_reports/monthly_reports_page.dart +++ /dev/null @@ -1,310 +0,0 @@ -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/core/app_export.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; -import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/features/monthly_reports/monthly_reports_view_model.dart'; -import 'package:hmg_patient_app_new/presentation/monthly_reports/user_agreement_page.dart'; -import 'package:provider/provider.dart'; - -import '../../generated/locale_keys.g.dart'; -import '../../theme/colors.dart'; -import '../../widgets/appbar/app_bar_widget.dart'; -import '../../widgets/input_widget.dart'; -import '../../widgets/loader/bottomsheet_loader.dart'; - -class MonthlyReportsPage extends StatefulWidget { - const MonthlyReportsPage({super.key}); - - @override - State createState() => _MonthlyReportsPageState(); -} - -class _MonthlyReportsPageState extends State { - bool isHealthSummaryEnabled = false; - bool isTermsAccepted = false; - - final TextEditingController emailController = TextEditingController(); - - @override - void dispose() { - emailController.dispose(); - super.dispose(); - } - - void _showError(String message) { - ScaffoldMessenger.of(context).hideCurrentSnackBar(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(message), - behavior: SnackBarBehavior.floating, - ), - ); - } - - void _showSuccessSnackBar() { - ScaffoldMessenger.of(context).hideCurrentSnackBar(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - "Successfully updated".needTranslation, - style: const TextStyle( - color: AppColors.whiteColor, - fontWeight: FontWeight.w600, - ), - ), - behavior: SnackBarBehavior.floating, - backgroundColor: AppColors.textGreenColor, - duration: const Duration(seconds: 2), - ), - ); - } - - Future _onSavePressed() async { - if (!isTermsAccepted) { - _showError("Please accept the terms and conditions".needTranslation); - return; - } - - final email = emailController.text.trim(); - if (email.isEmpty) { - _showError("Please enter your email".needTranslation); - return; - } - - final vm = context.read(); - - // LoaderBottomSheet.showLoader(); - final ok = await vm.saveMonthlyReport(email: email); - // LoaderBottomSheet.hideLoader(); - - if (ok) { - setState(() => isHealthSummaryEnabled = true); - _showSuccessSnackBar(); - } else { - // _showError("Failed to update".needTranslation); - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColors.scaffoldBgColor, - appBar: CustomAppBar( - onBackPressed: () => Navigator.of(context).pop(), - onLanguageChanged: (_) {}, - hideLogoAndLang: true, - ), - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "Monthly Reports".needTranslation, - style: TextStyle( - color: AppColors.textColor, - fontSize: 27.f, - fontWeight: FontWeight.w600, - ), - ), - SizedBox(height: 16.h), - - Container( - padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8.h), - height: 54.h, - alignment: Alignment.center, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: (12.r), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Patient Health Summary Report".needTranslation, - style: TextStyle( - color: AppColors.textColor, - fontSize: 14.f, - fontWeight: FontWeight.w600, - ), - ), - _buildToggle(), - ], - ), - ), - - SizedBox(height: 16.h), - - TextInputWidget( - controller: emailController, - labelText: "Eamil*".needTranslation, - hintText: "email@email.com", - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - autoFocus: true, - keyboardType: TextInputType.emailAddress, - padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8.h), - onChange: (value) { - setState(() {}); - }, - ).paddingOnly(top: 8.h, bottom: 8.h), - - Row( - children: [ - Text( - "To View The Terms and Conditions".needTranslation, - style: TextStyle( - color: AppColors.textColor, - fontSize: 14.f, - fontWeight: FontWeight.w600, - ), - ), - InkWell( - child: Text( - "Click here".needTranslation, - style: TextStyle( - color: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w600, - ), - ), - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (_) => const UserAgreementPage(), - ), - ); - }, - ), - ], - ), - - SizedBox(height: 12.h), - - GestureDetector( - onTap: () => setState(() => isTermsAccepted = !isTermsAccepted), - child: Row( - children: [ - AnimatedContainer( - duration: const Duration(milliseconds: 200), - height: 24.h, - width: 24.h, - decoration: BoxDecoration( - color: isTermsAccepted - ? AppColors.textGreenColor - : Colors.transparent, - borderRadius: BorderRadius.circular(6), - border: Border.all( - color: isTermsAccepted - ? AppColors.lightGreenColor - : AppColors.greyColor, - width: 2.h, - ), - ), - child: isTermsAccepted - ? Icon(Icons.check, size: 16.f, color: AppColors.whiteColor,) - : null, - ), - SizedBox(width: 12.h), - Text( - "I agree to the terms and conditions".needTranslation, - style: context.dynamicTextStyle( - fontSize: 12.f, - fontWeight: FontWeight.w500, - color: AppColors.textColor, - ), - ), - ], - ), - ), - - SizedBox(height: 12.h), - - Text( - "This monthly Health Summary Report reflects the health indicators and analysis results of the latest visits. Please note that this will be sent automatically from the system and it's not considered as an official report so no medical decisions should be taken based on it" - .needTranslation, - style: TextStyle( - color: AppColors.textColor, - fontSize: 10.f, - fontWeight: FontWeight.w600, - ), - ), - - SizedBox(height: 12.h), - - Image.asset('assets/images/jpg/report.jpg'), - - SizedBox(height: 16.h), - - Row( - children: [ - Expanded( - child: ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: AppColors.successColor, - foregroundColor: AppColors.whiteColor, - elevation: 0, - padding: const EdgeInsets.symmetric(vertical: 14), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - ), - onPressed: _onSavePressed, - child: Text( - LocaleKeys.save.tr(), - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 16.f, - ), - ), - ), - ), - ], - ), - ], - ), - ).paddingAll(16), - ); - } - - Widget _buildToggle() { - final value = isHealthSummaryEnabled; - - return AbsorbPointer( - absorbing: true, - child: AnimatedContainer( - duration: const Duration(milliseconds: 200), - width: 50.h, - height: 28.h, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - color: value - ? AppColors.lightGreenColor - : AppColors.greyColor.withOpacity(0.3), - ), - child: AnimatedAlign( - duration: const Duration(milliseconds: 200), - alignment: value ? Alignment.centerRight : Alignment.centerLeft, - child: Padding( - padding: const EdgeInsets.all(3), - child: Container( - width: 22.h, - height: 22.h, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: value - ? AppColors.textGreenColor - : AppColors.greyTextColor, - ), - ), - ), - ), - ), - ); - } -} diff --git a/lib/presentation/monthly_reports/user_agreement_page.dart b/lib/presentation/monthly_reports/user_agreement_page.dart deleted file mode 100644 index 73ea5643..00000000 --- a/lib/presentation/monthly_reports/user_agreement_page.dart +++ /dev/null @@ -1,117 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; -import 'package:hmg_patient_app_new/features/monthly_reports/terms_conditions_view_model.dart'; -import 'package:provider/provider.dart'; -import 'package:webview_flutter/webview_flutter.dart'; - -import '../../theme/colors.dart'; -import '../../widgets/appbar/app_bar_widget.dart'; - -class UserAgreementPage extends StatefulWidget { - const UserAgreementPage({super.key}); - - @override - State createState() => _UserAgreementPageState(); -} - -class _UserAgreementPageState extends State { - late final WebViewController _webViewController; - bool _isLoading = true; - String? _errorMessage; - - @override - void initState() { - super.initState(); - - _webViewController = WebViewController() - ..setJavaScriptMode(JavaScriptMode.unrestricted) - ..setBackgroundColor(const Color(0x00000000)) - ..setNavigationDelegate( - NavigationDelegate( - onPageStarted: (_) { - setState(() { - _isLoading = true; - }); - }, - onPageFinished: (_) { - setState(() { - _isLoading = false; - }); - }, - onWebResourceError: (error) { - }, - ), - ); - - WidgetsBinding.instance.addPostFrameCallback((_) { - final vm = - Provider.of(context, listen: false); - - vm.getTermsConditions( - onSuccess: () { - final htmlString = vm.termsConditionsHtml ?? ''; - - if (htmlString.isNotEmpty) { - setState(() { - _errorMessage = null; - _isLoading = true; - }); - _webViewController.loadHtmlString(htmlString); - } else { - setState(() { - _isLoading = false; - _errorMessage = 'لا توجد شروط متاحة حالياً'.needTranslation; - }); - } - }, - onError: (msg) { - setState(() { - _isLoading = false; - _errorMessage = msg; - }); - }, - ); - }); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColors.scaffoldBgColor, - appBar: CustomAppBar( - onBackPressed: () => Navigator.of(context).pop(), - onLanguageChanged: (_) {}, - hideLogoAndLang: true, - ), - body: Stack( - children: [ - WebViewWidget(controller: _webViewController), - - if (_errorMessage != null) - Center( - child: Container( - margin: const EdgeInsets.all(16), - padding: const EdgeInsets.all(12), - decoration: BoxDecoration( - color: AppColors.whiteColor, - borderRadius: BorderRadius.circular(8), - ), - child: Text( - _errorMessage!, - textAlign: TextAlign.center, - style: TextStyle( - color: AppColors.primaryRedColor, - fontWeight: FontWeight.w600, - ), - ), - ), - ), - if (_isLoading) - const Center( - child: CircularProgressIndicator(), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index 07f1a4f3..b16c587a 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -50,7 +50,7 @@ class _FamilyMedicalScreenState extends State { AppState appState = getIt.get(); return CollapsingListView( - title: "Medical Files".needTranslation, + title: LocaleKeys.medicalFiles.tr(context: context), bottomChild: appState.getAuthenticatedUser()!.isParentUser! ? Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -59,13 +59,13 @@ class _FamilyMedicalScreenState extends State { ), padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 20.h), child: CustomButton( - text: "Add a new family member".needTranslation, + text: LocaleKeys.addANewFamilyMember.tr(context: context), onPressed: () { DialogService dialogService = getIt.get(); medicalVM!.clearAuthValues(); dialogService.showAddFamilyFileSheet( - label: "Add Family Member".needTranslation, - message: "Please fill the below field to add a new family member to your profile".needTranslation, + label: LocaleKeys.addFamilyMember.tr(context: context), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), onVerificationPress: () { medicalVM!.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); }); diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index 3621cc30..675da18f 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -54,12 +54,10 @@ class _FamilyCardsState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.alertSquare), SizedBox(width: 8.h), - "Who can view my medical file ?" - .needTranslation - .toText14(color: AppColors.textColor, isUnderLine: true, weight: FontWeight.w500) + LocaleKeys.whoCanViewMyMedicalFile.tr(context: context).toText14(color: AppColors.textColor, isUnderLine: true, weight: FontWeight.w500) .onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Manage Family".needTranslation, + label: LocaleKeys.manageFiles.tr(context: context), message: "", child: manageFamily(), onOkPressed: () {}, @@ -213,7 +211,7 @@ class _FamilyCardsState extends State { onPressed: () { if (canSwitch) widget.onSelect(profile); }, - text: isActive ? "Active".needTranslation : "Switch".needTranslation, + text: isActive ? LocaleKeys.active.tr(context: context) : LocaleKeys.switchLogin.tr(context: context), backgroundColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, borderColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, textColor: isActive || !canSwitch ? AppColors.greyTextColor : AppColors.primaryRedColor, @@ -309,7 +307,7 @@ class _FamilyCardsState extends State { height: 30.h, chipType: ChipTypeEnum.alert, backgroundColor: AppColors.lightGrayBGColor, - chipText: "Medical File: ${profile.patientId ?? "N/A".needTranslation}", + chipText: "${LocaleKeys.medicalFile.tr(context: context)}: ${profile.patientId ?? "N/A"}", iconAsset: null, isShowBorder: false, borderRadius: 8.h, @@ -364,26 +362,26 @@ class _FamilyCardsState extends State { switch (status) { case FamilyFileEnum.active: if (isRequestFromMySide) { - return "${status.displayName} your request to be your family member".needTranslation; + return LocaleKeys.acceptedYourRequestToBeYourFamilyMember.tr(namedArgs: {'status': status.displayName}, context: context); } else { - return "can view your file".needTranslation; + return LocaleKeys.canViewYourFile.tr(context: context); } case FamilyFileEnum.pending: if (isRequestFromMySide) { - return "has a request ${status.displayName} to be your family member".needTranslation; + return LocaleKeys.hasARequestPendingToBeYourFamilyMember.tr(namedArgs: {'status': status.displayName}, context: context); } else { - return "wants to add you as their family member".needTranslation; + return LocaleKeys.wantsToAddYouAsTheirFamilyMember.tr(context: context); } case FamilyFileEnum.rejected: if (isRequestFromMySide) { - return "${status.displayName} your request to be your family member".needTranslation; + return LocaleKeys.rejectedYourRequestToBeYourFamilyMember.tr(namedArgs: {'status': status.displayName}, context: context); } else { - return "${status.displayName} your family member request".needTranslation; + return LocaleKeys.rejectedYourFamilyMemberRequest.tr(namedArgs: {'status': status.displayName}, context: context); } case FamilyFileEnum.inactive: - return "Inactive".needTranslation; + return LocaleKeys.inactive.tr(context: context); default: - return "N/A".needTranslation; + return LocaleKeys.notAvailable.tr(context: context); } } } diff --git a/lib/presentation/my_family/widget/my_family_sheet.dart b/lib/presentation/my_family/widget/my_family_sheet.dart index d469ab23..50f1b2ac 100644 --- a/lib/presentation/my_family/widget/my_family_sheet.dart +++ b/lib/presentation/my_family/widget/my_family_sheet.dart @@ -1,7 +1,9 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/my_family/widget/family_cards.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -15,8 +17,8 @@ class MyFamilySheet { titleWidget: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 'Please select a profile'.needTranslation.toText21(isBold: true), - 'switch from the below list of medical file'.needTranslation.toText16(weight: FontWeight.w100, color: AppColors.greyTextColor), + LocaleKeys.selectAProfile.tr(context: context).toText21(isBold: true), + LocaleKeys.switchFamilyFile.tr(context: context).toText16(weight: FontWeight.w100, color: AppColors.greyTextColor), ], ), child: FamilyCards( diff --git a/lib/presentation/my_invoices/my_invoices_details_page.dart b/lib/presentation/my_invoices/my_invoices_details_page.dart index cccd671b..a38194fe 100644 --- a/lib/presentation/my_invoices/my_invoices_details_page.dart +++ b/lib/presentation/my_invoices/my_invoices_details_page.dart @@ -39,9 +39,9 @@ class _MyInvoicesDetailsPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Invoice Details".needTranslation, + title: LocaleKeys.invoiceDetails.tr(context: context), sendEmail: () async { - LoaderBottomSheet.showLoader(loadingText: "Sending email, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.sendingEmailPleaseWait.tr(context: context)); await myInvoicesViewModel.sendInvoiceEmail( appointmentNo: widget.getInvoiceDetailsResponseModel.appointmentNo!, projectID: widget.getInvoiceDetailsResponseModel.projectID!, @@ -49,7 +49,7 @@ class _MyInvoicesDetailsPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: "Email sent successfully.".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.emailSentSuccessfullyMessage.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -223,12 +223,12 @@ class _MyInvoicesDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 24.h), - "Total Balance".needTranslation.toText18(isBold: true).paddingSymmetrical(24.h, 0.h), + LocaleKeys.totalBalance.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Amount before tax".needTranslation.toText14(isBold: true), + LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol(widget.getInvoiceDetailsResponseModel.listConsultation!.first.totalShare.toString().toText16(isBold: true), AppColors.blackColor, 13, isSaudiCurrency: true), ], @@ -236,7 +236,7 @@ class _MyInvoicesDetailsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "VAT 15%".needTranslation.toText14(isBold: true, color: AppColors.greyTextColor), + LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( widget.getInvoiceDetailsResponseModel.listConsultation!.first.totalVATAmount!.toString().toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, isSaudiCurrency: true), @@ -246,7 +246,7 @@ class _MyInvoicesDetailsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Discount".needTranslation.toText14(isBold: true), + LocaleKeys.discount.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol(widget.getInvoiceDetailsResponseModel.listConsultation!.first.discountAmount!.toString().toText14(isBold: true, color: AppColors.primaryRedColor), AppColors.primaryRedColor, 13, isSaudiCurrency: true), @@ -255,7 +255,7 @@ class _MyInvoicesDetailsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Paid".needTranslation.toText14(isBold: true), + LocaleKeys.paid.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol( widget.getInvoiceDetailsResponseModel.listConsultation!.first.grandTotal!.toString().toText14(isBold: true, color: AppColors.textColor), AppColors.textColor, 13, isSaudiCurrency: true), diff --git a/lib/presentation/my_invoices/my_invoices_list.dart b/lib/presentation/my_invoices/my_invoices_list.dart index ef1a9c26..9f969e8d 100644 --- a/lib/presentation/my_invoices/my_invoices_list.dart +++ b/lib/presentation/my_invoices/my_invoices_list.dart @@ -77,7 +77,7 @@ class _MyInvoicesListState extends State { getInvoicesListResponseModel: myInvoicesVM.allInvoicesList[index], onTap: () async { myInvoicesVM.setInvoiceDetailLoading(); - LoaderBottomSheet.showLoader(loadingText: "Fetching invoice details, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingInvoiceDetails.tr(context: context)); await myInvoicesVM.getInvoiceDetails( appointmentNo: myInvoicesVM.allInvoicesList[index].appointmentNo!, invoiceNo: myInvoicesVM.allInvoicesList[index].invoiceNo!, diff --git a/lib/presentation/my_invoices/widgets/invoice_list_card.dart b/lib/presentation/my_invoices/widgets/invoice_list_card.dart index 27ca79a2..4a328c5e 100644 --- a/lib/presentation/my_invoices/widgets/invoice_list_card.dart +++ b/lib/presentation/my_invoices/widgets/invoice_list_card.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -41,11 +42,11 @@ class InvoiceListCard extends StatelessWidget { AppCustomChipWidget( icon: AppAssets.walkin_appointment_icon, iconColor: AppColors.textColor, - labelText: 'Walk In'.needTranslation, + labelText: LocaleKeys.walkin.tr(context: context), textColor: AppColors.textColor, ), AppCustomChipWidget( - labelText: 'OutPatient'.needTranslation, + labelText: LocaleKeys.outPatient.tr(context: context), backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), textColor: AppColors.primaryRedColor, ), @@ -127,7 +128,7 @@ class InvoiceListCard extends StatelessWidget { ), SizedBox(height: 16.h), CustomButton( - text: "View invoice details".needTranslation, + text: LocaleKeys.viewInvoiceDetails.tr(context: context), onPressed: () { if (onTap != null) { onTap!(); diff --git a/lib/presentation/notifications/notifications_list_page.dart b/lib/presentation/notifications/notifications_list_page.dart index 99d4270c..c9a93ff2 100644 --- a/lib/presentation/notifications/notifications_list_page.dart +++ b/lib/presentation/notifications/notifications_list_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -17,7 +19,7 @@ class NotificationsListPage extends StatelessWidget { @override Widget build(BuildContext context) { return CollapsingListView( - title: "Notifications".needTranslation, + title: LocaleKeys.notifications.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, notificationsVM, child) { return Container( diff --git a/lib/presentation/onboarding/onboarding_screen.dart b/lib/presentation/onboarding/onboarding_screen.dart index a40a27b4..bfcdc96b 100644 --- a/lib/presentation/onboarding/onboarding_screen.dart +++ b/lib/presentation/onboarding/onboarding_screen.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -67,13 +69,13 @@ class _OnboardingScreenState extends State { children: [ onboardingView( AppAnimations.onboarding_1, - "Booking appointment has never been easy".needTranslation, - "In few clicks find yourself having consultation with the doctor of your choice.".needTranslation, + LocaleKeys.onboardingHeading1.tr(context: context), + LocaleKeys.onboardingBody1.tr(context: context), ), onboardingView( AppAnimations.onboarding_2, - "Access the medical history on finger tips".needTranslation, - "Keep track on your medical history including labs, prescription, insurance, etc".needTranslation, + LocaleKeys.onboardingHeading2.tr(context: context), + LocaleKeys.onboardingBody2.tr(context: context), ), ], onPageChanged: (int index) { @@ -107,7 +109,7 @@ class _OnboardingScreenState extends State { transitionBuilder: (child, anim) => FadeTransition(opacity: anim, child: child), child: selectedIndex == 0 ? CustomButton( - text: "Skip".needTranslation, + text: LocaleKeys.skip.tr(context: context), onPressed: () => goToHomePage(), width: 86.w, height: 56.h, @@ -136,13 +138,13 @@ class _OnboardingScreenState extends State { iconSize: 32.w, width: 86.w, height: 56.h, - text: "".needTranslation, + text: "", backgroundColor: Colors.transparent, onPressed: () { pageController.animateToPage(1, duration: Duration(milliseconds: 400), curve: Curves.easeInOut); }) : CustomButton( - text: "Get Started".needTranslation, + text: LocaleKeys.getStarted.tr(context: context), fontWeight: FontWeight.w500, fontSize: 16.f, height: 56.h, diff --git a/lib/presentation/parking/paking_page.dart b/lib/presentation/parking/paking_page.dart index d9cc1d87..db451b27 100644 --- a/lib/presentation/parking/paking_page.dart +++ b/lib/presentation/parking/paking_page.dart @@ -1,9 +1,10 @@ - +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/parking/parking_slot.dart'; import 'package:provider/provider.dart'; @@ -85,7 +86,7 @@ class _ParkingPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "Parking".needTranslation, + LocaleKeys.parking.tr(context: context), style: TextStyle( color: AppColors.textColor, fontSize: 27.f, @@ -100,22 +101,7 @@ class _ParkingPageState extends State { hasShadow: true, ), child: Padding( - padding: EdgeInsets.all(16.h), - child: Text( - "Dr. Sulaiman Al Habib hospital are conduction a test for the emerging corona" - " virus and issuing travel certificates 24/7 in a short time and with high accuracy." - " Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches " - "to conduct a corona test within few minutes. Dr. Sulaiman Al Habib hospital are conduction" - " a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. " - "Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes.", - style: TextStyle( - color: AppColors.textColor, - fontSize: 12, - height: 1.4, - fontWeight: FontWeight.w500, - ), - ), - ), + padding: EdgeInsets.all(16.h), child: LocaleKeys.parkingDescription.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColor)), ).paddingOnly(top: 16, bottom: 16), ], ), @@ -131,18 +117,16 @@ class _ParkingPageState extends State { ), child: Padding( padding: EdgeInsets.all(24.h), - child: SizedBox( - width: double.infinity, - height: 56, - child: CustomButton( - text: "Read Barcodes".needTranslation, - onPressed: () => _readQR(context), // always non-null - isDisabled: vm.isLoading, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - fontSize: 18, - fontWeight: FontWeight.bold, - ), + child: CustomButton( + text: LocaleKeys.scanQRCode.tr(context: context), + onPressed: () => _readQR(context), + // always non-null + isDisabled: vm.isLoading, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + fontSize: 18.f, + height: 56.h, + fontWeight: FontWeight.bold, ), ), ), diff --git a/lib/presentation/parking/parking_slot.dart b/lib/presentation/parking/parking_slot.dart index 0eb3718b..52ab181d 100644 --- a/lib/presentation/parking/parking_slot.dart +++ b/lib/presentation/parking/parking_slot.dart @@ -1,10 +1,12 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/qr_parking/models/qr_parking_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import '../../features/qr_parking/qr_parking_view_model.dart'; import '../../theme/colors.dart'; import '../../widgets/appbar/app_bar_widget.dart'; @@ -157,7 +159,7 @@ class _ParkingSlotState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "Parking Slot Details".needTranslation, + LocaleKeys.parkingSlotDetails.tr(context: context), style: TextStyle( fontSize: 16.f, fontWeight: FontWeight.w600, @@ -170,16 +172,16 @@ class _ParkingSlotState extends State { runSpacing: 4, children: [ AppCustomChipWidget( - labelText: "Slot: ${widget.model.qRParkingCode ?? '-'}".needTranslation, + labelText: LocaleKeys.slotNumber.tr(namedArgs: {'code': widget.model.qRParkingCode ?? '-'}, context: context), ), AppCustomChipWidget( - labelText: "Basement: ${widget.model.floorDescription ?? '-'}".needTranslation, + labelText: LocaleKeys.basement.tr(namedArgs: {'description': widget.model.floorDescription ?? '-'}, context: context), ), AppCustomChipWidget( - labelText: "Date: ${_formatPrettyDate(widget.model.createdOn)}".needTranslation, + labelText: LocaleKeys.parkingDate.tr(namedArgs: {'date': _formatPrettyDate(widget.model.createdOn)}, context: context), ), AppCustomChipWidget( - labelText: "Parked Since: ${_formatPrettyTime(widget.model.createdOn)}".needTranslation, + labelText: LocaleKeys.parkedSince.tr(namedArgs: {'time': _formatPrettyTime(widget.model.createdOn)}, context: context), ), ], ), @@ -193,7 +195,7 @@ class _ParkingSlotState extends State { width: double.infinity, height: 48.h, child: CustomButton( - text: "Get Direction".needTranslation, + text: LocaleKeys.getDirections.tr(context: context), onPressed: _openDirection, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, @@ -210,14 +212,14 @@ class _ParkingSlotState extends State { width: double.infinity, height: 48.h, child: CustomButton( - text: "Reset Direction".needTranslation, + text: LocaleKeys.resetDirection.tr(context: context), onPressed: _resetDirection, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, - fontSize: 18, + fontSize: 18.f, fontWeight: FontWeight.bold, - borderRadius: 10, + borderRadius: 10.r, ), ), ], diff --git a/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart b/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart index 0bedbe23..5a340346 100644 --- a/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart +++ b/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart @@ -118,7 +118,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { child: CustomButton( text: LocaleKeys.submit.tr(context: context), onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: "Submitting your request..."); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); await prescriptionsViewModel.submitPrescriptionDeliveryRequest( latitude: prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lat.toString(), longitude: prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lng.toString(), @@ -129,7 +129,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: "Request sent successfully.".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.requestSubmittedSuccessfully.tr(context: context)), callBackFunc: () { Navigator.of(context).pop(); }, diff --git a/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart b/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart index e2ce865d..7760fd2d 100644 --- a/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart +++ b/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart @@ -88,7 +88,7 @@ class PrescriptionDeliveryOrdersListPage extends StatelessWidget { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "You don't have any prescription orders yet.".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noPrescriptionOrdersYet.tr(context: context)); }, ).paddingSymmetrical(24.h, 0.h), ], diff --git a/lib/presentation/prescriptions/prescription_detail_page.dart b/lib/presentation/prescriptions/prescription_detail_page.dart index 1216c619..9b1ae6df 100644 --- a/lib/presentation/prescriptions/prescription_detail_page.dart +++ b/lib/presentation/prescriptions/prescription_detail_page.dart @@ -62,7 +62,7 @@ class _PrescriptionDetailPageState extends State { child: CollapsingListView( title: LocaleKeys.prescriptions.tr(context: context), instructions: () async { - LoaderBottomSheet.showLoader(loadingText: "Fetching prescription PDF, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionPDFPleaseWait.tr(context: context)); await prescriptionsViewModel.getPrescriptionInstructionsPDF(widget.prescriptionsResponseModel, onSuccess: (val) { LoaderBottomSheet.hideLoader(); if (prescriptionsViewModel.prescriptionInstructionsPDFLink.isNotEmpty) { @@ -71,7 +71,7 @@ class _PrescriptionDetailPageState extends State { } else { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Unable to fetch PDF".needTranslation), + child: Utils.getErrorWidget(loadingText: "Unable to fetch PDF"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -136,7 +136,7 @@ class _PrescriptionDetailPageState extends State { AppCustomChipWidget( icon: AppAssets.rating_icon, iconColor: AppColors.ratingColorYellow, - labelText: "Rating: ${widget.prescriptionsResponseModel.decimalDoctorRate}".needTranslation, + labelText: LocaleKeys.ratingValue.tr(namedArgs: {'rating': widget.prescriptionsResponseModel.decimalDoctorRate.toString()}, context: context), ), AppCustomChipWidget( labelText: widget.prescriptionsResponseModel.name!, @@ -145,9 +145,9 @@ class _PrescriptionDetailPageState extends State { ), SizedBox(height: 16.h), CustomButton( - text: "Download Prescription".needTranslation, + text: LocaleKeys.downloadPrescription.tr(context: context), onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: "Fetching prescription PDF, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionPDFPleaseWait.tr(context: context)); await prescriptionVM.getPrescriptionPDFBase64(widget.prescriptionsResponseModel).then((val) async { LoaderBottomSheet.hideLoader(); if (prescriptionVM.prescriptionPDFBase64Data.isNotEmpty) { @@ -157,7 +157,7 @@ class _PrescriptionDetailPageState extends State { } catch (ex) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation), + child: Utils.getErrorWidget(loadingText: "Cannot open file"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -221,7 +221,7 @@ class _PrescriptionDetailPageState extends State { : LocaleKeys.prescriptionDeliveryError.tr(context: context), onPressed: () async { if (widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported!) { - LoaderBottomSheet.showLoader(loadingText: "Fetching prescription details...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); await prescriptionsViewModel.getPrescriptionDetails(widget.prescriptionsResponseModel, onSuccess: (val) { LoaderBottomSheet.hideLoader(); prescriptionsViewModel.initiatePrescriptionDelivery(); diff --git a/lib/presentation/prescriptions/prescription_reminder_view.dart b/lib/presentation/prescriptions/prescription_reminder_view.dart index 2f1154f1..aab587d4 100644 --- a/lib/presentation/prescriptions/prescription_reminder_view.dart +++ b/lib/presentation/prescriptions/prescription_reminder_view.dart @@ -54,7 +54,7 @@ class _PrescriptionReminderViewState extends State { ), child: RadioListTile( title: Text( - "${_options[index]} minutes before".needTranslation, + "${_options[index]} ${LocaleKeys.minute.tr(context: context)}", style: TextStyle( fontSize: 16.h, fontWeight: FontWeight.w500, diff --git a/lib/presentation/prescriptions/prescriptions_list_page.dart b/lib/presentation/prescriptions/prescriptions_list_page.dart index 8b60159c..e2a862bb 100644 --- a/lib/presentation/prescriptions/prescriptions_list_page.dart +++ b/lib/presentation/prescriptions/prescriptions_list_page.dart @@ -247,7 +247,7 @@ class _PrescriptionsListPageState extends State { : LocaleKeys.prescriptionDeliveryError.tr(context: context), onPressed: () async { if (prescription.isHomeMedicineDeliverySupported!) { - LoaderBottomSheet.showLoader(loadingText: "Fetching prescription details...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); await prescriptionsViewModel.getPrescriptionDetails(prescriptionsViewModel.patientPrescriptionOrders[index], onSuccess: (val) { LoaderBottomSheet.hideLoader(); @@ -322,7 +322,7 @@ class _PrescriptionsListPageState extends State { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "You don't have any prescriptions yet.".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.youDontHaveAnyPrescriptionsYet.tr(context: context)); }, ).paddingSymmetrical(24.h, 0.h), ], diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 1c164390..0bf70587 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -83,7 +83,7 @@ class ProfileSettingsState extends State { @override Widget build(BuildContext context) { return CollapsingListView( - title: "Profile & Settings".needTranslation, + title: LocaleKeys.profileAndSettings.tr(context: context), logout: () {}, isClose: true, child: SingleChildScrollView( @@ -114,8 +114,8 @@ class ProfileSettingsState extends State { onAddFamilyMemberPress: () { DialogService dialogService = getIt.get(); dialogService.showAddFamilyFileSheet( - label: "Add Family Member".needTranslation, - message: "Please fill the below field to add a new family member to your profile".needTranslation, + label: LocaleKeys.addFamilyMember.tr(), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), onVerificationPress: () { medicalVm.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); }); @@ -149,7 +149,7 @@ class ProfileSettingsState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h), - "Habib Wallet".needTranslation.toText16(weight: FontWeight.w600, maxlines: 2).expanded, + LocaleKeys.habibWallet.tr(context: context).toText16(weight: FontWeight.w600, maxlines: 2).expanded, Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), ], ), @@ -165,7 +165,7 @@ class ProfileSettingsState extends State { iconSize: 22.w, iconColor: AppColors.infoColor, textColor: AppColors.infoColor, - text: "Recharge".needTranslation, + text: LocaleKeys.recharge.tr(context: context), borderWidth: 0.w, fontWeight: FontWeight.w500, borderColor: Colors.transparent, @@ -183,9 +183,7 @@ class ProfileSettingsState extends State { ), ], ), - "Quick Actions" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) + LocaleKeys.quickActions.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) .paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), @@ -195,17 +193,15 @@ class ProfileSettingsState extends State { children: [ actionItem(AppAssets.language_change, LocaleKeys.language.tr(context: context), () { showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.language.tr(context: context), child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); - }, trailingLabel: Utils.appState.isArabic() ? "العربية".needTranslation : "English".needTranslation), + }, trailingLabel: Utils.appState.isArabic() ? "العربية" : "English"), 1.divider, - actionItem(AppAssets.bell, "Notifications Settings".needTranslation, () {}), + actionItem(AppAssets.bell, LocaleKeys.notificationsSettings.tr(context: context), () {}), 1.divider, - actionItem(AppAssets.touch_face_id, "Touch ID / Face ID Services".needTranslation, () {}, switchValue: true), + actionItem(AppAssets.touch_face_id, LocaleKeys.touchIDFaceIDServices.tr(), () {}, switchValue: true), ], ), ), - "Personal Information" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) + LocaleKeys.personalInformation.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) .paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), @@ -213,7 +209,7 @@ class ProfileSettingsState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ - actionItem(AppAssets.email_transparent, "Update Email Address".needTranslation, () {}), + actionItem(AppAssets.email_transparent, LocaleKeys.updateEmailAddress.tr(), () {}), // 1.divider, // actionItem(AppAssets.smart_phone_fill, "Phone Number".needTranslation, () {}), // 1.divider, @@ -223,9 +219,7 @@ class ProfileSettingsState extends State { ], ), ), - "Help & Support" - .needTranslation - .toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) + LocaleKeys.helpAndSupport.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) .paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), @@ -237,9 +231,9 @@ class ProfileSettingsState extends State { launchUrl(Uri.parse("tel://" + "+966 11 525 9999")); }, trailingLabel: "011 525 9999"), 1.divider, - actionItem(AppAssets.permission, "Permissions".needTranslation, () {}, trailingLabel: "Location, Camera"), + actionItem(AppAssets.permission, LocaleKeys.permissions.tr(), () {}, trailingLabel: "Location, Camera"), 1.divider, - actionItem(AppAssets.rate, "Rate Our App".needTranslation, () { + actionItem(AppAssets.rate, LocaleKeys.rateApp.tr(), () { if (Platform.isAndroid) { Utils.openWebView( url: 'https://play.google.com/store/apps/details?id=com.ejada.hmg', @@ -251,13 +245,13 @@ class ProfileSettingsState extends State { } }, isExternalLink: true), 1.divider, - actionItem(AppAssets.privacy_terms, "Privacy Policy".needTranslation, () { + actionItem(AppAssets.privacy_terms, LocaleKeys.privacyPolicy.tr(), () { Utils.openWebView( url: 'https://hmg.com/en/Pages/Privacy.aspx', ); }, isExternalLink: true), 1.divider, - actionItem(AppAssets.privacy_terms, "Terms & Conditions".needTranslation, () { + actionItem(AppAssets.privacy_terms, LocaleKeys.termsConditoins.tr(context: context), () { Utils.openWebView( url: 'https://hmg.com/en/Pages/Terms.aspx', ); @@ -268,7 +262,7 @@ class ProfileSettingsState extends State { CustomButton( height: 56.h, icon: AppAssets.minus, - text: "Deactivate account".needTranslation, + text: LocaleKeys.deactivateAccount.tr(), onPressed: () {}, ).paddingAll(24.w), ], @@ -363,7 +357,7 @@ class FamilyCardWidget extends StatelessWidget { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: "${profile.age} Years Old".needTranslation, + labelText: LocaleKeys.ageYearsOld.tr(namedArgs: {'age': profile.age.toString(), 'yearsOld': LocaleKeys.yearsOld.tr(context: context)}), ), isActive && appState.getAuthenticatedUser()!.bloodGroup != null ? AppCustomChipWidget( @@ -396,17 +390,17 @@ class FamilyCardWidget extends StatelessWidget { if (isLoading) { icon = AppAssets.cancel_circle_icon; - labelText = "Insurance".needTranslation; + labelText = LocaleKeys.insurance.tr(context: context); iconColor = AppColors.primaryRedColor; backgroundColor = AppColors.primaryRedColor; } else if (isExpired) { icon = AppAssets.cancel_circle_icon; - labelText = "Insurance Expired".needTranslation; + labelText = LocaleKeys.insuranceExpired.tr(context: context); iconColor = AppColors.primaryRedColor; backgroundColor = AppColors.primaryRedColor.withValues(alpha: 0.15); } else { icon = AppAssets.insurance_active_icon; - labelText = "Insurance Active".needTranslation; + labelText = LocaleKeys.insuranceActive.tr(context: context); iconColor = AppColors.successColor; backgroundColor = AppColors.successColor.withValues(alpha: 0.15); } @@ -451,7 +445,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: canSwitch ? AppAssets.switch_user : AppAssets.add_family, - text: canSwitch ? "Switch Family File".needTranslation : "Add a new family member".needTranslation, + text: canSwitch ? LocaleKeys.switchFamilyFile.tr() : LocaleKeys.addANewFamilyMember.tr(), onPressed: canSwitch ? () => onFamilySwitchPress(profile) : onAddFamilyMemberPress, backgroundColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, @@ -467,7 +461,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: AppAssets.switch_user, - text: canSwitchBack ? "Switch Back To Family File".needTranslation : "Switch".needTranslation, + text: canSwitchBack ? LocaleKeys.switchBackFamilyFile.tr() : LocaleKeys.switchLogin.tr(), backgroundColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, borderColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, textColor: canSwitchBack ? AppColors.whiteColor : AppColors.greyTextColor, diff --git a/lib/presentation/profile_settings/widgets/family_card_widget.dart b/lib/presentation/profile_settings/widgets/family_card_widget.dart index eaee4c02..b21c52d4 100644 --- a/lib/presentation/profile_settings/widgets/family_card_widget.dart +++ b/lib/presentation/profile_settings/widgets/family_card_widget.dart @@ -73,7 +73,7 @@ class FamilyCardWidget extends StatelessWidget { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: "${profile.age} Years Old".needTranslation, + labelText: "${profile.age} ${LocaleKeys.yearsOld.tr(context: context)}", ), isActive && appState.getAuthenticatedUser()!.bloodGroup != null ? AppCustomChipWidget( @@ -106,17 +106,17 @@ class FamilyCardWidget extends StatelessWidget { if (isLoading) { icon = AppAssets.cancel_circle_icon; - labelText = "Insurance".needTranslation; + labelText = LocaleKeys.insurance.tr(context: context); iconColor = AppColors.primaryRedColor; backgroundColor = AppColors.primaryRedColor; } else if (isExpired) { icon = AppAssets.cancel_circle_icon; - labelText = "Insurance Expired".needTranslation; + labelText = LocaleKeys.insuranceExpired.tr(context: context); iconColor = AppColors.primaryRedColor; backgroundColor = AppColors.primaryRedColor.withValues(alpha: 0.15); } else { icon = AppAssets.insurance_active_icon; - labelText = "Insurance Active".needTranslation; + labelText = LocaleKeys.insuranceActive.tr(context: context); iconColor = AppColors.successColor; backgroundColor = AppColors.successColor.withValues(alpha: 0.15); } @@ -161,7 +161,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: canSwitch ? AppAssets.switch_user : AppAssets.add_family, - text: canSwitch ? "Switch Family File".needTranslation : "Add a new family member".needTranslation, + text: canSwitch ? LocaleKeys.switchAccount.tr() : LocaleKeys.addANewFamilyMember.tr(), onPressed: canSwitch ? () => onFamilySwitchPress(profile) : onAddFamilyMemberPress, backgroundColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, @@ -177,7 +177,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: AppAssets.switch_user, - text: canSwitchBack ? "Switch Back To Family File".needTranslation : "Switch".needTranslation, + text: canSwitchBack ? LocaleKeys.switchBackFamilyFile.tr() : LocaleKeys.switchLogin.tr(), backgroundColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, borderColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, textColor: canSwitchBack ? AppColors.whiteColor : AppColors.greyTextColor, diff --git a/lib/presentation/radiology/radiology_orders_page.dart b/lib/presentation/radiology/radiology_orders_page.dart index fb153ead..e1ec426f 100644 --- a/lib/presentation/radiology/radiology_orders_page.dart +++ b/lib/presentation/radiology/radiology_orders_page.dart @@ -179,7 +179,7 @@ class _RadiologyOrdersPageState extends State { } if (model.patientRadiologyOrdersViewList.isEmpty) { - return Utils.getNoDataWidget(ctx, noDataText: "You don't have any radiology results yet.".needTranslation); + return Utils.getNoDataWidget(ctx, noDataText: LocaleKeys.youDontHaveRadiologyOrders.tr(context: context)); } return ListView.builder( @@ -239,7 +239,7 @@ class _RadiologyOrdersPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - AppCustomChipWidget(labelText: "${group.length} ${'results'.needTranslation}"), + AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), @@ -323,7 +323,7 @@ class _RadiologyOrdersPageState extends State { icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, - text: "View Results".needTranslation, + text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.navigationService.push( CustomPageRoute( diff --git a/lib/presentation/radiology/radiology_result_page.dart b/lib/presentation/radiology/radiology_result_page.dart index 1fc2d9f1..2328d0ea 100644 --- a/lib/presentation/radiology/radiology_result_page.dart +++ b/lib/presentation/radiology/radiology_result_page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -10,6 +11,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/radiology/models/resp_models/patient_radiology_response_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -49,7 +51,7 @@ class _RadiologyResultPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Radiology Result".needTranslation, + title: LocaleKeys.radiologyResult.tr(context: context), child: SingleChildScrollView( child: Padding( padding: EdgeInsets.symmetric(horizontal: 24.h), @@ -72,13 +74,13 @@ class _RadiologyResultPageState extends State { widget.patientRadiologyResponseModel.reportData!.trim().toText12(isBold: true, color: AppColors.textColorLight), SizedBox(height: 16.h), CustomButton( - text: "View Radiology Image".needTranslation, + text: LocaleKeys.viewRadiologyImage.tr(context: context), onPressed: () async { if (radiologyViewModel.radiologyImageURL.isNotEmpty) { Uri uri = Uri.parse(radiologyViewModel.radiologyImageURL); launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); } else { - Utils.showToast("Radiology image not available".needTranslation); + Utils.showToast("Radiology image not available"); } }, backgroundColor: AppColors.primaryRedColor, @@ -111,7 +113,7 @@ class _RadiologyResultPageState extends State { hasShadow: true, ), child: CustomButton( - text: "Download report".needTranslation, + text: LocaleKeys.downloadReport.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(); await radiologyViewModel.getRadiologyPDF(patientRadiologyResponseModel: widget.patientRadiologyResponseModel, authenticatedUser: _appState.getAuthenticatedUser()!, onError: (err) { @@ -132,7 +134,7 @@ class _RadiologyResultPageState extends State { } catch (ex) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Cannot open file".needTranslation), + child: Utils.getErrorWidget(loadingText: "Cannot open file"), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/rate_appointment/rate_appointment_clinic.dart b/lib/presentation/rate_appointment/rate_appointment_clinic.dart index 5fb1fa3c..e7e29f67 100644 --- a/lib/presentation/rate_appointment/rate_appointment_clinic.dart +++ b/lib/presentation/rate_appointment/rate_appointment_clinic.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -5,6 +6,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/rate_appointment/widget/doctor_row.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -77,9 +79,7 @@ class _RateAppointmentClinicState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - - "Rate Clinic".needTranslation.toText16(isBold: true), - + LocaleKeys.rateClinic.tr(context: context).toText16(isBold: true), SizedBox(height: 12), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -147,13 +147,13 @@ class _RateAppointmentClinicState extends State { children: [ Expanded( child: CustomButton( - text: "Back".needTranslation, + text: LocaleKeys.back.tr(context: context), backgroundColor: Color(0xffFEE9EA), borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), onPressed: () { - appointmentRatingViewModel!.setTitle("Rate Doctor".needTranslation); - appointmentRatingViewModel!.setSubTitle("How was your last visit with doctor?".needTranslation); + appointmentRatingViewModel!.setTitle(LocaleKeys.rateDoctor.tr(context: context)); + appointmentRatingViewModel!.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context)); appointmentRatingViewModel!.setClinicOrDoctor(false); setState(() { @@ -164,7 +164,7 @@ class _RateAppointmentClinicState extends State { SizedBox(width: 10), Expanded( child: CustomButton( - text: "Submit".needTranslation, + text: LocaleKeys.submit.tr(context: context), onPressed: () { submitRating(); diff --git a/lib/presentation/rate_appointment/rate_appointment_doctor.dart b/lib/presentation/rate_appointment/rate_appointment_doctor.dart index ac79744e..b9a6c587 100644 --- a/lib/presentation/rate_appointment/rate_appointment_doctor.dart +++ b/lib/presentation/rate_appointment/rate_appointment_doctor.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/rate_appointment/rate_appointment_clinic.dart'; import 'package:hmg_patient_app_new/presentation/rate_appointment/widget/doctor_row.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -88,9 +90,7 @@ class _RateAppointmentDoctorState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - - "Please rate the doctor".needTranslation.toText16(isBold: true), - + "Please rate the doctor".toText16(isBold: true), SizedBox(height: 12), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -142,7 +142,7 @@ class _RateAppointmentDoctorState extends State { maxLines: 4, decoration: InputDecoration.collapsed( - hintText: "Notes".needTranslation, + hintText: LocaleKeys.notes.tr(context: context), hintStyle: TextStyle( fontSize: 16, fontWeight: FontWeight.w600, @@ -172,7 +172,7 @@ class _RateAppointmentDoctorState extends State { children: [ Expanded( child: CustomButton( - text: "Later".needTranslation, + text: "Later", backgroundColor: Color(0xffFEE9EA), borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), @@ -184,11 +184,11 @@ class _RateAppointmentDoctorState extends State { SizedBox(width: 10), Expanded( child: CustomButton( - text: "Next".needTranslation, + text: LocaleKeys.next.tr(context: context), onPressed: () { // Set up clinic rating and show clinic rating view - appointmentRatingViewModel!.setTitle("Rate Clinic".needTranslation); - appointmentRatingViewModel!.setSubTitle("How was your appointment?".needTranslation); + appointmentRatingViewModel!.setTitle(LocaleKeys.rateDoctor.tr(context: context),); + appointmentRatingViewModel!.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context),); appointmentRatingViewModel!.setClinicOrDoctor(true); setState(() {}); diff --git a/lib/presentation/symptoms_checker/organ_selector_screen.dart b/lib/presentation/symptoms_checker/organ_selector_screen.dart index 1786dece..cc956dc3 100644 --- a/lib/presentation/symptoms_checker/organ_selector_screen.dart +++ b/lib/presentation/symptoms_checker/organ_selector_screen.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/interactive_body_widget.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -38,11 +40,11 @@ class _OrganSelectorPageState extends State { void _onNextPressed(SymptomsCheckerViewModel viewModel) async { if (!viewModel.validateSelection()) { dialogService.showErrorBottomSheet( - message: 'Please select at least one organ'.needTranslation, + message: LocaleKeys.noOrgansSelected.tr(context: context), ); return; } - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context),); final String userName = 'guest_user'; final String password = '123456'; @@ -112,7 +114,7 @@ class _OrganSelectorPageState extends State { return Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: Text( - "Organ Selector".needTranslation, + LocaleKeys.organSelector.tr(context: context), style: TextStyle( color: AppColors.textColor, fontSize: 22.f, @@ -249,7 +251,7 @@ class _OrganSelectorPageState extends State { return Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: Text( - 'Selected Organs'.needTranslation, + LocaleKeys.selectedOrgans.tr(context: context), style: TextStyle( fontSize: 16.f, fontWeight: FontWeight.w600, @@ -264,7 +266,7 @@ class _OrganSelectorPageState extends State { return Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: Text( - 'No organs selected yet'.needTranslation, + LocaleKeys.noOrgansSelected.tr(context: context), style: TextStyle( color: AppColors.greyTextColor, fontSize: 14.f, @@ -301,7 +303,7 @@ class _OrganSelectorPageState extends State { return Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: CustomButton( - text: 'Next'.needTranslation, + text: LocaleKeys.next.tr(context: context), onPressed: () => _onNextPressed(viewModel), isDisabled: viewModel.selectedOrgans.isEmpty, backgroundColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/possible_conditions_screen.dart b/lib/presentation/symptoms_checker/possible_conditions_screen.dart index a63d1e2d..bc233a4c 100644 --- a/lib/presentation/symptoms_checker/possible_conditions_screen.dart +++ b/lib/presentation/symptoms_checker/possible_conditions_screen.dart @@ -51,7 +51,7 @@ class PossibleConditionsPage extends StatelessWidget { child: Padding( padding: EdgeInsets.all(24.h), child: Text( - 'No Predictions available'.needTranslation, + LocaleKeys.noPredictionsAvailable.tr(context: context), style: TextStyle( fontSize: 16.h, color: AppColors.greyTextColor, @@ -102,7 +102,7 @@ class PossibleConditionsPage extends StatelessWidget { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to restart the organ selection?".needTranslation, + loadingText: LocaleKeys.areYouSureYouWantToRestartOrganSelection.tr(context: context), isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), onConfirmTap: () => onConfirm(), @@ -161,7 +161,7 @@ class PossibleConditionsPage extends StatelessWidget { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Possible Conditions".needTranslation, + title: LocaleKeys.possibleConditions.tr(context: context), trailing: _buildTrailingSection(context), child: Consumer( builder: (context, symptomsCheckerViewModel, child) { diff --git a/lib/presentation/symptoms_checker/risk_factors_screen.dart b/lib/presentation/symptoms_checker/risk_factors_screen.dart index 8669c3ca..6ee4f29a 100644 --- a/lib/presentation/symptoms_checker/risk_factors_screen.dart +++ b/lib/presentation/symptoms_checker/risk_factors_screen.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -44,7 +46,7 @@ class _RiskFactorsScreenState extends State { context.navigateWithName(AppRoutes.suggestionsPage); } else { dialogService.showErrorBottomSheet( - message: 'Please select at least one risk before proceeding'.needTranslation, + message: LocaleKeys.pleaseSelectAtLeastOneRiskBeforeProceeding.tr(context: context), ); } } @@ -121,11 +123,10 @@ class _RiskFactorsScreenState extends State { ), children: [ TextSpan( - text: "Above you see the most common risk factors. Although /diagnosis may return questions about risk factors, " - .needTranslation, + text: LocaleKeys.aboveYouSeeCommonRiskFactors.tr(context: context), ), TextSpan( - text: "read more".needTranslation, + text: LocaleKeys.readMore.tr(context: context), style: TextStyle( color: AppColors.primaryRedColor, fontWeight: FontWeight.w500, @@ -216,7 +217,7 @@ class _RiskFactorsScreenState extends State { children: [ Expanded( child: CollapsingListView( - title: "Risk Factors".needTranslation, + title: LocaleKeys.riskFactors.tr(context: context), leadingCallback: () => context.pop(), child: viewModel.isRiskFactorsLoading ? _buildLoadingShimmer() @@ -249,7 +250,7 @@ class _RiskFactorsScreenState extends State { Icon(Icons.info_outline, size: 64.h, color: AppColors.greyTextColor), SizedBox(height: 16.h), Text( - 'No risk factors found'.needTranslation, + LocaleKeys.noRiskFactorsFound.tr(context: context), style: TextStyle( fontSize: 18.f, fontWeight: FontWeight.w600, @@ -258,7 +259,7 @@ class _RiskFactorsScreenState extends State { ), SizedBox(height: 8.h), Text( - 'Based on your selected symptoms, no additional risk factors were identified.'.needTranslation, + LocaleKeys.basedOnYourSelectedSymptomsNoRiskFactors.tr(context: context), textAlign: TextAlign.center, style: TextStyle( fontSize: 14.f, @@ -282,7 +283,7 @@ class _RiskFactorsScreenState extends State { children: [ Expanded( child: CustomButton( - text: "Previous".needTranslation, + text: LocaleKeys.previous.tr(context: context), onPressed: _onPreviousPressed, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), borderColor: Colors.transparent, @@ -293,7 +294,7 @@ class _RiskFactorsScreenState extends State { SizedBox(width: 12.w), Expanded( child: CustomButton( - text: "Next".needTranslation, + text: LocaleKeys.next.tr(context: context), onPressed: () => _onNextPressed(viewModel), backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart index 8366545e..37802a27 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart @@ -1,8 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/widgets/custom_date_picker.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -25,7 +27,7 @@ class AgeSelectionPage extends StatelessWidget { builder: (BuildContext context, symptomsViewModel, Widget? child) { return Column( children: [ - "What is your Date of Birth?".needTranslation.toText18(weight: FontWeight.w600, color: AppColors.textColor).paddingAll(24.w), + LocaleKeys.dateOfBirthSymptoms.tr(context: context).toText18(weight: FontWeight.w600, color: AppColors.textColor).paddingAll(24.w), SizedBox(height: 30.h), ThreeColumnDatePicker( enableHaptic: true, diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart index 85cb6e2c..6eaae8ce 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -5,6 +6,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -48,21 +50,21 @@ class GenderSelectionPage extends StatelessWidget { builder: (BuildContext context, symptomsViewModel, Widget? child) { return Column( children: [ - "What is your gender?".needTranslation.toText18(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.genderSymptoms.tr(context: context).toText18(weight: FontWeight.w600, color: AppColors.textColor), SizedBox(height: 70.h), Row( children: [ Expanded( child: InkWell( onTap: () => onGenderSelected(genders[0]), - child: _buildGenderOption(AppAssets.maleIcon, "Male".needTranslation, symptomsViewModel.selectedGender == genders[0]), + child: _buildGenderOption(AppAssets.maleIcon, LocaleKeys.malE.tr(context: context), symptomsViewModel.selectedGender == genders[0]), ), ), SizedBox(width: 16.w), Expanded( child: InkWell( onTap: () => onGenderSelected(genders[1]), - child: _buildGenderOption(AppAssets.femaleIcon, "Female".needTranslation, symptomsViewModel.selectedGender == genders[1]), + child: _buildGenderOption(AppAssets.femaleIcon, LocaleKeys.femaleGender.tr(context: context), symptomsViewModel.selectedGender == genders[1]), )) ], ), diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart index 0744e817..65cf5a5b 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart @@ -1,10 +1,12 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/widgets/height_scale.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -107,7 +109,7 @@ class HeightSelectionPage extends StatelessWidget { SizedBox(height: 24.h), Center( child: Text( - 'How tall are you?'.needTranslation, + LocaleKeys.heightSymptoms.tr(context: context), style: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, color: AppColors.textColor), ), ), diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart index 1d38a91e..8c837964 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart @@ -1,10 +1,12 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/widgets/weight_scale.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -113,7 +115,7 @@ class WeightSelectionPage extends StatelessWidget { SizedBox(height: 24.h), Center( child: Text( - 'What is your weight?'.needTranslation, + LocaleKeys.weightSymptoms.tr(context: context), style: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, color: AppColors.textColor), ), ), diff --git a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart index 523470e8..b5df05b2 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart @@ -1,10 +1,12 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart'; @@ -184,7 +186,7 @@ class _UserInfoFlowManagerState extends State { child: isSingleEdit ? // Single page edit mode - show only Save button CustomButton( - text: "Save".needTranslation, + text: LocaleKeys.save.tr(context: context), onPressed: _onNext, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, @@ -197,7 +199,7 @@ class _UserInfoFlowManagerState extends State { if (!isFirstPage) ...[ Expanded( child: CustomButton( - text: "Previous".needTranslation, + text: LocaleKeys.previous.tr(context: context), onPressed: _onPrevious, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), borderColor: Colors.transparent, @@ -209,7 +211,7 @@ class _UserInfoFlowManagerState extends State { ], Expanded( child: CustomButton( - text: isLastPage ? "Submit".needTranslation : "Next".needTranslation, + text: isLastPage ? LocaleKeys.submit.tr(context: context) : LocaleKeys.next.tr(context: context), onPressed: _onNext, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, @@ -233,7 +235,7 @@ class _UserInfoFlowManagerState extends State { Expanded( child: CollapsingListView( physics: NeverScrollableScrollPhysics(), - title: _pageTitles[_viewModel.userInfoCurrentPage].needTranslation, + title: _pageTitles[_viewModel.userInfoCurrentPage], isLeading: true, child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/presentation/symptoms_checker/widgets/condition_card.dart b/lib/presentation/symptoms_checker/widgets/condition_card.dart index 87a8f3d1..b89eac27 100644 --- a/lib/presentation/symptoms_checker/widgets/condition_card.dart +++ b/lib/presentation/symptoms_checker/widgets/condition_card.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/custom_progress_bar.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -156,12 +158,12 @@ class ConditionCard extends StatelessWidget { ), _buildSymptomsRow(), SizedBox(height: 16.h), - Text("Description".needTranslation, style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14.f, color: AppColors.textColor)), + Text(LocaleKeys.description.tr(context: context), style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14.f, color: AppColors.textColor)), SizedBox(height: 2.h), Text(description, style: TextStyle(color: AppColors.greyTextColor, fontWeight: FontWeight.w500, fontSize: 12.f)), if (possibleConditionsSeverityEnum == PossibleConditionsSeverityEnum.emergency) CustomButton( - text: appointmentLabel ?? "Book Appointment".needTranslation, + text: appointmentLabel ?? LocaleKeys.bookAppointment.tr(context: context), onPressed: () { if (onActionPressed != null) { onActionPressed!(); diff --git a/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart b/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart index c0f1be36..b66ef037 100644 --- a/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart +++ b/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart @@ -1,8 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/organ_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -52,7 +54,7 @@ class _SelectedOrgansSectionState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - 'Selected Organs'.needTranslation, + LocaleKeys.selectedOrgans.tr(context: context), style: TextStyle( fontSize: 16.f, fontWeight: FontWeight.w600, @@ -101,7 +103,7 @@ class _SelectedOrgansSectionState extends State { Padding( padding: EdgeInsets.symmetric(vertical: 8.h), child: Text( - 'No organs selected yet'.needTranslation, + LocaleKeys.noOrgansSelected.tr(context: context), style: TextStyle( color: AppColors.greyTextColor, fontSize: 14.f, From e5f24b9c06addc9b10dfe6a8819df1dc99b103bf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 15 Jan 2026 14:05:32 +0300 Subject: [PATCH 08/67] updates --- lib/core/api_consts.dart | 2 +- lib/core/dependencies.dart | 15 +++++++-------- lib/main.dart | 4 ++++ lib/routes/app_routes.dart | 2 -- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 720fda7a..efefee18 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index 45cd2a42..44a8bde2 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -61,7 +61,6 @@ import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_repo.da import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/services/analytics/analytics_service.dart'; -import 'package:hmg_patient_app_new/presentation/monthly_reports/monthly_reports_page.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; @@ -299,13 +298,13 @@ class AppDependencies { activePrescriptionsRepo: getIt() ), ); - // getIt.registerFactory( - // () => QrParkingViewModel( - // qrParkingRepo: getIt(), - // errorHandlerService: getIt(), - // cacheService: getIt(), - // ), - // ); + getIt.registerFactory( + () => QrParkingViewModel( + qrParkingRepo: getIt(), + errorHandlerService: getIt(), + cacheService: getIt(), + ), + ); } } diff --git a/lib/main.dart b/lib/main.dart index 51587068..ec3b7ec8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,6 +32,7 @@ import 'package:hmg_patient_app_new/features/notifications/notifications_view_mo import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/features/qr_parking/qr_parking_view_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; @@ -191,6 +192,9 @@ void main() async { ChangeNotifierProvider( create: (_) => getIt.get(), ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), ChangeNotifierProvider( create: (_) => getIt.get(), ) diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index ebc71655..bf665ea8 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -37,7 +37,6 @@ import '../presentation/covid19test/covid19_landing_page.dart'; import '../core/dependencies.dart'; import '../features/monthly_reports/monthly_reports_repo.dart'; import '../features/monthly_reports/monthly_reports_view_model.dart'; -import '../presentation/monthly_reports/monthly_reports_page.dart'; import '../presentation/parking/paking_page.dart'; import '../services/error_handler_service.dart'; import 'package:provider/provider.dart'; @@ -140,7 +139,6 @@ class AppRoutes { monthlyReportsRepo: getIt(), errorHandlerService: getIt(), ), - child: const MonthlyReportsPage(), ), qrParking: (context) => ChangeNotifierProvider( create: (_) => getIt(), From 39af08ddc3cea7750d2f3f525b3a585d033ecccf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Fri, 16 Jan 2026 13:03:04 +0300 Subject: [PATCH 09/67] Translation updates --- assets/langs/ar-SA.json | 71 ++++++++++++++++++- assets/langs/en-US.json | 69 +++++++++++++++++- lib/generated/locale_keys.g.dart | 67 +++++++++++++++++ .../allergies/allergies_list_page.dart | 2 +- .../notification_details_page.dart | 13 ++-- .../smartwatch_instructions_page.dart | 12 ++-- .../smartwatches/widgets/health_metric.dart | 6 +- .../symptoms_checker/suggestions_screen.dart | 14 ++-- .../symptoms_selector_screen.dart | 14 ++-- .../symptoms_checker/triage_screen.dart | 23 +++--- .../symptoms_checker/user_info_selection.dart | 26 +++---- .../ancillary_order_payment_page.dart | 34 ++++----- .../ancillary_procedures_details_page.dart | 26 +++---- lib/presentation/todo_section/todo_page.dart | 4 +- .../widgets/ancillary_orders_list.dart | 16 ++--- .../widgets/ancillary_procedures_list.dart | 19 ++--- lib/widgets/common_bottom_sheet.dart | 6 +- lib/widgets/countdown_timer.dart | 8 ++- 18 files changed, 322 insertions(+), 108 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index f49873a2..e3047102 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1368,5 +1368,72 @@ "readMore": "اقرأ المزيد", "riskFactors": "عوامل الخطر", "noRiskFactorsFound": "لم يتم العثور على عوامل خطر", - "basedOnYourSelectedSymptomsNoRiskFactors": "بناءً على الأعراض المحددة، لم يتم تحديد عوامل خطر إضافية." -} \ No newline at end of file + "basedOnYourSelectedSymptomsNoRiskFactors": "بناءً على الأعراض المحددة، لم يتم تحديد عوامل خطر إضافية.", + "messageNotification": "الرسالة", + "attachedImage": "الصورة المرفقة", + "failedToLoadImage": "فشل تحميل الصورة", + "typeNotification": "النوع", + "pleaseSelectAtLeastOneOptionBeforeProceeding": "يرجى اختيار خيار واحد على الأقل قبل المتابعة", + "suggestions": "الاقتراحات", + "pleaseGoBackAndSelectOrgansFirst": "يرجى العودة واختيار الأعضاء أولاً", + "symptomsSelector": "محدد الأعراض", + "emergencyTriage": "طوارئ", + "emergencyEvidenceDetected": "تم اكتشاف دليل طوارئ. يرجى طلب العناية الطبية.", + "noQuestionItemsAvailable": "لا توجد عناصر أسئلة متاحة", + "pleaseAnswerAllQuestionsBeforeProceeding": "يرجى الإجابة على جميع الأسئلة قبل المتابعة", + "triage": "الفرز", + "areYouSureYouWantToExitProgress": "هل أنت متأكد أنك تريد الخروج؟ سيتم فقدان تقدمك.", + "noQuestionAvailable": "لا يوجد سؤال متاح", + "possibleSymptom": "عرض محتمل: ", + "symptomsCheckerFindingScore": "- درجة نتائج فاحص الأعراض", + "notSet": "غير محدد", + "years": "سنوات", + "symptomsChecker": "فاحص الأعراض", + "helloIsYourInformationUpToDate": "مرحباً {name}، هل معلوماتك محدثة؟", + "noEditAll": "لا، تعديل الكل", + "yesItIs": "نعم، إنها كذلك", + "age": "العمر", + "youDontHaveAnyAncillaryOrdersYet": "ليس لديك أي طلبات مساعدة بعد.", + "invoiceWithNumber": "الفاتورة: {invoiceNo}", + "queued": "في قائمة الانتظار", + "checkInReady": "جاهز للتسجيل", + "checkIn": "تسجيل الوصول", + "viewDetails": "عرض التفاصيل", + "selectPaymentMethod": "اختر طريقة الدفع", + "processingPaymentPleaseWait": "جاري معالجة الدفع، يرجى الانتظار...", + "finalizingPaymentPleaseWait": "جاري إتمام الدفع، يرجى الانتظار...", + "generatingInvoicePleaseWait": "جاري إنشاء الفاتورة، يرجى الانتظار...", + "hereIsYourInvoiceNumber": "هذا هو رقم فاتورتك #: ", + "paymentCompletedSuccessfully": "تم الدفع بنجاح", + "failedToInitializeApplePay": "فشل في تهيئة Apple Pay. يرجى المحاولة مرة أخرى.", + "cash": "نقدي", + "approved": "موافق عليه", + "approvalRejectedPleaseVisitReceptionist": "تم رفض الموافقة - يرجى زيارة موظف الاستقبال", + "sentForApproval": "تم إرساله للموافقة", + "ancillaryOrderDetails": "تفاصيل الطلب المساعد", + "noProceduresAvailableForSelectedOrder": "لا توجد إجراءات متاحة للطلب المحدد.", + "procedures": "الإجراءات", + "totalAmount": "المبلغ الإجمالي", + "covered": "مغطى", + "vatPercent": "ضريبة القيمة المضافة (15%)", + "proceedToPayment": "المتابعة للدفع", + "supportedSmartWatches": "الساعات الذكية المدعومة", + "pleaseMakeSureSamsungWatchConnected": "يرجى التأكد من أن ساعة Samsung الخاصة بك متصلة بهاتفك، ومتزامنة ومحدثة بشكل نشط.", + "beforeSyncingDataFollowInstructions": "قبل مزامنة البيانات، يرجى التأكد من اتباع التعليمات بشكل صحيح.", + "viewWatchInstructions": "عرض تعليمات الساعة", + "healthConnectAppNotInstalled": "يبدو أنه ليس لديك تطبيق Health Connect مثبتًا. يرجى تثبيته من متجر Play لمزامنة بيانات صحتك.", + "setTimerOfReminder": "ضبط مؤقت التذكير", + "youHaveAppointmentWithDr": "لديك موعد مع د. ", + "hours": "ساعات", + "secs": "ثواني", + "noAllergiesDataFound": "لم يتم العثور على بيانات الحساسية...", + "heartRateDescription": "معدل ضربات قلبك يشير إلى عدد المرات التي ينبض فيها قلبك في الدقيقة", + "bloodOxygenDescription": "مستوى الأكسجين في الدم يشير إلى كمية الأكسجين التي تحملها خلايا الدم الحمراء", + "stepsDescription": "عدد الخطوات المتخذة على مدار اليوم", + "caloriesDescription": "السعرات الحرارية المحروقة أثناء النشاط البدني", + "distanceDescription": "المسافة المقطوعة على مدار اليوم", + "overview": "نظرة عامة", + "details": "التفاصيل", + "healthy": "صحي", + "warning": "تحذير" +} diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index c4b6c191..98ca7adc 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1361,5 +1361,72 @@ "readMore": "Read more", "riskFactors": "Risk Factors", "noRiskFactorsFound": "No risk factors found", - "basedOnYourSelectedSymptomsNoRiskFactors": "Based on your selected symptoms, no additional risk factors were identified." + "basedOnYourSelectedSymptomsNoRiskFactors": "Based on your selected symptoms, no additional risk factors were identified.", + "messageNotification": "Message", + "attachedImage": "Attached Image", + "failedToLoadImage": "Failed to load image", + "typeNotification": "Type", + "pleaseSelectAtLeastOneOptionBeforeProceeding": "Please select at least one option before proceeding", + "suggestions": "Suggestions", + "pleaseGoBackAndSelectOrgansFirst": "Please go back and select organs first", + "symptomsSelector": "Symptoms Selector", + "emergencyTriage": "Emergency", + "emergencyEvidenceDetected": "Emergency evidence detected. Please seek medical attention.", + "noQuestionItemsAvailable": "No question items available", + "pleaseAnswerAllQuestionsBeforeProceeding": "Please answer all questions before proceeding", + "triage": "Triage", + "areYouSureYouWantToExitProgress": "Are you sure you want to exit? Your progress will be lost.", + "noQuestionAvailable": "No question available", + "possibleSymptom": "Possible symptom: ", + "symptomsCheckerFindingScore": "- Symptoms checker finding score", + "notSet": "Not set", + "years": "Years", + "symptomsChecker": "Symptoms Checker", + "helloIsYourInformationUpToDate": "Hello {name}, Is your information up to date?", + "noEditAll": "No, Edit all", + "yesItIs": "Yes, It is", + "age": "Age", + "youDontHaveAnyAncillaryOrdersYet": "You don't have any ancillary orders yet.", + "invoiceWithNumber": "Invoice: {invoiceNo}", + "queued": "Queued", + "checkInReady": "Check-in Ready", + "checkIn": "Check In", + "viewDetails": "View Details", + "selectPaymentMethod": "Select Payment Method", + "processingPaymentPleaseWait": "Processing payment, Please wait...", + "finalizingPaymentPleaseWait": "Finalizing payment, Please wait...", + "generatingInvoicePleaseWait": "Generating invoice, Please wait...", + "hereIsYourInvoiceNumber": "Here is your invoice #: ", + "paymentCompletedSuccessfully": "Payment Completed Successfully", + "failedToInitializeApplePay": "Failed to initialize Apple Pay. Please try again.", + "cash": "Cash", + "approved": "Approved", + "approvalRejectedPleaseVisitReceptionist": "Approval Rejected - Please visit receptionist", + "sentForApproval": "Sent For Approval", + "ancillaryOrderDetails": "Ancillary Order Details", + "noProceduresAvailableForSelectedOrder": "No Procedures available for the selected order.", + "procedures": "Procedures", + "totalAmount": "Total Amount", + "covered": "Covered", + "vatPercent": "VAT (15%)", + "proceedToPayment": "Proceed to Payment", + "supportedSmartWatches": "Supported Smart Watches", + "pleaseMakeSureSamsungWatchConnected": "Please make sure that your Samsung Watch is connected to your Phone, is actively synced & updated.", + "beforeSyncingDataFollowInstructions": "Before syncing data, please make sure that you have followed the instructions properly.", + "viewWatchInstructions": "View watch instructions", + "healthConnectAppNotInstalled": "Seems like you do not have Health Connect App installed. Please install it from the Play Store to sync your health data.", + "setTimerOfReminder": "Set the timer of reminder", + "youHaveAppointmentWithDr": "You have appointment with Dr. ", + "hours": "Hours", + "secs": "Secs", + "noAllergiesDataFound": "No allergies data found...", + "heartRateDescription": "Your heart rate indicates how many times your heart beats per minute", + "bloodOxygenDescription": "Blood oxygen level indicates how much oxygen your red blood cells are carrying", + "stepsDescription": "Number of steps taken throughout the day", + "caloriesDescription": "Calories burned during physical activity", + "distanceDescription": "Distance covered throughout the day", + "overview": "Overview", + "details": "Details", + "healthy": "Healthy", + "warning": "Warning" } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index a3989ad0..dc0655db 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1363,5 +1363,72 @@ abstract class LocaleKeys { static const riskFactors = 'riskFactors'; static const noRiskFactorsFound = 'noRiskFactorsFound'; static const basedOnYourSelectedSymptomsNoRiskFactors = 'basedOnYourSelectedSymptomsNoRiskFactors'; + static const messageNotification = 'messageNotification'; + static const attachedImage = 'attachedImage'; + static const failedToLoadImage = 'failedToLoadImage'; + static const typeNotification = 'typeNotification'; + static const pleaseSelectAtLeastOneOptionBeforeProceeding = 'pleaseSelectAtLeastOneOptionBeforeProceeding'; + static const suggestions = 'suggestions'; + static const pleaseGoBackAndSelectOrgansFirst = 'pleaseGoBackAndSelectOrgansFirst'; + static const symptomsSelector = 'symptomsSelector'; + static const emergencyTriage = 'emergencyTriage'; + static const emergencyEvidenceDetected = 'emergencyEvidenceDetected'; + static const noQuestionItemsAvailable = 'noQuestionItemsAvailable'; + static const pleaseAnswerAllQuestionsBeforeProceeding = 'pleaseAnswerAllQuestionsBeforeProceeding'; + static const triage = 'triage'; + static const areYouSureYouWantToExitProgress = 'areYouSureYouWantToExitProgress'; + static const noQuestionAvailable = 'noQuestionAvailable'; + static const possibleSymptom = 'possibleSymptom'; + static const symptomsCheckerFindingScore = 'symptomsCheckerFindingScore'; + static const notSet = 'notSet'; + static const years = 'years'; + static const symptomsChecker = 'symptomsChecker'; + static const helloIsYourInformationUpToDate = 'helloIsYourInformationUpToDate'; + static const noEditAll = 'noEditAll'; + static const yesItIs = 'yesItIs'; + static const age = 'age'; + static const youDontHaveAnyAncillaryOrdersYet = 'youDontHaveAnyAncillaryOrdersYet'; + static const invoiceWithNumber = 'invoiceWithNumber'; + static const queued = 'queued'; + static const checkInReady = 'checkInReady'; + static const checkIn = 'checkIn'; + static const viewDetails = 'viewDetails'; + static const selectPaymentMethod = 'selectPaymentMethod'; + static const processingPaymentPleaseWait = 'processingPaymentPleaseWait'; + static const finalizingPaymentPleaseWait = 'finalizingPaymentPleaseWait'; + static const generatingInvoicePleaseWait = 'generatingInvoicePleaseWait'; + static const hereIsYourInvoiceNumber = 'hereIsYourInvoiceNumber'; + static const paymentCompletedSuccessfully = 'paymentCompletedSuccessfully'; + static const failedToInitializeApplePay = 'failedToInitializeApplePay'; + static const cash = 'cash'; + static const approved = 'approved'; + static const approvalRejectedPleaseVisitReceptionist = 'approvalRejectedPleaseVisitReceptionist'; + static const sentForApproval = 'sentForApproval'; + static const ancillaryOrderDetails = 'ancillaryOrderDetails'; + static const noProceduresAvailableForSelectedOrder = 'noProceduresAvailableForSelectedOrder'; + static const procedures = 'procedures'; + static const totalAmount = 'totalAmount'; + static const covered = 'covered'; + static const vatPercent = 'vatPercent'; + static const proceedToPayment = 'proceedToPayment'; + static const supportedSmartWatches = 'supportedSmartWatches'; + static const pleaseMakeSureSamsungWatchConnected = 'pleaseMakeSureSamsungWatchConnected'; + static const beforeSyncingDataFollowInstructions = 'beforeSyncingDataFollowInstructions'; + static const viewWatchInstructions = 'viewWatchInstructions'; + static const healthConnectAppNotInstalled = 'healthConnectAppNotInstalled'; + static const setTimerOfReminder = 'setTimerOfReminder'; + static const youHaveAppointmentWithDr = 'youHaveAppointmentWithDr'; + static const hours = 'hours'; + static const secs = 'secs'; + static const noAllergiesDataFound = 'noAllergiesDataFound'; + static const heartRateDescription = 'heartRateDescription'; + static const bloodOxygenDescription = 'bloodOxygenDescription'; + static const stepsDescription = 'stepsDescription'; + static const caloriesDescription = 'caloriesDescription'; + static const distanceDescription = 'distanceDescription'; + static const overview = 'overview'; + static const details = 'details'; + static const healthy = 'healthy'; + static const warning = 'warning'; } diff --git a/lib/presentation/allergies/allergies_list_page.dart b/lib/presentation/allergies/allergies_list_page.dart index efcdd0ac..adb63f02 100644 --- a/lib/presentation/allergies/allergies_list_page.dart +++ b/lib/presentation/allergies/allergies_list_page.dart @@ -123,7 +123,7 @@ class AllergiesListPage extends StatelessWidget { ), ), ) - : Utils.getNoDataWidget(context, noDataText: "No allergies data found...".needTranslation); + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noAllergiesDataFound.tr()); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ), diff --git a/lib/presentation/notifications/notification_details_page.dart b/lib/presentation/notifications/notification_details_page.dart index a4aef029..949b8728 100644 --- a/lib/presentation/notifications/notification_details_page.dart +++ b/lib/presentation/notifications/notification_details_page.dart @@ -1,12 +1,13 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/notifications/models/resp_models/notification_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; -import 'package:intl/intl.dart'; import 'package:share_plus/share_plus.dart'; class NotificationDetailsPage extends StatelessWidget { @@ -28,7 +29,7 @@ class NotificationDetailsPage extends StatelessWidget { print('========================'); return CollapsingListView( - title: "Notification Details".needTranslation, + title: LocaleKeys.notificationDetails.tr(), trailing: IconButton( icon: Icon( Icons.share_outlined, @@ -115,7 +116,7 @@ class NotificationDetailsPage extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 'Message'.needTranslation.toText14( + LocaleKeys.messageNotification.tr().toText14( weight: FontWeight.w600, color: AppColors.greyTextColor, ), @@ -153,7 +154,7 @@ class NotificationDetailsPage extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 'Attached Image'.needTranslation.toText14( + LocaleKeys.attachedImage.tr().toText14( weight: FontWeight.w600, color: AppColors.greyTextColor, ), @@ -183,7 +184,7 @@ class NotificationDetailsPage extends StatelessWidget { color: AppColors.greyTextColor, ), SizedBox(height: 8.h), - 'Failed to load image'.needTranslation.toText12( + LocaleKeys.failedToLoadImage.tr().toText12( color: AppColors.greyTextColor, ), SizedBox(height: 4.h), @@ -233,7 +234,7 @@ class NotificationDetailsPage extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 'Type'.needTranslation.toText14( + LocaleKeys.typeNotification.tr().toText14( weight: FontWeight.w600, color: AppColors.greyTextColor, ), diff --git a/lib/presentation/smartwatches/smartwatch_instructions_page.dart b/lib/presentation/smartwatches/smartwatch_instructions_page.dart index 7f17f5a3..8edbd242 100644 --- a/lib/presentation/smartwatches/smartwatch_instructions_page.dart +++ b/lib/presentation/smartwatches/smartwatch_instructions_page.dart @@ -38,7 +38,7 @@ class SmartwatchInstructionsPage extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Supported Smart Watches".needTranslation.toText20(isBold: true), + LocaleKeys.supportedSmartWatches.tr().toText20(isBold: true), SizedBox(height: 16.h), Row( children: [ @@ -161,15 +161,15 @@ class SmartwatchInstructionsPage extends StatelessWidget { ), ), SizedBox(height: 12), - "Please make sure that your Samsung Watch is connected to your Phone, is actively synced & updated.".needTranslation.toText14(isBold: true), - SizedBox(height: 12), - "Before syncing data, please make sure that you have followed the instructions properly.".needTranslation.toText14(isBold: true), + LocaleKeys.pleaseMakeSureSamsungWatchConnected.tr().toText14(isBold: true), + SizedBox(height: 8.h), + LocaleKeys.beforeSyncingDataFollowInstructions.tr().toText14(isBold: true), SizedBox(height: 12), InkWell( onTap: () { showInstructionsDialog(context); }, - child: "View watch instructions".needTranslation.toText12(isBold: true, color: AppColors.textColor, isUnderLine: true)), + child: LocaleKeys.viewWatchInstructions.tr().toText12(isBold: true, color: AppColors.textColor, isUnderLine: true)), SizedBox( height: 130.h, ), @@ -186,7 +186,7 @@ class SmartwatchInstructionsPage extends StatelessWidget { ); } else { getIt.get().showErrorBottomSheet( - message: "Seems like you do not have Health Connect App installed. Please install it from the Play Store to sync your health data.".needTranslation, + message: LocaleKeys.healthConnectAppNotInstalled.tr(), onOkPressed: () { Navigator.pop(context); Uri uri = Uri.parse("https://play.google.com/store/apps/details?id=com.google.android.apps.healthdata"); diff --git a/lib/presentation/smartwatches/widgets/health_metric.dart b/lib/presentation/smartwatches/widgets/health_metric.dart index 53759666..43a57468 100644 --- a/lib/presentation/smartwatches/widgets/health_metric.dart +++ b/lib/presentation/smartwatches/widgets/health_metric.dart @@ -1,8 +1,10 @@ import 'dart:io'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:health/health.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class HealthMetricInfo { @@ -39,7 +41,7 @@ class HealthMetrics { unit: 'BPM', color: AppColors.primaryRedColor, icon: Icons.favorite, - description: "Your heart rate indicates how many times your heart beats per minute".needTranslation, + description: LocaleKeys.heartRateDescription.tr(), minHealthyValue: 60, maxHealthyValue: 100, svgIcon: "assets/images/smartwatches/heartrate_icon.svg"), @@ -51,7 +53,7 @@ class HealthMetrics { // color: Colors.blue, color: Color(0xff3A3558), icon: Icons.air, - description: "Blood oxygen level indicates how much oxygen your red blood cells are carrying".needTranslation, + description: LocaleKeys.bloodOxygenDescription.tr(), minHealthyValue: 95, maxHealthyValue: 100, svgIcon: "assets/images/smartwatches/bloodoxygen_icon.svg"), diff --git a/lib/presentation/symptoms_checker/suggestions_screen.dart b/lib/presentation/symptoms_checker/suggestions_screen.dart index d0d5b2f4..f09ebd57 100644 --- a/lib/presentation/symptoms_checker/suggestions_screen.dart +++ b/lib/presentation/symptoms_checker/suggestions_screen.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -7,6 +8,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -46,7 +48,7 @@ class _SuggestionsScreenState extends State { context.navigateWithName(AppRoutes.triagePage); } else { dialogService.showErrorBottomSheet( - message: 'Please select at least one option before proceeding'.needTranslation, + message: LocaleKeys.pleaseSelectAtLeastOneOptionBeforeProceeding.tr(), ); } } @@ -192,7 +194,7 @@ class _SuggestionsScreenState extends State { children: [ Expanded( child: CollapsingListView( - title: "Suggestions".needTranslation, + title: LocaleKeys.suggestions.tr(), leadingCallback: () => context.pop(), child: viewModel.isSuggestionsLoading ? _buildLoadingShimmer() @@ -225,7 +227,7 @@ class _SuggestionsScreenState extends State { Icon(Icons.info_outline, size: 64.h, color: AppColors.greyTextColor), SizedBox(height: 16.h), Text( - 'No organs selected'.needTranslation, + LocaleKeys.noOrgansSelected.tr(), style: TextStyle( fontSize: 18.f, fontWeight: FontWeight.w600, @@ -234,7 +236,7 @@ class _SuggestionsScreenState extends State { ), SizedBox(height: 8.h), Text( - 'Please go back and select organs first'.needTranslation, + LocaleKeys.pleaseGoBackAndSelectOrgansFirst.tr(), textAlign: TextAlign.center, style: TextStyle( fontSize: 14.f, @@ -258,7 +260,7 @@ class _SuggestionsScreenState extends State { children: [ Expanded( child: CustomButton( - text: "Previous".needTranslation, + text: LocaleKeys.previous.tr(), onPressed: _onPreviousPressed, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), borderColor: Colors.transparent, @@ -269,7 +271,7 @@ class _SuggestionsScreenState extends State { SizedBox(width: 12.w), Expanded( child: CustomButton( - text: "Next".needTranslation, + text: LocaleKeys.next.tr(), onPressed: () => _onNextPressed(viewModel), backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart index d6036c62..b4ba802c 100644 --- a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart +++ b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart @@ -44,7 +44,7 @@ class _SymptomsSelectorPageState extends State { context.navigateWithName(AppRoutes.riskFactorsPage); } else { dialogService.showErrorBottomSheet( - message: 'Please select at least one symptom before proceeding'.needTranslation, + message: LocaleKeys.pleaseSelectAtLeastOneOptionBeforeProceeding.tr(), ); } } @@ -58,7 +58,7 @@ class _SymptomsSelectorPageState extends State { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to restart the organ selection?".needTranslation, + loadingText: LocaleKeys.areYouSureYouWantToRestartOrganSelection.tr(), isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), onConfirmTap: () => onConfirm(), @@ -79,7 +79,7 @@ class _SymptomsSelectorPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Symptoms Selector".needTranslation, + title: LocaleKeys.symptomsSelector.tr(), leadingCallback: () => _buildConfirmationBottomSheet( context: context, onConfirm: () => { @@ -252,7 +252,7 @@ class _SymptomsSelectorPageState extends State { Icon(Icons.info_outline, size: 64.h, color: AppColors.greyTextColor), SizedBox(height: 16.h), Text( - 'No organs selected'.needTranslation, + LocaleKeys.noOrgansSelected.tr(context: context), style: TextStyle( fontSize: 18.f, fontWeight: FontWeight.w600, @@ -261,7 +261,7 @@ class _SymptomsSelectorPageState extends State { ), SizedBox(height: 8.h), Text( - 'Please go back and select organs first'.needTranslation, + LocaleKeys.pleaseGoBackAndSelectOrgansFirst.tr(), textAlign: TextAlign.center, style: TextStyle( fontSize: 14.f, @@ -285,7 +285,7 @@ class _SymptomsSelectorPageState extends State { children: [ Expanded( child: CustomButton( - text: "Previous".needTranslation, + text: LocaleKeys.previous.tr(context: context), onPressed: _onPreviousPressed, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), borderColor: Colors.transparent, @@ -296,7 +296,7 @@ class _SymptomsSelectorPageState extends State { SizedBox(width: 12.w), Expanded( child: CustomButton( - text: "Next".needTranslation, + text: LocaleKeys.next.tr(context: context), onPressed: () => _onNextPressed(viewModel), backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index 9d5d884b..526136c2 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -117,10 +117,9 @@ class _TriagePageState extends State { Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), SizedBox(height: 8.h), - "Emergency".needTranslation.toText28(color: AppColors.whiteColor, isBold: true), + LocaleKeys.emergencyTriage.tr(context: context).toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - "Emergency evidence detected. Please seek medical attention." - .needTranslation + LocaleKeys.emergencyEvidenceDetected.tr(context: context) .toText14(color: AppColors.whiteColor, weight: FontWeight.w500), SizedBox(height: 24.h), CustomButton( @@ -159,14 +158,14 @@ class _TriagePageState extends State { final currentQuestion = viewModel.currentTriageQuestion; if (currentQuestion?.items == null || currentQuestion!.items!.isEmpty) { dialogService.showErrorBottomSheet( - message: 'No question items available'.needTranslation, + message: LocaleKeys.noQuestionItemsAvailable.tr(context: context), ); return; } // Check if all items have been answered if (!viewModel.areAllTriageItemsAnswered) { - dialogService.showErrorBottomSheet(message: 'Please answer all questions before proceeding'.needTranslation); + dialogService.showErrorBottomSheet(message: LocaleKeys.pleaseAnswerAllQuestionsBeforeProceeding.tr(context: context)); return; } @@ -222,7 +221,7 @@ class _TriagePageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Triage".needTranslation, + title: LocaleKeys.triage.tr(context: context), leadingCallback: () => _showConfirmationBeforeExit(context), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -304,7 +303,7 @@ class _TriagePageState extends State { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to exit? Your progress will be lost.".needTranslation, + loadingText: LocaleKeys.areYouSureYouWantToExitProgress.tr(context: context), isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), onConfirmTap: () { @@ -325,7 +324,7 @@ class _TriagePageState extends State { if (viewModel.currentTriageQuestion == null) { return Center( - child: "No question available".needTranslation.toText16(weight: FontWeight.w500), + child: LocaleKeys.noQuestionAvailable.tr(context: context).toText16(weight: FontWeight.w500), ); } @@ -457,7 +456,7 @@ class _TriagePageState extends State { children: [ RichText( text: TextSpan( - text: "Possible symptom: ".needTranslation, + text: LocaleKeys.possibleSymptom.tr(context: context), style: TextStyle( color: AppColors.greyTextColor, fontWeight: FontWeight.w600, @@ -492,7 +491,7 @@ class _TriagePageState extends State { ), children: [ TextSpan( - text: "- Symptoms checker finding score".needTranslation, + text: LocaleKeys.symptomsCheckerFindingScore.tr(context: context), style: TextStyle( color: AppColors.textColor, fontWeight: FontWeight.w500, @@ -510,7 +509,7 @@ class _TriagePageState extends State { children: [ Expanded( child: CustomButton( - text: "Previous".needTranslation, + text: LocaleKeys.previous.tr(context: context), onPressed: isFirstQuestion ? () {} : _onPreviousPressed, isDisabled: isFirstQuestion || viewModel.isTriageDiagnosisLoading, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), @@ -522,7 +521,7 @@ class _TriagePageState extends State { SizedBox(width: 12.w), Expanded( child: CustomButton( - text: "Next".needTranslation, + text: LocaleKeys.next.tr(context: context), isDisabled: viewModel.isTriageDiagnosisLoading, onPressed: _onNextPressed, backgroundColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index b4384203..9973d54b 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -149,20 +151,20 @@ class _UserInfoSelectionScreenState extends State { viewModel.selectedWeight == null; // Get display values - String genderText = viewModel.selectedGender ?? "Not set"; + String genderText = viewModel.selectedGender ?? LocaleKeys.notSet.tr(context: context); // Show age calculated from DOB (prefer viewModel's age, fallback to calculated from user's DOB) int? displayAge = viewModel.selectedAge ?? userAgeFromDOB; - String ageText = displayAge != null ? "$displayAge Years" : "Not set"; + String ageText = displayAge != null ? "$displayAge ${LocaleKeys.years.tr(context: context)}" : LocaleKeys.notSet.tr(context: context); String heightText = - viewModel.selectedHeight != null ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" : "Not set"; + viewModel.selectedHeight != null ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" : LocaleKeys.notSet.tr(context: context); String weightText = - viewModel.selectedWeight != null ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" : "Not set"; + viewModel.selectedWeight != null ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" : LocaleKeys.notSet.tr(context: context); return Column( children: [ Expanded( child: CollapsingListView( - title: "Symptoms Checker".needTranslation, + title: LocaleKeys.symptomsChecker.tr(context: context), isLeading: true, child: SingleChildScrollView( child: Column( @@ -173,7 +175,7 @@ class _UserInfoSelectionScreenState extends State { padding: EdgeInsets.symmetric(vertical: 24.h, horizontal: 16.w), child: Column( children: [ - "Hello $name, Is your information up to date?".needTranslation.toText16( + LocaleKeys.helloIsYourInformationUpToDate.tr(namedArgs: {'name': name}).toText16( weight: FontWeight.w600, color: AppColors.textColor, ), @@ -181,7 +183,7 @@ class _UserInfoSelectionScreenState extends State { _buildEditInfoTile( context: context, leadingIcon: AppAssets.genderIcon, - title: "Gender".needTranslation, + title: LocaleKeys.gender.tr(context: context), subTitle: genderText, onTap: () { viewModel.setUserInfoPage(0, isSinglePageEdit: true); @@ -193,7 +195,7 @@ class _UserInfoSelectionScreenState extends State { _buildEditInfoTile( context: context, leadingIcon: AppAssets.calendarGrey, - title: "Age".needTranslation, + title: LocaleKeys.age.tr(context: context), subTitle: ageText, iconColor: AppColors.greyTextColor, onTap: () { @@ -206,7 +208,7 @@ class _UserInfoSelectionScreenState extends State { _buildEditInfoTile( context: context, leadingIcon: AppAssets.rulerIcon, - title: "Height".needTranslation, + title: LocaleKeys.height.tr(context: context), subTitle: heightText, onTap: () { viewModel.setUserInfoPage(2, isSinglePageEdit: true); @@ -218,7 +220,7 @@ class _UserInfoSelectionScreenState extends State { _buildEditInfoTile( context: context, leadingIcon: AppAssets.weightScale, - title: "Weight".needTranslation, + title: LocaleKeys.weight.tr(context: context), subTitle: weightText, onTap: () { viewModel.setUserInfoPage(3, isSinglePageEdit: true); @@ -255,7 +257,7 @@ class _UserInfoSelectionScreenState extends State { children: [ Expanded( child: CustomButton( - text: "No, Edit all".needTranslation, + text: LocaleKeys.noEditAll.tr(context: context), icon: AppAssets.edit_icon, iconColor: AppColors.primaryRedColor, onPressed: () { @@ -271,7 +273,7 @@ class _UserInfoSelectionScreenState extends State { SizedBox(width: 12.w), Expanded( child: CustomButton( - text: "Yes, It is".needTranslation, + text: LocaleKeys.yesItIs.tr(context: context), icon: AppAssets.tickIcon, iconColor: hasEmptyFields ? AppColors.greyTextColor : AppColors.whiteColor, onPressed: hasEmptyFields diff --git a/lib/presentation/todo_section/ancillary_order_payment_page.dart b/lib/presentation/todo_section/ancillary_order_payment_page.dart index 054108df..fe071867 100644 --- a/lib/presentation/todo_section/ancillary_order_payment_page.dart +++ b/lib/presentation/todo_section/ancillary_order_payment_page.dart @@ -83,7 +83,7 @@ class _AncillaryOrderPaymentPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Select Payment Method".needTranslation, + title: LocaleKeys.selectPaymentMethod.tr(context: context), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -103,9 +103,9 @@ class _AncillaryOrderPaymentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 72.h, height: 25.h).toShimmer2(isShow: todoVM.isProcessingPayment), + LocaleKeys.visaOrMastercard.tr(context: context).toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), SizedBox(height: 16.h), - "Mada".needTranslation.toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), + LocaleKeys.mada.tr(context: context).toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), ], ), SizedBox(width: 8.h), @@ -152,7 +152,7 @@ class _AncillaryOrderPaymentPageState extends State { ], ).toShimmer2(isShow: todoVM.isProcessingPayment), SizedBox(height: 16.h), - "Visa or Mastercard".needTranslation.toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), + LocaleKeys.visaOrMastercard.tr(context: context).toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), ], ), SizedBox(width: 8.h), @@ -210,14 +210,14 @@ class _AncillaryOrderPaymentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 24.h), - "Total amount to pay".needTranslation.toText18(isBold: true).paddingSymmetrical(24.h, 0.h), + LocaleKeys.totalAmountToPay.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), // Amount before tax Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Amount before tax".needTranslation.toText14(isBold: true), + LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol( amountBeforeTax.toStringAsFixed(2).toText16(isBold: true), AppColors.blackColor, @@ -231,7 +231,7 @@ class _AncillaryOrderPaymentPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "VAT 15%".needTranslation.toText14(isBold: true, color: AppColors.greyTextColor), + LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( taxAmount.toStringAsFixed(2).toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, @@ -247,7 +247,7 @@ class _AncillaryOrderPaymentPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "".needTranslation.toText14(isBold: true), + "".toText14(isBold: true), Utils.getPaymentAmountWithSymbol( widget.totalAmount.toStringAsFixed(2).toText24(isBold: true), AppColors.blackColor, @@ -346,7 +346,7 @@ class _AncillaryOrderPaymentPageState extends State { } void _checkPaymentStatus() { - LoaderBottomSheet.showLoader(loadingText: "Checking payment status, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); todoSectionViewModel.checkPaymentStatus( transID: transID, @@ -384,7 +384,7 @@ class _AncillaryOrderPaymentPageState extends State { required String paymentReference, required String paymentMethod, }) { - LoaderBottomSheet.showLoader(loadingText: "Processing payment, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.processingPaymentPleaseWait.tr(context: context)); final user = appState.getAuthenticatedUser(); @@ -426,7 +426,7 @@ class _AncillaryOrderPaymentPageState extends State { required String advanceNumber, required String paymentReference, }) { - LoaderBottomSheet.showLoader(loadingText: "Finalizing payment, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.finalizingPaymentPleaseWait.tr(context: context)); final user = appState.getAuthenticatedUser(); @@ -450,7 +450,7 @@ class _AncillaryOrderPaymentPageState extends State { } void _autoGenerateInvoice() { - LoaderBottomSheet.showLoader(loadingText: "Generating invoice, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.generatingInvoicePleaseWait.tr(context: context)); List selectedProcListAPI = widget.selectedProcedures.map((element) { return { @@ -496,7 +496,7 @@ class _AncillaryOrderPaymentPageState extends State { children: [ Row( children: [ - "Here is your invoice #: ".needTranslation.toText14( + LocaleKeys.hereIsYourInvoiceNumber.tr(context: context).toText14( color: AppColors.textColorLight, weight: FontWeight.w500, ), @@ -510,7 +510,7 @@ class _AncillaryOrderPaymentPageState extends State { Expanded( child: CustomButton( height: 56.h, - text: LocaleKeys.ok.tr(), + text: LocaleKeys.ok.tr(context: context), onPressed: () { Navigator.pushAndRemoveUntil( context, @@ -528,8 +528,8 @@ class _AncillaryOrderPaymentPageState extends State { ), ], ), - // title: "Payment Completed Successfully".needTranslation, - titleWidget: Utils.getSuccessWidget(loadingText: "Payment Completed Successfully".needTranslation), + // title: LocaleKeys.paymentCompletedSuccessfully.tr(context: context), + titleWidget: Utils.getSuccessWidget(loadingText: LocaleKeys.paymentCompletedSuccessfully.tr(context: context)), isCloseButtonVisible: false, isDismissible: false, isFullScreen: false, @@ -607,7 +607,7 @@ class _AncillaryOrderPaymentPageState extends State { Navigator.of(context).pop(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Failed to initialize Apple Pay. Please try again.".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.failedToInitializeApplePay.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/todo_section/ancillary_procedures_details_page.dart b/lib/presentation/todo_section/ancillary_procedures_details_page.dart index b7515afb..f6046737 100644 --- a/lib/presentation/todo_section/ancillary_procedures_details_page.dart +++ b/lib/presentation/todo_section/ancillary_procedures_details_page.dart @@ -102,14 +102,14 @@ class _AncillaryOrderDetailsListState extends State { String _getApprovalStatusText(AncillaryOrderProcDetail procedure) { if (procedure.isApprovalRequired == false) { - return "Cash"; + return LocaleKeys.cash.tr(context: context); } else { if (procedure.isApprovalCreated == true && procedure.approvalNo != 0) { - return "Approved"; + return LocaleKeys.approved.tr(context: context); } else if (procedure.isApprovalRequired == true && procedure.isApprovalCreated == true && procedure.approvalNo == 0) { - return "Approval Rejected - Please visit receptionist"; + return LocaleKeys.approvalRejectedPleaseVisitReceptionist.tr(context: context); } else { - return "Sent For Approval"; + return LocaleKeys.sentForApproval.tr(context: context); } } } @@ -135,7 +135,7 @@ class _AncillaryOrderDetailsListState extends State { children: [ Expanded( child: CollapsingListView( - title: "Ancillary Order Details".needTranslation, + title: LocaleKeys.ancillaryOrderDetails.tr(context: context), child: viewModel.isAncillaryDetailsProceduresLoading ? _buildLoadingShimmer().paddingSymmetrical(24.w, 0) : viewModel.patientAncillaryOrderProceduresList.isEmpty @@ -186,7 +186,7 @@ class _AncillaryOrderDetailsListState extends State { ), child: Utils.getNoDataWidget( context, - noDataText: "No Procedures available for the selected order.".needTranslation, + noDataText: LocaleKeys.noProceduresAvailableForSelectedOrder.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -372,7 +372,7 @@ class _AncillaryOrderDetailsListState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Procedures".needTranslation.toText12( + LocaleKeys.procedures.tr(context: context).toText12( color: AppColors.textColorLight, fontWeight: FontWeight.w600, ), @@ -385,7 +385,7 @@ class _AncillaryOrderDetailsListState extends State { Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ - "Total Amount".needTranslation.toText12( + LocaleKeys.totalAmount.tr(context: context).toText12( color: AppColors.textColorLight, fontWeight: FontWeight.w600, ), @@ -535,7 +535,7 @@ class _AncillaryOrderDetailsListState extends State { // ), if (procedure.isCovered == true) AppCustomChipWidget( - labelText: "Covered".needTranslation, + labelText: LocaleKeys.covered.tr(context: context), backgroundColor: AppColors.successColor.withValues(alpha: 0.1), textColor: AppColors.successColor, ), @@ -551,7 +551,7 @@ class _AncillaryOrderDetailsListState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Price".needTranslation.toText10(color: AppColors.textColorLight), + LocaleKeys.price.tr(context: context).toText10(color: AppColors.textColorLight), SizedBox(height: 4.h), Row( children: [ @@ -570,7 +570,7 @@ class _AncillaryOrderDetailsListState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "VAT (15%)".needTranslation.toText10(color: AppColors.textColorLight), + LocaleKeys.vatPercent.tr(context: context).toText10(color: AppColors.textColorLight), SizedBox(height: 4.h), Row( children: [ @@ -589,7 +589,7 @@ class _AncillaryOrderDetailsListState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Total".needTranslation.toText10(color: AppColors.textColorLight), + LocaleKeys.total.tr(context: context).toText10(color: AppColors.textColorLight), SizedBox(height: 4.h), Row( children: [ @@ -654,7 +654,7 @@ class _AncillaryOrderDetailsListState extends State { CustomButton( borderWidth: 0, backgroundColor: AppColors.infoLightColor, - text: "Proceed to Payment".needTranslation, + text: LocaleKeys.proceedToPayment.tr(context: context), onPressed: () { // Navigate to payment page with selected procedures Navigator.of(context).push( diff --git a/lib/presentation/todo_section/todo_page.dart b/lib/presentation/todo_section/todo_page.dart index 0d2d8066..161ffaf9 100644 --- a/lib/presentation/todo_section/todo_page.dart +++ b/lib/presentation/todo_section/todo_page.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/todo_section/ancillary_procedures_details_page.dart'; import 'package:hmg_patient_app_new/presentation/todo_section/widgets/ancillary_orders_list.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -61,7 +63,7 @@ class _ToDoPageState extends State { Widget build(BuildContext context) { appState = getIt.get(); return CollapsingListView( - title: "Ancillary Orders".needTranslation, + title: LocaleKeys.ancillaryOrdersList.tr(context: context), isLeading: true, child: SingleChildScrollView( child: Column( diff --git a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart index 78d7e3ef..aa4d0bab 100644 --- a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart @@ -79,7 +79,7 @@ class AncillaryOrdersList extends StatelessWidget { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any ancillary orders yet.".needTranslation, + noDataText: LocaleKeys.youDontHaveAnyAncillaryOrdersYet.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -187,31 +187,31 @@ class AncillaryOrderCard extends StatelessWidget { if (order.appointmentDate != null || isLoading) AppCustomChipWidget( icon: AppAssets.appointment_calendar_icon, - labelText: isLoading ? "Date: Jan 20, 2024" : DateFormat('MMM dd, yyyy').format(order.appointmentDate!).needTranslation, + labelText: isLoading ? "Date: Jan 20, 2024" : DateFormat('MMM dd, yyyy').format(order.appointmentDate!), ).toShimmer2(isShow: isLoading), // Appointment Number if (order.appointmentNo != null || isLoading) AppCustomChipWidget( - labelText: isLoading ? "Appt# : 98765" : "Appt #: ${order.appointmentNo}".needTranslation, + labelText: isLoading ? "Appt# : 98765" : "Appt #: ${order.appointmentNo}", ).toShimmer2(isShow: isLoading), // Invoice Number if (order.invoiceNo != null || isLoading) AppCustomChipWidget( - labelText: isLoading ? "Invoice: 45678" : "Invoice: ${order.invoiceNo}".needTranslation, + labelText: isLoading ? "Invoice: 45678" : LocaleKeys.invoiceWithNumber.tr(namedArgs: {'invoiceNo': '${order.invoiceNo}'}), ).toShimmer2(isShow: isLoading), // Queued Status if (order.isQueued == true || isLoading) AppCustomChipWidget( - labelText: "Queued".needTranslation, + labelText: LocaleKeys.queued.tr(context: context), ).toShimmer2(isShow: isLoading), // Check-in Available Status if (order.isCheckInAllow == true || isLoading) AppCustomChipWidget( - labelText: "Check-in Ready".needTranslation, + labelText: LocaleKeys.checkInReady.tr(context: context), ).toShimmer2(isShow: isLoading), ], ), @@ -225,7 +225,7 @@ class AncillaryOrderCard extends StatelessWidget { if (order.isCheckInAllow == true || isLoading) Expanded( child: CustomButton( - text: "Check In".needTranslation, + text: LocaleKeys.checkIn.tr(context: context), onPressed: () { if (isLoading) { return; @@ -249,7 +249,7 @@ class AncillaryOrderCard extends StatelessWidget { // View Details Button Expanded( child: CustomButton( - text: "View Details".needTranslation, + text: LocaleKeys.viewDetails.tr(context: context), onPressed: () { if (isLoading) { return; diff --git a/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart b/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart index ba2f94d9..2d99aa0f 100644 --- a/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -73,7 +74,7 @@ class AncillaryProceduresList extends StatelessWidget { ), child: Utils.getNoDataWidget( context, - noDataText: "You don't have any ancillary orders yet.".needTranslation, + noDataText: LocaleKeys.youDontHaveAnyAncillaryOrdersYet.tr(context: context), isSmallWidget: true, width: 62.w, height: 62.h, @@ -118,7 +119,7 @@ class AncillaryOrderCard extends StatelessWidget { children: [ Row( children: [ - "Order #".needTranslation.toText14( + LocaleKeys.orderNumber.tr(context: context).toText14( color: AppColors.textColorLight, weight: FontWeight.w500, ), @@ -181,31 +182,31 @@ class AncillaryOrderCard extends StatelessWidget { AppCustomChipWidget( icon: AppAssets.calendar, labelText: - isLoading ? "Date: Jan 20, 2024" : "Date: ${DateFormat('MMM dd, yyyy').format(order.appointmentDate!)}".needTranslation, + isLoading ? "Date: Jan 20, 2024" : "Date: ${DateFormat('MMM dd, yyyy').format(order.appointmentDate!)}", ).toShimmer2(isShow: isLoading), // Appointment Number if (order.appointmentNo != null || isLoading) AppCustomChipWidget( - labelText: isLoading ? "Appt #: 98765" : "Appt #: ${order.appointmentNo}".needTranslation, + labelText: isLoading ? "Appt #: 98765" : "Appt #: ${order.appointmentNo}", ).toShimmer2(isShow: isLoading), // Invoice Number if (order.invoiceNo != null || isLoading) AppCustomChipWidget( - labelText: isLoading ? "Invoice: 45678" : "Invoice: ${order.invoiceNo}".needTranslation, + labelText: isLoading ? "Invoice: 45678" : LocaleKeys.invoiceWithNumber.tr(namedArgs: {'invoiceNo': '${order.invoiceNo}'}), ).toShimmer2(isShow: isLoading), // Queued Status if (order.isQueued == true || isLoading) AppCustomChipWidget( - labelText: "Queued".needTranslation, + labelText: LocaleKeys.queued.tr(context: context), ).toShimmer2(isShow: isLoading), // Check-in Available Status if (order.isCheckInAllow == true || isLoading) AppCustomChipWidget( - labelText: "Check-in Ready".needTranslation, + labelText: LocaleKeys.checkInReady.tr(context: context), ).toShimmer2(isShow: isLoading), ], ), @@ -219,7 +220,7 @@ class AncillaryOrderCard extends StatelessWidget { if (order.isCheckInAllow == true || isLoading) Expanded( child: CustomButton( - text: "Check In".needTranslation, + text: LocaleKeys.checkIn.tr(context: context), onPressed: () { if (isLoading) { return; @@ -243,7 +244,7 @@ class AncillaryOrderCard extends StatelessWidget { // View Details Button Expanded( child: CustomButton( - text: "View Details".needTranslation, + text: LocaleKeys.viewDetails.tr(context: context), onPressed: () { if (isLoading) { return; diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart index 6ff5cc59..4cfde1b3 100644 --- a/lib/widgets/common_bottom_sheet.dart +++ b/lib/widgets/common_bottom_sheet.dart @@ -1,5 +1,6 @@ import 'dart:io' show Platform; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -7,6 +8,7 @@ import 'package:hmg_patient_app_new/core/utils/calender_utils_new.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_reminder_view.dart'; import 'package:hmg_patient_app_new/services/permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -40,13 +42,13 @@ class BottomSheetUtils{ Future _showReminderBottomSheet(BuildContext providedContext, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, {required Function onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool? isMultiAllowed}) async { - showCommonBottomSheetWithoutHeight(providedContext, title: "Set the timer of reminder".needTranslation, child: PrescriptionReminderView( + showCommonBottomSheetWithoutHeight(providedContext, title: LocaleKeys.setTimerOfReminder.tr(), child: PrescriptionReminderView( setReminder: (int value) async { if (!isMultiAllowed!) { if (onMultiDateSuccess == null) { CalenderUtilsNew calendarUtils = CalenderUtilsNew.instance; await calendarUtils.createOrUpdateEvent( - title: title ?? "You have appointment with Dr. ".needTranslation + doctorName, + title: title ?? LocaleKeys.youHaveAppointmentWithDr.tr() + doctorName, description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, scheduleDateTime: dateTime, eventId: eventId, diff --git a/lib/widgets/countdown_timer.dart b/lib/widgets/countdown_timer.dart index 165a8330..1722ebfa 100644 --- a/lib/widgets/countdown_timer.dart +++ b/lib/widgets/countdown_timer.dart @@ -1,6 +1,8 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; Widget buildTime(Duration duration, {bool isHomePage = false}) { String twoDigits(int n) => n.toString().padLeft(2, '0'); @@ -11,9 +13,9 @@ Widget buildTime(Duration duration, {bool isHomePage = false}) { return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - buildTimeColumn(hours, "Hours".needTranslation), - buildTimeColumn(minutes, "Mins".needTranslation), - buildTimeColumn(seconds, "Secs".needTranslation, isLast: true), + buildTimeColumn(hours, LocaleKeys.hours.tr()), + buildTimeColumn(minutes, LocaleKeys.mins.tr()), + buildTimeColumn(seconds, LocaleKeys.secs.tr(), isLast: true), ], ); } From 5feacfaf27bcb46a34f76abe31ca56a05f502ba2 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 18 Jan 2026 10:45:17 +0300 Subject: [PATCH 10/67] Translation updates --- assets/langs/ar-SA.json | 68 +++++++++++++++++- assets/langs/en-US.json | 70 +++++++++++++++++-- lib/core/utils/utils.dart | 6 +- lib/generated/locale_keys.g.dart | 58 +++++++++++++++ .../active_medication_page.dart | 37 +++++----- .../vital_sign/vital_sign_details_page.dart | 60 +++++++++------- .../water_monitor/water_consumption_page.dart | 22 +++--- .../water_monitor_settings_page.dart | 34 ++++----- .../widgets/cup_bottomsheet_widgets.dart | 8 ++- .../widgets/hydration_tips_widget.dart | 12 ++-- .../widgets/water_action_buttons_widget.dart | 8 ++- .../widgets/water_intake_summary_widget.dart | 20 +++--- lib/widgets/app_language_change.dart | 4 +- lib/widgets/appbar/collapsing_list_view.dart | 16 +++-- lib/widgets/appbar/collapsing_toolbar.dart | 12 ++-- .../date_range_calender.dart | 16 ++--- .../family_files/family_file_add_widget.dart | 2 +- lib/widgets/map/location_map_widget.dart | 4 +- lib/widgets/map/map_utility_screen.dart | 12 ++-- lib/widgets/time_picker_widget.dart | 8 ++- 20 files changed, 346 insertions(+), 131 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index e3047102..9c1c962f 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -408,7 +408,7 @@ "brand": "العلامة التجارية", "power": "القوة", "diameter": "القطر", - "remarks": "ملاحظات", + "remarks": "ملاحظات: ", "activeMedications": "الأدوية النشطة", "expDate": "تاريخ انتهاء الصلاحية النشط:", "route": "الطريق", @@ -1435,5 +1435,69 @@ "overview": "نظرة عامة", "details": "التفاصيل", "healthy": "صحي", - "warning": "تحذير" + "warning": "تحذير", + "vitalSignDetails": "تفاصيل العلامات الحيوية", + "resultOf": "نتيجة {date}", + "resultOfNoDate": "نتيجة --", + "referenceRangeBetween": "النطاق المرجعي: {low} – {high} {unit}", + "referenceRangeMin": "النطاق المرجعي: ≥ {low} {unit}", + "referenceRangeMax": "النطاق المرجعي: ≤ {high} {unit}", + "noHistoryAvailable": "لا يوجد تاريخ متاح", + "bmiDescription": "مؤشر كتلة الجسم هو قياس يعتمد على الطول والوزن لتقدير دهون الجسم.", + "heightDescription": "يقاس الطول بالسنتيمتر ويستخدم لحساب مؤشر كتلة الجسم وتوصيات الجرعات.", + "weightDescription": "الوزن يساعد في تتبع الصحة العامة والتغذية والتغيرات مع مرور الوقت.", + "bloodPressureDescription": "ضغط الدم يعكس قوة الدم على جدران الشرايين. يظهر كانقباضي/انبساطي.", + "temperatureDescription": "درجة حرارة الجسم تعكس مدى سخونة جسمك وقد تتغير مع العدوى أو الالتهاب.", + "heartRateDescriptionVital": "معدل ضربات القلب يشير إلى عدد نبضات القلب في الدقيقة.", + "respiratoryRateDescription": "معدل التنفس هو عدد الأنفاس المأخوذة في الدقيقة.", + "bmiAdvice": "حافظ على نظام غذائي متوازن ونشاط منتظم. إذا كان مؤشر كتلة جسمك مرتفعًا أو منخفضًا، فكر في استشارة طبيبك.", + "heightAdvice": "لا حاجة لاتخاذ أي إجراء إلا إذا بدا قياسك غير صحيح. قم بتحديثه في زيارتك القادمة.", + "weightAdvice": "راقب تغيرات الوزن. الزيادة أو الخسارة المفاجئة قد تتطلب استشارة طبية.", + "bloodPressureAdvice": "استمر في تتبع ضغط دمك. يجب مناقشة القراءات المرتفعة أو المنخفضة مع طبيبك.", + "temperatureAdvice": "إذا كان لديك حمى مستمرة أو أعراض، اتصل بمقدم الرعاية الصحية.", + "heartRateAdvice": "تتبع اتجاهات معدل ضربات قلبك. إذا شعرت بدوار أو ألم في الصدر، اطلب الرعاية الطبية.", + "respiratoryRateAdvice": "إذا لاحظت ضيقًا في التنفس أو تنفسًا غير طبيعي، اطلب المشورة الطبية.", + "whatShouldIDoNext": "ماذا يجب أن أفعل بعد ذلك؟", + "customizeDrinkCup": "قم بتخصيص كوب مشروبك", + "tipsToStayHydrated": "نصائح للبقاء رطبًا", + "drinkBeforeYouFeelThirsty": "اشرب قبل أن تشعر بالعطش", + "keepRefillableBottleNextToYou": "احتفظ بزجاجة قابلة لإعادة التعبئة بجانبك", + "trackYourDailyIntakeToStayMotivated": "تتبع كمية الماء اليومية للحفاظ على الحافز", + "chooseSparklingWaterInsteadOfSoda": "اختر الماء الفوار بدلاً من الصودا", + "switchCup": "تبديل الكوب", + "plainWater": "ماء عادي", + "yourGoal": "هدفك", + "remaining": "المتبقي", + "hydrationStatus": "حالة الترطيب", + "areYouSureYouWantToCancelAllWaterReminders": "هل أنت متأكد أنك تريد إلغاء جميع تذكيرات الماء؟", + "remindersSet": "تم ضبط التذكيرات!", + "dailyWaterRemindersScheduledAt": "تم جدولة تذكيرات الماء اليومية في:", + "waterConsumption": "استهلاك المياه", + "selectNumberOfReminders": "حدد عدد التذكيرات", + "h2oSettings": "إعدادات H20", + "settingsSavedSuccessfully": "تم حفظ الإعدادات بنجاح", + "yourName": "اسمك", + "ageYears": "العمر (11-120) سنة", + "numberOfRemindersInADay": "عدد التذكيرات في اليوم", + + "medications": "الأدوية", + "someRemarksAboutPrescription": "ستجدون هنا بعض الملاحظات حول الوصفة الطبية", + "notifyMeBeforeConsumptionTime": "أبلغني قبل وقت الاستهلاك", + "noMedicationsToday": "لا أدوية اليوم", + "route": "Route: {route}", + "frequency": "Frequency: {frequency}", + "instruction": "Instruction: {instruction}", + "duration": "Duration: {days}", + "reminders": "تذكيرات", + "reminderAddedToCalendar": "تمت إضافة تذكير إلى التقويم ✅", + "errorWhileSettingCalendar": "حدث خطأ أثناء ضبط التقويم:{error}", + "instructions": "التعليمات", + "requests": "الطلبات", + "thisWeek": "هذا الأسبوع", + "lastMonth": "الشهر الماضي", + "lastSixMonths": "آخر 6 أشهر", + "selectTime": "حدد الوقت", + "pleaseWaitYouWillBeCalledForVitalSigns": "يرجى الانتظار! سيتم استدعاؤك لقياس العلامات الحيوية", + "pleaseVisitRoomForVitalSigns": "يرجى زيارة الغرفة {roomNumber} لقياس العلامات الحيوية", + "pleaseVisitRoomToTheDoctor": "يرجى زيارة الغرفة {roomNumber} لمقابلة الطبيب" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 98ca7adc..5f356bac 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -406,11 +406,8 @@ "brand": "Brand", "power": "Power", "diameter": "Diameter", - "remarks": "Remarks", "activeMedications": "Active Medications", "expDate": "Active Exp Date :", - "route": "Route", - "frequency": "Frequency", "dailyQuantity": "Daily Quantity :", "addReminder": "Add Reminder", "cancelReminder": "Cancel Reminder", @@ -1428,5 +1425,70 @@ "overview": "Overview", "details": "Details", "healthy": "Healthy", - "warning": "Warning" + "warning": "Warning", + "vitalSignDetails": "Vital Sign Details", + "resultOf": "Result of {date}", + "resultOfNoDate": "Result of --", + "referenceRangeBetween": "Reference range: {low} – {high} {unit}", + "referenceRangeMin": "Reference range: ≥ {low} {unit}", + "referenceRangeMax": "Reference range: ≤ {high} {unit}", + "noHistoryAvailable": "No history available", + "bmiDescription": "BMI is a measurement based on height and weight that estimates body fat.", + "heightDescription": "Height is measured in centimeters and is used to calculate BMI and dosage recommendations.", + "weightDescription": "Weight helps track overall health, nutrition, and changes over time.", + "bloodPressureDescription": "Blood pressure reflects the force of blood against artery walls. It is shown as systolic/diastolic.", + "temperatureDescription": "Body temperature reflects how hot your body is and may change with infection or inflammation.", + "heartRateDescriptionVital": "Heart rate refers to the number of heart beats per minute.", + "respiratoryRateDescription": "Respiratory rate is the number of breaths taken per minute.", + "bmiAdvice": "Maintain a balanced diet and regular activity. If your BMI is high or low, consider consulting your doctor.", + "heightAdvice": "No action is needed unless your measurement looks incorrect. Update it during your next visit.", + "weightAdvice": "Monitor weight changes. Sudden gain or loss may require medical advice.", + "bloodPressureAdvice": "Keep tracking your blood pressure. High or low readings should be discussed with your doctor.", + "temperatureAdvice": "If you have a persistent fever or symptoms, contact your healthcare provider.", + "heartRateAdvice": "Track your heart rate trends. If you feel dizziness or chest pain, seek medical care.", + "respiratoryRateAdvice": "If you notice shortness of breath or abnormal breathing, seek medical advice.", + "whatShouldIDoNext": "What should I do next?", + "customizeDrinkCup": "Customize your drink cup", + "tipsToStayHydrated": "Tips to stay hydrated", + "drinkBeforeYouFeelThirsty": "Drink before you feel thirsty", + "keepRefillableBottleNextToYou": "Keep a refillable bottle next to you", + "trackYourDailyIntakeToStayMotivated": "Track your daily intake to stay motivated", + "chooseSparklingWaterInsteadOfSoda": "Choose sparkling water instead of soda", + "switchCup": "Switch Cup", + "plainWater": "Plain Water", + "yourGoal": "Your Goal", + "remaining": "Remaining", + "hydrationStatus": "Hydration Status", + "areYouSureYouWantToCancelAllWaterReminders": "Are you sure you want to cancel all water reminders?", + "remindersSet": "Reminders Set!", + "dailyWaterRemindersScheduledAt": "Daily water reminders scheduled at:", + "waterConsumption": "Water Consumption", + "selectActivityLevel": "Select Activity Level", + "selectNumberOfReminders": "Select Number of Reminders", + "h2oSettings": "H20 Settings", + "settingsSavedSuccessfully": "Settings saved successfully", + "yourName": "Your Name", + "ageYears": "Age (11-120) yrs", + "numberOfRemindersInADay": "Number of reminders in a day", + "medications": "Medications", + "remarks": "Remarks: ", + "someRemarksAboutPrescription": "some remarks about the prescription will be here", + "notifyMeBeforeConsumptionTime": "Notify me before the consumption time", + "noMedicationsToday": "No medications today", + "route": "Route: {route}", + "frequency": "Frequency: {frequency}", + "instruction": "Instruction: {instruction}", + "duration": "Duration: {days}", + "reminders": "Reminders", + "reminderAddedToCalendar": "Reminder added to calendar ✅", + "errorWhileSettingCalendar": "Error while setting calendar: {error}", + "instructions": "Instructions", + "requests": "Requests", + "thisWeek": "This Week", + "lastMonth": "Last Month", + "lastSixMonths": "Last 6 Months", + "selectTime": "Select Time", + "pleaseWaitYouWillBeCalledForVitalSigns": "Please wait! you will be called for vital signs", + "pleaseVisitRoomForVitalSigns": "Please visit Room {roomNumber} for vital signs", + "pleaseVisitRoomToTheDoctor": "Please visit Room {roomNumber} to the Doctor" } diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 8978fcd6..e5b0ca43 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -959,11 +959,11 @@ class Utils { static String getCardButtonText(int currentQueueStatus, String roomNumber) { switch (currentQueueStatus) { case 0: - return "Please wait! you will be called for vital signs".needTranslation; + return LocaleKeys.pleaseWaitYouWillBeCalledForVitalSigns.tr(); case 1: - return "Please visit Room $roomNumber for vital signs".needTranslation; + return LocaleKeys.pleaseVisitRoomForVitalSigns.tr(namedArgs: {'roomNumber': roomNumber.toString()}); case 2: - return "Please visit Room $roomNumber to the Doctor".needTranslation; + return LocaleKeys.pleaseVisitRoomToTheDoctor.tr(namedArgs: {'roomNumber': roomNumber.toString()}); } return ""; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index dc0655db..b3b2edf3 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1430,5 +1430,63 @@ abstract class LocaleKeys { static const details = 'details'; static const healthy = 'healthy'; static const warning = 'warning'; + static const vitalSignDetails = 'vitalSignDetails'; + static const resultOfNoDate = 'resultOfNoDate'; + static const referenceRangeBetween = 'referenceRangeBetween'; + static const referenceRangeMin = 'referenceRangeMin'; + static const referenceRangeMax = 'referenceRangeMax'; + static const noHistoryAvailable = 'noHistoryAvailable'; + static const bmiDescription = 'bmiDescription'; + static const heightDescription = 'heightDescription'; + static const weightDescription = 'weightDescription'; + static const bloodPressureDescription = 'bloodPressureDescription'; + static const temperatureDescription = 'temperatureDescription'; + static const heartRateDescriptionVital = 'heartRateDescriptionVital'; + static const respiratoryRateDescription = 'respiratoryRateDescription'; + static const bmiAdvice = 'bmiAdvice'; + static const heightAdvice = 'heightAdvice'; + static const weightAdvice = 'weightAdvice'; + static const bloodPressureAdvice = 'bloodPressureAdvice'; + static const temperatureAdvice = 'temperatureAdvice'; + static const heartRateAdvice = 'heartRateAdvice'; + static const respiratoryRateAdvice = 'respiratoryRateAdvice'; + static const whatShouldIDoNext = 'whatShouldIDoNext'; + static const customizeDrinkCup = 'customizeDrinkCup'; + static const tipsToStayHydrated = 'tipsToStayHydrated'; + static const drinkBeforeYouFeelThirsty = 'drinkBeforeYouFeelThirsty'; + static const keepRefillableBottleNextToYou = 'keepRefillableBottleNextToYou'; + static const trackYourDailyIntakeToStayMotivated = 'trackYourDailyIntakeToStayMotivated'; + static const chooseSparklingWaterInsteadOfSoda = 'chooseSparklingWaterInsteadOfSoda'; + static const switchCup = 'switchCup'; + static const plainWater = 'plainWater'; + static const yourGoal = 'yourGoal'; + static const remaining = 'remaining'; + static const hydrationStatus = 'hydrationStatus'; + static const areYouSureYouWantToCancelAllWaterReminders = 'areYouSureYouWantToCancelAllWaterReminders'; + static const remindersSet = 'remindersSet'; + static const dailyWaterRemindersScheduledAt = 'dailyWaterRemindersScheduledAt'; + static const waterConsumption = 'waterConsumption'; + static const selectNumberOfReminders = 'selectNumberOfReminders'; + static const h2oSettings = 'h2oSettings'; + static const settingsSavedSuccessfully = 'settingsSavedSuccessfully'; + static const yourName = 'yourName'; + static const ageYears = 'ageYears'; + static const numberOfRemindersInADay = 'numberOfRemindersInADay'; + static const medications = 'medications'; + static const someRemarksAboutPrescription = 'someRemarksAboutPrescription'; + static const notifyMeBeforeConsumptionTime = 'notifyMeBeforeConsumptionTime'; + static const noMedicationsToday = 'noMedicationsToday'; + static const reminders = 'reminders'; + static const reminderAddedToCalendar = 'reminderAddedToCalendar'; + static const errorWhileSettingCalendar = 'errorWhileSettingCalendar'; + static const instructions = 'instructions'; + static const requests = 'requests'; + static const thisWeek = 'thisWeek'; + static const lastMonth = 'lastMonth'; + static const lastSixMonths = 'lastSixMonths'; + static const selectTime = 'selectTime'; + static const pleaseWaitYouWillBeCalledForVitalSigns = 'pleaseWaitYouWillBeCalledForVitalSigns'; + static const pleaseVisitRoomForVitalSigns = 'pleaseVisitRoomForVitalSigns'; + static const pleaseVisitRoomToTheDoctor = 'pleaseVisitRoomToTheDoctor'; } diff --git a/lib/presentation/active_medication/active_medication_page.dart b/lib/presentation/active_medication/active_medication_page.dart index d0720fb2..14da5b01 100644 --- a/lib/presentation/active_medication/active_medication_page.dart +++ b/lib/presentation/active_medication/active_medication_page.dart @@ -134,7 +134,7 @@ class _ActiveMedicationPageState extends State { body: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text("Active Medications".needTranslation, + Text(LocaleKeys.activeMedications.tr(), style: TextStyle( color: AppColors.textColor, fontSize: 27.f, @@ -191,7 +191,7 @@ class _ActiveMedicationPageState extends State { ], ), ), - Text("Medications".needTranslation, + Text(LocaleKeys.medications.tr(), style: TextStyle( color: AppColors.primaryRedBorderColor, fontSize: 12.f, @@ -253,8 +253,7 @@ class _ActiveMedicationPageState extends State { text: TextSpan( children: [ TextSpan( - text: "Remarks: " - .needTranslation, + text: LocaleKeys.remarks.tr(), style: TextStyle( color: AppColors.textColor, @@ -265,8 +264,7 @@ class _ActiveMedicationPageState extends State { ), TextSpan( text: - "some remarks about the prescription will be here" - .needTranslation, + LocaleKeys.someRemarksAboutPrescription.tr(), style: TextStyle( color: AppColors .lightGreyTextColor, @@ -312,8 +310,7 @@ class _ActiveMedicationPageState extends State { CrossAxisAlignment.start, children: [ Text( - "Set Reminder" - .needTranslation, + LocaleKeys.setReminder.tr(), style: TextStyle( fontSize: 14.f, fontWeight: @@ -321,8 +318,7 @@ class _ActiveMedicationPageState extends State { color: AppColors .textColor)), Text( - "Notify me before the consumption time" - .needTranslation, + LocaleKeys.notifyMeBeforeConsumptionTime.tr(), style: TextStyle( fontSize: 12.f, color: AppColors @@ -346,7 +342,7 @@ class _ActiveMedicationPageState extends State { : Utils.getNoDataWidget( context, noDataText: - "No medications today".needTranslation, + LocaleKeys.noMedicationsToday.tr(), ), ), ), @@ -397,17 +393,16 @@ class _ActiveMedicationPageState extends State { children: [ AppCustomChipWidget( labelText: - "Route: ${med.route}".needTranslation), + LocaleKeys.route.tr(namedArgs: {'route': med.route ?? ''})), AppCustomChipWidget( labelText: - "Frequency: ${med.frequency}".needTranslation), + LocaleKeys.frequency.tr(namedArgs: {'frequency': med.frequency ?? ''})), AppCustomChipWidget( labelText: - "Daily Dose: ${med.doseDailyQuantity}" - .needTranslation), + LocaleKeys.instruction.tr(namedArgs: {'instruction': med.doseDailyQuantity?.toString() ?? ''})), AppCustomChipWidget( labelText: - "Duration: ${med.days}".needTranslation), + LocaleKeys.duration.tr(namedArgs: {'days': med.days.toString() ?? ''})), ], ), ], @@ -419,7 +414,7 @@ class _ActiveMedicationPageState extends State { child: Row(children: [ Expanded( child: CustomButton( - text: "Check Availability".needTranslation, + text: LocaleKeys.checkAvailability.tr(), fontSize: 13.f, onPressed: () {}, backgroundColor: AppColors.secondaryLightRedColor, @@ -430,7 +425,7 @@ class _ActiveMedicationPageState extends State { SizedBox(width: 12.h), Expanded( child: CustomButton( - text: "Read Instructions".needTranslation, + text: LocaleKeys.readInstructions.tr(), fontSize: 13.f, onPressed: () {})), ]), @@ -519,7 +514,7 @@ class _ActiveMedicationPageState extends State { MainAxisAlignment.spaceBetween, children: [ Text( - "Reminders".needTranslation, + LocaleKeys.reminders.tr(), style: TextStyle( fontSize: 20.f, fontWeight: FontWeight.w600, @@ -988,11 +983,11 @@ class _ReminderTimerDialogState extends State { route: widget.med.route ?? "", ); ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text("Reminder added to calendar ✅".needTranslation)), + SnackBar(content: Text(LocaleKeys.reminderAddedToCalendar.tr())), ); } catch (e) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text("Error while setting calendar: $e".needTranslation)), + SnackBar(content: Text(LocaleKeys.errorWhileSettingCalendar.tr(namedArgs: {'error': e.toString()}))), ); } Navigator.pop(context); diff --git a/lib/presentation/vital_sign/vital_sign_details_page.dart b/lib/presentation/vital_sign/vital_sign_details_page.dart index f6325029..980357de 100644 --- a/lib/presentation/vital_sign/vital_sign_details_page.dart +++ b/lib/presentation/vital_sign/vital_sign_details_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/vital_sign_respo_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/ui_models/vital_sign_ui_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/graph/custom_graph.dart'; @@ -62,7 +64,7 @@ class _VitalSignDetailsPageState extends State { @override Widget build(BuildContext context) { return CollapsingListView( - title: 'Vital Sign Details'.needTranslation, + title: LocaleKeys.vitalSignDetails.tr(context: context), child: Consumer( builder: (context, viewModel, child) { final latest = viewModel.vitalSignList.isNotEmpty ? viewModel.vitalSignList.first : null; @@ -128,8 +130,8 @@ class _VitalSignDetailsPageState extends State { ), SizedBox(height: 8.h), (latestDate != null - ? ('Result of ${latestDate.toString().split(' ').first}'.needTranslation) - : ('Result of --'.needTranslation)) + ? LocaleKeys.resultOf.tr(namedArgs: {'date': latestDate.toString().split(' ').first}) + : LocaleKeys.resultOfNoDate.tr(context: context)) .toText11(weight: FontWeight.w500, color: AppColors.greyTextColor), ], ), @@ -185,13 +187,23 @@ class _VitalSignDetailsPageState extends State { String _referenceText(BuildContext context) { if (args.low != null && args.high != null) { - return 'Reference range: ${args.low} – ${args.high} ${args.unit}'.needTranslation; + return LocaleKeys.referenceRangeBetween.tr(namedArgs: { + 'low': args.low.toString(), + 'high': args.high.toString(), + 'unit': args.unit ?? '' + }); } if (args.low != null) { - return 'Reference range: ≥ ${args.low} ${args.unit}'.needTranslation; + return LocaleKeys.referenceRangeMin.tr(namedArgs: { + 'low': args.low.toString(), + 'unit': args.unit ?? '' + }); } if (args.high != null) { - return 'Reference range: ≤ ${args.high} ${args.unit}'.needTranslation; + return LocaleKeys.referenceRangeMax.tr(namedArgs: { + 'high': args.high.toString(), + 'unit': args.unit ?? '' + }); } return ''; } @@ -208,7 +220,7 @@ class _VitalSignDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, children: [ - 'What is this result?'.needTranslation.toText16(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.whatIsThisResult.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), _descriptionText(context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), ], ), @@ -243,7 +255,7 @@ class _VitalSignDetailsPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - _isGraphVisible ? 'History flowchart'.needTranslation : 'History'.needTranslation, + _isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context), style: TextStyle( fontSize: 16, fontFamily: 'Poppins', @@ -288,7 +300,7 @@ class _VitalSignDetailsPageState extends State { ).paddingOnly(bottom: _isGraphVisible ? 16.h : 24.h), if (history.isEmpty) - Utils.getNoDataWidget(context, noDataText: 'No history available'.needTranslation, isSmallWidget: true) + Utils.getNoDataWidget(context, noDataText: LocaleKeys.noHistoryAvailable.tr(context: context), isSmallWidget: true) else if (_isGraphVisible) _buildHistoryGraph(history, secondaryHistory: secondaryHistory) else @@ -649,38 +661,38 @@ class _VitalSignDetailsPageState extends State { String _descriptionText(BuildContext context) { switch (args.metric) { case VitalSignMetric.bmi: - return 'BMI is a measurement based on height and weight that estimates body fat.'.needTranslation; + return LocaleKeys.bmiDescription.tr(context: context); case VitalSignMetric.height: - return 'Height is measured in centimeters and is used to calculate BMI and dosage recommendations.'.needTranslation; + return LocaleKeys.heightDescription.tr(context: context); case VitalSignMetric.weight: - return 'Weight helps track overall health, nutrition, and changes over time.'.needTranslation; + return LocaleKeys.weightDescription.tr(context: context); case VitalSignMetric.bloodPressure: - return 'Blood pressure reflects the force of blood against artery walls. It is shown as systolic/diastolic.'.needTranslation; + return LocaleKeys.bloodPressureDescription.tr(context: context); case VitalSignMetric.temperature: - return 'Body temperature reflects how hot your body is and may change with infection or inflammation.'.needTranslation; + return LocaleKeys.temperatureDescription.tr(context: context); case VitalSignMetric.heartRate: - return 'Heart rate refers to the number of heart beats per minute.'.needTranslation; + return LocaleKeys.heartRateDescriptionVital.tr(context: context); case VitalSignMetric.respiratoryRate: - return 'Respiratory rate is the number of breaths taken per minute.'.needTranslation; + return LocaleKeys.respiratoryRateDescription.tr(context: context); } } String _nextStepsText(BuildContext context) { switch (args.metric) { case VitalSignMetric.bmi: - return 'Maintain a balanced diet and regular activity. If your BMI is high or low, consider consulting your doctor.'.needTranslation; + return LocaleKeys.bmiAdvice.tr(context: context); case VitalSignMetric.height: - return 'No action is needed unless your measurement looks incorrect. Update it during your next visit.'.needTranslation; + return LocaleKeys.heightAdvice.tr(context: context); case VitalSignMetric.weight: - return 'Monitor weight changes. Sudden gain or loss may require medical advice.'.needTranslation; + return LocaleKeys.weightAdvice.tr(context: context); case VitalSignMetric.bloodPressure: - return 'Keep tracking your blood pressure. High or low readings should be discussed with your doctor.'.needTranslation; + return LocaleKeys.bloodPressureAdvice.tr(context: context); case VitalSignMetric.temperature: - return 'If you have a persistent fever or symptoms, contact your healthcare provider.'.needTranslation; + return LocaleKeys.temperatureAdvice.tr(context: context); case VitalSignMetric.heartRate: - return 'Track your heart rate trends. If you feel dizziness or chest pain, seek medical care.'.needTranslation; + return LocaleKeys.heartRateAdvice.tr(context: context); case VitalSignMetric.respiratoryRate: - return 'If you notice shortness of breath or abnormal breathing, seek medical advice.'.needTranslation; + return LocaleKeys.respiratoryRateAdvice.tr(context: context); } } @@ -695,7 +707,7 @@ class _VitalSignDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 'What should I do next?'.needTranslation.toText16(weight: FontWeight.w600), + LocaleKeys.whatShouldIDoNext.tr(context: context).toText16(weight: FontWeight.w600), SizedBox(height: 8.h), _nextStepsText(context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500, maxLine: 10), ], diff --git a/lib/presentation/water_monitor/water_consumption_page.dart b/lib/presentation/water_monitor/water_consumption_page.dart index 2bd429c0..54dace58 100644 --- a/lib/presentation/water_monitor/water_consumption_page.dart +++ b/lib/presentation/water_monitor/water_consumption_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/widgets/hydration_tips_widget.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/widgets/water_intake_summary_widget.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; @@ -100,7 +102,7 @@ class _WaterConsumptionPageState extends State { children: [ Row( children: [ - "History".needTranslation.toText16(isBold: true), + LocaleKeys.history.tr(context: context).toText16(isBold: true), SizedBox(width: 8.w), InkWell( onTap: () => _showHistoryDurationBottomsheet(context, viewModel), @@ -604,7 +606,7 @@ class _WaterConsumptionPageState extends State { final dialogService = getIt.get(); dialogService.showFamilyBottomSheetWithoutHWithChild( - label: title.needTranslation, + label: title, message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -634,7 +636,7 @@ class _WaterConsumptionPageState extends State { void _showHistoryDurationBottomsheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Duration".needTranslation, + title: LocaleKeys.selectDuration.tr(context: context), items: viewModel.durationFilters, selectedValue: viewModel.selectedDurationFilter, onSelected: viewModel.setFilterDuration, @@ -655,10 +657,10 @@ class _WaterConsumptionPageState extends State { /// Show confirmation bottom sheet before cancelling reminders void _showCancelReminderConfirmation(WaterMonitorViewModel viewModel) { showCommonBottomSheetWithoutHeight( - title: 'Notice'.needTranslation, + title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: "Are you sure you want to cancel all water reminders?".needTranslation, + loadingText: LocaleKeys.areYouSureYouWantToCancelAllWaterReminders.tr(context: context), isShowActionButtons: true, onCancelTap: () { Navigator.pop(context); @@ -694,7 +696,7 @@ class _WaterConsumptionPageState extends State { /// Show bottom sheet with scheduled reminder times void _showReminderScheduledDialog(List times) { showCommonBottomSheetWithoutHeight( - title: 'Reminders Set!'.needTranslation, + title: LocaleKeys.remindersSet.tr(context: context), context, isCloseButtonVisible: false, isDismissible: false, @@ -703,7 +705,7 @@ class _WaterConsumptionPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.getSuccessWidget(loadingText: 'Daily water reminders scheduled at:'.needTranslation), + Utils.getSuccessWidget(loadingText: LocaleKeys.dailyWaterRemindersScheduledAt.tr(context: context)), SizedBox(height: 16.h), Wrap( spacing: 8.w, @@ -728,7 +730,7 @@ class _WaterConsumptionPageState extends State { Expanded( child: CustomButton( height: 56.h, - text: 'OK'.needTranslation, + text: LocaleKeys.ok.tr(context: context), onPressed: () => Navigator.of(context).pop(), textColor: AppColors.whiteColor, ), @@ -792,7 +794,7 @@ class _WaterConsumptionPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Water Consumption".needTranslation, + title: LocaleKeys.waterConsumption.tr(context: context), bottomChild: Consumer( builder: (context, viewModel, child) { return Container( @@ -804,7 +806,7 @@ class _WaterConsumptionPageState extends State { child: Padding( padding: EdgeInsets.all(24.w), child: CustomButton( - text: viewModel.isWaterReminderEnabled ? "Cancel Reminders".needTranslation : "Set Reminder".needTranslation, + text: viewModel.isWaterReminderEnabled ? LocaleKeys.cancelReminder.tr(context: context) : LocaleKeys.setReminder.tr(context: context), textColor: viewModel.isWaterReminderEnabled ? AppColors.errorColor : AppColors.successColor, backgroundColor: viewModel.isWaterReminderEnabled ? AppColors.errorColor.withValues(alpha: 0.1) : AppColors.successLightBgColor, onPressed: () => _handleReminderButtonTap(viewModel), diff --git a/lib/presentation/water_monitor/water_monitor_settings_page.dart b/lib/presentation/water_monitor/water_monitor_settings_page.dart index 302940c9..a3c82c0c 100644 --- a/lib/presentation/water_monitor/water_monitor_settings_page.dart +++ b/lib/presentation/water_monitor/water_monitor_settings_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -69,7 +71,7 @@ class _WaterMonitorSettingsPageState extends State { bool useUpperCase = false, }) { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: title.needTranslation, + label: title, message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -99,7 +101,7 @@ class _WaterMonitorSettingsPageState extends State { void _showGenderSelectionBottomsheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Gender".needTranslation, + title: LocaleKeys.selectGender.tr(context: context), items: viewModel.genderOptions, selectedValue: viewModel.selectedGender, onSelected: viewModel.setGender, @@ -109,7 +111,7 @@ class _WaterMonitorSettingsPageState extends State { void _showHeightUnitSelectionBottomSheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Unit".needTranslation, + title: LocaleKeys.selectUnit.tr(context: context), items: viewModel.heightUnits, selectedValue: viewModel.selectedHeightUnit, onSelected: viewModel.setHeightUnit, @@ -120,7 +122,7 @@ class _WaterMonitorSettingsPageState extends State { void _showWeightUnitSelectionBottomsheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Unit".needTranslation, + title: LocaleKeys.selectUnit.tr(context: context), items: viewModel.weightUnits, selectedValue: viewModel.selectedWeightUnit, onSelected: viewModel.setWeightUnit, @@ -131,7 +133,7 @@ class _WaterMonitorSettingsPageState extends State { void _showActivityLevelSelectionBottomsheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Activity Level".needTranslation, + title: LocaleKeys.selectActivityLevel.tr(context: context), items: viewModel.activityLevels, selectedValue: viewModel.selectedActivityLevel, onSelected: viewModel.setActivityLevel, @@ -141,7 +143,7 @@ class _WaterMonitorSettingsPageState extends State { void _showNumberOfRemindersSelectionBottomsheet(BuildContext context, WaterMonitorViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Number of Reminders".needTranslation, + title: LocaleKeys.selectNumberOfReminders.tr(context: context), items: viewModel.reminderOptions, selectedValue: viewModel.selectedNumberOfReminders, onSelected: viewModel.setNumberOfReminders, @@ -256,7 +258,7 @@ class _WaterMonitorSettingsPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "H20 Settings".needTranslation, + title: LocaleKeys.h2oSettings.tr(context: context), bottomChild: Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -266,7 +268,7 @@ class _WaterMonitorSettingsPageState extends State { child: Padding( padding: EdgeInsets.all(24.w), child: CustomButton( - text: "Save".needTranslation, + text: LocaleKeys.save.tr(context: context), onPressed: () async { final success = await viewModel.saveSettings(); if (!success && viewModel.validationError != null) { @@ -277,7 +279,7 @@ class _WaterMonitorSettingsPageState extends State { showCommonBottomSheetWithoutHeight( context, child: Utils.getSuccessWidget( - loadingText: "Settings saved successfully".needTranslation, + loadingText: LocaleKeys.settingsSavedSuccessfully.tr(context: context), ), callBackFunc: () {}, isCloseButtonVisible: false, @@ -299,18 +301,18 @@ class _WaterMonitorSettingsPageState extends State { children: [ _buildSettingsRow( icon: AppAssets.profileIcon, - label: "Your Name".needTranslation, + label: LocaleKeys.yourName.tr(context: context), inputField: _buildTextField(viewModel.nameController, 'Guest'), ), _buildSettingsRow( icon: AppAssets.genderIcon, - label: "Select Gender".needTranslation, + label: LocaleKeys.selectGender.tr(context: context), value: viewModel.selectedGender, onRowTap: () => _showGenderSelectionBottomsheet(context, viewModel), ), _buildSettingsRow( icon: AppAssets.calendarGrey, - label: "Age (11-120) yrs".needTranslation, + label: LocaleKeys.ageYears.tr(context: context), inputField: _buildTextField( viewModel.ageController, '20', @@ -319,7 +321,7 @@ class _WaterMonitorSettingsPageState extends State { ), _buildSettingsRow( icon: AppAssets.heightIcon, - label: "Height".needTranslation, + label: LocaleKeys.height.tr(context: context), inputField: _buildTextField( viewModel.heightController, '175', @@ -330,7 +332,7 @@ class _WaterMonitorSettingsPageState extends State { ), _buildSettingsRow( icon: AppAssets.weightScaleIcon, - label: "Weight".needTranslation, + label: LocaleKeys.weight.tr(context: context), inputField: _buildTextField( viewModel.weightController, '75', @@ -341,13 +343,13 @@ class _WaterMonitorSettingsPageState extends State { ), _buildSettingsRow( icon: AppAssets.dumbellIcon, - label: "Activity Level".needTranslation, + label: LocaleKeys.activityLevel.tr(context: context), value: viewModel.selectedActivityLevel, onRowTap: () => _showActivityLevelSelectionBottomsheet(context, viewModel), ), _buildSettingsRow( icon: AppAssets.notificationIconGrey, - label: "Number of reminders in a day".needTranslation, + label: LocaleKeys.numberOfRemindersInADay.tr(context: context), value: viewModel.selectedNumberOfReminders, onRowTap: () => _showNumberOfRemindersSelectionBottomsheet(context, viewModel), showDivider: false, diff --git a/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart b/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart index 4ffa30d9..4ee6170e 100644 --- a/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart +++ b/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -7,6 +8,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/water_monitor/models/water_cup_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -143,7 +145,7 @@ class SwitchCupBottomSheet extends StatelessWidget { child: Center(child: Utils.buildSvgWithAssets(icon: AppAssets.cupAdd, height: 30.h, width: 42.w)), ), SizedBox(height: 4.h), - 'Add'.needTranslation.toText10(weight: FontWeight.w500), + LocaleKeys.add.tr(context: context).toText10(weight: FontWeight.w500), ], ), ); @@ -157,7 +159,7 @@ void showCustomizeCupBottomSheet(BuildContext context, {WaterCupModel? cupToEdit titleWidget: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Customize your drink cup".needTranslation.toText20(weight: FontWeight.w600), + LocaleKeys.customizeDrinkCup.tr(context: context).toText20(weight: FontWeight.w600), ], ), child: CustomizeCupBottomSheet(cupToEdit: cupToEdit), @@ -294,7 +296,7 @@ class _CustomizeCupBottomSheetState extends State { SizedBox(height: 24.h), CustomButton( - text: 'Select'.needTranslation, + text: LocaleKeys.select.tr(context: context), onPressed: () { final newCup = WaterCupModel( id: widget.cupToEdit?.id ?? Uuid().v4(), diff --git a/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart b/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart index df558869..7c49550c 100644 --- a/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart +++ b/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class HydrationTipsWidget extends StatelessWidget { @@ -30,26 +32,26 @@ class HydrationTipsWidget extends StatelessWidget { height: 24.h, ), SizedBox(width: 8.w), - "Tips to stay hydrated".needTranslation.toText16(isBold: true), + LocaleKeys.tipsToStayHydrated.tr(context: context).toText16(isBold: true), ], ), SizedBox(height: 8.h), - " • ${"Drink before you feel thirsty"}".needTranslation.toText12( + " • ${LocaleKeys.drinkBeforeYouFeelThirsty.tr(context: context)}".toText12( fontWeight: FontWeight.w500, color: AppColors.textColorLight, ), SizedBox(height: 4.h), - " • ${"Keep a refillable bottle next to you"}".needTranslation.toText12( + " • ${LocaleKeys.keepRefillableBottleNextToYou.tr(context: context)}".toText12( fontWeight: FontWeight.w500, color: AppColors.textColorLight, ), SizedBox(height: 4.h), - " • ${"Track your daily intake to stay motivated"}".needTranslation.toText12( + " • ${LocaleKeys.trackYourDailyIntakeToStayMotivated.tr(context: context)}".toText12( fontWeight: FontWeight.w500, color: AppColors.textColorLight, ), SizedBox(height: 4.h), - " • ${"Choose sparkling water instead of soda"}".needTranslation.toText12( + " • ${LocaleKeys.chooseSparklingWaterInsteadOfSoda.tr(context: context)}".toText12( fontWeight: FontWeight.w500, color: AppColors.textColorLight, ), diff --git a/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart b/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart index 2359904b..115dd212 100644 --- a/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart +++ b/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:provider/provider.dart'; @@ -83,19 +85,19 @@ class WaterActionButtonsWidget extends StatelessWidget { context: context, onTap: () => showSwitchCupBottomSheet(context), overlayWidget: AppAssets.refreshIcon, - title: "Switch Cup".needTranslation, + title: LocaleKeys.switchCup.tr(context: context), icon: Utils.buildSvgWithAssets(icon: AppAssets.glassIcon, height: 24.w, width: 24.w), ), _buildActionButton( context: context, onTap: () async {}, - title: "Plain Water".needTranslation, + title: LocaleKeys.plainWater.tr(context: context), icon: Utils.buildSvgWithAssets(icon: AppAssets.glassIcon, height: 24.w, width: 24.w), ), _buildActionButton( context: context, onTap: () => context.navigateWithName(AppRoutes.waterMonitorSettingsPage), - title: "Settings".needTranslation, + title: LocaleKeys.settings.tr(context: context), icon: Icon( Icons.settings, color: AppColors.blueColor, diff --git a/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart b/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart index 137f6a38..ec796abc 100644 --- a/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart +++ b/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart @@ -1,7 +1,9 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/widgets/water_action_buttons_widget.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/widgets/water_bottle_widget.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -51,7 +53,6 @@ class WaterIntakeSummaryWidget extends StatelessWidget { if (!vm.nextDrinkTime.toLowerCase().contains('goal achieved')) // Show "Tomorrow" if nextDrinkTime contains "tomorrow", otherwise "Next Drink Time" (vm.nextDrinkTime.toLowerCase().contains('tomorrow') ? "Tomorrow" : "Next Drink Time") - .needTranslation .toText18(weight: FontWeight.w600, color: AppColors.textColor), // Extract only time if "tomorrow" is present, otherwise show as is @@ -61,14 +62,17 @@ class WaterIntakeSummaryWidget extends StatelessWidget { .toText32(weight: FontWeight.w600, color: AppColors.blueColor), SizedBox(height: 12.h), - _buildStatusColumn(title: "Your Goal".needTranslation, subTitle: "${goalMl}ml"), - SizedBox(height: 8.h), - _buildStatusColumn(title: "Remaining".needTranslation, subTitle: "${remaining}ml"), - SizedBox(height: 8.h), - _buildStatusColumn(title: "Completed".needTranslation, subTitle: completedPercent, subTitleColor: AppColors.successColor), - SizedBox(height: 8.h), + Row( + children: [ + _buildStatusColumn(title: LocaleKeys.yourGoal.tr(context: context), subTitle: "${goalMl}ml"), + SizedBox(width: 16.w), + _buildStatusColumn(title: LocaleKeys.remaining.tr(context: context), subTitle: "${remaining}ml"), + SizedBox(width: 16.w), + _buildStatusColumn(title: LocaleKeys.completed.tr(context: context), subTitle: completedPercent, subTitleColor: AppColors.successColor), + ], + ), _buildStatusColumn( - title: "Hydration Status".needTranslation, + title: LocaleKeys.hydrationStatus.tr(context: context), subTitle: vm.hydrationStatus, subTitleColor: vm.hydrationStatusColor, ), diff --git a/lib/widgets/app_language_change.dart b/lib/widgets/app_language_change.dart index de9cda50..67a52dbe 100644 --- a/lib/widgets/app_language_change.dart +++ b/lib/widgets/app_language_change.dart @@ -41,9 +41,9 @@ class _AppLanguageChangeState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), child: Column( children: [ - languageItem("English".needTranslation, "en"), + languageItem("English", "en"), 1.divider, - languageItem("العربية".needTranslation, "ar"), + languageItem("العربية", "ar"), ], ), ), diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 0580776c..897d2411 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -1,4 +1,5 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import '../../core/dependencies.dart'; @@ -250,7 +252,7 @@ class _ScrollAnimatedTitleState extends State { @override Widget build(BuildContext context) { - final isRtl = Directionality.of(context) == TextDirection.rtl; + final isRtl = Directionality.of(context) == TextDirection.RTL; return Container( height: (widget.preferredSize.height - _fontSize / 2).h, alignment: isRtl ? (widget.showBack ? Alignment.topRight : Alignment.centerRight) : (widget.showBack ? Alignment.topLeft : Alignment.centerLeft), @@ -269,12 +271,12 @@ class _ScrollAnimatedTitleState extends State { ), ).expanded, ...[ - if (widget.logout != null) actionButton(context, t, title: "Logout".needTranslation, icon: AppAssets.logout).onPress(widget.logout!), - if (widget.report != null) actionButton(context, t, title: "Feedback".needTranslation, icon: AppAssets.report_icon).onPress(widget.report!), - if (widget.history != null) actionButton(context, t, title: "History".needTranslation, icon: AppAssets.insurance_history_icon).onPress(widget.history!), - if (widget.instructions != null) actionButton(context, t, title: "Instructions".needTranslation, icon: AppAssets.requests).onPress(widget.instructions!), - if (widget.requests != null) actionButton(context, t, title: "Requests".needTranslation, icon: AppAssets.insurance_history_icon).onPress(widget.requests!), - if (widget.sendEmail != null) actionButton(context, t, title: "Send Email".needTranslation, icon: AppAssets.email).onPress(widget.sendEmail!), + if (widget.logout != null) actionButton(context, t, title: LocaleKeys.logout.tr(context: context), icon: AppAssets.logout).onPress(widget.logout!), + if (widget.report != null) actionButton(context, t, title: LocaleKeys.feedback.tr(context: context), icon: AppAssets.report_icon).onPress(widget.report!), + if (widget.history != null) actionButton(context, t, title: LocaleKeys.history.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.history!), + if (widget.instructions != null) actionButton(context, t, title: LocaleKeys.instructions.tr(context: context), icon: AppAssets.requests).onPress(widget.instructions!), + if (widget.requests != null) actionButton(context, t, title: LocaleKeys.requests.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.requests!), + if (widget.sendEmail != null) actionButton(context, t, title: LocaleKeys.sendEmail.tr(context: context), icon: AppAssets.email).onPress(widget.sendEmail!), if (widget.search != null) Utils.buildSvgWithAssets(icon: AppAssets.search_icon).onPress(widget.search!), if (widget.trailing != null) widget.trailing!, ] diff --git a/lib/widgets/appbar/collapsing_toolbar.dart b/lib/widgets/appbar/collapsing_toolbar.dart index 87cf15a4..8bf1e4b4 100644 --- a/lib/widgets/appbar/collapsing_toolbar.dart +++ b/lib/widgets/appbar/collapsing_toolbar.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import '../../core/dependencies.dart'; @@ -140,11 +142,11 @@ class _CollapsingToolbarState extends State { color: AppColors.blackColor, letterSpacing: -0.5), ).expanded, - if (widget.logout != null) actionButton(context, t, title: "Logout".needTranslation, icon: AppAssets.logout).onPress(widget.logout!), - if (widget.report != null) actionButton(context, t, title: "Report".needTranslation, icon: AppAssets.report_icon).onPress(widget.report!), - if (widget.history != null) actionButton(context, t, title: "History".needTranslation, icon: AppAssets.insurance_history_icon).onPress(widget.history!), - if (widget.instructions != null) actionButton(context, t, title: "Instructions".needTranslation, icon: AppAssets.requests).onPress(widget.instructions!), - if (widget.requests != null) actionButton(context, t, title: "Requests".needTranslation, icon: AppAssets.insurance_history_icon).onPress(widget.requests!), + if (widget.logout != null) actionButton(context, t, title: LocaleKeys.logout.tr(context: context), icon: AppAssets.logout).onPress(widget.logout!), + if (widget.report != null) actionButton(context, t, title: LocaleKeys.report.tr(context: context), icon: AppAssets.report_icon).onPress(widget.report!), + if (widget.history != null) actionButton(context, t, title: LocaleKeys.history.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.history!), + if (widget.instructions != null) actionButton(context, t, title: LocaleKeys.instructions.tr(context: context), icon: AppAssets.requests).onPress(widget.instructions!), + if (widget.requests != null) actionButton(context, t, title: LocaleKeys.requests.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.requests!), if (widget.search != null) Utils.buildSvgWithAssets(icon: AppAssets.search_icon).onPress(widget.search!).paddingOnly(right: 24), if (widget.trailing != null) widget.trailing!, ], diff --git a/lib/widgets/date_range_selector/date_range_calender.dart b/lib/widgets/date_range_selector/date_range_calender.dart index debc0692..89725f32 100644 --- a/lib/widgets/date_range_selector/date_range_calender.dart +++ b/lib/widgets/date_range_selector/date_range_calender.dart @@ -71,7 +71,7 @@ class _DateRangeSelectorState extends State { children: [ fromDateComponent(), Text( - LocaleKeys.to.tr(), + LocaleKeys.to.tr(context: context), style: TextStyle( color: AppColors.calenderTextColor, fontSize: 14.h, @@ -168,7 +168,7 @@ class _DateRangeSelectorState extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), onPressed: () { _calendarController.selectedRange = null; _calendarController.selectedDate = null; @@ -192,7 +192,7 @@ class _DateRangeSelectorState extends State { ), Expanded( child: CustomButton( - text: LocaleKeys.search.tr(), + text: LocaleKeys.search.tr(context: context), onPressed: () { Navigator.of(context).pop(); widget.onRangeSelected(model.fromDate, model.toDate); @@ -216,7 +216,7 @@ class _DateRangeSelectorState extends State { fromDateComponent() { return Consumer( builder: (_, model, __) { - return displayDate(LocaleKeys.startDate.tr(), + return displayDate(LocaleKeys.startDate.tr(context: context), model.getDateString(model.fromDate), model.fromDate == null); }, ); @@ -225,7 +225,7 @@ class _DateRangeSelectorState extends State { toDateComponent() { return Consumer( builder: (_, model, __) { - return displayDate(LocaleKeys.endDate.tr(), + return displayDate(LocaleKeys.endDate.tr(context: context), model.getDateString(model.toDate), model.toDate == null); }, ); @@ -270,7 +270,7 @@ class _DateRangeSelectorState extends State { spacing: 8.h, children: [ AppCustomChipWidget( - labelText: "This Week".needTranslation, + labelText: LocaleKeys.thisWeek.tr(context: context), backgroundColor: model.currentlySelectedRange == Range.WEEKLY ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, @@ -288,7 +288,7 @@ class _DateRangeSelectorState extends State { model.calculateDatesFromRange(); }), AppCustomChipWidget( - labelText: "Last Month".needTranslation, + labelText: LocaleKeys.lastMonth.tr(context: context), backgroundColor: model.currentlySelectedRange == Range.LAST_MONTH ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, @@ -306,7 +306,7 @@ class _DateRangeSelectorState extends State { model.calculateDatesFromRange(); }), AppCustomChipWidget( - labelText: "Last 6 Months".needTranslation, + labelText: LocaleKeys.lastSixMonths.tr(context: context), backgroundColor: model.currentlySelectedRange == Range.LAST_6MONTH ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, diff --git a/lib/widgets/family_files/family_file_add_widget.dart b/lib/widgets/family_files/family_file_add_widget.dart index 4840ba77..abc529bd 100644 --- a/lib/widgets/family_files/family_file_add_widget.dart +++ b/lib/widgets/family_files/family_file_add_widget.dart @@ -77,7 +77,7 @@ class FamilyFileAddWidget extends StatelessWidget { ), SizedBox(height: 20.h), CustomButton( - text: "Verify the member".needTranslation, + text: LocaleKeys.pleaseVerify.tr(context: context), onPressed: () { FocusScope.of(context).unfocus(); if (ValidationUtils.isValidatedIdAndPhoneWithCountryValidation( diff --git a/lib/widgets/map/location_map_widget.dart b/lib/widgets/map/location_map_widget.dart index c0eb431b..2a1ea657 100644 --- a/lib/widgets/map/location_map_widget.dart +++ b/lib/widgets/map/location_map_widget.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:maps_launcher/maps_launcher.dart'; @@ -154,7 +156,7 @@ class LocationMapWidget extends StatelessWidget { child: SizedBox( width: MediaQuery.of(context).size.width * 0.785, child: CustomButton( - text: "Get Directions".needTranslation, + text: LocaleKeys.getDirections.tr(context: context), onPressed: onDirectionsTap ?? _defaultLaunchDirections, backgroundColor: AppColors.textColor.withValues(alpha: 0.8), borderColor: AppColors.textColor.withValues(alpha: 0.01), diff --git a/lib/widgets/map/map_utility_screen.dart b/lib/widgets/map/map_utility_screen.dart index 19823da8..cb3eb8ef 100644 --- a/lib/widgets/map/map_utility_screen.dart +++ b/lib/widgets/map/map_utility_screen.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -5,6 +6,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/location/location_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/widgets/location_input_bottom_sheet.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -126,14 +128,14 @@ class MapUtilityScreen extends StatelessWidget { weight: FontWeight.w600, color: AppColors.textColor, ), - subTitleString.needTranslation.toText12( + subTitleString.toText12( fontWeight: FontWeight.w500, color: AppColors.greyTextColor, ) ], ), CustomButton( - text: confirmButtonString.needTranslation, + text: confirmButtonString, onPressed: () { if (onSubmitted != null) { onSubmitted!(); @@ -172,8 +174,8 @@ class MapUtilityScreen extends StatelessWidget { return SizedBox( width: MediaQuery.sizeOf(context).width, child: TextInputWidget( - labelText: "Enter Pickup Location Manually".needTranslation, - hintText: "Enter Pickup Location".needTranslation, + labelText: LocaleKeys.enterPickupLocationManually.tr(context: context), + hintText: LocaleKeys.enterPickupLocation.tr(context: context), controller: TextEditingController( text: vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description, ), @@ -203,7 +205,7 @@ class MapUtilityScreen extends StatelessWidget { openLocationInputBottomSheet(BuildContext context) { context.read().flushSearchPredictions(); showCommonBottomSheetWithoutHeight( - title: "".needTranslation, + title: "", context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .8, diff --git a/lib/widgets/time_picker_widget.dart b/lib/widgets/time_picker_widget.dart index 71d9ab2e..bc996de6 100644 --- a/lib/widgets/time_picker_widget.dart +++ b/lib/widgets/time_picker_widget.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -150,7 +152,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Select Time".needTranslation.toText18( + LocaleKeys.selectTime.tr(context: context).toText18( weight: FontWeight.w600, color: AppColors.textColor, ), @@ -318,7 +320,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { Expanded( child: CustomButton( height: 56.h, - text: "Cancel".needTranslation, + text: LocaleKeys.cancel.tr(context: context), onPressed: () => Navigator.pop(context), textColor: AppColors.textColor, backgroundColor: AppColors.greyColor, @@ -329,7 +331,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { Expanded( child: CustomButton( height: 56.h, - text: "Confirm".needTranslation, + text: LocaleKeys.confirm.tr(context: context), onPressed: () { Navigator.pop(context, _getCurrentTime()); }, From 3fc1302eaf369a71c36bbfb04fdd8a5bb5059ab6 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 18 Jan 2026 11:52:41 +0300 Subject: [PATCH 11/67] New Flutter App param added --- lib/core/api/api_client.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 722a45e8..66aa34a7 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -189,6 +189,8 @@ class ApiClientImp implements ApiClient { // body['SessionID'] = "45786230487560q"; } + body['IsNewFlutterApp'] = true; + body.removeWhere((key, value) => value == null); } From 40ba1bd246fefaec87ec79d8d0df48c9a614592b Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 18 Jan 2026 11:53:50 +0300 Subject: [PATCH 12/67] ui improvements --- lib/presentation/home/landing_page.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 2f7d1305..c6d93f15 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -711,14 +711,14 @@ class _LandingPageState extends State { : SizedBox(height: 12.h); }, ), - + SizedBox(height: 24.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.quickLinks.tr(context: context).toText16(weight: FontWeight.w600), Row( children: [ - LocaleKeys.viewMedicalFile.tr(context: context).toText12(color: AppColors.primaryRedColor, weight: FontWeight.w500), + LocaleKeys.viewMedicalFile.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], From 9ef70a250d639dfeeee948faf0f641049cb750be Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 18 Jan 2026 13:34:24 +0300 Subject: [PATCH 13/67] translation updates --- assets/langs/ar-SA.json | 10 +++- assets/langs/en-US.json | 9 ++- lib/core/api_consts.dart | 2 +- lib/generated/locale_keys.g.dart | 7 +++ .../home/data/landing_page_data.dart | 56 ++++++++++--------- lib/presentation/home/landing_page.dart | 8 +-- .../home/widgets/habib_wallet_card.dart | 8 +-- .../widgets/ancillary_orders_list.dart | 12 ++-- 8 files changed, 68 insertions(+), 44 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 9c1c962f..6f25fb56 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1499,5 +1499,13 @@ "selectTime": "حدد الوقت", "pleaseWaitYouWillBeCalledForVitalSigns": "يرجى الانتظار! سيتم استدعاؤك لقياس العلامات الحيوية", "pleaseVisitRoomForVitalSigns": "يرجى زيارة الغرفة {roomNumber} لقياس العلامات الحيوية", - "pleaseVisitRoomToTheDoctor": "يرجى زيارة الغرفة {roomNumber} لمقابلة الطبيب" + "pleaseVisitRoomToTheDoctor": "يرجى زيارة الغرفة {roomNumber} لمقابلة الطبيب", + + "erOnlineCheckInRequest": "ER Online Check-In Request", + "indoor": "داخلي", + "navigation": "الملاحة", + "health": "الصحة", + "calculators": "الحاسبات", + "converters": "المحولات", + "guide": "الدليل" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 5f356bac..cec6bf3b 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1490,5 +1490,12 @@ "selectTime": "Select Time", "pleaseWaitYouWillBeCalledForVitalSigns": "Please wait! you will be called for vital signs", "pleaseVisitRoomForVitalSigns": "Please visit Room {roomNumber} for vital signs", - "pleaseVisitRoomToTheDoctor": "Please visit Room {roomNumber} to the Doctor" + "pleaseVisitRoomToTheDoctor": "Please visit Room {roomNumber} to the Doctor", + "erOnlineCheckInRequest": "ER Online Check-In Request", + "indoor": "Indoor", + "navigation": "Navigation", + "health": "Health", + "calculators": "Calculators", + "converters": "Converters", + "guide": "Guide" } diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index efefee18..720fda7a 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index b3b2edf3..3ab0ee43 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1488,5 +1488,12 @@ abstract class LocaleKeys { static const pleaseWaitYouWillBeCalledForVitalSigns = 'pleaseWaitYouWillBeCalledForVitalSigns'; static const pleaseVisitRoomForVitalSigns = 'pleaseVisitRoomForVitalSigns'; static const pleaseVisitRoomToTheDoctor = 'pleaseVisitRoomToTheDoctor'; + static const erOnlineCheckInRequest = 'erOnlineCheckInRequest'; + static const indoor = 'indoor'; + static const navigation = 'navigation'; + static const health = 'health'; + static const calculators = 'calculators'; + static const converters = 'converters'; + static const guide = 'guide'; } diff --git a/lib/presentation/home/data/landing_page_data.dart b/lib/presentation/home/data/landing_page_data.dart index ef2832b1..74fd096b 100644 --- a/lib/presentation/home/data/landing_page_data.dart +++ b/lib/presentation/home/data/landing_page_data.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/data/service_card_data.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -7,8 +9,8 @@ class LandingPageData { ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: "Emergency", - subtitle: "Services", + title: LocaleKeys.emergency.tr(), + subtitle: LocaleKeys.services2.tr(), backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, textColor: AppColors.whiteColor, @@ -17,8 +19,8 @@ class LandingPageData { ServiceCardData( serviceName: "indoor_navigation", icon: AppAssets.indoor_nav_icon, - title: "Indoor", - subtitle: "Navigation", + title: LocaleKeys.indoor.tr(), + subtitle: LocaleKeys.navigation.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -27,8 +29,8 @@ class LandingPageData { ServiceCardData( serviceName: "search_doctor", icon: AppAssets.search_doctor_icon, - title: "Search", - subtitle: "Doctor", + title: LocaleKeys.search.tr(), + subtitle: LocaleKeys.doctor.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -37,8 +39,8 @@ class LandingPageData { ServiceCardData( serviceName: "health_calculators_and_converts", icon: AppAssets.health_calculators_icon, - title: "Health", - subtitle: "Calculators", + title: LocaleKeys.health.tr(), + subtitle: LocaleKeys.calculators.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -47,8 +49,8 @@ class LandingPageData { ServiceCardData( serviceName: "health_converters", icon: AppAssets.health_converters_icon, - title: "Health", - subtitle: "Converters", + title: LocaleKeys.health.tr(), + subtitle: LocaleKeys.converters.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -57,8 +59,8 @@ class LandingPageData { ServiceCardData( serviceName: "parking_guide", icon: AppAssets.car_parking_icon, - title: "Parking", - subtitle: "Guide", + title: LocaleKeys.parking.tr(), + subtitle: LocaleKeys.guide.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -70,8 +72,8 @@ class LandingPageData { ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: "Emergency", - subtitle: "Services", + title: LocaleKeys.emergency.tr(), + subtitle: LocaleKeys.services2.tr(), backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, textColor: AppColors.whiteColor, @@ -80,8 +82,8 @@ class LandingPageData { ServiceCardData( serviceName: "lab_results", icon: AppAssets.home_lab_result_icon, - title: "Lab", - subtitle: "Results", + title: LocaleKeys.lab.tr(), + subtitle: LocaleKeys.labSubtitle.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -90,8 +92,8 @@ class LandingPageData { ServiceCardData( serviceName: "radiology_results", icon: AppAssets.my_radiology_icon, - title: "Radiology", - subtitle: "Results", + title: LocaleKeys.radiology.tr(), + subtitle: LocaleKeys.radiologySubtitle.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -100,8 +102,8 @@ class LandingPageData { ServiceCardData( serviceName: "prescriptions", icon: AppAssets.my_prescription_icon, - title: "Prescriptions", - subtitle: "Details", + title: LocaleKeys.medicinesSubtitle.tr(), + subtitle: LocaleKeys.details.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -110,8 +112,8 @@ class LandingPageData { ServiceCardData( serviceName: "insurance_update", icon: AppAssets.insurance_update_icon, - title: "Insurance", - subtitle: "Details", + title: LocaleKeys.insurance.tr(), + subtitle: LocaleKeys.details.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -130,8 +132,8 @@ class LandingPageData { ServiceCardData( serviceName: "sick_leaves", icon: AppAssets.my_sick_leave_icon, - title: "Sick", - subtitle: "Leaves", + title: LocaleKeys.sick.tr(), + subtitle: LocaleKeys.sickSubtitle.tr(), backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -143,7 +145,7 @@ class LandingPageData { ServiceCardData( serviceName: "livecare", icon: AppAssets.small_livecare_icon, - title: "LiveCare", + title: LocaleKeys.liveCare.tr(), subtitle: "Explore our app, View our services and offers", largeCardIcon: AppAssets.liveCareService, backgroundColor: AppColors.successColor, @@ -161,7 +163,7 @@ class LandingPageData { ServiceCardData( serviceName: "home_health_care", icon: AppAssets.homeBottom, - title: "Home Health Care", + title: LocaleKeys.homeHealthCare.tr(), subtitle: "Explore our app, View our services and offers", largeCardIcon: AppAssets.homeHealthCareService, backgroundColor: AppColors.primaryRedColor, @@ -171,7 +173,7 @@ class LandingPageData { ServiceCardData( serviceName: "pharmacy", icon: AppAssets.pharmacy_icon, //359846 - title: "Pharmacy", + title: LocaleKeys.hmgPharmacy.tr(), subtitle: "Explore our app, View our services and offers", largeCardIcon: AppAssets.pharmacyService, backgroundColor: AppColors.pharmacyBGColor, diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index fc400c44..f8cd1595 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -305,7 +305,7 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Appointments & Visits".toText16(isBold: true), + LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(isBold: true), Row( children: [ LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor), @@ -465,7 +465,7 @@ class _LandingPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget( - labelText: "ER Online Check-In Request", + labelText: LocaleKeys.erOnlineCheckInRequest.tr(context: context), backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.10), textColor: AppColors.primaryRedColor, ), @@ -597,10 +597,10 @@ class _LandingPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Services".toText16(isBold: true), + LocaleKeys.services2.tr(context: context).toText16(isBold: true), Row( children: [ - "View all services".toText12(color: AppColors.primaryRedColor), + LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index 9058c8f5..fb04baf3 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -23,10 +23,10 @@ class HabibWalletCard extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "My Balance".toText16(isBold: true), + LocaleKeys.myBalance.tr(context: context).toText16(isBold: true), Row( children: [ - "View all services".toText12(color: AppColors.primaryRedColor), + LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -54,7 +54,7 @@ class HabibWalletCard extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Habib Wallet".toText15(isBold: true), + LocaleKeys.habibWallet.tr(context: context).toText15(isBold: true), Container( height: 40.h, width: 40.h, @@ -94,7 +94,7 @@ class HabibWalletCard extends StatelessWidget { padding: EdgeInsets.symmetric(horizontal: 50.h), child: Row( children: [ - "View details".toText12(color: AppColors.primaryRedColor), + LocaleKeys.viewDetails.tr(context: context).toText12(color: AppColors.primaryRedColor), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], diff --git a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart index aa4d0bab..71d2cf03 100644 --- a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart @@ -145,7 +145,7 @@ class AncillaryOrderCard extends StatelessWidget { if (!isLoading) ...[ Image.network( "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", - width: 63.w, + width: 63.h, height: 63.h, fit: BoxFit.cover, ).circle(100.r), @@ -177,11 +177,11 @@ class AncillaryOrderCard extends StatelessWidget { labelText: order.projectName ?? '-', ).toShimmer2(isShow: isLoading), // orderNo - // if (order.orderNo != null || isLoading) - // AppCustomChipWidget( - // // icon: AppAssets.calendar, - // labelText: "${"Order# :".needTranslation}${order.orderNo ?? '-'}", - // ).toShimmer2(isShow: isLoading), + if (order.orderNo != null || isLoading) + AppCustomChipWidget( + // icon: AppAssets.calendar, + labelText: "${LocaleKeys.orderNumber.tr(context: context)}${order.orderNo ?? '-'}", + ).toShimmer2(isShow: isLoading), // Appointment Date if (order.appointmentDate != null || isLoading) From 3bdc4e246faae9c605da34de75caf948e3ff09d2 Mon Sep 17 00:00:00 2001 From: faizatflutter Date: Sun, 18 Jan 2026 15:20:04 +0300 Subject: [PATCH 14/67] refactor --- .../hmg_services/services_page.dart | 148 +- pubspec.lock | 1985 ----------------- 2 files changed, 84 insertions(+), 2049 deletions(-) delete mode 100644 pubspec.lock diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 5c028db8..384990ad 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -50,7 +50,14 @@ class ServicesPage extends StatelessWidget { late MedicalFileViewModel medicalFileViewModel; late final List hmgServices = [ - HmgServicesComponentModel(11, "Emergency Services".needTranslation, "".needTranslation, AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () async { + HmgServicesComponentModel( + 11, + "Emergency Services".needTranslation, + "".needTranslation, + AppAssets.emergency_services_icon, + bgColor: AppColors.primaryRedColor, + true, + route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().flushData(); getIt.get().getTransportationOrders( @@ -78,7 +85,14 @@ class ServicesPage extends StatelessWidget { true, route: AppRoutes.bookAppointmentPage, ), - HmgServicesComponentModel(5, "Complete Checkup".needTranslation, "".needTranslation, AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { + HmgServicesComponentModel( + 5, + "Complete Checkup".needTranslation, + "".needTranslation, + AppAssets.comprehensiveCheckup, + bgColor: AppColors.bgGreenColor, + true, + route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.comprehensiveCheckupPage); } else { @@ -131,7 +145,13 @@ class ServicesPage extends StatelessWidget { }, ), HmgServicesComponentModel( - 11, "E-Referral Services".needTranslation, "".needTranslation, AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { + 11, + "E-Referral Services".needTranslation, + "".needTranslation, + AppAssets.eReferral, + bgColor: AppColors.eReferralCardColor, + true, + route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.eReferralPage); } else { @@ -393,19 +413,19 @@ class ServicesPage extends StatelessWidget { ? CustomButton( height: 40.h, icon: AppAssets.recharge_icon, - iconSize: 16.w, - iconColor: AppColors.infoColor, - textColor: AppColors.infoColor, - text: "Recharge".needTranslation, - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 12.f, - onPressed: () { - Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); - }, + iconSize: 16.w, + iconColor: AppColors.infoColor, + textColor: AppColors.infoColor, + text: "Recharge".needTranslation, + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 12.f, + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, ) : SizedBox.shrink(), ], @@ -444,60 +464,60 @@ class ServicesPage extends StatelessWidget { getIt.get().isAuthenticated ? Wrap( spacing: -8.h, - // runSpacing: 0.h, - children: [ - Utils.buildImgWithAssets( - icon: AppAssets.babyGirlImg, - height: 28.h, - width: 28.w, - border: 1, - fit: BoxFit.contain, - borderRadius: 50.r, - ), - Utils.buildImgWithAssets( - icon: AppAssets.femaleImg, - height: 28.h, - width: 28.w, - border: 1, - borderRadius: 50.r, - fit: BoxFit.contain, - ), - Utils.buildImgWithAssets( - icon: AppAssets.maleImg, - height: 28.h, - width: 28.w, - border: 1, - borderRadius: 50.r, - fit: BoxFit.contain, - ), - ], + // runSpacing: 0.h, + children: [ + Utils.buildImgWithAssets( + icon: AppAssets.babyGirlImg, + height: 28.h, + width: 28.w, + border: 1, + fit: BoxFit.contain, + borderRadius: 50.r, + ), + Utils.buildImgWithAssets( + icon: AppAssets.femaleImg, + height: 28.h, + width: 28.w, + border: 1, + borderRadius: 50.r, + fit: BoxFit.contain, + ), + Utils.buildImgWithAssets( + icon: AppAssets.maleImg, + height: 28.h, + width: 28.w, + border: 1, + borderRadius: 50.r, + fit: BoxFit.contain, + ), + ], ) : "Login to view your medical file".needTranslation.toText12(fontWeight: FontWeight.w500, maxLine: 2), Spacer(), getIt.get().isAuthenticated ? CustomButton( height: 40.h, - icon: AppAssets.add_icon, - iconSize: 16.w, - iconColor: AppColors.primaryRedColor, - textColor: AppColors.primaryRedColor, - text: "Add Member".needTranslation, - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 12.f, - onPressed: () { - DialogService dialogService = getIt.get(); - medicalFileViewModel.clearAuthValues(); - dialogService.showAddFamilyFileSheet( - label: "Add Family Member".needTranslation, - message: "Please fill the below field to add a new family member to your profile".needTranslation, - onVerificationPress: () { - medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); - }); - }, + icon: AppAssets.add_icon, + iconSize: 16.w, + iconColor: AppColors.primaryRedColor, + textColor: AppColors.primaryRedColor, + text: "Add Member".needTranslation, + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 12.f, + onPressed: () { + DialogService dialogService = getIt.get(); + medicalFileViewModel.clearAuthValues(); + dialogService.showAddFamilyFileSheet( + label: "Add Family Member".needTranslation, + message: "Please fill the below field to add a new family member to your profile".needTranslation, + onVerificationPress: () { + medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); + }); + }, ) : SizedBox.shrink(), ], diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 42b828db..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,1985 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 - url: "https://pub.dev" - source: hosted - version: "1.3.59" - amazon_payfort: - dependency: "direct main" - description: - name: amazon_payfort - sha256: "7732df0764aecbb814f910db36d0dca2f696e7e5ea380b49aa3ec62965768b33" - url: "https://pub.dev" - source: hosted - version: "1.1.4" - archive: - dependency: transitive - description: - name: archive - sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" - url: "https://pub.dev" - source: hosted - version: "4.0.7" - args: - dependency: transitive - description: - name: args - sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.dev" - source: hosted - version: "2.7.0" - async: - dependency: transitive - description: - name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://pub.dev" - source: hosted - version: "2.13.0" - audio_session: - dependency: transitive - description: - name: audio_session - sha256: "8f96a7fecbb718cb093070f868b4cdcb8a9b1053dce342ff8ab2fde10eb9afb7" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - auto_size_text: - dependency: "direct main" - description: - name: auto_size_text - sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - barcode_scan2: - dependency: "direct main" - description: - name: barcode_scan2 - sha256: "0f3eb7c0a0c80a0f65d3fa88737544fdb6d27127a4fad566e980e626f3fb76e1" - url: "https://pub.dev" - source: hosted - version: "4.5.1" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" - url: "https://pub.dev" - source: hosted - version: "4.1.1" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - carp_serializable: - dependency: transitive - description: - name: carp_serializable - sha256: f039f8ea22e9437aef13fe7e9743c3761c76d401288dcb702eadd273c3e4dcef - url: "https://pub.dev" - source: hosted - version: "2.0.1" - characters: - dependency: transitive - description: - name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - chewie: - dependency: transitive - description: - name: chewie - sha256: "44bcfc5f0dfd1de290c87c9d86a61308b3282a70b63435d5557cfd60f54a69ca" - url: "https://pub.dev" - source: hosted - version: "1.13.0" - clock: - dependency: transitive - description: - name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.dev" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - connectivity_plus: - dependency: "direct main" - description: - name: connectivity_plus - sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec - url: "https://pub.dev" - source: hosted - version: "6.1.5" - connectivity_plus_platform_interface: - dependency: transitive - description: - name: connectivity_plus_platform_interface - sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" - url: "https://pub.dev" - source: hosted - version: "0.3.4+2" - crypto: - dependency: transitive - description: - name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "https://pub.dev" - source: hosted - version: "3.0.6" - csslib: - dependency: transitive - description: - name: csslib - sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - dartz: - dependency: "direct main" - description: - name: dartz - sha256: e6acf34ad2e31b1eb00948692468c30ab48ac8250e0f0df661e29f12dd252168 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - dbus: - dependency: transitive - description: - name: dbus - sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" - url: "https://pub.dev" - source: hosted - version: "0.7.11" - device_calendar: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: "5ea5ed9e2bb499c0633383b53103f2920b634755" - url: "https://github.com/bardram/device_calendar" - source: git - version: "4.3.1" - device_info_plus: - dependency: "direct main" - description: - name: device_info_plus - sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" - url: "https://pub.dev" - source: hosted - version: "11.5.0" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f - url: "https://pub.dev" - source: hosted - version: "7.0.3" - dropdown_search: - dependency: "direct main" - description: - name: dropdown_search - sha256: c29b3e5147a82a06a4a08b3b574c51cb48cc17ad89893d53ee72a6f86643622e - url: "https://pub.dev" - source: hosted - version: "6.0.2" - easy_localization: - dependency: "direct main" - description: - name: easy_localization - sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed" - url: "https://pub.dev" - source: hosted - version: "3.0.8" - easy_logger: - dependency: transitive - description: - name: easy_logger - sha256: c764a6e024846f33405a2342caf91c62e357c24b02c04dbc712ef232bf30ffb7 - url: "https://pub.dev" - source: hosted - version: "0.0.2" - equatable: - dependency: "direct main" - description: - name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" - url: "https://pub.dev" - source: hosted - version: "2.0.7" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - ffi: - dependency: transitive - description: - name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - file: - dependency: transitive - description: - name: file - sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" - source: hosted - version: "7.0.1" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: f2d9f173c2c14635cc0e9b14c143c49ef30b4934e8d1d274d6206fcb0086a06f - url: "https://pub.dev" - source: hosted - version: "10.3.3" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://pub.dev" - source: hosted - version: "0.9.3+2" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" - url: "https://pub.dev" - source: hosted - version: "0.9.4+4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.dev" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://pub.dev" - source: hosted - version: "0.9.3+4" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: "4f85b161772e1d54a66893ef131c0a44bd9e552efa78b33d5f4f60d2caa5c8a3" - url: "https://pub.dev" - source: hosted - version: "11.6.0" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: a44b6d1155ed5cae7641e3de7163111cfd9f6f6c954ca916dc6a3bdfa86bf845 - url: "https://pub.dev" - source: hosted - version: "4.4.3" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: c7d1ed1f86ae64215757518af5576ff88341c8ce5741988c05cc3b2e07b0b273 - url: "https://pub.dev" - source: hosted - version: "0.5.10+16" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" - url: "https://pub.dev" - source: hosted - version: "3.15.2" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: "5873a370f0d232918e23a5a6137dbe4c2c47cf017301f4ea02d9d636e52f60f0" - url: "https://pub.dev" - source: hosted - version: "6.0.1" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" - url: "https://pub.dev" - source: hosted - version: "2.24.1" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" - url: "https://pub.dev" - source: hosted - version: "15.2.10" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" - url: "https://pub.dev" - source: hosted - version: "4.6.10" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" - url: "https://pub.dev" - source: hosted - version: "3.10.10" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.dev" - source: hosted - version: "1.1.1" - fl_chart: - dependency: "direct main" - description: - name: fl_chart - sha256: "577aeac8ca414c25333334d7c4bb246775234c0e44b38b10a82b559dd4d764e7" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - flutter_hooks: - dependency: transitive - description: - name: flutter_hooks - sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70 - url: "https://pub.dev" - source: hosted - version: "0.20.5" - flutter_inappwebview: - dependency: "direct main" - description: - name: flutter_inappwebview - sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" - url: "https://pub.dev" - source: hosted - version: "6.1.5" - flutter_inappwebview_android: - dependency: transitive - description: - name: flutter_inappwebview_android - sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - flutter_inappwebview_internal_annotations: - dependency: transitive - description: - name: flutter_inappwebview_internal_annotations - sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - flutter_inappwebview_ios: - dependency: transitive - description: - name: flutter_inappwebview_ios - sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_macos: - dependency: transitive - description: - name: flutter_inappwebview_macos - sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_platform_interface: - dependency: transitive - description: - name: flutter_inappwebview_platform_interface - sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 - url: "https://pub.dev" - source: hosted - version: "1.3.0+1" - flutter_inappwebview_web: - dependency: transitive - description: - name: flutter_inappwebview_web - sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_windows: - dependency: transitive - description: - name: flutter_inappwebview_windows - sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" - url: "https://pub.dev" - source: hosted - version: "0.6.0" - flutter_ios_voip_kit_karmm: - dependency: "direct main" - description: - name: flutter_ios_voip_kit_karmm - sha256: "31a445d78aacacdf128a0354efb9f4e424285dfe4c0af3ea872e64f03e6f6bfc" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.dev" - source: hosted - version: "5.0.0" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - sha256: "7ed76be64e8a7d01dfdf250b8434618e2a028c9dfa2a3c41dc9b531d4b3fc8a5" - url: "https://pub.dev" - source: hosted - version: "19.4.2" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: e3c277b2daab8e36ac5a6820536668d07e83851aeeb79c446e525a70710770a5 - url: "https://pub.dev" - source: hosted - version: "6.0.0" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "277d25d960c15674ce78ca97f57d0bae2ee401c844b6ac80fcd972a9c99d09fe" - url: "https://pub.dev" - source: hosted - version: "9.1.0" - flutter_local_notifications_windows: - dependency: transitive - description: - name: flutter_local_notifications_windows - sha256: "8d658f0d367c48bd420e7cf2d26655e2d1130147bca1eea917e576ca76668aaf" - url: "https://pub.dev" - source: hosted - version: "1.0.3" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_nfc_kit: - dependency: "direct main" - description: - name: flutter_nfc_kit - sha256: "3cc4059626fa672031261512299458dd274de4ccb57a7f0ee0951ddd70a048e5" - url: "https://pub.dev" - source: hosted - version: "3.6.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 - url: "https://pub.dev" - source: hosted - version: "2.0.30" - flutter_rating_bar: - dependency: "direct main" - description: - name: flutter_rating_bar - sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93 - url: "https://pub.dev" - source: hosted - version: "4.0.1" - flutter_staggered_animations: - dependency: "direct main" - description: - name: flutter_staggered_animations - sha256: "81d3c816c9bb0dca9e8a5d5454610e21ffb068aedb2bde49d2f8d04f75538351" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - flutter_swiper_view: - dependency: "direct main" - description: - name: flutter_swiper_view - sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" - source: hosted - version: "1.1.8" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_widget_from_html: - dependency: "direct main" - description: - name: flutter_widget_from_html - sha256: "7f1daefcd3009c43c7e7fb37501e6bb752d79aa7bfad0085fb0444da14e89bd0" - url: "https://pub.dev" - source: hosted - version: "0.17.1" - flutter_widget_from_html_core: - dependency: transitive - description: - name: flutter_widget_from_html_core - sha256: "1120ee6ed3509ceff2d55aa6c6cbc7b6b1291434422de2411b5a59364dd6ff03" - url: "https://pub.dev" - source: hosted - version: "0.17.0" - flutter_zoom_videosdk: - dependency: "direct main" - description: - name: flutter_zoom_videosdk - sha256: "22731485fe48472a34ff0c7e787a382f5e1ec662fd89186e58e760974fc2a0cb" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8" - url: "https://pub.dev" - source: hosted - version: "8.2.14" - fwfh_cached_network_image: - dependency: transitive - description: - name: fwfh_cached_network_image - sha256: "484cb5f8047f02cfac0654fca5832bfa91bb715fd7fc651c04eb7454187c4af8" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_chewie: - dependency: transitive - description: - name: fwfh_chewie - sha256: ae74fc26798b0e74f3983f7b851e74c63b9eeb2d3015ecd4b829096b2c3f8818 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_just_audio: - dependency: transitive - description: - name: fwfh_just_audio - sha256: dfd622a0dfe049ac647423a2a8afa7f057d9b2b93d92710b624e3d370b1ac69a - url: "https://pub.dev" - source: hosted - version: "0.17.0" - fwfh_svg: - dependency: transitive - description: - name: fwfh_svg - sha256: "2e6bb241179eeeb1a7941e05c8c923b05d332d36a9085233e7bf110ea7deb915" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_url_launcher: - dependency: transitive - description: - name: fwfh_url_launcher - sha256: c38aa8fb373fda3a89b951fa260b539f623f6edb45eee7874cb8b492471af881 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_webview: - dependency: transitive - description: - name: fwfh_webview - sha256: f71b0aa16e15d82f3c017f33560201ff5ae04e91e970cab5d12d3bcf970b870c - url: "https://pub.dev" - source: hosted - version: "0.15.6" - geoclue: - dependency: transitive - description: - name: geoclue - sha256: c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f - url: "https://pub.dev" - source: hosted - version: "0.1.1" - geolocator: - dependency: "direct main" - description: - name: geolocator - sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" - url: "https://pub.dev" - source: hosted - version: "14.0.2" - geolocator_android: - dependency: transitive - description: - name: geolocator_android - sha256: "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a" - url: "https://pub.dev" - source: hosted - version: "5.0.2" - geolocator_apple: - dependency: transitive - description: - name: geolocator_apple - sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 - url: "https://pub.dev" - source: hosted - version: "2.3.13" - geolocator_linux: - dependency: transitive - description: - name: geolocator_linux - sha256: c4e966f0a7a87e70049eac7a2617f9e16fd4c585a26e4330bdfc3a71e6a721f3 - url: "https://pub.dev" - source: hosted - version: "0.2.3" - geolocator_platform_interface: - dependency: transitive - description: - name: geolocator_platform_interface - sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" - url: "https://pub.dev" - source: hosted - version: "4.2.6" - geolocator_web: - dependency: transitive - description: - name: geolocator_web - sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 - url: "https://pub.dev" - source: hosted - version: "4.1.3" - geolocator_windows: - dependency: transitive - description: - name: geolocator_windows - sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" - url: "https://pub.dev" - source: hosted - version: "0.2.5" - get_it: - dependency: "direct main" - description: - name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b - url: "https://pub.dev" - source: hosted - version: "8.2.0" - gms_check: - dependency: "direct main" - description: - name: gms_check - sha256: b3fc08fd41da233f9761f9981303346aa9778b4802e90ce9bd8122674fcca6f0 - url: "https://pub.dev" - source: hosted - version: "1.0.4" - google_api_availability: - dependency: "direct main" - description: - name: google_api_availability - sha256: "2ffdc91e1e0cf4e7974fef6c2988a24cefa81f03526ff04b694df6dc0fcbca03" - url: "https://pub.dev" - source: hosted - version: "5.0.1" - google_api_availability_android: - dependency: transitive - description: - name: google_api_availability_android - sha256: "4794147f43a8f3eee6b514d3ae30dbe6f7b9048cae8cd2a74cb4055cd28d74a8" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - google_api_availability_platform_interface: - dependency: transitive - description: - name: google_api_availability_platform_interface - sha256: "65b7da62fe5b582bb3d508628ad827d36d890710ea274766a992a56fa5420da6" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - google_maps: - dependency: transitive - description: - name: google_maps - sha256: "5d410c32112d7c6eb7858d359275b2aa04778eed3e36c745aeae905fb2fa6468" - url: "https://pub.dev" - source: hosted - version: "8.2.0" - google_maps_flutter: - dependency: "direct main" - description: - name: google_maps_flutter - sha256: c389e16fafc04b37a4105e0757ecb9d59806026cee72f408f1ba68811d01bfe6 - url: "https://pub.dev" - source: hosted - version: "2.13.1" - google_maps_flutter_android: - dependency: transitive - description: - name: google_maps_flutter_android - sha256: a6c9d43f6a944ff4bae5c3deb34817970ac3d591dcd7f5bd2ea450ab9e9c514a - url: "https://pub.dev" - source: hosted - version: "2.18.2" - google_maps_flutter_ios: - dependency: transitive - description: - name: google_maps_flutter_ios - sha256: ca02463b19a9abc7d31fcaf22631d021d647107467f741b917a69fa26659fd75 - url: "https://pub.dev" - source: hosted - version: "2.15.5" - google_maps_flutter_platform_interface: - dependency: transitive - description: - name: google_maps_flutter_platform_interface - sha256: f4b9b44f7b12a1f6707ffc79d082738e0b7e194bf728ee61d2b3cdf5fdf16081 - url: "https://pub.dev" - source: hosted - version: "2.14.0" - google_maps_flutter_web: - dependency: transitive - description: - name: google_maps_flutter_web - sha256: "53e5dbf73ff04153acc55a038248706967c21d5b6ef6657a57fce2be73c2895a" - url: "https://pub.dev" - source: hosted - version: "0.5.14+2" - gsettings: - dependency: transitive - description: - name: gsettings - sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" - url: "https://pub.dev" - source: hosted - version: "0.2.8" - health: - dependency: "direct main" - description: - name: health - sha256: "320633022fb2423178baa66508001c4ca5aee5806ffa2c913e66488081e9fd47" - url: "https://pub.dev" - source: hosted - version: "13.1.4" - hijri_gregorian_calendar: - dependency: "direct main" - description: - name: hijri_gregorian_calendar - sha256: aecdbe3c9365fac55f17b5e1f24086a81999b1e5c9372cb08888bfbe61e07fa1 - url: "https://pub.dev" - source: hosted - version: "0.1.1" - html: - dependency: transitive - description: - name: html - sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://pub.dev" - source: hosted - version: "0.15.6" - http: - dependency: "direct main" - description: - name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 - url: "https://pub.dev" - source: hosted - version: "1.5.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" - huawei_location: - dependency: "direct main" - description: - name: huawei_location - sha256: "3100d6b2b11df56481b8deade71baa84970e0bae0ade6ec56407be2b036af355" - url: "https://pub.dev" - source: hosted - version: "6.14.2+301" - huawei_map: - dependency: "direct main" - description: - path: flutter-hms-map - ref: HEAD - resolved-ref: "9a16541e4016e3bf58a2571e6aa658a4751af399" - url: "https://github.com/fleoparra/hms-flutter-plugin.git" - source: git - version: "6.11.2+303" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" - url: "https://pub.dev" - source: hosted - version: "0.8.13+3" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e - url: "https://pub.dev" - source: hosted - version: "0.8.13" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae - url: "https://pub.dev" - source: hosted - version: "0.2.2" - intl: - dependency: "direct main" - description: - name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://pub.dev" - source: hosted - version: "0.20.2" - jiffy: - dependency: "direct main" - description: - name: jiffy - sha256: "9bafbfe6d97587048bf449165e050029e716a12438f54a3d39e7e3a256decdac" - url: "https://pub.dev" - source: hosted - version: "6.4.3" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" - source: hosted - version: "4.9.0" - just_audio: - dependency: "direct main" - description: - name: just_audio - sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" - url: "https://pub.dev" - source: hosted - version: "0.10.5" - just_audio_platform_interface: - dependency: transitive - description: - name: just_audio_platform_interface - sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" - url: "https://pub.dev" - source: hosted - version: "4.6.0" - just_audio_web: - dependency: transitive - description: - name: just_audio_web - sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" - url: "https://pub.dev" - source: hosted - version: "0.4.16" - keyboard_actions: - dependency: "direct main" - description: - name: keyboard_actions - sha256: "31e0ab2a706ac8f58887efa60efc1f19aecdf37d8ab0f665a0f156d1fbeab650" - url: "https://pub.dev" - source: hosted - version: "4.2.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" - url: "https://pub.dev" - source: hosted - version: "11.0.2" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" - url: "https://pub.dev" - source: hosted - version: "3.0.10" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - lints: - dependency: transitive - description: - name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.dev" - source: hosted - version: "5.1.1" - local_auth: - dependency: "direct main" - description: - name: local_auth - sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - local_auth_android: - dependency: transitive - description: - name: local_auth_android - sha256: "1ee0e63fb8b5c6fa286796b5fb1570d256857c2f4a262127e728b36b80a570cf" - url: "https://pub.dev" - source: hosted - version: "1.0.53" - local_auth_darwin: - dependency: transitive - description: - name: local_auth_darwin - sha256: "699873970067a40ef2f2c09b4c72eb1cfef64224ef041b3df9fdc5c4c1f91f49" - url: "https://pub.dev" - source: hosted - version: "1.6.1" - local_auth_platform_interface: - dependency: transitive - description: - name: local_auth_platform_interface - sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" - url: "https://pub.dev" - source: hosted - version: "1.0.10" - local_auth_windows: - dependency: transitive - description: - name: local_auth_windows - sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5 - url: "https://pub.dev" - source: hosted - version: "1.0.11" - location: - dependency: "direct main" - description: - name: location - sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 - url: "https://pub.dev" - source: hosted - version: "8.0.1" - location_platform_interface: - dependency: transitive - description: - name: location_platform_interface - sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - location_web: - dependency: transitive - description: - name: location_web - sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - logger: - dependency: "direct main" - description: - name: logger - sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" - url: "https://pub.dev" - source: hosted - version: "2.6.1" - logging: - dependency: transitive - description: - name: logging - sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.dev" - source: hosted - version: "1.3.0" - lottie: - dependency: "direct main" - description: - name: lottie - sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95" - url: "https://pub.dev" - source: hosted - version: "3.3.2" - manage_calendar_events: - dependency: "direct main" - description: - name: manage_calendar_events - sha256: f17600fcb7dc7047120c185993045e493d686930237b4e3c2689c26a64513d66 - url: "https://pub.dev" - source: hosted - version: "2.0.3" - maps_launcher: - dependency: "direct main" - description: - name: maps_launcher - sha256: dac4c609720211fa6336b5903d917fe45e545c6b5665978efc3db2a3f436b1ae - url: "https://pub.dev" - source: hosted - version: "3.0.0+1" - matcher: - dependency: transitive - description: - name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://pub.dev" - source: hosted - version: "0.12.17" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.dev" - source: hosted - version: "0.11.1" - meta: - dependency: transitive - description: - name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://pub.dev" - source: hosted - version: "1.16.0" - mime: - dependency: transitive - description: - name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - ndef: - dependency: transitive - description: - name: ndef - sha256: "5083507cff4bb823b2a198a27ea2c70c4d6bc27a97b66097d966a250e1615d54" - url: "https://pub.dev" - source: hosted - version: "0.3.4" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - network_info_plus: - dependency: "direct main" - description: - name: network_info_plus - sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 - url: "https://pub.dev" - source: hosted - version: "6.1.4" - network_info_plus_platform_interface: - dependency: transitive - description: - name: network_info_plus_platform_interface - sha256: "7e7496a8a9d8136859b8881affc613c4a21304afeb6c324bcefc4bd0aff6b94b" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - nm: - dependency: transitive - description: - name: nm - sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - open_filex: - dependency: "direct main" - description: - name: open_filex - sha256: "9976da61b6a72302cf3b1efbce259200cd40232643a467aac7370addf94d6900" - url: "https://pub.dev" - source: hosted - version: "4.7.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" - url: "https://pub.dev" - source: hosted - version: "8.3.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" - url: "https://pub.dev" - source: hosted - version: "2.2.18" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 - url: "https://pub.dev" - source: hosted - version: "12.0.1" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" - url: "https://pub.dev" - source: hosted - version: "13.0.1" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 - url: "https://pub.dev" - source: hosted - version: "9.4.7" - permission_handler_html: - dependency: transitive - description: - name: permission_handler_html - sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" - url: "https://pub.dev" - source: hosted - version: "0.1.3+5" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 - url: "https://pub.dev" - source: hosted - version: "4.3.0" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" - url: "https://pub.dev" - source: hosted - version: "0.2.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" - url: "https://pub.dev" - source: hosted - version: "7.0.1" - platform: - dependency: transitive - description: - name: platform - sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.dev" - source: hosted - version: "3.1.6" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" - source: hosted - version: "2.1.8" - posix: - dependency: transitive - description: - name: posix - sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" - url: "https://pub.dev" - source: hosted - version: "6.0.3" - protobuf: - dependency: transitive - description: - name: protobuf - sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - provider: - dependency: "direct main" - description: - name: provider - sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" - url: "https://pub.dev" - source: hosted - version: "6.1.5+1" - quiver: - dependency: transitive - description: - name: quiver - sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - rrule: - dependency: transitive - description: - name: rrule - sha256: b7425410c594d4b6717c9f17ec8ef83c9d1ff2e513c428a135b5924fc2e8e045 - url: "https://pub.dev" - source: hosted - version: "0.2.17" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.dev" - source: hosted - version: "0.28.0" - sanitize_html: - dependency: transitive - description: - name: sanitize_html - sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - share_plus: - dependency: "direct main" - description: - name: share_plus - sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - share_plus_platform_interface: - dependency: transitive - description: - name: share_plus_platform_interface - sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" - url: "https://pub.dev" - source: hosted - version: "6.1.0" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" - url: "https://pub.dev" - source: hosted - version: "2.5.3" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e - url: "https://pub.dev" - source: hosted - version: "2.4.13" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" - url: "https://pub.dev" - source: hosted - version: "2.5.4" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 - url: "https://pub.dev" - source: hosted - version: "2.4.3" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shimmer: - dependency: "direct main" - description: - name: shimmer - sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - sizer: - dependency: "direct main" - description: - name: sizer - sha256: "9963c89e4d30d7c2108de3eafc0a7e6a4a8009799376ea6be5ef0a9ad87cfbad" - url: "https://pub.dev" - source: hosted - version: "3.1.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - smooth_corner: - dependency: "direct main" - description: - name: smooth_corner - sha256: "112d7331f82ead81ec870c5d1eb0624f2e7e367eccd166c2fffe4c11d4f87c4f" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - sms_otp_auto_verify: - dependency: "direct main" - description: - name: sms_otp_auto_verify - sha256: ee02af0d6b81d386ef70d7d0317a1929bc0b4a3a30a451284450bbcf6901ba1a - url: "https://pub.dev" - source: hosted - version: "2.2.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://pub.dev" - source: hosted - version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_android: - dependency: transitive - description: - name: sqflite_android - sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 - url: "https://pub.dev" - source: hosted - version: "2.4.2+2" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" - url: "https://pub.dev" - source: hosted - version: "2.5.6" - sqflite_darwin: - dependency: transitive - description: - name: sqflite_darwin - sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_platform_interface: - dependency: transitive - description: - name: sqflite_platform_interface - sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - syncfusion_flutter_calendar: - dependency: "direct main" - description: - name: syncfusion_flutter_calendar - sha256: "8e8a4eef01d6a82ae2c17e76d497ff289ded274de014c9f471ffabc12d1e2e71" - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_core: - dependency: transitive - description: - name: syncfusion_flutter_core - sha256: bfd026c0f9822b49ff26fed11cd3334519acb6a6ad4b0c81d9cd18df6af1c4c0 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_datepicker: - dependency: transitive - description: - name: syncfusion_flutter_datepicker - sha256: b5f35cc808e91b229d41613efe71dadab1549a35bfd493f922fc06ccc2fe908c - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_localizations: - dependency: transitive - description: - name: syncfusion_localizations - sha256: bb32b07879b4c1dee5d4c8ad1c57343a4fdae55d65a87f492727c11b68f23164 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 - url: "https://pub.dev" - source: hosted - version: "3.4.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - time: - dependency: transitive - description: - name: time - sha256: "370572cf5d1e58adcb3e354c47515da3f7469dac3a95b447117e728e7be6f461" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - timezone: - dependency: transitive - description: - name: timezone - sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://pub.dev" - source: hosted - version: "6.3.2" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "199bc33e746088546a39cc5f36bac5a278c5e53b40cb3196f99e7345fdcfae6b" - url: "https://pub.dev" - source: hosted - version: "6.3.22" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 - url: "https://pub.dev" - source: hosted - version: "6.3.4" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f - url: "https://pub.dev" - source: hosted - version: "3.2.3" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" - url: "https://pub.dev" - source: hosted - version: "3.1.4" - uuid: - dependency: "direct main" - description: - name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff - url: "https://pub.dev" - source: hosted - version: "4.5.1" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.dev" - source: hosted - version: "1.1.13" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b - url: "https://pub.dev" - source: hosted - version: "2.2.0" - video_player: - dependency: transitive - description: - name: video_player - sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: "6cfe0b1e102522eda1e139b82bf00602181c5844fd2885340f595fb213d74842" - url: "https://pub.dev" - source: hosted - version: "2.8.14" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd - url: "https://pub.dev" - source: hosted - version: "2.8.4" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a - url: "https://pub.dev" - source: hosted - version: "6.4.0" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" - url: "https://pub.dev" - source: hosted - version: "15.0.2" - wakelock_plus: - dependency: transitive - description: - name: wakelock_plus - sha256: "61713aa82b7f85c21c9f4cd0a148abd75f38a74ec645fcb1e446f882c82fd09b" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - wakelock_plus_platform_interface: - dependency: transitive - description: - name: wakelock_plus_platform_interface - sha256: "036deb14cd62f558ca3b73006d52ce049fabcdcb2eddfe0bf0fe4e8a943b5cf2" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - web: - dependency: "direct main" - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba - url: "https://pub.dev" - source: hosted - version: "4.13.0" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "21507ea5a326ceeba4d29dea19e37d92d53d9959cfc746317b9f9f7a57418d87" - url: "https://pub.dev" - source: hosted - version: "4.10.3" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0" - url: "https://pub.dev" - source: hosted - version: "2.14.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: fea63576b3b7e02b2df8b78ba92b48ed66caec2bb041e9a0b1cbd586d5d80bfd - url: "https://pub.dev" - source: hosted - version: "3.23.1" - win32: - dependency: transitive - description: - name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" - url: "https://pub.dev" - source: hosted - version: "5.14.0" - win32_registry: - dependency: transitive - description: - name: win32_registry - sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - xml: - dependency: transitive - description: - name: xml - sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" - url: "https://pub.dev" - source: hosted - version: "6.6.1" -sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" From 99282f34e330460fcaf4f93efe68f45253d878bc Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 20 Jan 2026 10:55:23 +0300 Subject: [PATCH 15/67] Added language change option in landing page --- assets/images/svg/ar_lang_icon.svg | 3 +++ assets/images/svg/en_lang_icon.svg | 3 +++ lib/core/app_assets.dart | 3 +++ .../authentication_view_model.dart | 4 ++-- .../appointments/my_appointments_page.dart | 2 +- .../book_appointment/select_doctor_page.dart | 2 +- lib/presentation/home/landing_page.dart | 17 ++++++++++++----- 7 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 assets/images/svg/ar_lang_icon.svg create mode 100644 assets/images/svg/en_lang_icon.svg diff --git a/assets/images/svg/ar_lang_icon.svg b/assets/images/svg/ar_lang_icon.svg new file mode 100644 index 00000000..d1c2be0c --- /dev/null +++ b/assets/images/svg/ar_lang_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/en_lang_icon.svg b/assets/images/svg/en_lang_icon.svg new file mode 100644 index 00000000..fa1c1435 --- /dev/null +++ b/assets/images/svg/en_lang_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 26da9fae..f6fd88ab 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -305,6 +305,9 @@ class AppAssets { static const String bloodPressure = '$svgBasePath/blood_pressure.svg'; static const String temperature = '$svgBasePath/temperature.svg'; + static const String arLangIcon = '$svgBasePath/ar_lang_icon.svg'; + static const String enLangIcon = '$svgBasePath/en_lang_icon.svg'; + // PNGS // static const String hmgLogo = '$pngBasePath/hmg_logo.png'; static const String liveCareService = '$pngBasePath/livecare_service.png'; diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 6379456e..0c4ba09b 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -571,7 +571,7 @@ class AuthenticationViewModel extends ChangeNotifier { MedicalFileViewModel medicalVm = getIt(); if (!_appState.getIsChildLoggedIn) { await medicalVm.getFamilyFiles(status: 0); - await medicalVm.getAllPendingRecordsByResponseId(); + // await medicalVm.getAllPendingRecordsByResponseId(); _navigationService.replaceAllRoutesAndNavigateToLanding(); } } else { @@ -610,7 +610,7 @@ class AuthenticationViewModel extends ChangeNotifier { MedicalFileViewModel medicalVm = getIt(); insertPatientIMEIData(loginTypeEnum.toInt); medicalVm.getFamilyFiles(status: 0); //TODO: Remove status: 1 by Aamir Need to Discuss With Sultan - medicalVm.getAllPendingRecordsByResponseId(); + // medicalVm.getAllPendingRecordsByResponseId(); } await clearDefaultInputValues(); if (isUserAgreedBefore) { diff --git a/lib/presentation/appointments/my_appointments_page.dart b/lib/presentation/appointments/my_appointments_page.dart index 12094674..c9e70487 100644 --- a/lib/presentation/appointments/my_appointments_page.dart +++ b/lib/presentation/appointments/my_appointments_page.dart @@ -155,7 +155,7 @@ class _MyAppointmentsPageState extends State { isLoading: true, isFromHomePage: false, ), - ).paddingSymmetrical(24.h, 0.h) + ) : filteredAppointmentList.isNotEmpty ? AnimationConfiguration.staggeredList( position: index, diff --git a/lib/presentation/book_appointment/select_doctor_page.dart b/lib/presentation/book_appointment/select_doctor_page.dart index e57ed518..3723bee0 100644 --- a/lib/presentation/book_appointment/select_doctor_page.dart +++ b/lib/presentation/book_appointment/select_doctor_page.dart @@ -178,7 +178,7 @@ class _SelectDoctorPageState extends State { children: [ LocaleKeys.nearestAppo.tr(context: context).toText13(isBold: true), SizedBox(height: 4.h), - LocaleKeys.viewNearestAppos.toText11(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.viewNearestAppos.tr(context: context).toText11(color: AppColors.textColorLight, weight: FontWeight.w500), ], ), const Spacer(), diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index f8cd1595..82679909 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -198,10 +198,11 @@ class _LandingPageState extends State { mainAxisSize: MainAxisSize.min, spacing: 12.h, children: [ - Stack(children: [ - Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 18.h, width: 18.h).onPress(() async { - if (appState.isAuthenticated) { - notificationsViewModel.setNotificationStatusID(2); + appState.isAuthenticated + ? Stack(children: [ + Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 18.h, width: 18.h).onPress(() async { + if (appState.isAuthenticated) { + notificationsViewModel.setNotificationStatusID(2); notificationsViewModel.getAllNotifications(); Navigator.of(context).push( CustomPageRoute( @@ -236,7 +237,8 @@ class _LandingPageState extends State { ), ) : SizedBox.shrink(), - ]), + ]) + : SizedBox.shrink(), Utils.buildSvgWithAssets(icon: AppAssets.indoor_nav_icon, height: 18.h, width: 18.h).onPress(() { openIndoorNavigationBottomSheet(context); }), @@ -249,6 +251,11 @@ class _LandingPageState extends State { isFullScreen: false, ); }), + !appState.isAuthenticated + ? Utils.buildSvgWithAssets(icon: appState.isArabic() ? AppAssets.enLangIcon : AppAssets.arLangIcon, height: 18.h, width: 18.h).onPress(() { + context.setLocale(appState.isArabic() ? Locale('en', 'US') : Locale('ar', 'SA')); + }) + : SizedBox.shrink() ], ); }), From 6faca94b89558c2d793d95174ed92b6675e50c33 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 20 Jan 2026 15:15:31 +0300 Subject: [PATCH 16/67] updates --- assets/langs/ar-SA.json | 13 +++- assets/langs/en-US.json | 10 +++- .../immediate_livecare_view_model.dart | 6 +- .../my_appointments_view_model.dart | 2 + lib/generated/locale_keys.g.dart | 6 ++ .../home/data/landing_page_data.dart | 60 +++++++++---------- lib/presentation/home/landing_page.dart | 4 +- .../home/widgets/large_service_card.dart | 7 +-- .../home/widgets/small_service_card.dart | 4 +- .../medical_file/medical_file_page.dart | 27 +++++---- .../vital_sign/vital_sign_page.dart | 52 ++++++++-------- lib/widgets/buttons/custom_button.dart | 2 +- lib/widgets/expandable_list_widget.dart | 6 +- lib/widgets/input_widget.dart | 4 +- 14 files changed, 115 insertions(+), 88 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 6f25fb56..e0b0d8ad 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1500,12 +1500,19 @@ "pleaseWaitYouWillBeCalledForVitalSigns": "يرجى الانتظار! سيتم استدعاؤك لقياس العلامات الحيوية", "pleaseVisitRoomForVitalSigns": "يرجى زيارة الغرفة {roomNumber} لقياس العلامات الحيوية", "pleaseVisitRoomToTheDoctor": "يرجى زيارة الغرفة {roomNumber} لمقابلة الطبيب", - - "erOnlineCheckInRequest": "ER Online Check-In Request", + "erOnlineCheckInRequest": "طلب تسجيل الوصول عبر الإنترنت لقسم الطوارئ", "indoor": "داخلي", "navigation": "الملاحة", "health": "الصحة", "calculators": "الحاسبات", "converters": "المحولات", - "guide": "الدليل" + "guide": "الدليل", + "liveCareServiceDesc": "احصل على استشارة طبية من طبيب متخصص عبر مكالمة فيديو", + "bloodGroup": "فصيلة الدم: {bloodType}", + "medicalServices": "الخدمات الطبية", + "insuranceAndPayments": "التأمين والمدفوعات", + "trackerAndOthers": "المتتبع وأخرى", + "bmi": "مؤشر كتلة الجسم" + + } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index cec6bf3b..fa59b194 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1497,5 +1497,13 @@ "health": "Health", "calculators": "Calculators", "converters": "Converters", - "guide": "Guide" + "guide": "Guide", + "liveCareServiceDesc": "Get medical advice with a specialist doctor Via a video call", + "bloodGroup": "Blood: {bloodType}", + "medicalServices": "Medical Services", + "insuranceAndPayments": "Insurance & Payments", + "trackerAndOthers": "Tracker & Others", + "bmi": "BMI" + + } diff --git a/lib/features/immediate_livecare/immediate_livecare_view_model.dart b/lib/features/immediate_livecare/immediate_livecare_view_model.dart index 1baa81bd..ffa0b00b 100644 --- a/lib/features/immediate_livecare/immediate_livecare_view_model.dart +++ b/lib/features/immediate_livecare/immediate_livecare_view_model.dart @@ -45,9 +45,7 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { initImmediateLiveCare() { _appState = getIt(); immediateLiveCareClinicsList = []; - patientLiveCareHistoryList = []; isImmediateLiveCareClinicsLoading = true; - patientHasPendingLiveCareRequest = false; liveCareSelectedCallType = 0; // 1- Video, 2- Audio, 3- Phone immediateLiveCareSelectedClinic = GetLiveCareClinicListResponseModel(); liveCareImmediateAppointmentFeesList = LiveCareImmediateAppointmentFeesList(); @@ -136,6 +134,10 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { } Future getPatientLiveCareHistory({Function(dynamic)? onSuccess, Function(String)? onError}) async { + patientLiveCareHistoryList = []; + patientHasPendingLiveCareRequest = false; + notifyListeners(); + final result = await immediateLiveCareRepo.getPatientLiveCareHistory(); result.fold( diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index 96340a7b..f2878037 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -220,6 +220,7 @@ class MyAppointmentsViewModel extends ChangeNotifier { } Future getPatientAppointments(bool isActiveAppointment, bool isArrivedAppointments, {Function(dynamic)? onSuccess, Function(String)? onError}) async { + isPatientHasQueueAppointment = false; if (!isAppointmentDataToBeLoaded) return; filteredAppointmentList.clear(); @@ -727,6 +728,7 @@ class MyAppointmentsViewModel extends ChangeNotifier { Future getPatientAppointmentQueueDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async { //TODO: Discuss With Haroon, Is the User Has no data it return No Element Bad State; + isPatientHasQueueAppointment = false; isAppointmentQueueDetailsLoading = true; notifyListeners(); final result = await myAppointmentsRepo.getPatientAppointmentQueueDetails( diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 3ab0ee43..d6f2d239 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1495,5 +1495,11 @@ abstract class LocaleKeys { static const calculators = 'calculators'; static const converters = 'converters'; static const guide = 'guide'; + static const liveCareServiceDesc = 'liveCareServiceDesc'; + static const bloodGroup = 'bloodGroup'; + static const medicalServices = 'medicalServices'; + static const insuranceAndPayments = 'insuranceAndPayments'; + static const trackerAndOthers = 'trackerAndOthers'; + static const bmi = 'bmi'; } diff --git a/lib/presentation/home/data/landing_page_data.dart b/lib/presentation/home/data/landing_page_data.dart index 74fd096b..c52d5e19 100644 --- a/lib/presentation/home/data/landing_page_data.dart +++ b/lib/presentation/home/data/landing_page_data.dart @@ -9,8 +9,8 @@ class LandingPageData { ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: LocaleKeys.emergency.tr(), - subtitle: LocaleKeys.services2.tr(), + title: LocaleKeys.emergency, + subtitle: LocaleKeys.services2, backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, textColor: AppColors.whiteColor, @@ -19,8 +19,8 @@ class LandingPageData { ServiceCardData( serviceName: "indoor_navigation", icon: AppAssets.indoor_nav_icon, - title: LocaleKeys.indoor.tr(), - subtitle: LocaleKeys.navigation.tr(), + title: LocaleKeys.indoor, + subtitle: LocaleKeys.navigation, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -29,8 +29,8 @@ class LandingPageData { ServiceCardData( serviceName: "search_doctor", icon: AppAssets.search_doctor_icon, - title: LocaleKeys.search.tr(), - subtitle: LocaleKeys.doctor.tr(), + title: LocaleKeys.search, + subtitle: LocaleKeys.doctor, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -39,8 +39,8 @@ class LandingPageData { ServiceCardData( serviceName: "health_calculators_and_converts", icon: AppAssets.health_calculators_icon, - title: LocaleKeys.health.tr(), - subtitle: LocaleKeys.calculators.tr(), + title: LocaleKeys.health, + subtitle: LocaleKeys.calculators, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -49,8 +49,8 @@ class LandingPageData { ServiceCardData( serviceName: "health_converters", icon: AppAssets.health_converters_icon, - title: LocaleKeys.health.tr(), - subtitle: LocaleKeys.converters.tr(), + title: LocaleKeys.health, + subtitle: LocaleKeys.converters, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -59,8 +59,8 @@ class LandingPageData { ServiceCardData( serviceName: "parking_guide", icon: AppAssets.car_parking_icon, - title: LocaleKeys.parking.tr(), - subtitle: LocaleKeys.guide.tr(), + title: LocaleKeys.parking, + subtitle: LocaleKeys.guide, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -72,8 +72,8 @@ class LandingPageData { ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: LocaleKeys.emergency.tr(), - subtitle: LocaleKeys.services2.tr(), + title: LocaleKeys.emergency, + subtitle: LocaleKeys.services2, backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, textColor: AppColors.whiteColor, @@ -82,8 +82,8 @@ class LandingPageData { ServiceCardData( serviceName: "lab_results", icon: AppAssets.home_lab_result_icon, - title: LocaleKeys.lab.tr(), - subtitle: LocaleKeys.labSubtitle.tr(), + title: LocaleKeys.lab, + subtitle: LocaleKeys.labSubtitle, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -92,8 +92,8 @@ class LandingPageData { ServiceCardData( serviceName: "radiology_results", icon: AppAssets.my_radiology_icon, - title: LocaleKeys.radiology.tr(), - subtitle: LocaleKeys.radiologySubtitle.tr(), + title: LocaleKeys.radiology, + subtitle: LocaleKeys.radiologySubtitle, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -102,8 +102,8 @@ class LandingPageData { ServiceCardData( serviceName: "prescriptions", icon: AppAssets.my_prescription_icon, - title: LocaleKeys.medicinesSubtitle.tr(), - subtitle: LocaleKeys.details.tr(), + title: LocaleKeys.medicinesSubtitle, + subtitle: LocaleKeys.details, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -112,8 +112,8 @@ class LandingPageData { ServiceCardData( serviceName: "insurance_update", icon: AppAssets.insurance_update_icon, - title: LocaleKeys.insurance.tr(), - subtitle: LocaleKeys.details.tr(), + title: LocaleKeys.insurance, + subtitle: LocaleKeys.details, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -132,8 +132,8 @@ class LandingPageData { ServiceCardData( serviceName: "sick_leaves", icon: AppAssets.my_sick_leave_icon, - title: LocaleKeys.sick.tr(), - subtitle: LocaleKeys.sickSubtitle.tr(), + title: LocaleKeys.sick, + subtitle: LocaleKeys.sickSubtitle, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -145,8 +145,8 @@ class LandingPageData { ServiceCardData( serviceName: "livecare", icon: AppAssets.small_livecare_icon, - title: LocaleKeys.liveCare.tr(), - subtitle: "Explore our app, View our services and offers", + title: LocaleKeys.liveCare, + subtitle: LocaleKeys.liveCareServiceDesc, largeCardIcon: AppAssets.liveCareService, backgroundColor: AppColors.successColor, iconColor: AppColors.whiteColor, @@ -163,8 +163,8 @@ class LandingPageData { ServiceCardData( serviceName: "home_health_care", icon: AppAssets.homeBottom, - title: LocaleKeys.homeHealthCare.tr(), - subtitle: "Explore our app, View our services and offers", + title: LocaleKeys.homeHealthCare, + subtitle: LocaleKeys.liveCareServiceDesc, largeCardIcon: AppAssets.homeHealthCareService, backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, @@ -173,8 +173,8 @@ class LandingPageData { ServiceCardData( serviceName: "pharmacy", icon: AppAssets.pharmacy_icon, //359846 - title: LocaleKeys.hmgPharmacy.tr(), - subtitle: "Explore our app, View our services and offers", + title: LocaleKeys.hmgPharmacy, + subtitle: LocaleKeys.liveCareServiceDesc, largeCardIcon: AppAssets.pharmacyService, backgroundColor: AppColors.pharmacyBGColor, iconColor: null, diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 82679909..51470c63 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -847,7 +847,7 @@ class _LandingPageState extends State { hasShadow: true, ), child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.first, + patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientAppointmentsHistoryList.first, myAppointmentsViewModel: myAppointmentsViewModel, bookAppointmentsViewModel: bookAppointmentsViewModel, isLoading: false, @@ -893,7 +893,7 @@ class _LandingPageState extends State { } } else if (index == 2) { if ((myAppointmentsViewModel.isPatientHasQueueAppointment || immediateLiveCareViewModel.patientHasPendingLiveCareRequest) && - myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.isNotEmpty) { + todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { return AncillaryOrderCard( order: todoSectionViewModel.patientAncillaryOrdersList.first, isLoading: false, diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 6025ba8a..5df415dd 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -89,14 +89,13 @@ class LargeServiceCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - serviceCardData.title.toText14(isBold: true, color: AppColors.textColor), - SizedBox(width: 6.h), - serviceCardData.subtitle.toText14(weight: FontWeight.w500, color: AppColors.textColorLight), + serviceCardData.title.tr(context: context).toText14(isBold: true, color: AppColors.textColor), + serviceCardData.subtitle.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), ], ), ), ], - ).paddingSymmetrical(16.w, 20.h), + ).paddingSymmetrical(12.w, 24.h), CustomButton( text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr() : LocaleKeys.bookNow.tr(context: context), onPressed: () { diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 49db8bf1..2ccf21ce 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -65,8 +65,8 @@ class SmallServiceCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), SizedBox(height: 6.h), - title.toText11(color: textColor, isBold: isBold, isCenter: true), - subtitle.toText11(color: textColor, isBold: isBold, isCenter: true), + title.tr(context: context).toText11(color: textColor, isBold: isBold, isCenter: true), + subtitle.tr(context: context).toText11(color: textColor, isBold: isBold, isCenter: true), ], ), ), diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index ad2461f1..fc490000 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -192,7 +192,7 @@ class _MedicalFilePageState extends State { SizedBox(width: 4.h), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w) ], - ).withHorizontalPadding(24.w).onPress(() { + ).onPress(() { DialogService dialogService = getIt.get(); dialogService.showFamilyBottomSheetWithoutH( label: LocaleKeys.familyTitle.tr(context: context), @@ -276,12 +276,12 @@ class _MedicalFilePageState extends State { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: "${appState.getAuthenticatedUser()!.age} Years Old", + labelText: LocaleKeys.ageYearsOld.tr(namedArgs: {'age': '${appState.getAuthenticatedUser()!.age}', 'yearsOld': LocaleKeys.yearsOld.tr(context: context)}, context: context), labelPadding: EdgeInsetsDirectional.only(start: 8.w, end: 8.w), ), AppCustomChipWidget( icon: AppAssets.blood_icon, - labelText: "Blood: ${appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup}", + labelText: LocaleKeys.bloodGroup.tr(namedArgs: {'bloodType': appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup}, context: context), iconColor: AppColors.primaryRedColor, labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), padding: EdgeInsets.zero, @@ -439,14 +439,14 @@ class _MedicalFilePageState extends State { itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), items: [ ExpandableListItem( - title: "Medical Services".toText18(weight: FontWeight.w600), + title: LocaleKeys.medicalServices.tr(context: context).toText18(weight: FontWeight.w600), children: [ SizedBox(height: 10.h), getSelectedTabData(0), ], ), ExpandableListItem( - title: "Medical Reports".toText18( + title: LocaleKeys.medicalReports.tr(context: context).toText18( weight: FontWeight.w600, ), expandedBackgroundColor: Colors.transparent, @@ -455,7 +455,7 @@ class _MedicalFilePageState extends State { getSelectedTabData(2), ]), ExpandableListItem( - title: "Insurance & Payments".toText18(weight: FontWeight.w600), + title: LocaleKeys.insuranceAndPayments.tr(context: context).toText18(weight: FontWeight.w600), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), @@ -463,7 +463,7 @@ class _MedicalFilePageState extends State { ], ), ExpandableListItem( - title: "Tracker & Others".toText18(weight: FontWeight.w600), + title: LocaleKeys.trackerAndOthers.tr(context: context).toText18(weight: FontWeight.w600), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), @@ -645,6 +645,7 @@ class _MedicalFilePageState extends State { scrollDirection: Axis.horizontal, shrinkWrap: true, itemCount: myAppointmentsVM.patientAppointmentsHistoryList.length, + padding: EdgeInsets.zero, itemBuilder: (context, index) { return AnimationConfiguration.staggeredList( position: index, @@ -699,9 +700,9 @@ class _MedicalFilePageState extends State { ), )); }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 12.h), + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 12.w), ), - ).paddingSymmetrical(0.w, 0.h); + ); }), SizedBox(height: 10.h), LocaleKeys.labAndRadiology.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), @@ -1484,7 +1485,7 @@ class _MedicalFilePageState extends State { Expanded( child: _buildVitalSignCard( icon: AppAssets.bmiVital, - label: "BMI", + label: LocaleKeys.bmi.tr(context: context), value: vitalSign.bodyMassIndex?.toString() ?? '--', unit: '', status: vitalSign.bodyMassIndex != null ? _getBMIStatus(vitalSign.bodyMassIndex) : null, @@ -1495,7 +1496,7 @@ class _MedicalFilePageState extends State { Expanded( child: _buildVitalSignCard( icon: AppAssets.heightVital, - label: "Height", + label: LocaleKeys.height.tr(context: context), value: vitalSign.heightCm?.toString() ?? '--', unit: 'cm', status: null, @@ -1511,7 +1512,7 @@ class _MedicalFilePageState extends State { Expanded( child: _buildVitalSignCard( icon: AppAssets.weightVital, - label: "Weight", + label: LocaleKeys.weight.tr(context: context), value: vitalSign.weightKg?.toString() ?? '--', unit: 'kg', status: vitalSign.weightKg != null ? "Normal" : null, @@ -1522,7 +1523,7 @@ class _MedicalFilePageState extends State { Expanded( child: _buildVitalSignCard( icon: AppAssets.bloodPressure, - label: "Blood Pressure", + label: LocaleKeys.bloodPressure.tr(context: context), value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" : '--', diff --git a/lib/presentation/vital_sign/vital_sign_page.dart b/lib/presentation/vital_sign/vital_sign_page.dart index fbf9fc6d..e457023b 100644 --- a/lib/presentation/vital_sign/vital_sign_page.dart +++ b/lib/presentation/vital_sign/vital_sign_page.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/vital_sign_respo_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -42,7 +44,7 @@ class _VitalSignPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: 'Vital Signs', + title: LocaleKeys.vitalSigns.tr(context: context), child: Consumer( builder: (context, viewModel, child) { @@ -70,14 +72,14 @@ class _VitalSignPageState extends State { // BMI Card _buildVitalSignCard( icon: AppAssets.bmiVital, - label: 'BMI', + label: LocaleKeys.bmi.tr(context: context), value: latestVitalSign?.bodyMassIndex?.toString() ?? '--', unit: '', status: VitalSignUiModel.bmiStatus(latestVitalSign?.bodyMassIndex), onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.bmi, - title: 'BMI', + title: LocaleKeys.bmi.tr(context: context), icon: AppAssets.bmiVital, unit: '', ), @@ -88,14 +90,14 @@ class _VitalSignPageState extends State { // Height Card _buildVitalSignCard( icon: AppAssets.heightVital, - label: 'Height', + label: LocaleKeys.height.tr(context: context), value: latestVitalSign?.heightCm?.toString() ?? '--', unit: 'cm', status: null, onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.height, - title: 'Height', + title: LocaleKeys.height.tr(context: context), icon: AppAssets.heightVital, unit: 'cm', ), @@ -106,14 +108,14 @@ class _VitalSignPageState extends State { // Weight Card _buildVitalSignCard( icon: AppAssets.weightVital, - label: 'Weight', + label: LocaleKeys.weight.tr(context: context), value: latestVitalSign?.weightKg?.toString() ?? '--', unit: 'kg', status: (latestVitalSign?.weightKg != null) ? 'Normal' : null, onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.weight, - title: 'Weight', + title: LocaleKeys.height.tr(context: context), icon: AppAssets.weightVital, unit: 'kg', ), @@ -124,7 +126,7 @@ class _VitalSignPageState extends State { // Blood Pressure Card _buildVitalSignCard( icon: AppAssets.bloodPressure, - label: 'Blood Pressure', + label: LocaleKeys.bloodPressure.tr(context: context), value: latestVitalSign != null && latestVitalSign.bloodPressureHigher != null && latestVitalSign.bloodPressureLower != null @@ -136,9 +138,9 @@ class _VitalSignPageState extends State { diastolic: latestVitalSign?.bloodPressureLower, ), onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.bloodPressure, - title: 'Blood Pressure', + title: LocaleKeys.bloodPressure.tr(context: context), icon: AppAssets.bloodPressure, unit: 'mmHg', low: 90, @@ -151,14 +153,14 @@ class _VitalSignPageState extends State { // Temperature Card _buildVitalSignCard( icon: AppAssets.temperature, - label: 'Temperature', + label: LocaleKeys.temperature.tr(context: context), value: latestVitalSign?.temperatureCelcius?.toString() ?? '--', unit: '°C', status: null, onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.temperature, - title: 'Temperature', + title: LocaleKeys.temperature.tr(context: context), icon: AppAssets.temperature, unit: '°C', low: 36.1, @@ -226,14 +228,14 @@ class _VitalSignPageState extends State { bottom: 12.h, child: _buildVitalSignCard( icon: AppAssets.heart, - label: 'Heart Rate', + label: LocaleKeys.heart.tr(context: context), value: latestVitalSign?.heartRate?.toString() ?? latestVitalSign?.pulseBeatPerMinute?.toString() ?? '--', unit: 'bpm', status: 'Normal', onTap: () => _openDetails( - const VitalSignDetailsArgs( + VitalSignDetailsArgs( metric: VitalSignMetric.heartRate, - title: 'Heart Rate', + title: LocaleKeys.heart.tr(context: context), icon: AppAssets.heart, unit: 'bpm', low: 60, @@ -250,15 +252,15 @@ class _VitalSignPageState extends State { // Respiratory rate Card _buildVitalSignCard( icon: AppAssets.respRate, - label: 'Respiratory rate', - value: latestVitalSign?.respirationBeatPerMinute?.toString() ?? '--', + label: LocaleKeys.respirationRate.tr(context: context), + value: latestVitalSign?.respirationBeatPerMinute?.toString() ?? '--', unit: 'bpm', status: 'Normal', onTap: () => _openDetails( - const VitalSignDetailsArgs( - metric: VitalSignMetric.respiratoryRate, - title: 'Respiratory rate', - icon: AppAssets.respRate, + VitalSignDetailsArgs( + metric: VitalSignMetric.respiratoryRate, + title: LocaleKeys.respirationRate.tr(context: context), + icon: AppAssets.respRate, unit: 'bpm', low: 12, high: 20, diff --git a/lib/widgets/buttons/custom_button.dart b/lib/widgets/buttons/custom_button.dart index 08d281f7..ad2a1d4a 100644 --- a/lib/widgets/buttons/custom_button.dart +++ b/lib/widgets/buttons/custom_button.dart @@ -75,7 +75,7 @@ class CustomButton extends StatelessWidget { children: [ if (icon != null) Padding( - padding: text.isNotEmpty ? EdgeInsets.only(right: 8.w, left: 8.w) : EdgeInsets.zero, + padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), ), Visibility( diff --git a/lib/widgets/expandable_list_widget.dart b/lib/widgets/expandable_list_widget.dart index b9482993..db4e3980 100644 --- a/lib/widgets/expandable_list_widget.dart +++ b/lib/widgets/expandable_list_widget.dart @@ -282,9 +282,9 @@ class ExpandableListTheme { dividerColor: dividerColor ?? Colors.grey.shade300, defaultTrailingIcon: defaultTrailingIcon ?? Icon(Icons.keyboard_arrow_down, color: Colors.black, size: 24), - itemPadding: itemPadding ?? const EdgeInsets.symmetric(horizontal: 16.0, vertical: 12.0), - contentPadding: contentPadding ?? const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 16.0), - leadingSpacing: leadingSpacing ?? 12.0, + itemPadding: itemPadding ?? EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h), + contentPadding: contentPadding ?? EdgeInsets.only(left: 16.w, right: 16.w, bottom: 16.h), + leadingSpacing: leadingSpacing ?? 12.w, ); } } diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index 9f101d47..d97b0f02 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -191,7 +191,7 @@ class TextInputWidget extends StatelessWidget { return Container( height: 40.h, width: 40.h, - margin: EdgeInsets.only(right: 10.h), + margin: EdgeInsets.only(right: 10.w, left: 10.w), padding: EdgeInsets.all(8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( borderRadius: 12.r, @@ -204,7 +204,7 @@ class TextInputWidget extends StatelessWidget { final AppState appState = getIt.get(); return Container( height: 40.h, - width: 40.h, + width: 40.w, margin: EdgeInsets.zero, padding: EdgeInsets.all(8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.whiteColor), From 07447e148bc1e7fd0143024ef14f4368f2a58c52 Mon Sep 17 00:00:00 2001 From: faizatflutter Date: Tue, 20 Jan 2026 17:28:13 +0300 Subject: [PATCH 17/67] Symptoms Checker flow is completed --- assets/images/svg/colored_dots_icon.svg | 5 + lib/core/api_consts.dart | 2 +- lib/core/app_assets.dart | 2 +- lib/core/enums.dart | 147 ++ .../models/conditions_model.dart | 194 +- .../resp_models/triage_response_model.dart | 80 +- .../symptoms_checker_repo.dart | 94 +- .../symptoms_checker_view_model.dart | 122 +- .../hmg_services/services_page.dart | 84 +- lib/presentation/home/landing_page.dart | 68 +- lib/presentation/home/navigation_screen.dart | 9 +- .../possible_conditions_screen.dart | 155 +- .../symptoms_checker/risk_factors_screen.dart | 2 +- .../symptoms_selector_screen.dart | 12 +- .../symptoms_checker/triage_screen.dart | 15 +- .../symptoms_checker/user_info_selection.dart | 24 +- .../widgets/condition_card.dart | 222 +- lib/routes/app_routes.dart | 45 +- lib/theme/colors.dart | 2 +- lib/widgets/buttons/custom_button.dart | 19 +- pubspec.lock | 2073 ----------------- 21 files changed, 805 insertions(+), 2571 deletions(-) create mode 100644 assets/images/svg/colored_dots_icon.svg delete mode 100644 pubspec.lock diff --git a/assets/images/svg/colored_dots_icon.svg b/assets/images/svg/colored_dots_icon.svg new file mode 100644 index 00000000..7f05dc57 --- /dev/null +++ b/assets/images/svg/colored_dots_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index efefee18..7003aa76 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -841,7 +841,7 @@ class ApiConsts { static final String getRiskFactors = '$symptomsCheckerApi/GetRiskFactors'; static final String getSuggestions = '$symptomsCheckerApi/GetSuggestion'; static final String diagnosis = '$symptomsCheckerApi/GetDiagnosis'; - static final String explain = '$symptomsCheckerApi/explain'; + static final String explain = '$symptomsCheckerApi/ExplainDiagnosisResult'; //E-REFERRAL SERVICES static final getAllRelationshipTypes = "Services/Patients.svc/REST/GetAllRelationshipTypes"; diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 26da9fae..4bf2117e 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -253,6 +253,7 @@ class AppAssets { static const String homeBorderedIcon = '$svgBasePath/home_bordered.svg'; static const String symptomCheckerIcon = '$svgBasePath/symptom_checker_icon.svg'; static const String symptomCheckerBottomIcon = '$svgBasePath/symptom_bottom_icon.svg'; + static const String coloredDotsIcon = '$svgBasePath/colored_dots_icon.svg'; // Water Monitor static const String waterBottle = '$svgBasePath/water_bottle.svg'; @@ -352,4 +353,3 @@ class AppAnimations { static const String ambulanceAlert = '$lottieBasePath/ambulance_alert.json'; static const String rrtAmbulance = '$lottieBasePath/rrt_ambulance.json'; } - diff --git a/lib/core/enums.dart b/lib/core/enums.dart index 6dc3bf68..66137021 100644 --- a/lib/core/enums.dart +++ b/lib/core/enums.dart @@ -311,3 +311,150 @@ extension ServiceTypeEnumExt on ServiceTypeEnum { enum PossibleConditionsSeverityEnum { seekMedicalAdvice, monitorOnly, emergency } enum HealthTrackerTypeEnum { bloodSugar, bloodPressure, weightTracker } + +// Severity Enum +enum SeverityEnum { mild, moderate, severe } + +extension SeverityEnumExtension on SeverityEnum { + int get toInt { + switch (this) { + case SeverityEnum.mild: + return 0; + case SeverityEnum.moderate: + return 1; + case SeverityEnum.severe: + return 2; + } + } + + String get displayName { + AppState appState = getIt.get(); + bool isArabic = appState.getLanguageID() == 1 ? true : false; + switch (this) { + case SeverityEnum.mild: + return isArabic ? 'خفيف' : 'Mild'; + case SeverityEnum.moderate: + return isArabic ? 'متوسط' : 'Moderate'; + case SeverityEnum.severe: + return isArabic ? 'شديد' : 'Severe'; + } + } + + static SeverityEnum? fromInt(int value) { + switch (value) { + case 0: + return SeverityEnum.mild; + case 1: + return SeverityEnum.moderate; + case 2: + return SeverityEnum.severe; + default: + return null; + } + } +} + +// Triage Level Enum +enum TriageLevelEnum { emergencyAmbulance, emergency, consultation24, consultation, selfCare } + +extension TriageLevelEnumExtension on TriageLevelEnum { + int get toInt { + switch (this) { + case TriageLevelEnum.emergencyAmbulance: + return 0; + case TriageLevelEnum.emergency: + return 1; + case TriageLevelEnum.consultation24: + return 2; + case TriageLevelEnum.consultation: + return 3; + case TriageLevelEnum.selfCare: + return 4; + } + } + + String get displayName { + AppState appState = getIt.get(); + bool isArabic = appState.getLanguageID() == 1 ? true : false; + switch (this) { + case TriageLevelEnum.emergencyAmbulance: + return isArabic ? 'طوارئ - إسعاف' : 'Emergency - Ambulance'; + case TriageLevelEnum.emergency: + return isArabic ? 'طوارئ' : 'Emergency'; + case TriageLevelEnum.consultation24: + return isArabic ? 'استشارة خلال 24 ساعة' : 'Consultation within 24 hours'; + case TriageLevelEnum.consultation: + return isArabic ? 'استشارة' : 'Consultation'; + case TriageLevelEnum.selfCare: + return isArabic ? 'رعاية ذاتية' : 'Self Care'; + } + } + + static TriageLevelEnum? fromInt(int value) { + switch (value) { + case 0: + return TriageLevelEnum.emergencyAmbulance; + case 1: + return TriageLevelEnum.emergency; + case 2: + return TriageLevelEnum.consultation24; + case 3: + return TriageLevelEnum.consultation; + case 4: + return TriageLevelEnum.selfCare; + default: + return null; + } + } +} + +// Question Type Enum +enum QuestionTypeEnum { single, groupSingle, groupMultiple, duration } + +extension QuestionTypeEnumExtension on QuestionTypeEnum { + int get toInt { + switch (this) { + case QuestionTypeEnum.single: + return 0; + case QuestionTypeEnum.groupSingle: + return 1; + case QuestionTypeEnum.groupMultiple: + return 2; + case QuestionTypeEnum.duration: + return 3; + } + } + + String get displayName { + AppState appState = getIt.get(); + bool isArabic = appState.getLanguageID() == 1 ? true : false; + switch (this) { + case QuestionTypeEnum.single: + return isArabic ? 'سؤال واحد' : 'Single'; + case QuestionTypeEnum.groupSingle: + return isArabic ? 'مجموعة - اختيار واحد' : 'Group Single'; + case QuestionTypeEnum.groupMultiple: + return isArabic ? 'مجموعة - اختيار متعدد' : 'Group Multiple'; + case QuestionTypeEnum.duration: + return isArabic ? 'المدة' : 'Duration'; + } + } + + static QuestionTypeEnum? fromInt(int value) { + switch (value) { + case 0: + return QuestionTypeEnum.single; + case 1: + return QuestionTypeEnum.groupSingle; + case 2: + return QuestionTypeEnum.groupMultiple; + case 3: + return QuestionTypeEnum.duration; + default: + return null; + } + } +} + + + diff --git a/lib/features/symptoms_checker/models/conditions_model.dart b/lib/features/symptoms_checker/models/conditions_model.dart index 774d8c38..af66c215 100644 --- a/lib/features/symptoms_checker/models/conditions_model.dart +++ b/lib/features/symptoms_checker/models/conditions_model.dart @@ -1,97 +1,97 @@ -import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/core/enums.dart'; - -class ConditionsModel { - final IconData icon; - final String title; - final int percentage; - final String tagText; - final String clinic; - final List symptoms; - final String description; - final String? monitorNote; - final String? appointmentLabel; - final PossibleConditionsSeverityEnum possibleConditionsSeverityEnum; - - ConditionsModel({ - required this.icon, - required this.title, - required this.percentage, - required this.tagText, - required this.clinic, - required this.symptoms, - required this.description, - required this.possibleConditionsSeverityEnum, - this.monitorNote, - this.appointmentLabel, - }); -} - -List dummyConditions = [ - ConditionsModel( - icon: Icons.psychology_alt, - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice, - title: "Migraine", - percentage: 87, - tagText: "Seek Medical Advice", - clinic: "Internal Medicine Clinic", - symptoms: ["Headache", "Nausea", "Sensitivity to light"], - description: "A migraine is a type of headache that can cause severe throbbing pain, usually on one side of the head.", - appointmentLabel: "Book Appointment", - ), - ConditionsModel( - icon: Icons.deblur, - title: "Tension Headache", - percentage: 37, - tagText: "Monitor", - monitorNote: "No need to visit doctor", - clinic: "GP Clinic", - symptoms: ["Mild head pressure", "Scalp tenderness"], - description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.monitorOnly, - ), - ConditionsModel( - icon: Icons.medication_liquid, - title: "Meningitis", - percentage: 28, - tagText: "Emergency", - clinic: "Neurology Clinic", - symptoms: ["Mild head pressure", "Scalp tenderness"], - description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", - appointmentLabel: "Book Appointment", - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.emergency, - ), - ConditionsModel( - icon: Icons.psychology_alt, - title: "Migraine", - percentage: 87, - tagText: "Seek Medical Advice", - clinic: "Internal Medicine Clinic", - symptoms: ["Headache", "Nausea", "Sensitivity to light"], - description: "A migraine is a type of headache that can cause severe throbbing pain, usually on one side of the head.", - appointmentLabel: "Book Appointment", - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice, - ), - ConditionsModel( - icon: Icons.deblur, - title: "Tension Headache", - percentage: 37, - tagText: "Monitor", - monitorNote: "No need to visit doctor", - clinic: "GP Clinic", - symptoms: ["Mild head pressure", "Scalp tenderness"], - description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.monitorOnly, - ), - ConditionsModel( - icon: Icons.medication_liquid, - title: "Meningitis", - percentage: 28, - tagText: "Emergency", - clinic: "Neurology Clinic", - symptoms: ["Mild head pressure", "Scalp tenderness"], - description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", - appointmentLabel: "Book Appointment", - possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.emergency, - ), -]; +// import 'package:flutter/material.dart'; +// import 'package:hmg_patient_app_new/core/enums.dart'; +// +// class ConditionsModel { +// final IconData icon; +// final String title; +// final int percentage; +// final String tagText; +// final String clinic; +// final List symptoms; +// final String description; +// final String? monitorNote; +// final String? appointmentLabel; +// final PossibleConditionsSeverityEnum possibleConditionsSeverityEnum; +// +// ConditionsModel({ +// required this.icon, +// required this.title, +// required this.percentage, +// required this.tagText, +// required this.clinic, +// required this.symptoms, +// required this.description, +// required this.possibleConditionsSeverityEnum, +// this.monitorNote, +// this.appointmentLabel, +// }); +// } +// +// List dummyConditions = [ +// ConditionsModel( +// icon: Icons.psychology_alt, +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice, +// title: "Migraine", +// percentage: 87, +// tagText: "Seek Medical Advice", +// clinic: "Internal Medicine Clinic", +// symptoms: ["Headache", "Nausea", "Sensitivity to light"], +// description: "A migraine is a type of headache that can cause severe throbbing pain, usually on one side of the head.", +// appointmentLabel: "Book Appointment", +// ), +// ConditionsModel( +// icon: Icons.deblur, +// title: "Tension Headache", +// percentage: 37, +// tagText: "Monitor", +// monitorNote: "No need to visit doctor", +// clinic: "GP Clinic", +// symptoms: ["Mild head pressure", "Scalp tenderness"], +// description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.monitorOnly, +// ), +// ConditionsModel( +// icon: Icons.medication_liquid, +// title: "Meningitis", +// percentage: 28, +// tagText: "Emergency", +// clinic: "Neurology Clinic", +// symptoms: ["Mild head pressure", "Scalp tenderness"], +// description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", +// appointmentLabel: "Book Appointment", +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.emergency, +// ), +// ConditionsModel( +// icon: Icons.psychology_alt, +// title: "Migraine", +// percentage: 87, +// tagText: "Seek Medical Advice", +// clinic: "Internal Medicine Clinic", +// symptoms: ["Headache", "Nausea", "Sensitivity to light"], +// description: "A migraine is a type of headache that can cause severe throbbing pain, usually on one side of the head.", +// appointmentLabel: "Book Appointment", +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice, +// ), +// ConditionsModel( +// icon: Icons.deblur, +// title: "Tension Headache", +// percentage: 37, +// tagText: "Monitor", +// monitorNote: "No need to visit doctor", +// clinic: "GP Clinic", +// symptoms: ["Mild head pressure", "Scalp tenderness"], +// description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.monitorOnly, +// ), +// ConditionsModel( +// icon: Icons.medication_liquid, +// title: "Meningitis", +// percentage: 28, +// tagText: "Emergency", +// clinic: "Neurology Clinic", +// symptoms: ["Mild head pressure", "Scalp tenderness"], +// description: "A tension-type headache is generally a mild to moderate pain that feels like a tight band around your head.", +// appointmentLabel: "Book Appointment", +// possibleConditionsSeverityEnum: PossibleConditionsSeverityEnum.emergency, +// ), +// ]; diff --git a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart index f0d7e904..60a3ad3a 100644 --- a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart +++ b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart @@ -1,3 +1,5 @@ +import 'package:hmg_patient_app_new/core/enums.dart'; + class TriageDataDetails { final TriageQuestion? question; final List? conditions; @@ -171,7 +173,7 @@ class TriageCondition { final String? name; final String? commonName; final double? probability; - final dynamic conditionDetails; + final ConditionDetails? conditionDetails; TriageCondition({ this.id, @@ -187,7 +189,7 @@ class TriageCondition { name: json['name'], commonName: json['common_name'], probability: json['probability']?.toDouble(), - conditionDetails: json['condition_details'], + conditionDetails: json['condition_details'] != null ? ConditionDetails.fromJson(json['condition_details']) : null, ); } @@ -197,7 +199,7 @@ class TriageCondition { 'name': name, 'common_name': commonName, 'probability': probability, - 'condition_details': conditionDetails, + 'condition_details': conditionDetails?.toJson(), }; } @@ -207,3 +209,75 @@ class TriageCondition { return '${(probability! * 100).toStringAsFixed(1)}%'; } } + +class ConditionDetails { + final String? icd10Code; + final ConditionCategory? category; + final SeverityEnum? severity; + final TriageLevelEnum? triageLevel; + final String? hint; + final bool? hasPatientEducation; + final String? prevalence; + final String? acuteness; + + ConditionDetails({ + this.icd10Code, + this.category, + this.severity, + this.triageLevel, + this.hint, + this.hasPatientEducation, + this.prevalence, + this.acuteness, + }); + + factory ConditionDetails.fromJson(Map json) { + return ConditionDetails( + icd10Code: json['icd10_code'], + category: json['category'] != null ? ConditionCategory.fromJson(json['category']) : null, + severity: json['severity'] != null ? SeverityEnumExtension.fromInt(json['severity']) : null, + triageLevel: json['triage_level'] != null ? TriageLevelEnumExtension.fromInt(json['triage_level']) : null, + hint: json['hint'], + hasPatientEducation: json['has_patient_education'], + prevalence: json['prevalence'], + acuteness: json['acuteness'], + ); + } + + Map toJson() { + return { + 'icd10_code': icd10Code, + 'category': category?.toJson(), + 'severity': severity?.toInt, + 'triage_level': triageLevel?.toInt, + 'hint': hint, + 'has_patient_education': hasPatientEducation, + 'prevalence': prevalence, + 'acuteness': acuteness, + }; + } +} + +class ConditionCategory { + final String? id; + final String? name; + + ConditionCategory({ + this.id, + this.name, + }); + + factory ConditionCategory.fromJson(Map json) { + return ConditionCategory( + id: json['id'], + name: json['name'], + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + }; + } +} diff --git a/lib/features/symptoms_checker/symptoms_checker_repo.dart b/lib/features/symptoms_checker/symptoms_checker_repo.dart index c55c2f0c..154b13aa 100644 --- a/lib/features/symptoms_checker/symptoms_checker_repo.dart +++ b/lib/features/symptoms_checker/symptoms_checker_repo.dart @@ -12,50 +12,42 @@ import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models import 'package:hmg_patient_app_new/services/logger_service.dart'; abstract class SymptomsCheckerRepo { - Future>> - getUserDetails({ + Future>> getUserDetails({ required String userName, required String password, }); - Future>> - getBodySymptomsByName({ + Future>> getBodySymptomsByName({ required List organNames, required String userSessionToken, required int gender, }); - Future>> - getRiskFactors({ + Future>> getRiskFactors({ required int age, - required String sex, + required int gender, required List evidenceIds, required String language, required String userSessionToken, - required int gender, required String sessionId, }); - Future>> - getSuggestions({ + Future>> getSuggestions({ required int age, - required String sex, + required int gender, required List evidenceIds, required String language, required String userSessionToken, required String sessionId, - required int gender, }); - Future>> - getDiagnosisForTriage({ + Future>> getDiagnosisForTriage({ required int age, - required String sex, + required int gender, required List evidenceIds, List>? triageEvidence, required String language, required String userSessionToken, - required int gender, required String sessionId, }); } @@ -64,12 +56,10 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { final ApiClient apiClient; final LoggerService loggerService; - SymptomsCheckerRepoImp( - {required this.apiClient, required this.loggerService}); + SymptomsCheckerRepoImp({required this.apiClient, required this.loggerService}); @override - Future>> - getUserDetails({ + Future>> getUserDetails({ required String userName, required String password, }) async { @@ -92,11 +82,9 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { // Parse response if it's a string - final Map responseData = - response is String ? jsonDecode(response) : response; + final Map responseData = response is String ? jsonDecode(response) : response; - SymptomsUserDetailsResponseModel symptomsUserDetailsResponseModel = - SymptomsUserDetailsResponseModel.fromJson(responseData); + SymptomsUserDetailsResponseModel symptomsUserDetailsResponseModel = SymptomsUserDetailsResponseModel.fromJson(responseData); apiResponse = GenericApiModel( messageStatus: messageStatus ?? 1, @@ -123,8 +111,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { } @override - Future>> - getBodySymptomsByName({ + Future>> getBodySymptomsByName({ required List organNames, required String userSessionToken, required int gender, @@ -154,8 +141,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - BodySymptomResponseModel bodySymptomResponse = - BodySymptomResponseModel.fromJson(response); + BodySymptomResponseModel bodySymptomResponse = BodySymptomResponseModel.fromJson(response); apiResponse = GenericApiModel( messageStatus: messageStatus ?? 1, @@ -164,8 +150,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { data: bodySymptomResponse, ); } catch (e, stackTrace) { - loggerService - .logError("Error parsing GetBodySymptomsByName response: $e"); + loggerService.logError("Error parsing GetBodySymptomsByName response: $e"); loggerService.logError("StackTrace: $stackTrace"); failure = DataParsingFailure(e.toString()); } @@ -183,21 +168,19 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { } @override - Future>> - getRiskFactors({ + Future>> getRiskFactors({ required int age, - required String sex, + required int gender, required List evidenceIds, required String language, required String userSessionToken, - required int gender, required String sessionId, }) async { final Map body = { "age": { "value": age, }, - "sex": sex, + "gender": gender, "evidence": evidenceIds.map((id) => {"id": id}).toList(), "language": language, "generalId": sessionId, @@ -225,11 +208,9 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { // Parse response if it's a string - final Map responseData = - response is String ? jsonDecode(response) : response; + final Map responseData = response is String ? jsonDecode(response) : response; - RiskAndSuggestionsResponseModel riskFactorsResponse = - RiskAndSuggestionsResponseModel.fromJson(responseData); + RiskAndSuggestionsResponseModel riskFactorsResponse = RiskAndSuggestionsResponseModel.fromJson(responseData); apiResponse = GenericApiModel( messageStatus: messageStatus ?? 1, @@ -255,16 +236,14 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { } } - Future>> - getDiagnosisForTriage({ + @override + Future>> getDiagnosisForTriage({ required int age, - required String sex, + required int gender, required List evidenceIds, - List>? - triageEvidence, // Additional triage-specific evidence + List>? triageEvidence, // Additional triage-specific evidence required String language, required String userSessionToken, - required int gender, required String sessionId, }) async { // Build evidence list: combine initial symptoms with triage evidence @@ -284,7 +263,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { "age": { "value": age, }, - "sex": sex, + "gender": gender, "evidence": evidenceList, "language": language, "suggest_method": "diagnosis", @@ -313,13 +292,11 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { // Parse response if it's a string - final Map responseData = - response is String ? jsonDecode(response) : response; + final Map responseData = response is String ? jsonDecode(response) : response; final updatedResponseData = responseData['dataDetails']; - TriageDataDetails riskFactorsResponse = - TriageDataDetails.fromJson(updatedResponseData); + TriageDataDetails riskFactorsResponse = TriageDataDetails.fromJson(updatedResponseData); apiResponse = GenericApiModel( messageStatus: messageStatus ?? 1, @@ -328,8 +305,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { data: riskFactorsResponse, ); } catch (e, stackTrace) { - loggerService - .logError("Error parsing getDiagnosisForTriage response: $e"); + loggerService.logError("Error parsing getDiagnosisForTriage response: $e"); loggerService.logError("StackTrace: $stackTrace"); failure = DataParsingFailure(e.toString()); } @@ -347,21 +323,19 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { } @override - Future>> - getSuggestions({ + Future>> getSuggestions({ required int age, - required String sex, + required int gender, required List evidenceIds, required String language, required String userSessionToken, required String sessionId, - required int gender, }) async { final Map body = { "age": { "value": age, }, - "sex": sex, + "gender": gender, "evidence": evidenceIds.map((id) => {"id": id}).toList(), "language": language, "generalId": sessionId, @@ -389,11 +363,9 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { // Parse response if it's a string - final Map responseData = - response is String ? jsonDecode(response) : response; + final Map responseData = response is String ? jsonDecode(response) : response; - RiskAndSuggestionsResponseModel riskFactorsResponse = - RiskAndSuggestionsResponseModel.fromJson(responseData); + RiskAndSuggestionsResponseModel riskFactorsResponse = RiskAndSuggestionsResponseModel.fromJson(responseData); apiResponse = GenericApiModel( messageStatus: messageStatus ?? 1, diff --git a/lib/features/symptoms_checker/symptoms_checker_view_model.dart b/lib/features/symptoms_checker/symptoms_checker_view_model.dart index 73768fe0..929fe915 100644 --- a/lib/features/symptoms_checker/symptoms_checker_view_model.dart +++ b/lib/features/symptoms_checker/symptoms_checker_view_model.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/data/organ_mapping_data.dart'; @@ -47,12 +47,9 @@ class SymptomsCheckerViewModel extends ChangeNotifier { TriageDataDetails? triageDataDetails; // Triage state - int? - _selectedTriageChoiceIndex; // Deprecated - keeping for backward compatibility - final Map _selectedTriageChoicesByItemId = - {}; // Map of itemId -> choiceIndex for multi-item questions - final List> _triageEvidenceList = - []; // Store triage evidence with proper format + int? _selectedTriageChoiceIndex; // Deprecated - keeping for backward compatibility + final Map _selectedTriageChoicesByItemId = {}; // Map of itemId -> choiceIndex for multi-item questions + final List> _triageEvidenceList = []; // Store triage evidence with proper format int _triageQuestionCount = 0; // Track number of triage questions answered // Selected risk factors tracking @@ -66,8 +63,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { // User Info Flow State int _userInfoCurrentPage = 0; - bool _isSinglePageEditMode = - false; // Track if editing single page or full flow + bool _isSinglePageEditMode = false; // Track if editing single page or full flow String? _selectedGender; DateTime? _dateOfBirth; int? _selectedAge; @@ -107,17 +103,14 @@ class SymptomsCheckerViewModel extends ChangeNotifier { String? get tooltipOrganId => _tooltipOrganId; - String get currentSessionAuthToken => - symptomsUserDetailsResponseModel?.tokenDetails?.authToken ?? ""; + String get currentSessionAuthToken => symptomsUserDetailsResponseModel?.tokenDetails?.authToken ?? ""; - String get currentSessionId => - symptomsUserDetailsResponseModel?.sessionId ?? ""; + String get currentSessionId => symptomsUserDetailsResponseModel?.sessionId ?? ""; // Triage-related getters bool get shouldStopTriage => triageDataDetails?.shouldStop ?? false; - bool get hasEmergencyEvidence => - triageDataDetails?.hasEmergencyEvidence ?? false; + bool get hasEmergencyEvidence => triageDataDetails?.hasEmergencyEvidence ?? false; String? get currentInterviewToken => triageDataDetails?.interviewToken; @@ -137,15 +130,13 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Check if all items in current question have been answered bool get areAllTriageItemsAnswered { - if (currentTriageQuestion?.items == null || - currentTriageQuestion!.items!.isEmpty) { + if (currentTriageQuestion?.items == null || currentTriageQuestion!.items!.isEmpty) { return false; } // Check if we have an answer for each item for (var item in currentTriageQuestion!.items!) { - if (item.id != null && - !_selectedTriageChoicesByItemId.containsKey(item.id)) { + if (item.id != null && !_selectedTriageChoicesByItemId.containsKey(item.id)) { return false; } } @@ -153,8 +144,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } /// Get organs for current view - List get currentOrgans => - OrganData.getOrgansForView(_currentView); + List get currentOrgans => OrganData.getOrgansForView(_currentView); /// Get all selected organs from both views List get selectedOrgans { @@ -162,9 +152,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { ...OrganData.frontViewOrgans, ...OrganData.backViewOrgans, ]; - return allOrgans - .where((organ) => _selectedOrganIds.contains(organ.id)) - .toList(); + return allOrgans.where((organ) => _selectedOrganIds.contains(organ.id)).toList(); } /// Check if any organs are selected @@ -181,13 +169,11 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } int get totalSelectedSymptomsCount { - return _selectedSymptomsByOrgan.values - .fold(0, (sum, symptomIds) => sum + symptomIds.length); + return _selectedSymptomsByOrgan.values.fold(0, (sum, symptomIds) => sum + symptomIds.length); } bool get hasSelectedSymptoms { - return _selectedSymptomsByOrgan.values - .any((symptomIds) => symptomIds.isNotEmpty); + return _selectedSymptomsByOrgan.values.any((symptomIds) => symptomIds.isNotEmpty); } /// Get risk factors list @@ -213,8 +199,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } void toggleView() { - _currentView = - _currentView == BodyView.front ? BodyView.back : BodyView.front; + _currentView = _currentView == BodyView.front ? BodyView.back : BodyView.front; notifyListeners(); } @@ -317,8 +302,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return; } - List organNames = - selectedOrgans.map((organ) => organ.name).toList(); + List organNames = selectedOrgans.map((organ) => organ.name).toList(); await getBodySymptomsByName( organNames: organNames, @@ -368,8 +352,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } } - if (matchingOrganId != null && - _selectedSymptomsByOrgan.containsKey(matchingOrganId)) { + if (matchingOrganId != null && _selectedSymptomsByOrgan.containsKey(matchingOrganId)) { final selectedIds = _selectedSymptomsByOrgan[matchingOrganId]!; if (organResult.bodySymptoms != null) { @@ -420,10 +403,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Get all selected risk factors List getAllSelectedRiskFactors() { - return riskFactorsList - .where((factor) => - factor.id != null && _selectedRiskFactorIds.contains(factor.id)) - .toList(); + return riskFactorsList.where((factor) => factor.id != null && _selectedRiskFactorIds.contains(factor.id)).toList(); } /// Clear all risk factor selections @@ -456,12 +436,11 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } // Extract symptom IDs - List evidenceIds = - selectedSymptoms.where((s) => s.id != null).map((s) => s.id!).toList(); + List evidenceIds = selectedSymptoms.where((s) => s.id != null).map((s) => s.id!).toList(); await getRiskFactors( age: _selectedAge!, - sex: _selectedGender!.toLowerCase(), + gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, evidenceIds: evidenceIds, sessionId: currentSessionId, language: appState.isArabic() ? 'ar' : 'en', @@ -481,7 +460,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Call Risk Factors API Future getRiskFactors({ required int age, - required String sex, + required int gender, required String sessionId, required List evidenceIds, required String language, @@ -493,12 +472,11 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getRiskFactors( age: age, - sex: sex, + gender: gender, evidenceIds: evidenceIds, language: language, sessionId: sessionId, userSessionToken: currentSessionAuthToken, - gender: (selectedGender ?? "Male").toLowerCase() == "male" ? 1 : 2, ); result.fold( @@ -515,10 +493,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 1 && apiResponse.data != null) { riskFactorsResponse = apiResponse.data; - if (riskFactorsResponse != null && - riskFactorsResponse!.dataDetails != null) { - RiskAndSuggestionsItemModel riskFactorItem = - RiskAndSuggestionsItemModel( + if (riskFactorsResponse != null && riskFactorsResponse!.dataDetails != null) { + RiskAndSuggestionsItemModel riskFactorItem = RiskAndSuggestionsItemModel( id: "not_applicable", commonName: "Not Applicable", name: "Not Applicable", @@ -572,10 +548,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Get all selected risk factors List getAllSelectedSuggestions() { - return suggestionsList - .where((factor) => - factor.id != null && _selectedSuggestionsIds.contains(factor.id)) - .toList(); + return suggestionsList.where((factor) => factor.id != null && _selectedSuggestionsIds.contains(factor.id)).toList(); } /// Clear all risk factor selections @@ -590,20 +563,15 @@ class SymptomsCheckerViewModel extends ChangeNotifier { // Add selected symptoms final selectedSymptoms = getAllSelectedSymptoms(); - evidenceIds - .addAll(selectedSymptoms.where((s) => s.id != null).map((s) => s.id!)); + evidenceIds.addAll(selectedSymptoms.where((s) => s.id != null).map((s) => s.id!)); // Add selected risk factors (excluding "not_applicable") final selectedRiskFactors = getAllSelectedRiskFactors(); - evidenceIds.addAll(selectedRiskFactors - .where((rf) => rf.id != null && rf.id != "not_applicable") - .map((rf) => rf.id!)); + evidenceIds.addAll(selectedRiskFactors.where((rf) => rf.id != null && rf.id != "not_applicable").map((rf) => rf.id!)); // Add selected suggestions (excluding "not_applicable") final selectedSuggestions = getAllSelectedSuggestions(); - evidenceIds.addAll(selectedSuggestions - .where((s) => s.id != null && s.id != "not_applicable") - .map((s) => s.id!)); + evidenceIds.addAll(selectedSuggestions.where((s) => s.id != null && s.id != "not_applicable").map((s) => s.id!)); return evidenceIds; } @@ -632,23 +600,19 @@ class SymptomsCheckerViewModel extends ChangeNotifier { } // Extract symptom IDs - List evidenceIds = - selectedSymptoms.where((s) => s.id != null).map((s) => s.id!).toList(); + List evidenceIds = selectedSymptoms.where((s) => s.id != null).map((s) => s.id!).toList(); // Get all selected symptoms final selectedRisks = getAllSelectedRiskFactors(); if (selectedRisks.isNotEmpty) { - List evidenceRisksIds = selectedRisks - .where((s) => s.id != null && s.id != "not_applicable") - .map((s) => s.id!) - .toList(); + List evidenceRisksIds = selectedRisks.where((s) => s.id != null && s.id != "not_applicable").map((s) => s.id!).toList(); evidenceIds.addAll(evidenceRisksIds); } await getSuggestions( age: _selectedAge!, - sex: _selectedGender!.toLowerCase(), + gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, evidenceIds: evidenceIds, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { @@ -667,7 +631,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Call Suggestions API Future getSuggestions({ required int age, - required String sex, + required int gender, required List evidenceIds, required String language, Function(RiskAndSuggestionsResponseModel)? onSuccess, @@ -678,12 +642,11 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getSuggestions( age: age, - sex: sex, + gender: gender, evidenceIds: evidenceIds, language: language, sessionId: currentSessionId, userSessionToken: currentSessionAuthToken, - gender: (selectedGender ?? "Male").toLowerCase() == "male" ? 1 : 2, ); result.fold( @@ -700,10 +663,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 1 && apiResponse.data != null) { suggestionsResponse = apiResponse.data; - if (suggestionsResponse != null && - suggestionsResponse!.dataDetails != null) { - RiskAndSuggestionsItemModel riskFactorItem = - RiskAndSuggestionsItemModel( + if (suggestionsResponse != null && suggestionsResponse!.dataDetails != null) { + RiskAndSuggestionsItemModel riskFactorItem = RiskAndSuggestionsItemModel( id: "not_applicable", commonName: "Not Applicable", name: "Not Applicable", @@ -730,7 +691,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Call Diagnosis API for Triage - This is called iteratively until shouldStop is true Future getDiagnosisForTriage({ required int age, - required String sex, + required int gender, required List evidenceIds, List>? triageEvidence, required String language, @@ -742,13 +703,12 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getDiagnosisForTriage( age: age, - sex: sex, + gender: gender, evidenceIds: evidenceIds, triageEvidence: triageEvidence, language: language, sessionId: currentSessionId, userSessionToken: currentSessionAuthToken, - gender: (selectedGender ?? "Male").toLowerCase() == "male" ? 1 : 2, ); result.fold( @@ -804,7 +764,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { await getDiagnosisForTriage( age: _selectedAge!, - sex: _selectedGender!.toLowerCase(), + gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, evidenceIds: evidenceIds, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { @@ -941,8 +901,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { // Calculate age from date of birth final now = DateTime.now(); int age = now.year - dateOfBirth.year; - if (now.month < dateOfBirth.month || - (now.month == dateOfBirth.month && now.day < dateOfBirth.day)) { + if (now.month < dateOfBirth.month || (now.month == dateOfBirth.month && now.day < dateOfBirth.day)) { age--; } _selectedAge = age; @@ -989,8 +948,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { }) async { isBodySymptomsLoading = true; notifyListeners(); - final result = await symptomsCheckerRepo.getUserDetails( - userName: userName, password: password); + final result = await symptomsCheckerRepo.getUserDetails(userName: userName, password: password); result.fold( (failure) async { diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 29b4fe60..80e0f9ba 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -50,7 +50,14 @@ class ServicesPage extends StatelessWidget { late MedicalFileViewModel medicalFileViewModel; late final List hmgServices = [ - HmgServicesComponentModel(11, LocaleKeys.emergencyServices.tr(), "", AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () async { + HmgServicesComponentModel( + 11, + LocaleKeys.emergencyServices.tr(), + "", + AppAssets.emergency_services_icon, + bgColor: AppColors.primaryRedColor, + true, + route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().flushData(); getIt.get().getTransportationOrders( @@ -59,7 +66,7 @@ class ServicesPage extends StatelessWidget { getIt.get().getRRTOrders( showLoader: false, ); - Navigator.of(GetIt.instance().navigatorKey.currentContext!).push( + Navigator.of(getIt.get().navigatorKey.currentContext!).push( CustomPageRoute( page: EmergencyServicesPage(), settings: const RouteSettings(name: '/EmergencyServicesPage'), @@ -78,7 +85,8 @@ class ServicesPage extends StatelessWidget { true, route: AppRoutes.bookAppointmentPage, ), - HmgServicesComponentModel(5, LocaleKeys.completeCheckup.tr(), "", AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { + HmgServicesComponentModel( + 5, LocaleKeys.completeCheckup.tr(), "", AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.comprehensiveCheckupPage); } else { @@ -131,7 +139,7 @@ class ServicesPage extends StatelessWidget { }, ), HmgServicesComponentModel( - 11, LocaleKeys.eReferralServices.tr(), "", AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { + 11, LocaleKeys.eReferralServices.tr(), "", AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.eReferralPage); } else { @@ -393,19 +401,19 @@ class ServicesPage extends StatelessWidget { ? CustomButton( height: 40.h, icon: AppAssets.recharge_icon, - iconSize: 16.w, - iconColor: AppColors.infoColor, - textColor: AppColors.infoColor, - text: LocaleKeys.recharge.tr(), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 12.f, - onPressed: () { - Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); - }, + iconSize: 16.w, + iconColor: AppColors.infoColor, + textColor: AppColors.infoColor, + text: LocaleKeys.recharge.tr(), + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 12.f, + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, ) : SizedBox.shrink(), ], @@ -477,27 +485,27 @@ class ServicesPage extends StatelessWidget { getIt.get().isAuthenticated ? CustomButton( height: 40.h, - icon: AppAssets.add_icon, - iconSize: 16.w, - iconColor: AppColors.primaryRedColor, - textColor: AppColors.primaryRedColor, - text: LocaleKeys.addMember.tr(), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 12.f, - onPressed: () { - DialogService dialogService = getIt.get(); - medicalFileViewModel.clearAuthValues(); - dialogService.showAddFamilyFileSheet( - label: LocaleKeys.addFamilyMember.tr(), - message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), - onVerificationPress: () { - medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); - }); - }, + icon: AppAssets.add_icon, + iconSize: 16.w, + iconColor: AppColors.primaryRedColor, + textColor: AppColors.primaryRedColor, + text: LocaleKeys.addMember.tr(), + borderWidth: 0.w, + fontWeight: FontWeight.w500, + borderColor: Colors.transparent, + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 12.f, + onPressed: () { + DialogService dialogService = getIt.get(); + medicalFileViewModel.clearAuthValues(); + dialogService.showAddFamilyFileSheet( + label: LocaleKeys.addFamilyMember.tr(), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), + onVerificationPress: () { + medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); + }); + }, ) : SizedBox.shrink(), ], diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index fc400c44..5ea5b212 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -28,7 +28,6 @@ import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; -import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/appointment_queue_page.dart'; @@ -62,8 +61,6 @@ import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:hmg_patient_app_new/widgets/routes/spring_page_route_builder.dart'; import 'package:provider/provider.dart'; -import '../active_medication/active_medication_page.dart'; - import '../emergency_services/call_ambulance/widgets/HospitalBottomSheetBody.dart'; class LandingPage extends StatefulWidget { @@ -394,22 +391,23 @@ class _LandingPageState extends State { layout: SwiperLayout.STACK, loop: true, itemWidth: MediaQuery.of(context).size.width - 48.h, - indicatorLayout: PageIndicatorLayout.COLOR, - axisDirection: AxisDirection.right, - controller: _controller, - itemHeight: 255.h, - pagination: SwiperPagination( - alignment: Alignment.bottomCenter, - margin: EdgeInsets.only(top: 240.h + 8 + 24), - builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor), - ), - itemBuilder: (BuildContext context, int index) { - return getIndexSwiperCard(index); - }, - ) + indicatorLayout: PageIndicatorLayout.COLOR, + axisDirection: AxisDirection.right, + controller: _controller, + itemHeight: 255.h, + pagination: SwiperPagination( + alignment: Alignment.bottomCenter, + margin: EdgeInsets.only(top: 240.h + 8 + 24), + builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor), + ), + itemBuilder: (BuildContext context, int index) { + return getIndexSwiperCard(index); + }, + ) : Container( width: double.infinity, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + decoration: RoundedRectangleBorder() + .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Padding( padding: EdgeInsets.all(16.h), child: Column( @@ -469,7 +467,11 @@ class _LandingPageState extends State { backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.10), textColor: AppColors.primaryRedColor, ), - Utils.buildSvgWithAssets(icon: AppAssets.appointment_checkin_icon, width: 24.h, height: 24.h, iconColor: AppColors.primaryRedColor), + Utils.buildSvgWithAssets( + icon: AppAssets.appointment_checkin_icon, + width: 24.h, + height: 24.h, + iconColor: AppColors.primaryRedColor), ], ), SizedBox(height: 8.h), @@ -690,10 +692,18 @@ class _LandingPageState extends State { myAppointmentsViewModel.patientQueueDetailsList.first.queueNo!.toText12(isBold: true), SizedBox(width: 8.w), AppCustomChipWidget( - deleteIcon: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, - labelText: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? LocaleKeys.callForVitalSigns.tr() : LocaleKeys.callForDoctor.tr(), - iconColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, - textColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, + deleteIcon: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 + ? AppAssets.call_for_vitals + : AppAssets.call_for_doctor, + labelText: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 + ? LocaleKeys.callForVitalSigns.tr() + : LocaleKeys.callForDoctor.tr(), + iconColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 + ? AppColors.primaryRedColor + : AppColors.successColor, + textColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 + ? AppColors.primaryRedColor + : AppColors.successColor, iconSize: 14.w, backgroundColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor.withValues(alpha: 0.1) @@ -707,7 +717,8 @@ class _LandingPageState extends State { : SizedBox(height: 12.h), SizedBox(height: 5.h), CustomButton( - text: Utils.getCardButtonText(myAppointmentsViewModel.currentQueueStatus, myAppointmentsViewModel.currentPatientQueueDetails.roomNo ?? ""), + text: Utils.getCardButtonText( + myAppointmentsViewModel.currentQueueStatus, myAppointmentsViewModel.currentPatientQueueDetails.roomNo ?? ""), onPressed: () {}, backgroundColor: Utils.getCardButtonColor(myAppointmentsViewModel.currentQueueStatus), borderColor: Utils.getCardButtonColor(myAppointmentsViewModel.currentQueueStatus).withValues(alpha: 0.01), @@ -761,7 +772,8 @@ class _LandingPageState extends State { SizedBox(width: 8.w), AppCustomChipWidget( icon: AppAssets.appointment_calendar_icon, - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(immediateLiveCareViewModel.patientLiveCareHistoryList[0].arrivalTime), false)), + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate(immediateLiveCareViewModel.patientLiveCareHistoryList[0].arrivalTime), false)), ], ), Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), @@ -769,9 +781,12 @@ class _LandingPageState extends State { ], ), SizedBox(height: 10.h), - LocaleKeys.halaFirstName.tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}, context: context).toText16(isBold: true), + LocaleKeys.halaFirstName + .tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}, context: context).toText16(isBold: true), SizedBox(height: 8.h), - LocaleKeys.yourTurnIsAfterPatients.tr(namedArgs: {'count': immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount.toString()}, context: context).toText14(isBold: true), + LocaleKeys.yourTurnIsAfterPatients.tr( + namedArgs: {'count': immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount.toString()}, + context: context).toText14(isBold: true), SizedBox(height: 8.h), Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -978,7 +993,6 @@ class _LandingPageState extends State { isCloseButtonVisible: true, child: StatefulBuilder( builder: (context, setState) { - return RateAppointmentDoctor(); }, ), diff --git a/lib/presentation/home/navigation_screen.dart b/lib/presentation/home/navigation_screen.dart index 43cc3b90..b22e46b9 100644 --- a/lib/presentation/home/navigation_screen.dart +++ b/lib/presentation/home/navigation_screen.dart @@ -8,11 +8,8 @@ import 'package:hmg_patient_app_new/presentation/contact_us/feedback_page.dart'; import 'package:hmg_patient_app_new/presentation/hmg_services/services_page.dart'; import 'package:hmg_patient_app_new/presentation/home/landing_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; -import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection.dart'; -import 'package:hmg_patient_app_new/presentation/todo_section/todo_page.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/widgets/bottom_navigation/bottom_navigation.dart'; -import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; class LandingNavigation extends StatefulWidget { const LandingNavigation({super.key}); @@ -53,11 +50,7 @@ class _LandingNavigationState extends State { } if (_currentIndex == 3) { if (appState.isAuthenticated) { - Navigator.of(context).push( - CustomPageRoute( - page: UserInfoSelectionScreen(), - ), - ); + context.navigateWithName(AppRoutes.userInfoSelection); } else { Utils.openWebView( url: 'https://x.com/HMG', diff --git a/lib/presentation/symptoms_checker/possible_conditions_screen.dart b/lib/presentation/symptoms_checker/possible_conditions_screen.dart index bc233a4c..858218d7 100644 --- a/lib/presentation/symptoms_checker/possible_conditions_screen.dart +++ b/lib/presentation/symptoms_checker/possible_conditions_screen.dart @@ -3,13 +3,14 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/features/symptoms_checker/models/conditions_model.dart'; -import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/condition_card.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; @@ -45,7 +46,7 @@ class PossibleConditionsPage extends StatelessWidget { ); } - Widget _buildPredictionsList(BuildContext context, List conditions) { + Widget _buildPredictionsList(BuildContext context, List conditions, List symptoms) { if (conditions.isEmpty) { return Center( child: Padding( @@ -74,19 +75,13 @@ class PossibleConditionsPage extends StatelessWidget { physics: NeverScrollableScrollPhysics(), separatorBuilder: (context, index) => SizedBox(height: 16.h), itemBuilder: (context, index) { - final conditionModel = conditions[index]; + final condition = conditions[index]; return ConditionCard( - icon: conditionModel.icon, - title: conditionModel.title, - percentage: conditionModel.percentage, - tagText: conditionModel.tagText, - clinic: conditionModel.clinic, - symptoms: conditionModel.symptoms, - description: conditionModel.description, - possibleConditionsSeverityEnum: conditionModel.possibleConditionsSeverityEnum, + condition: condition, + symptoms: symptoms, onActionPressed: () { dialogService.showErrorBottomSheet( - message: 'We are not available for a week. May you Rest In Peace :(', + message: 'icd10 Code is ${condition.conditionDetails?.icd10Code}. We need to get the clinics mapped against this code.', ); }, ); @@ -102,7 +97,7 @@ class PossibleConditionsPage extends StatelessWidget { title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: LocaleKeys.areYouSureYouWantToRestartOrganSelection.tr(context: context), + loadingText: LocaleKeys.areYouSureYouWantToExitProgress.tr(context: context), isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), onConfirmTap: () => onConfirm(), @@ -113,47 +108,88 @@ class PossibleConditionsPage extends StatelessWidget { ); } - _restartOrganSelection(BuildContext context) async { - final symptomsCheckerVm = context.read(); - symptomsCheckerVm.reset(); - context.pop(); - await Future.delayed(Duration(seconds: 1)).whenComplete(() => context.pop()); - } + Widget _buildInfoTile({required PossibleConditionsSeverityEnum severityEnum}) { + String title; + String description; + Color dotColor; - _navigateToLandingPage() { - NavigationService navigationService = getIt.get(); - navigationService.replaceAllRoutesAndNavigateToLanding(); - } + switch (severityEnum) { + case PossibleConditionsSeverityEnum.monitorOnly: + title = "Monitor".needTranslation; + description = "No need to seek medical advice. Just keep healthy routine.".needTranslation; + dotColor = AppColors.chipColorMonitor; + break; + case PossibleConditionsSeverityEnum.seekMedicalAdvice: + title = "Seek Medical Advice".needTranslation; + description = "Not emergency but better to monitor the symptoms.".needTranslation; + dotColor = AppColors.chipColorSeekMedicalAdvice; + break; + case PossibleConditionsSeverityEnum.emergency: + title = "Emergency".needTranslation; + description = "Need to consult doctor as soon as possible before getting too late.".needTranslation; + dotColor = AppColors.chipColorEmergency; + break; + } - _buildTrailingSection(BuildContext context) { return Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - height: 40.h, - padding: EdgeInsets.all(8.w), - child: Center( - child: Utils.buildSvgWithAssets( - icon: AppAssets.refreshIcon, - height: 20.h, - width: 20.w, - iconColor: AppColors.textColor, - ), + height: 14.h, + width: 14.w, + decoration: BoxDecoration(shape: BoxShape.circle, color: dotColor), + ).paddingOnly(top: 3.h), + SizedBox(width: 8.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.toText14(weight: FontWeight.w600, color: AppColors.textColor), + SizedBox(height: 4.h), + description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + ], ), - ).onPress(() => _buildConfirmationBottomSheet(context: context, onConfirm: () => _restartOrganSelection(context))), - Container( - height: 40.h, - padding: EdgeInsets.all(8.w), - child: Center( - child: Utils.buildSvgWithAssets( - icon: AppAssets.homeBorderedIcon, - height: 20.h, - width: 20.w, - iconColor: AppColors.textColor, - ), - ), - ).onPress(() => _buildConfirmationBottomSheet(context: context, onConfirm: () => _navigateToLandingPage())), + ), ], - ).paddingSymmetrical(20.w, 0); + ); + } + + _buildSeverityDetailsBottomsheet({required BuildContext context}) { + return showCommonBottomSheetWithoutHeight( + title: "Color Science".needTranslation, + context, + child: Container( + padding: EdgeInsets.all(16.w), + width: double.infinity, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + child: Column( + children: [ + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.monitorOnly), + Divider(color: AppColors.bottomNAVBorder, height: 24.h, thickness: 1), + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice), + Divider(color: AppColors.bottomNAVBorder, height: 24.h, thickness: 1), + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.emergency), + ], + ), + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + _buildTrailingSection(BuildContext context) { + return Container( + height: 40.h, + padding: EdgeInsets.all(8.w), + child: Center( + child: Utils.buildSvgWithAssets( + icon: AppAssets.coloredDotsIcon, + height: 20.h, + width: 20.w, + ), + ), + ).onPress(() => _buildSeverityDetailsBottomsheet(context: context)); } @override @@ -162,13 +198,32 @@ class PossibleConditionsPage extends StatelessWidget { backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( title: LocaleKeys.possibleConditions.tr(context: context), + leadingCallback: () => _buildConfirmationBottomSheet( + context: context, + onConfirm: () { + context.pop(); + final SymptomsCheckerViewModel symptomsCheckerViewModel = context.read(); + symptomsCheckerViewModel.reset(); // Clear all symptoms checker data + final navigationService = getIt.get(); + navigationService.replaceAllRoutesAndNavigateToLanding(); + }, + ), trailing: _buildTrailingSection(context), child: Consumer( builder: (context, symptomsCheckerViewModel, child) { - if (symptomsCheckerViewModel.isPossibleConditionsLoading || symptomsCheckerViewModel.isPossibleConditionsLoading) { + if (symptomsCheckerViewModel.isPossibleConditionsLoading || symptomsCheckerViewModel.isTriageDiagnosisLoading) { return _buildLoadingShimmer(); } - return _buildPredictionsList(context, dummyConditions); + // Get conditions directly from ViewModel + final conditions = symptomsCheckerViewModel.currentConditions ?? []; + // Get selected symptoms names for display + final symptoms = symptomsCheckerViewModel + .getAllSelectedSymptoms() + .map((s) => s.commonName ?? s.name ?? '') + .where((name) => name.isNotEmpty) + .take(3) + .toList(); + return _buildPredictionsList(context, conditions, symptoms); }, ), ), diff --git a/lib/presentation/symptoms_checker/risk_factors_screen.dart b/lib/presentation/symptoms_checker/risk_factors_screen.dart index 6ee4f29a..da41d781 100644 --- a/lib/presentation/symptoms_checker/risk_factors_screen.dart +++ b/lib/presentation/symptoms_checker/risk_factors_screen.dart @@ -196,7 +196,7 @@ class _RiskFactorsScreenState extends State { border: Border.all(color: AppColors.bottomNAVBorder, width: 1), ), child: Text( - 'Not Applicable Risk Factor', + 'Not Applicable Risk Factor'.needTranslation, style: TextStyle(fontSize: 14.f, color: AppColors.textColor), ), ).toShimmer2(isShow: true, radius: 24.r); diff --git a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart index b4ba802c..b241b448 100644 --- a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart +++ b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart @@ -4,12 +4,12 @@ import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/body_symptom_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -82,10 +82,12 @@ class _SymptomsSelectorPageState extends State { title: LocaleKeys.symptomsSelector.tr(), leadingCallback: () => _buildConfirmationBottomSheet( context: context, - onConfirm: () => { - context.pop(), - context.pop(), - }), + onConfirm: () { + context.pop(); + viewModel.reset(); // Clear all symptoms checker data + final navigationService = getIt.get(); + navigationService.replaceAllRoutesAndNavigateToLanding(); + }), child: viewModel.isBodySymptomsLoading ? _buildLoadingShimmer() : viewModel.organSymptomsResults.isEmpty diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index 526136c2..c0d48d61 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -14,6 +14,7 @@ import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_v import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/custom_progress_bar.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -119,12 +120,14 @@ class _TriagePageState extends State { SizedBox(height: 8.h), LocaleKeys.emergencyTriage.tr(context: context).toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - LocaleKeys.emergencyEvidenceDetected.tr(context: context) - .toText14(color: AppColors.whiteColor, weight: FontWeight.w500), + LocaleKeys.emergencyEvidenceDetected.tr(context: context).toText14(color: AppColors.whiteColor, weight: FontWeight.w500), SizedBox(height: 24.h), CustomButton( text: LocaleKeys.confirm.tr(context: context), - onPressed: () async => Navigator.of(context).pop(), + onPressed: () { + context.pop(); + context.navigateWithName(AppRoutes.possibleConditionsPage); + }, backgroundColor: AppColors.whiteColor, borderColor: AppColors.whiteColor, textColor: AppColors.primaryRedColor, @@ -197,7 +200,7 @@ class _TriagePageState extends State { // Call API with updated evidence viewModel.getDiagnosisForTriage( age: viewModel.selectedAge!, - sex: viewModel.selectedGender!.toLowerCase(), + gender: viewModel.selectedGender!.toLowerCase() == "male" ? 1 : 2, evidenceIds: initialEvidenceIds, triageEvidence: triageEvidence, language: viewModel.appState.isArabic() ? 'ar' : 'en', @@ -307,8 +310,10 @@ class _TriagePageState extends State { isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), onConfirmTap: () { - Navigator.pop(context); context.pop(); + viewModel.reset(); // Clear all symptoms checker data + final navigationService = getIt.get(); + navigationService.replaceAllRoutesAndNavigateToLanding(); }, ), callBackFunc: () {}, diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index 9973d54b..78eb9167 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -16,14 +16,14 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:provider/provider.dart'; -class UserInfoSelectionScreen extends StatefulWidget { - const UserInfoSelectionScreen({super.key}); +class UserInfoSelectionPage extends StatefulWidget { + const UserInfoSelectionPage({super.key}); @override - State createState() => _UserInfoSelectionScreenState(); + State createState() => _UserInfoSelectionPageState(); } -class _UserInfoSelectionScreenState extends State { +class _UserInfoSelectionPageState extends State { @override void initState() { super.initState(); @@ -155,10 +155,12 @@ class _UserInfoSelectionScreenState extends State { // Show age calculated from DOB (prefer viewModel's age, fallback to calculated from user's DOB) int? displayAge = viewModel.selectedAge ?? userAgeFromDOB; String ageText = displayAge != null ? "$displayAge ${LocaleKeys.years.tr(context: context)}" : LocaleKeys.notSet.tr(context: context); - String heightText = - viewModel.selectedHeight != null ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" : LocaleKeys.notSet.tr(context: context); - String weightText = - viewModel.selectedWeight != null ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" : LocaleKeys.notSet.tr(context: context); + String heightText = viewModel.selectedHeight != null + ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" + : LocaleKeys.notSet.tr(context: context); + String weightText = viewModel.selectedWeight != null + ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" + : LocaleKeys.notSet.tr(context: context); return Column( children: [ @@ -176,9 +178,9 @@ class _UserInfoSelectionScreenState extends State { child: Column( children: [ LocaleKeys.helloIsYourInformationUpToDate.tr(namedArgs: {'name': name}).toText16( - weight: FontWeight.w600, - color: AppColors.textColor, - ), + weight: FontWeight.w600, + color: AppColors.textColor, + ), SizedBox(height: 32.h), _buildEditInfoTile( context: context, diff --git a/lib/presentation/symptoms_checker/widgets/condition_card.dart b/lib/presentation/symptoms_checker/widgets/condition_card.dart index b89eac27..b95e55c9 100644 --- a/lib/presentation/symptoms_checker/widgets/condition_card.dart +++ b/lib/presentation/symptoms_checker/widgets/condition_card.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/custom_progress_bar.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -12,33 +13,128 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; class ConditionCard extends StatelessWidget { - final IconData icon; - final String title; - final int percentage; - final String tagText; - final String clinic; + final TriageCondition condition; final List symptoms; - final String description; - final String? monitorNote; - final String? appointmentLabel; - final PossibleConditionsSeverityEnum possibleConditionsSeverityEnum; final VoidCallback? onActionPressed; const ConditionCard({ super.key, - required this.icon, - required this.title, - required this.percentage, - required this.tagText, - required this.clinic, + required this.condition, required this.symptoms, - required this.description, - this.monitorNote, - this.appointmentLabel, - required this.possibleConditionsSeverityEnum, this.onActionPressed, }); + /// Get title from condition + String get title => condition.commonName ?? condition.name ?? ''; + + /// Get percentage from probability (0-1 to 0-100) + int get percentage => ((condition.probability ?? 0) * 100).toInt(); + + /// Get clinic name from category + String get clinic => condition.conditionDetails?.category?.name ?? ''; + + /// Get description from hint + String get description => condition.conditionDetails?.hint ?? ''; + + /// Get severity enum based on triage level + PossibleConditionsSeverityEnum get severityEnum { + final triageLevel = condition.conditionDetails?.triageLevel; + if (triageLevel != null) { + switch (triageLevel) { + case TriageLevelEnum.emergencyAmbulance: + case TriageLevelEnum.emergency: + return PossibleConditionsSeverityEnum.emergency; + case TriageLevelEnum.consultation24: + case TriageLevelEnum.consultation: + return PossibleConditionsSeverityEnum.seekMedicalAdvice; + case TriageLevelEnum.selfCare: + return PossibleConditionsSeverityEnum.monitorOnly; + } + } + // Default based on probability + if (percentage >= 70) { + return PossibleConditionsSeverityEnum.seekMedicalAdvice; + } else { + return PossibleConditionsSeverityEnum.monitorOnly; + } + } + + /// Get tag text based on triage level + String getTagText(BuildContext context) { + final triageLevel = condition.conditionDetails?.triageLevel; + if (triageLevel != null) { + switch (triageLevel) { + case TriageLevelEnum.emergencyAmbulance: + case TriageLevelEnum.emergency: + return LocaleKeys.emergency.tr(context: context); + case TriageLevelEnum.consultation24: + case TriageLevelEnum.consultation: + return "Seek Medical Advice".needTranslation; + case TriageLevelEnum.selfCare: + return LocaleKeys.monitor.tr(context: context); + } + } + // Default based on probability + if (percentage >= 70) { + return "Seek Medical Advice".needTranslation; + } else { + return LocaleKeys.monitor.tr(context: context); + } + } + + /// Get monitor note if applicable + String? getMonitorNote(BuildContext context) { + if (severityEnum == PossibleConditionsSeverityEnum.monitorOnly) { + return "No need to visit doctor".needTranslation; + } + return null; + } + + /// Get icon based on category name from API + IconData get icon { + final categoryName = condition.conditionDetails?.category?.name?.toLowerCase() ?? ''; + + if (categoryName.contains('cardio') || categoryName.contains('heart')) { + return Icons.favorite; + } else if (categoryName.contains('neuro') || categoryName.contains('brain')) { + return Icons.psychology_alt; + } else if (categoryName.contains('psychiatr') || categoryName.contains('mental')) { + return Icons.psychology; + } else if (categoryName.contains('eye') || categoryName.contains('ophthalmo')) { + return Icons.remove_red_eye; + } else if (categoryName.contains('ent') || categoryName.contains('ear')) { + return Icons.hearing; + } else if (categoryName.contains('derma') || categoryName.contains('skin')) { + return Icons.face; + } else if (categoryName.contains('ortho') || categoryName.contains('bone')) { + return Icons.accessibility_new; + } else if (categoryName.contains('gyneco') || categoryName.contains('obstet')) { + return Icons.pregnant_woman; + } else if (categoryName.contains('pediatr') || categoryName.contains('child')) { + return Icons.child_care; + } else if (categoryName.contains('surg')) { + return Icons.local_hospital; + } else if (categoryName.contains('pulmo') || categoryName.contains('lung') || categoryName.contains('respiratory')) { + return Icons.air; + } else if (categoryName.contains('gastro') || categoryName.contains('digest')) { + return Icons.restaurant; + } else if (categoryName.contains('nephro') || categoryName.contains('kidney')) { + return Icons.water_drop; + } else if (categoryName.contains('hemato') || categoryName.contains('blood')) { + return Icons.bloodtype; + } else if (categoryName.contains('infect') || categoryName.contains('virus')) { + return Icons.coronavirus; + } else if (categoryName.contains('emergency')) { + return Icons.emergency; + } else if (categoryName.contains('geriatr') || categoryName.contains('elder')) { + return Icons.elderly; + } else if (categoryName.contains('internal')) { + return Icons.medical_services; + } + + return Icons.medical_services; + } + Color getChipColorBySeverityEnum(PossibleConditionsSeverityEnum possibleConditionsSeverityEnum) { switch (possibleConditionsSeverityEnum) { case PossibleConditionsSeverityEnum.seekMedicalAdvice: @@ -67,7 +163,7 @@ class ConditionCard extends StatelessWidget { crossAxisAlignment: WrapCrossAlignment.center, children: [ for (int i = 0; i < symptoms.length; i++) ...[ - Text(symptoms[i], style: TextStyle(color: AppColors.greyTextColor, fontWeight: FontWeight.w500, fontSize: 12.f)), + "● ${symptoms[i]}".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), if (i != symptoms.length - 1) Padding( padding: EdgeInsets.symmetric(horizontal: 2.w), @@ -80,9 +176,12 @@ class ConditionCard extends StatelessWidget { @override Widget build(BuildContext context) { + // final monitorNote = getMonitorNote(context); + final tagText = getTagText(context); + return Container( width: double.infinity, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -90,14 +189,14 @@ class ConditionCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( - width: 48.w, - height: 48.w, + width: 32.w, + height: 32.w, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: getChipColorBySeverityEnum(possibleConditionsSeverityEnum).withValues(alpha: 0.2), - borderRadius: 12.r, + color: getChipColorBySeverityEnum(severityEnum).withValues(alpha: 0.2), + borderRadius: 8.r, hasShadow: false, ), - child: Icon(icon, color: getChipTextColorBySeverityEnum(possibleConditionsSeverityEnum), size: 24.f), + child: Icon(icon, color: getChipTextColorBySeverityEnum(severityEnum), size: 16.f), ), SizedBox(width: 12.w), Expanded( @@ -108,34 +207,23 @@ class ConditionCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( - child: Text( - title, - style: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, color: AppColors.textColor), - overflow: TextOverflow.ellipsis, - ), + child: title.toText18(weight: FontWeight.w600, color: AppColors.textColor), ), AppCustomChipWidget( labelText: tagText, - backgroundColor: getChipColorBySeverityEnum(possibleConditionsSeverityEnum).withValues(alpha: 0.2), - textColor: getChipTextColorBySeverityEnum(possibleConditionsSeverityEnum), + backgroundColor: getChipColorBySeverityEnum(severityEnum).withValues(alpha: 0.2), + textColor: getChipTextColorBySeverityEnum(severityEnum), ), ], ), CustomRoundedProgressBar( percentage: percentage, height: 6.h, - color: getChipColorBySeverityEnum(possibleConditionsSeverityEnum), + color: getChipColorBySeverityEnum(severityEnum), backgroundColor: AppColors.scaffoldBgColor, titleWidget: Row( children: [ - Text( - "$percentage%", - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 12.f, - color: getChipColorBySeverityEnum(possibleConditionsSeverityEnum), - ), - ), + "$percentage%".toText12(fontWeight: FontWeight.bold, color: getChipColorBySeverityEnum(severityEnum)), ], ).paddingSymmetrical(0, 4.h), ), @@ -148,50 +236,42 @@ class ConditionCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - clinic, - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 14.f, - color: AppColors.textColor, - ), - ), + "Common Symptom".needTranslation.toText14(weight: FontWeight.w600, color: AppColors.textColor), _buildSymptomsRow(), SizedBox(height: 16.h), - Text(LocaleKeys.description.tr(context: context), style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14.f, color: AppColors.textColor)), + LocaleKeys.description.tr(context: context).toText14(weight: FontWeight.bold, color: AppColors.textColor), SizedBox(height: 2.h), - Text(description, style: TextStyle(color: AppColors.greyTextColor, fontWeight: FontWeight.w500, fontSize: 12.f)), - if (possibleConditionsSeverityEnum == PossibleConditionsSeverityEnum.emergency) + description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + if (severityEnum != PossibleConditionsSeverityEnum.monitorOnly) CustomButton( - text: appointmentLabel ?? LocaleKeys.bookAppointment.tr(context: context), + text: "Book Appointment".needTranslation, onPressed: () { if (onActionPressed != null) { onActionPressed!(); } }, - backgroundColor: AppColors.lightRedButtonColor, + backgroundColor: AppColors.primaryRedColor, borderColor: Colors.transparent, - textColor: AppColors.primaryRedColor, - fontSize: 16.f, + textColor: AppColors.whiteColor, + fontSize: 14.f, fontWeight: FontWeight.w500, - borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 48.h, icon: AppAssets.add_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 18.h, + height: 48.h, + iconColor: AppColors.whiteColor, ).paddingOnly(top: 16.w), - if (monitorNote != null) - Container( - margin: EdgeInsets.only(top: 12.h), - child: AppCustomChipWidget( - labelText: monitorNote!, - backgroundColor: AppColors.whiteColor, - textColor: AppColors.textColor, - padding: EdgeInsets.symmetric(horizontal: 14.w, vertical: 8.h), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.r)), - ), - ), + + // if (monitorNote != null) + // Container( + // margin: EdgeInsets.only(top: 12.h), + // child: AppCustomChipWidget( + // labelText: monitorNote, + // backgroundColor: AppColors.whiteColor, + // textColor: AppColors.textColor, + // padding: EdgeInsets.symmetric(horizontal: 14.w, vertical: 8.h), + // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.r)), + // ), + // ), ], ).paddingAll(16.w), ], diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index bf665ea8..018af1c8 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -8,6 +8,7 @@ import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointme import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/comprehensive_checkup_page.dart'; import 'package:hmg_patient_app_new/presentation/covid19test/covid19_landing_page.dart'; import 'package:hmg_patient_app_new/presentation/e_referral/new_e_referral.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/emergency_services_page.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculators_page.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/add_health_tracker_entry_page.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_tracker_detail_page.dart'; @@ -30,16 +31,14 @@ import 'package:hmg_patient_app_new/presentation/vital_sign/vital_sign_page.dart import 'package:hmg_patient_app_new/presentation/water_monitor/water_consumption_page.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/water_monitor_settings_page.dart'; import 'package:hmg_patient_app_new/splashPage.dart'; - -import '../features/qr_parking/qr_parking_view_model.dart'; -import '../presentation/covid19test/covid19_landing_page.dart'; +import 'package:provider/provider.dart'; import '../core/dependencies.dart'; import '../features/monthly_reports/monthly_reports_repo.dart'; import '../features/monthly_reports/monthly_reports_view_model.dart'; +import '../features/qr_parking/qr_parking_view_model.dart'; import '../presentation/parking/paking_page.dart'; import '../services/error_handler_service.dart'; -import 'package:provider/provider.dart'; class AppRoutes { static const String initialRoute = '/initialRoute'; @@ -84,8 +83,10 @@ class AppRoutes { static const String addHealthTrackerEntryPage = '/addHealthTrackerEntryPage'; static const String healthTrackerDetailPage = '/healthTrackerDetailPage'; - static Map get routes => - { + // Emergency Services + static const String emergencyServicesPage = '/emergencyServicesPage'; + + static Map get routes => { initialRoute: (context) => SplashPage(), loginScreen: (context) => LoginScreen(), landingScreen: (context) => LandingNavigation(), @@ -104,7 +105,7 @@ class AppRoutes { triagePage: (context) => TriagePage(), bloodDonationPage: (context) => BloodDonationPage(), bookAppointmentPage: (context) => BookAppointmentPage(), - userInfoSelection: (context) => UserInfoSelectionScreen(), + userInfoSelection: (context) => UserInfoSelectionPage(), userInfoFlowManager: (context) => UserInfoFlowManager(), smartWatches: (context) => SmartwatchInstructionsPage(), huaweiHealthExample: (context) => HuaweiHealthExample(), @@ -115,34 +116,28 @@ class AppRoutes { healthConvertersPage: (context) => HealthCalculatorsPage(type: HealthCalConEnum.converter), healthTrackersPage: (context) => HealthTrackersPage(), vitalSign: (context) => VitalSignPage(), + emergencyServicesPage: (context) => EmergencyServicesPage(), addHealthTrackerEntryPage: (context) { - final args = ModalRoute - .of(context) - ?.settings - .arguments as HealthTrackerTypeEnum?; + final args = ModalRoute.of(context)?.settings.arguments as HealthTrackerTypeEnum?; return AddHealthTrackerEntryPage( trackerType: args ?? HealthTrackerTypeEnum.bloodSugar, ); }, healthTrackerDetailPage: (context) { - final args = ModalRoute - .of(context) - ?.settings - .arguments as HealthTrackerTypeEnum?; + final args = ModalRoute.of(context)?.settings.arguments as HealthTrackerTypeEnum?; return HealthTrackerDetailPage( trackerType: args ?? HealthTrackerTypeEnum.bloodSugar, ); }, - - monthlyReports: (context) => ChangeNotifierProvider( - create: (_) => MonthlyReportsViewModel( - monthlyReportsRepo: getIt(), - errorHandlerService: getIt(), - ), - ), - qrParking: (context) => ChangeNotifierProvider( - create: (_) => getIt(), - child: const ParkingPage(), + monthlyReports: (context) => ChangeNotifierProvider( + create: (_) => MonthlyReportsViewModel( + monthlyReportsRepo: getIt(), + errorHandlerService: getIt(), + ), + ), + qrParking: (context) => ChangeNotifierProvider( + create: (_) => getIt(), + child: const ParkingPage(), ) }; } diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index 9fbdc17b..ee48c60c 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -92,7 +92,7 @@ class AppColors { // SymptomsChecker static const Color chipColorSeekMedicalAdvice = Color(0xFFFFAF15); // #FFAF15 - static const Color chipTextColorSeekMedicalAdvice = Color(0xFFAB7103); // #AB7103 + static const Color chipTextColorSeekMedicalAdvice = Color(0xFFD48D05); // #AB7103 static const Color chipColorMonitor = Color(0xFF18C273); // #18C273 static const Color chipColorEmergency = Color(0xFFED1C2B); // #ED1C2B diff --git a/lib/widgets/buttons/custom_button.dart b/lib/widgets/buttons/custom_button.dart index 08d281f7..7b248db5 100644 --- a/lib/widgets/buttons/custom_button.dart +++ b/lib/widgets/buttons/custom_button.dart @@ -80,17 +80,14 @@ class CustomButton extends StatelessWidget { ), Visibility( visible: text.isNotEmpty, - child: Padding( - padding: EdgeInsets.only(top: 0), - child: Text( - text, - overflow: textOverflow, - style: context.dynamicTextStyle( - fontSize: fontS, - color: isDisabled ? AppColors.greyTextColor : textColor, - letterSpacing: 0, - fontWeight: fontWeight, - ), + child: Text( + text, + overflow: textOverflow, + style: context.dynamicTextStyle( + fontSize: fontS, + color: isDisabled ? AppColors.greyTextColor : textColor, + letterSpacing: 0, + fontWeight: fontWeight, ), ), ), diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 7e5aaf52..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,2073 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _flutterfire_internals: - dependency: transitive - description: - name: _flutterfire_internals - sha256: ff0a84a2734d9e1089f8aedd5c0af0061b82fb94e95260d943404e0ef2134b11 - url: "https://pub.dev" - source: hosted - version: "1.3.59" - adaptive_number: - dependency: transitive - description: - name: adaptive_number - sha256: "3a567544e9b5c9c803006f51140ad544aedc79604fd4f3f2c1380003f97c1d77" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - amazon_payfort: - dependency: "direct main" - description: - name: amazon_payfort - sha256: "7732df0764aecbb814f910db36d0dca2f696e7e5ea380b49aa3ec62965768b33" - url: "https://pub.dev" - source: hosted - version: "1.1.4" - archive: - dependency: transitive - description: - name: archive - sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" - url: "https://pub.dev" - source: hosted - version: "4.0.7" - args: - dependency: transitive - description: - name: args - sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.dev" - source: hosted - version: "2.7.0" - async: - dependency: transitive - description: - name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://pub.dev" - source: hosted - version: "2.13.0" - audio_session: - dependency: transitive - description: - name: audio_session - sha256: "8f96a7fecbb718cb093070f868b4cdcb8a9b1053dce342ff8ab2fde10eb9afb7" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - auto_size_text: - dependency: "direct main" - description: - name: auto_size_text - sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - barcode_scan2: - dependency: "direct main" - description: - name: barcode_scan2 - sha256: "50b286021c644deee71e20a06c1709adc6594e39d65024ced0458cc1e3ff298e" - url: "https://pub.dev" - source: hosted - version: "4.6.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" - url: "https://pub.dev" - source: hosted - version: "4.1.1" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - carp_serializable: - dependency: transitive - description: - name: carp_serializable - sha256: f039f8ea22e9437aef13fe7e9743c3761c76d401288dcb702eadd273c3e4dcef - url: "https://pub.dev" - source: hosted - version: "2.0.1" - characters: - dependency: transitive - description: - name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - chewie: - dependency: transitive - description: - name: chewie - sha256: "44bcfc5f0dfd1de290c87c9d86a61308b3282a70b63435d5557cfd60f54a69ca" - url: "https://pub.dev" - source: hosted - version: "1.13.0" - clock: - dependency: transitive - description: - name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.dev" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - connectivity_plus: - dependency: "direct main" - description: - name: connectivity_plus - sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec - url: "https://pub.dev" - source: hosted - version: "6.1.5" - connectivity_plus_platform_interface: - dependency: transitive - description: - name: connectivity_plus_platform_interface - sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" - url: "https://pub.dev" - source: hosted - version: "0.3.4+2" - crypto: - dependency: transitive - description: - name: crypto - sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "https://pub.dev" - source: hosted - version: "3.0.6" - csslib: - dependency: transitive - description: - name: csslib - sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - dart_jsonwebtoken: - dependency: "direct main" - description: - name: dart_jsonwebtoken - sha256: "0de65691c1d736e9459f22f654ddd6fd8368a271d4e41aa07e53e6301eff5075" - url: "https://pub.dev" - source: hosted - version: "3.3.1" - dartz: - dependency: "direct main" - description: - name: dartz - sha256: e6acf34ad2e31b1eb00948692468c30ab48ac8250e0f0df661e29f12dd252168 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - dbus: - dependency: transitive - description: - name: dbus - sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" - url: "https://pub.dev" - source: hosted - version: "0.7.11" - device_calendar: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: "5ea5ed9e2bb499c0633383b53103f2920b634755" - url: "https://github.com/bardram/device_calendar" - source: git - version: "4.3.1" - device_calendar_plus: - dependency: "direct main" - description: - name: device_calendar_plus - sha256: d11a70d98eb123e8eb09fdcfaf220ca4f1aa65a1512e12092f176f4b54983507 - url: "https://pub.dev" - source: hosted - version: "0.3.3" - device_calendar_plus_android: - dependency: transitive - description: - name: device_calendar_plus_android - sha256: a341ef29fa0251251287d63c1d009dfd35c1459dc6a129fd5e03f5ac92d8d7ff - url: "https://pub.dev" - source: hosted - version: "0.3.3" - device_calendar_plus_ios: - dependency: transitive - description: - name: device_calendar_plus_ios - sha256: "3b2f84ce1ed002be8460e214a3229e66748bbaad4077603f2c734d67c42033ff" - url: "https://pub.dev" - source: hosted - version: "0.3.3" - device_calendar_plus_platform_interface: - dependency: transitive - description: - name: device_calendar_plus_platform_interface - sha256: "0ce7511c094ca256831a48e16efe8f1e97e7bd00a5ff3936296ffd650a1d76b5" - url: "https://pub.dev" - source: hosted - version: "0.3.3" - device_info_plus: - dependency: "direct main" - description: - name: device_info_plus - sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" - url: "https://pub.dev" - source: hosted - version: "11.5.0" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f - url: "https://pub.dev" - source: hosted - version: "7.0.3" - dropdown_search: - dependency: "direct main" - description: - name: dropdown_search - sha256: c29b3e5147a82a06a4a08b3b574c51cb48cc17ad89893d53ee72a6f86643622e - url: "https://pub.dev" - source: hosted - version: "6.0.2" - easy_localization: - dependency: "direct main" - description: - name: easy_localization - sha256: "2ccdf9db8fe4d9c5a75c122e6275674508fd0f0d49c827354967b8afcc56bbed" - url: "https://pub.dev" - source: hosted - version: "3.0.8" - easy_logger: - dependency: transitive - description: - name: easy_logger - sha256: c764a6e024846f33405a2342caf91c62e357c24b02c04dbc712ef232bf30ffb7 - url: "https://pub.dev" - source: hosted - version: "0.0.2" - ed25519_edwards: - dependency: transitive - description: - name: ed25519_edwards - sha256: "6ce0112d131327ec6d42beede1e5dfd526069b18ad45dcf654f15074ad9276cd" - url: "https://pub.dev" - source: hosted - version: "0.3.1" - equatable: - dependency: "direct main" - description: - name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" - url: "https://pub.dev" - source: hosted - version: "2.0.7" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - ffi: - dependency: transitive - description: - name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - file: - dependency: transitive - description: - name: file - sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" - source: hosted - version: "7.0.1" - file_picker: - dependency: "direct main" - description: - name: file_picker - sha256: f2d9f173c2c14635cc0e9b14c143c49ef30b4934e8d1d274d6206fcb0086a06f - url: "https://pub.dev" - source: hosted - version: "10.3.3" - file_selector_linux: - dependency: transitive - description: - name: file_selector_linux - sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://pub.dev" - source: hosted - version: "0.9.3+2" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c" - url: "https://pub.dev" - source: hosted - version: "0.9.4+4" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://pub.dev" - source: hosted - version: "2.6.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://pub.dev" - source: hosted - version: "0.9.3+4" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: "4f85b161772e1d54a66893ef131c0a44bd9e552efa78b33d5f4f60d2caa5c8a3" - url: "https://pub.dev" - source: hosted - version: "11.6.0" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: a44b6d1155ed5cae7641e3de7163111cfd9f6f6c954ca916dc6a3bdfa86bf845 - url: "https://pub.dev" - source: hosted - version: "4.4.3" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: c7d1ed1f86ae64215757518af5576ff88341c8ce5741988c05cc3b2e07b0b273 - url: "https://pub.dev" - source: hosted - version: "0.5.10+16" - firebase_core: - dependency: "direct main" - description: - name: firebase_core - sha256: "7be63a3f841fc9663342f7f3a011a42aef6a61066943c90b1c434d79d5c995c5" - url: "https://pub.dev" - source: hosted - version: "3.15.2" - firebase_core_platform_interface: - dependency: transitive - description: - name: firebase_core_platform_interface - sha256: "5873a370f0d232918e23a5a6137dbe4c2c47cf017301f4ea02d9d636e52f60f0" - url: "https://pub.dev" - source: hosted - version: "6.0.1" - firebase_core_web: - dependency: transitive - description: - name: firebase_core_web - sha256: "0ed0dc292e8f9ac50992e2394e9d336a0275b6ae400d64163fdf0a8a8b556c37" - url: "https://pub.dev" - source: hosted - version: "2.24.1" - firebase_messaging: - dependency: "direct main" - description: - name: firebase_messaging - sha256: "60be38574f8b5658e2f22b7e311ff2064bea835c248424a383783464e8e02fcc" - url: "https://pub.dev" - source: hosted - version: "15.2.10" - firebase_messaging_platform_interface: - dependency: transitive - description: - name: firebase_messaging_platform_interface - sha256: "685e1771b3d1f9c8502771ccc9f91485b376ffe16d553533f335b9183ea99754" - url: "https://pub.dev" - source: hosted - version: "4.6.10" - firebase_messaging_web: - dependency: transitive - description: - name: firebase_messaging_web - sha256: "0d1be17bc89ed3ff5001789c92df678b2e963a51b6fa2bdb467532cc9dbed390" - url: "https://pub.dev" - source: hosted - version: "3.10.10" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.dev" - source: hosted - version: "1.1.1" - fl_chart: - dependency: "direct main" - description: - name: fl_chart - sha256: "577aeac8ca414c25333334d7c4bb246775234c0e44b38b10a82b559dd4d764e7" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" - url: "https://pub.dev" - source: hosted - version: "3.4.1" - flutter_callkit_incoming: - dependency: "direct main" - description: - name: flutter_callkit_incoming - sha256: "3589deb8b71e43f2d520a9c8a5240243f611062a8b246cdca4b1fda01fbbf9b8" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - flutter_hooks: - dependency: transitive - description: - name: flutter_hooks - sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70 - url: "https://pub.dev" - source: hosted - version: "0.20.5" - flutter_inappwebview: - dependency: "direct main" - description: - name: flutter_inappwebview - sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" - url: "https://pub.dev" - source: hosted - version: "6.1.5" - flutter_inappwebview_android: - dependency: transitive - description: - name: flutter_inappwebview_android - sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - flutter_inappwebview_internal_annotations: - dependency: transitive - description: - name: flutter_inappwebview_internal_annotations - sha256: "787171d43f8af67864740b6f04166c13190aa74a1468a1f1f1e9ee5b90c359cd" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - flutter_inappwebview_ios: - dependency: transitive - description: - name: flutter_inappwebview_ios - sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_macos: - dependency: transitive - description: - name: flutter_inappwebview_macos - sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_platform_interface: - dependency: transitive - description: - name: flutter_inappwebview_platform_interface - sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 - url: "https://pub.dev" - source: hosted - version: "1.3.0+1" - flutter_inappwebview_web: - dependency: transitive - description: - name: flutter_inappwebview_web - sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" - url: "https://pub.dev" - source: hosted - version: "1.1.2" - flutter_inappwebview_windows: - dependency: transitive - description: - name: flutter_inappwebview_windows - sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" - url: "https://pub.dev" - source: hosted - version: "0.6.0" - flutter_ios_voip_kit_karmm: - dependency: "direct main" - description: - name: flutter_ios_voip_kit_karmm - sha256: "31a445d78aacacdf128a0354efb9f4e424285dfe4c0af3ea872e64f03e6f6bfc" - url: "https://pub.dev" - source: hosted - version: "0.8.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.dev" - source: hosted - version: "5.0.0" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - sha256: "7ed76be64e8a7d01dfdf250b8434618e2a028c9dfa2a3c41dc9b531d4b3fc8a5" - url: "https://pub.dev" - source: hosted - version: "19.4.2" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - sha256: e3c277b2daab8e36ac5a6820536668d07e83851aeeb79c446e525a70710770a5 - url: "https://pub.dev" - source: hosted - version: "6.0.0" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - sha256: "277d25d960c15674ce78ca97f57d0bae2ee401c844b6ac80fcd972a9c99d09fe" - url: "https://pub.dev" - source: hosted - version: "9.1.0" - flutter_local_notifications_windows: - dependency: transitive - description: - name: flutter_local_notifications_windows - sha256: "8d658f0d367c48bd420e7cf2d26655e2d1130147bca1eea917e576ca76668aaf" - url: "https://pub.dev" - source: hosted - version: "1.0.3" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_nfc_kit: - dependency: "direct main" - description: - name: flutter_nfc_kit - sha256: "3cc4059626fa672031261512299458dd274de4ccb57a7f0ee0951ddd70a048e5" - url: "https://pub.dev" - source: hosted - version: "3.6.0" - flutter_plugin_android_lifecycle: - dependency: transitive - description: - name: flutter_plugin_android_lifecycle - sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 - url: "https://pub.dev" - source: hosted - version: "2.0.30" - flutter_rating_bar: - dependency: "direct main" - description: - name: flutter_rating_bar - sha256: d2af03469eac832c591a1eba47c91ecc871fe5708e69967073c043b2d775ed93 - url: "https://pub.dev" - source: hosted - version: "4.0.1" - flutter_staggered_animations: - dependency: "direct main" - description: - name: flutter_staggered_animations - sha256: "81d3c816c9bb0dca9e8a5d5454610e21ffb068aedb2bde49d2f8d04f75538351" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - sha256: b9c2ad5872518a27507ab432d1fb97e8813b05f0fc693f9d40fad06d073e0678 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - flutter_swiper_view: - dependency: "direct main" - description: - name: flutter_swiper_view - sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" - source: hosted - version: "1.1.8" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_widget_from_html: - dependency: "direct main" - description: - name: flutter_widget_from_html - sha256: "7f1daefcd3009c43c7e7fb37501e6bb752d79aa7bfad0085fb0444da14e89bd0" - url: "https://pub.dev" - source: hosted - version: "0.17.1" - flutter_widget_from_html_core: - dependency: transitive - description: - name: flutter_widget_from_html_core - sha256: "1120ee6ed3509ceff2d55aa6c6cbc7b6b1291434422de2411b5a59364dd6ff03" - url: "https://pub.dev" - source: hosted - version: "0.17.0" - flutter_zoom_videosdk: - dependency: "direct main" - description: - name: flutter_zoom_videosdk - sha256: "46a4dea664b1c969099328a499c198a1755adf9ac333dea28bea5187910b3bf9" - url: "https://pub.dev" - source: hosted - version: "2.1.10" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8" - url: "https://pub.dev" - source: hosted - version: "8.2.14" - fwfh_cached_network_image: - dependency: transitive - description: - name: fwfh_cached_network_image - sha256: "484cb5f8047f02cfac0654fca5832bfa91bb715fd7fc651c04eb7454187c4af8" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_chewie: - dependency: transitive - description: - name: fwfh_chewie - sha256: ae74fc26798b0e74f3983f7b851e74c63b9eeb2d3015ecd4b829096b2c3f8818 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_just_audio: - dependency: transitive - description: - name: fwfh_just_audio - sha256: dfd622a0dfe049ac647423a2a8afa7f057d9b2b93d92710b624e3d370b1ac69a - url: "https://pub.dev" - source: hosted - version: "0.17.0" - fwfh_svg: - dependency: transitive - description: - name: fwfh_svg - sha256: "2e6bb241179eeeb1a7941e05c8c923b05d332d36a9085233e7bf110ea7deb915" - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_url_launcher: - dependency: transitive - description: - name: fwfh_url_launcher - sha256: c38aa8fb373fda3a89b951fa260b539f623f6edb45eee7874cb8b492471af881 - url: "https://pub.dev" - source: hosted - version: "0.16.1" - fwfh_webview: - dependency: transitive - description: - name: fwfh_webview - sha256: f71b0aa16e15d82f3c017f33560201ff5ae04e91e970cab5d12d3bcf970b870c - url: "https://pub.dev" - source: hosted - version: "0.15.6" - geoclue: - dependency: transitive - description: - name: geoclue - sha256: c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f - url: "https://pub.dev" - source: hosted - version: "0.1.1" - geolocator: - dependency: "direct main" - description: - name: geolocator - sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" - url: "https://pub.dev" - source: hosted - version: "14.0.2" - geolocator_android: - dependency: transitive - description: - name: geolocator_android - sha256: "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a" - url: "https://pub.dev" - source: hosted - version: "5.0.2" - geolocator_apple: - dependency: transitive - description: - name: geolocator_apple - sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 - url: "https://pub.dev" - source: hosted - version: "2.3.13" - geolocator_linux: - dependency: transitive - description: - name: geolocator_linux - sha256: c4e966f0a7a87e70049eac7a2617f9e16fd4c585a26e4330bdfc3a71e6a721f3 - url: "https://pub.dev" - source: hosted - version: "0.2.3" - geolocator_platform_interface: - dependency: transitive - description: - name: geolocator_platform_interface - sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" - url: "https://pub.dev" - source: hosted - version: "4.2.6" - geolocator_web: - dependency: transitive - description: - name: geolocator_web - sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 - url: "https://pub.dev" - source: hosted - version: "4.1.3" - geolocator_windows: - dependency: transitive - description: - name: geolocator_windows - sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" - url: "https://pub.dev" - source: hosted - version: "0.2.5" - get_it: - dependency: "direct main" - description: - name: get_it - sha256: a4292e7cf67193f8e7c1258203104eb2a51ec8b3a04baa14695f4064c144297b - url: "https://pub.dev" - source: hosted - version: "8.2.0" - gms_check: - dependency: "direct main" - description: - name: gms_check - sha256: b3fc08fd41da233f9761f9981303346aa9778b4802e90ce9bd8122674fcca6f0 - url: "https://pub.dev" - source: hosted - version: "1.0.4" - google_api_availability: - dependency: "direct main" - description: - name: google_api_availability - sha256: "2ffdc91e1e0cf4e7974fef6c2988a24cefa81f03526ff04b694df6dc0fcbca03" - url: "https://pub.dev" - source: hosted - version: "5.0.1" - google_api_availability_android: - dependency: transitive - description: - name: google_api_availability_android - sha256: "4794147f43a8f3eee6b514d3ae30dbe6f7b9048cae8cd2a74cb4055cd28d74a8" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - google_api_availability_platform_interface: - dependency: transitive - description: - name: google_api_availability_platform_interface - sha256: "65b7da62fe5b582bb3d508628ad827d36d890710ea274766a992a56fa5420da6" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - google_maps: - dependency: transitive - description: - name: google_maps - sha256: "5d410c32112d7c6eb7858d359275b2aa04778eed3e36c745aeae905fb2fa6468" - url: "https://pub.dev" - source: hosted - version: "8.2.0" - google_maps_flutter: - dependency: "direct main" - description: - name: google_maps_flutter - sha256: c389e16fafc04b37a4105e0757ecb9d59806026cee72f408f1ba68811d01bfe6 - url: "https://pub.dev" - source: hosted - version: "2.13.1" - google_maps_flutter_android: - dependency: transitive - description: - name: google_maps_flutter_android - sha256: a6c9d43f6a944ff4bae5c3deb34817970ac3d591dcd7f5bd2ea450ab9e9c514a - url: "https://pub.dev" - source: hosted - version: "2.18.2" - google_maps_flutter_ios: - dependency: transitive - description: - name: google_maps_flutter_ios - sha256: ca02463b19a9abc7d31fcaf22631d021d647107467f741b917a69fa26659fd75 - url: "https://pub.dev" - source: hosted - version: "2.15.5" - google_maps_flutter_platform_interface: - dependency: transitive - description: - name: google_maps_flutter_platform_interface - sha256: f4b9b44f7b12a1f6707ffc79d082738e0b7e194bf728ee61d2b3cdf5fdf16081 - url: "https://pub.dev" - source: hosted - version: "2.14.0" - google_maps_flutter_web: - dependency: transitive - description: - name: google_maps_flutter_web - sha256: "53e5dbf73ff04153acc55a038248706967c21d5b6ef6657a57fce2be73c2895a" - url: "https://pub.dev" - source: hosted - version: "0.5.14+2" - gsettings: - dependency: transitive - description: - name: gsettings - sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" - url: "https://pub.dev" - source: hosted - version: "0.2.8" - health: - dependency: "direct main" - description: - name: health - sha256: "320633022fb2423178baa66508001c4ca5aee5806ffa2c913e66488081e9fd47" - url: "https://pub.dev" - source: hosted - version: "13.1.4" - hijri_gregorian_calendar: - dependency: "direct main" - description: - name: hijri_gregorian_calendar - sha256: aecdbe3c9365fac55f17b5e1f24086a81999b1e5c9372cb08888bfbe61e07fa1 - url: "https://pub.dev" - source: hosted - version: "0.1.1" - html: - dependency: transitive - description: - name: html - sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://pub.dev" - source: hosted - version: "0.15.6" - http: - dependency: "direct main" - description: - name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 - url: "https://pub.dev" - source: hosted - version: "1.5.0" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" - huawei_health: - dependency: "direct main" - description: - name: huawei_health - sha256: "52fb9990e1fc857e2fa1b1251dde63b2146086a13b2d9c50bdfc3c4f715c8a12" - url: "https://pub.dev" - source: hosted - version: "6.16.0+300" - huawei_location: - dependency: "direct main" - description: - name: huawei_location - sha256: "3100d6b2b11df56481b8deade71baa84970e0bae0ade6ec56407be2b036af355" - url: "https://pub.dev" - source: hosted - version: "6.14.2+301" - huawei_map: - dependency: "direct main" - description: - path: flutter-hms-map - ref: HEAD - resolved-ref: "9a16541e4016e3bf58a2571e6aa658a4751af399" - url: "https://github.com/fleoparra/hms-flutter-plugin.git" - source: git - version: "6.11.2+303" - image_picker: - dependency: "direct main" - description: - name: image_picker - sha256: "736eb56a911cf24d1859315ad09ddec0b66104bc41a7f8c5b96b4e2620cf5041" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - image_picker_android: - dependency: transitive - description: - name: image_picker_android - sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e" - url: "https://pub.dev" - source: hosted - version: "0.8.13+1" - image_picker_for_web: - dependency: transitive - description: - name: image_picker_for_web - sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - image_picker_ios: - dependency: transitive - description: - name: image_picker_ios - sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e - url: "https://pub.dev" - source: hosted - version: "0.8.13" - image_picker_linux: - dependency: transitive - description: - name: image_picker_linux - sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_macos: - dependency: transitive - description: - name: image_picker_macos - sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 - url: "https://pub.dev" - source: hosted - version: "0.2.2" - image_picker_platform_interface: - dependency: transitive - description: - name: image_picker_platform_interface - sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - image_picker_windows: - dependency: transitive - description: - name: image_picker_windows - sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae - url: "https://pub.dev" - source: hosted - version: "0.2.2" - intl: - dependency: "direct main" - description: - name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://pub.dev" - source: hosted - version: "0.20.2" - jiffy: - dependency: "direct main" - description: - name: jiffy - sha256: "9bafbfe6d97587048bf449165e050029e716a12438f54a3d39e7e3a256decdac" - url: "https://pub.dev" - source: hosted - version: "6.4.3" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" - source: hosted - version: "4.9.0" - just_audio: - dependency: "direct main" - description: - name: just_audio - sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" - url: "https://pub.dev" - source: hosted - version: "0.10.5" - just_audio_platform_interface: - dependency: transitive - description: - name: just_audio_platform_interface - sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" - url: "https://pub.dev" - source: hosted - version: "4.6.0" - just_audio_web: - dependency: transitive - description: - name: just_audio_web - sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" - url: "https://pub.dev" - source: hosted - version: "0.4.16" - keyboard_actions: - dependency: "direct main" - description: - name: keyboard_actions - sha256: "31e0ab2a706ac8f58887efa60efc1f19aecdf37d8ab0f665a0f156d1fbeab650" - url: "https://pub.dev" - source: hosted - version: "4.2.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" - url: "https://pub.dev" - source: hosted - version: "11.0.2" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" - url: "https://pub.dev" - source: hosted - version: "3.0.10" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - lints: - dependency: transitive - description: - name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.dev" - source: hosted - version: "5.1.1" - local_auth: - dependency: "direct main" - description: - name: local_auth - sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - local_auth_android: - dependency: transitive - description: - name: local_auth_android - sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3" - url: "https://pub.dev" - source: hosted - version: "1.0.52" - local_auth_darwin: - dependency: transitive - description: - name: local_auth_darwin - sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055" - url: "https://pub.dev" - source: hosted - version: "1.6.0" - local_auth_platform_interface: - dependency: transitive - description: - name: local_auth_platform_interface - sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a" - url: "https://pub.dev" - source: hosted - version: "1.0.10" - local_auth_windows: - dependency: transitive - description: - name: local_auth_windows - sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5 - url: "https://pub.dev" - source: hosted - version: "1.0.11" - location: - dependency: "direct main" - description: - name: location - sha256: b080053c181c7d152c43dd576eec6436c40e25f326933051c330da563ddd5333 - url: "https://pub.dev" - source: hosted - version: "8.0.1" - location_platform_interface: - dependency: transitive - description: - name: location_platform_interface - sha256: ca8700bb3f6b1e8b2afbd86bd78b2280d116c613ca7bfa1d4d7b64eba357d749 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - location_web: - dependency: transitive - description: - name: location_web - sha256: b8e3add5efe0d65c5e692b7a135d80a4015c580d3ea646fa71973e97668dd868 - url: "https://pub.dev" - source: hosted - version: "6.0.1" - logger: - dependency: "direct main" - description: - name: logger - sha256: "55d6c23a6c15db14920e037fe7e0dc32e7cdaf3b64b4b25df2d541b5b6b81c0c" - url: "https://pub.dev" - source: hosted - version: "2.6.1" - logging: - dependency: transitive - description: - name: logging - sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.dev" - source: hosted - version: "1.3.0" - lottie: - dependency: "direct main" - description: - name: lottie - sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 - url: "https://pub.dev" - source: hosted - version: "3.3.1" - manage_calendar_events: - dependency: "direct main" - description: - name: manage_calendar_events - sha256: f17600fcb7dc7047120c185993045e493d686930237b4e3c2689c26a64513d66 - url: "https://pub.dev" - source: hosted - version: "2.0.3" - maps_launcher: - dependency: "direct main" - description: - name: maps_launcher - sha256: dac4c609720211fa6336b5903d917fe45e545c6b5665978efc3db2a3f436b1ae - url: "https://pub.dev" - source: hosted - version: "3.0.0+1" - matcher: - dependency: transitive - description: - name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://pub.dev" - source: hosted - version: "0.12.17" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.dev" - source: hosted - version: "0.11.1" - meta: - dependency: transitive - description: - name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://pub.dev" - source: hosted - version: "1.16.0" - mime: - dependency: transitive - description: - name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - ndef: - dependency: transitive - description: - name: ndef - sha256: "5083507cff4bb823b2a198a27ea2c70c4d6bc27a97b66097d966a250e1615d54" - url: "https://pub.dev" - source: hosted - version: "0.3.4" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - network_info_plus: - dependency: "direct main" - description: - name: network_info_plus - sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 - url: "https://pub.dev" - source: hosted - version: "6.1.4" - network_info_plus_platform_interface: - dependency: transitive - description: - name: network_info_plus_platform_interface - sha256: "7e7496a8a9d8136859b8881affc613c4a21304afeb6c324bcefc4bd0aff6b94b" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - nm: - dependency: transitive - description: - name: nm - sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - octo_image: - dependency: transitive - description: - name: octo_image - sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - open_filex: - dependency: "direct main" - description: - name: open_filex - sha256: "9976da61b6a72302cf3b1efbce259200cd40232643a467aac7370addf94d6900" - url: "https://pub.dev" - source: hosted - version: "4.7.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" - url: "https://pub.dev" - source: hosted - version: "8.3.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" - url: "https://pub.dev" - source: hosted - version: "2.2.18" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - permission_handler: - dependency: "direct main" - description: - name: permission_handler - sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 - url: "https://pub.dev" - source: hosted - version: "12.0.1" - permission_handler_android: - dependency: transitive - description: - name: permission_handler_android - sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" - url: "https://pub.dev" - source: hosted - version: "13.0.1" - permission_handler_apple: - dependency: transitive - description: - name: permission_handler_apple - sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 - url: "https://pub.dev" - source: hosted - version: "9.4.7" - permission_handler_html: - dependency: transitive - description: - name: permission_handler_html - sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" - url: "https://pub.dev" - source: hosted - version: "0.1.3+5" - permission_handler_platform_interface: - dependency: transitive - description: - name: permission_handler_platform_interface - sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 - url: "https://pub.dev" - source: hosted - version: "4.3.0" - permission_handler_windows: - dependency: transitive - description: - name: permission_handler_windows - sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" - url: "https://pub.dev" - source: hosted - version: "0.2.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" - url: "https://pub.dev" - source: hosted - version: "7.0.1" - platform: - dependency: transitive - description: - name: platform - sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.dev" - source: hosted - version: "3.1.6" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" - source: hosted - version: "2.1.8" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - posix: - dependency: transitive - description: - name: posix - sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" - url: "https://pub.dev" - source: hosted - version: "6.0.3" - protobuf: - dependency: transitive - description: - name: protobuf - sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" - url: "https://pub.dev" - source: hosted - version: "6.0.0" - provider: - dependency: "direct main" - description: - name: provider - sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" - url: "https://pub.dev" - source: hosted - version: "6.1.5+1" - quiver: - dependency: transitive - description: - name: quiver - sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - rrule: - dependency: transitive - description: - name: rrule - sha256: b7425410c594d4b6717c9f17ec8ef83c9d1ff2e513c428a135b5924fc2e8e045 - url: "https://pub.dev" - source: hosted - version: "0.2.17" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.dev" - source: hosted - version: "0.28.0" - sanitize_html: - dependency: transitive - description: - name: sanitize_html - sha256: "12669c4a913688a26555323fb9cec373d8f9fbe091f2d01c40c723b33caa8989" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - scrollable_positioned_list: - dependency: "direct main" - description: - name: scrollable_positioned_list - sha256: "1b54d5f1329a1e263269abc9e2543d90806131aa14fe7c6062a8054d57249287" - url: "https://pub.dev" - source: hosted - version: "0.3.8" - share_plus: - dependency: "direct main" - description: - name: share_plus - sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - share_plus_platform_interface: - dependency: transitive - description: - name: share_plus_platform_interface - sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" - url: "https://pub.dev" - source: hosted - version: "6.1.0" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" - url: "https://pub.dev" - source: hosted - version: "2.5.3" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e - url: "https://pub.dev" - source: hosted - version: "2.4.13" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" - url: "https://pub.dev" - source: hosted - version: "2.5.4" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 - url: "https://pub.dev" - source: hosted - version: "2.4.3" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - shimmer: - dependency: "direct main" - description: - name: shimmer - sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - sizer: - dependency: "direct main" - description: - name: sizer - sha256: "9963c89e4d30d7c2108de3eafc0a7e6a4a8009799376ea6be5ef0a9ad87cfbad" - url: "https://pub.dev" - source: hosted - version: "3.1.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - smooth_corner: - dependency: "direct main" - description: - name: smooth_corner - sha256: "112d7331f82ead81ec870c5d1eb0624f2e7e367eccd166c2fffe4c11d4f87c4f" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - sms_otp_auto_verify: - dependency: "direct main" - description: - name: sms_otp_auto_verify - sha256: ee02af0d6b81d386ef70d7d0317a1929bc0b4a3a30a451284450bbcf6901ba1a - url: "https://pub.dev" - source: hosted - version: "2.2.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://pub.dev" - source: hosted - version: "1.10.1" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - sqflite: - dependency: transitive - description: - name: sqflite - sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_android: - dependency: transitive - description: - name: sqflite_android - sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6" - url: "https://pub.dev" - source: hosted - version: "2.5.6" - sqflite_darwin: - dependency: transitive - description: - name: sqflite_darwin - sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - sqflite_platform_interface: - dependency: transitive - description: - name: sqflite_platform_interface - sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - syncfusion_flutter_calendar: - dependency: "direct main" - description: - name: syncfusion_flutter_calendar - sha256: "8e8a4eef01d6a82ae2c17e76d497ff289ded274de014c9f471ffabc12d1e2e71" - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_core: - dependency: transitive - description: - name: syncfusion_flutter_core - sha256: bfd026c0f9822b49ff26fed11cd3334519acb6a6ad4b0c81d9cd18df6af1c4c0 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_flutter_datepicker: - dependency: transitive - description: - name: syncfusion_flutter_datepicker - sha256: b5f35cc808e91b229d41613efe71dadab1549a35bfd493f922fc06ccc2fe908c - url: "https://pub.dev" - source: hosted - version: "30.2.7" - syncfusion_localizations: - dependency: transitive - description: - name: syncfusion_localizations - sha256: bb32b07879b4c1dee5d4c8ad1c57343a4fdae55d65a87f492727c11b68f23164 - url: "https://pub.dev" - source: hosted - version: "30.2.7" - synchronized: - dependency: transitive - description: - name: synchronized - sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 - url: "https://pub.dev" - source: hosted - version: "3.4.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - time: - dependency: transitive - description: - name: time - sha256: "370572cf5d1e58adcb3e354c47515da3f7469dac3a95b447117e728e7be6f461" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - timezone: - dependency: "direct main" - description: - name: timezone - sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 - url: "https://pub.dev" - source: hosted - version: "0.10.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://pub.dev" - source: hosted - version: "6.3.2" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e" - url: "https://pub.dev" - source: hosted - version: "6.3.20" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 - url: "https://pub.dev" - source: hosted - version: "6.3.4" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f - url: "https://pub.dev" - source: hosted - version: "3.2.3" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" - url: "https://pub.dev" - source: hosted - version: "3.1.4" - uuid: - dependency: "direct main" - description: - name: uuid - sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff - url: "https://pub.dev" - source: hosted - version: "4.5.1" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.dev" - source: hosted - version: "1.1.13" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc - url: "https://pub.dev" - source: hosted - version: "1.1.19" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b - url: "https://pub.dev" - source: hosted - version: "2.2.0" - video_player: - dependency: transitive - description: - name: video_player - sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://pub.dev" - source: hosted - version: "2.10.0" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: "6cfe0b1e102522eda1e139b82bf00602181c5844fd2885340f595fb213d74842" - url: "https://pub.dev" - source: hosted - version: "2.8.14" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd - url: "https://pub.dev" - source: hosted - version: "2.8.4" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a - url: "https://pub.dev" - source: hosted - version: "6.4.0" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 - url: "https://pub.dev" - source: hosted - version: "15.0.0" - wakelock_plus: - dependency: transitive - description: - name: wakelock_plus - sha256: "61713aa82b7f85c21c9f4cd0a148abd75f38a74ec645fcb1e446f882c82fd09b" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - wakelock_plus_platform_interface: - dependency: transitive - description: - name: wakelock_plus_platform_interface - sha256: "036deb14cd62f558ca3b73006d52ce049fabcdcb2eddfe0bf0fe4e8a943b5cf2" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - web: - dependency: "direct main" - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba - url: "https://pub.dev" - source: hosted - version: "4.13.0" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3" - url: "https://pub.dev" - source: hosted - version: "4.10.1" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "63d26ee3aca7256a83ccb576a50272edd7cfc80573a4305caa98985feb493ee0" - url: "https://pub.dev" - source: hosted - version: "2.14.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: fb46db8216131a3e55bcf44040ca808423539bc6732e7ed34fb6d8044e3d512f - url: "https://pub.dev" - source: hosted - version: "3.23.0" - win32: - dependency: transitive - description: - name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" - url: "https://pub.dev" - source: hosted - version: "5.14.0" - win32_registry: - dependency: transitive - description: - name: win32_registry - sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - xml: - dependency: transitive - description: - name: xml - sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" - url: "https://pub.dev" - source: hosted - version: "6.6.1" -sdks: - dart: ">=3.8.1 <4.0.0" - flutter: ">=3.32.0" From f54ce71177f9cb4dbca7b13b90fefde1dc53268b Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 21 Jan 2026 10:07:15 +0300 Subject: [PATCH 18/67] translation changes --- lib/core/utils/utils.dart | 3 +- .../widgets/otp_verification_screen.dart | 16 +++---- .../appointment_details_page.dart | 46 +++++++++--------- .../appointment_payment_page.dart | 14 +++--- .../hospital_bottom_sheet_body.dart | 12 ++--- lib/presentation/authentication/login.dart | 18 +++---- .../authentication/quick_login.dart | 10 ++-- lib/presentation/authentication/register.dart | 24 +++++----- .../authentication/register_step2.dart | 36 +++++++------- .../book_appointment_page.dart | 48 +++++++++---------- .../book_appointment/select_clinic_page.dart | 8 ++-- .../widgets/appointment_calendar.dart | 6 +-- .../home/widgets/large_service_card.dart | 2 +- .../home/widgets/small_service_card.dart | 2 +- lib/presentation/lab/lab_orders_page.dart | 2 +- .../lab/lab_results/lab_result_details.dart | 8 ++-- .../medical_file/medical_file_page.dart | 16 +++---- .../profile_settings/profile_settings.dart | 31 ++++++------ lib/services/dialog_service.dart | 12 ++--- lib/widgets/app_language_change.dart | 2 +- lib/widgets/common_bottom_sheet.dart | 4 +- lib/widgets/input_widget.dart | 14 ++++-- 22 files changed, 171 insertions(+), 163 deletions(-) diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index e5b0ca43..59954385 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -814,7 +814,8 @@ class Utils { child: Utils.buildSvgWithAssets(icon: AppAssets.saudi_riyal_icon, width: iconSize.h, height: iconSize.h, iconColor: iconColor), ), TextSpan( - text: NumberFormat.currency(locale: 'en_US', symbol: " ", decimalDigits: 0).format(habibWalletAmount), + // text: NumberFormat.currency(locale: 'en_US', symbol: " ", decimalDigits: 0).format(habibWalletAmount), + text: " ${habibWalletAmount.toStringAsFixed(2)}", style: TextStyle( color: textColor, fontSize: fontSize ?? 32.f, diff --git a/lib/features/authentication/widgets/otp_verification_screen.dart b/lib/features/authentication/widgets/otp_verification_screen.dart index e33222c0..7ddccda8 100644 --- a/lib/features/authentication/widgets/otp_verification_screen.dart +++ b/lib/features/authentication/widgets/otp_verification_screen.dart @@ -545,20 +545,20 @@ class _OTPVerificationScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 10.h), - LocaleKeys.otpVerification.tr().toText24(isBold: true), + LocaleKeys.otpVerification.tr(context: context).toText24(isBold: true), SizedBox(height: 20.h), Wrap( spacing: 2.h, runSpacing: 2.h, children: [ - LocaleKeys.weHaveSendOTP.tr().toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), + LocaleKeys.weHaveSendOTP.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), _getMaskedPhoneNumber().toText15(color: AppColors.inputLabelTextColor, isBold: true), - LocaleKeys.via.tr().toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), + LocaleKeys.via.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), (widget.isFormFamilyFile ? LoginTypeEnum.sms.displayName : authVM.loginTypeEnum.displayName) .toText15(color: AppColors.inputLabelTextColor, isBold: true, letterSpacing: -0.4), appState.getUserRegistrationPayload.isRegister != null && appState.getUserRegistrationPayload.isRegister == true - ? LocaleKeys.forRegistrationVerification.tr().toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4) - : LocaleKeys.forLoginVerification.tr().toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), + ? LocaleKeys.forRegistrationVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4) + : LocaleKeys.forLoginVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), ], ), @@ -590,7 +590,7 @@ class _OTPVerificationScreenState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.didntReceiveIt.tr().toText16(color: AppColors.inputLabelTextColor), + LocaleKeys.didntReceiveIt.tr(context: context).toText16(color: AppColors.inputLabelTextColor), SizedBox(width: 5.h), if (_resendTime > 0) Builder( @@ -599,7 +599,7 @@ class _OTPVerificationScreenState extends State { final seconds = (_resendTime % 60).toString().padLeft(2, '0'); return Row( children: [ - LocaleKeys.resendIn.tr().toText16(color: AppColors.inputLabelTextColor), + LocaleKeys.resendIn.tr(context: context).toText16(color: AppColors.inputLabelTextColor), SizedBox(width: 2.h), ' ($minutes:$seconds). '.toText16(color: AppColors.inputLabelTextColor) ], @@ -609,7 +609,7 @@ class _OTPVerificationScreenState extends State { else GestureDetector( onTap: _resendOtp, - child: LocaleKeys.resendOTP.tr().toText16(color: AppColors.primaryRedColor), + child: LocaleKeys.resendOTP.tr(context: context).toText16(color: AppColors.primaryRedColor), ), ], ), diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 0b8066e1..3f98e6d4 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -87,7 +87,7 @@ class _AppointmentDetailsPageState extends State { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.appointmentDetails.tr(), + title: LocaleKeys.appointmentDetails.tr(context: context), report: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? () { contactUsViewModel.setPatientFeedbackSelectedAppointment(widget.patientAppointmentHistoryResponseModel); @@ -105,7 +105,7 @@ class _AppointmentDetailsPageState extends State { AppointmentDoctorCard( patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onAskDoctorTap: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); await myAppointmentsViewModel.isDoctorAvailable( projectID: widget.patientAppointmentHistoryResponseModel.projectID, doctorId: widget.patientAppointmentHistoryResponseModel.doctorID, @@ -135,7 +135,7 @@ class _AppointmentDetailsPageState extends State { onCancelTap: () async { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr(context: context)); await myAppointmentsViewModel.cancelAppointment( patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onSuccess: (apiResponse) { @@ -144,7 +144,7 @@ class _AppointmentDetailsPageState extends State { myAppointmentsViewModel.getPatientAppointments(true, false); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentCancelledSuccessfully.tr()), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentCancelledSuccessfully.tr(context: context)), callBackFunc: () { Navigator.of(context).pop(); }, @@ -181,13 +181,13 @@ class _AppointmentDetailsPageState extends State { children: [ Row( children: [ - LocaleKeys.appointmentStatus.tr().toText16(isBold: true), + LocaleKeys.appointmentStatus.tr(context: context).toText16(isBold: true), ], ), SizedBox(height: 4.h), (!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) - ? LocaleKeys.notConfirmed.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) - : LocaleKeys.confirmed.tr().toText12(color: AppColors.successColor, fontWeight: FontWeight.w500)), + ? LocaleKeys.notConfirmed.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) + : LocaleKeys.confirmed.tr(context: context).toText12(color: AppColors.successColor, fontWeight: FontWeight.w500)), SizedBox(height: 16.h), //TODO Add countdown timer in case of LiveCare Appointment widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false @@ -199,7 +199,7 @@ class _AppointmentDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.doctorWillCallYou.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.doctorWillCallYou.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ), @@ -225,7 +225,7 @@ class _AppointmentDetailsPageState extends State { MapsLauncher.launchCoordinates(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!), widget.patientAppointmentHistoryResponseModel.projectName); }, - text: LocaleKeys.getDirections.tr(), + text: LocaleKeys.getDirections.tr(context: context), backgroundColor: AppColors.textColor.withValues(alpha: 0.8), borderColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), textColor: AppColors.whiteColor, @@ -280,7 +280,7 @@ class _AppointmentDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.setReminder.tr(context: context).toText13(isBold: true), - LocaleKeys.notifyMeBeforeAppointment.tr().toText11(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.notifyMeBeforeAppointment.tr(context: context).toText11(color: AppColors.textColorLight, weight: FontWeight.w500), ], ), const Spacer(), @@ -365,7 +365,7 @@ class _AppointmentDetailsPageState extends State { isLargeText: true, iconSize: 36.w, ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingLabResults.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingLabResults.tr(context: context)); await labViewModel.getLabResultsByAppointmentNo( appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, projectID: widget.patientAppointmentHistoryResponseModel.projectID, @@ -398,7 +398,7 @@ class _AppointmentDetailsPageState extends State { isLargeText: true, iconSize: 36.w, ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingRadiologyResults.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingRadiologyResults.tr(context: context)); await radiologyViewModel.getPatientRadiologyOrdersByAppointment( appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, projectID: widget.patientAppointmentHistoryResponseModel.projectID, @@ -425,7 +425,7 @@ class _AppointmentDetailsPageState extends State { isLargeText: true, iconSize: 36.w, ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointmentPrescriptions.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointmentPrescriptions.tr(context: context)); await prescriptionsViewModel.getPrescriptionDetails( getPrescriptionRequestModel(), onSuccess: (val) { @@ -453,7 +453,7 @@ class _AppointmentDetailsPageState extends State { } else { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.noPrescriptionsForAppointment.tr()), + child: Utils.getErrorWidget(loadingText: LocaleKeys.noPrescriptionsForAppointment.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -522,7 +522,7 @@ class _AppointmentDetailsPageState extends State { // ], // ), // SizedBox(height: 16.h), - // LocaleKeys.prescriptions.tr().toText18(isBold: true), + // LocaleKeys.prescriptions.tr(context: context).toText18(isBold: true), // SizedBox(height: 16.h), // Consumer(builder: (context, prescriptionVM, child) { // return prescriptionVM.isPrescriptionsDetailsLoading @@ -708,7 +708,7 @@ class _AppointmentDetailsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.amountBeforeTax.tr().toText18(isBold: true), + LocaleKeys.amountBeforeTax.tr(context: context).toText18(isBold: true), Utils.getPaymentAmountWithSymbol( widget.patientAppointmentHistoryResponseModel.patientShare!.toString().toText16(isBold: true), AppColors.blackColor, @@ -752,7 +752,7 @@ class _AppointmentDetailsPageState extends State { ).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h), AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? CustomButton( - text: LocaleKeys.rebookAppointment.tr(), + text: LocaleKeys.rebookAppointment.tr(context: context), onPressed: () { openDoctorScheduleCalendar(); }, @@ -810,13 +810,13 @@ class _AppointmentDetailsPageState extends State { projectName: widget.patientAppointmentHistoryResponseModel.projectName, ); bookAppointmentsViewModel.setSelectedDoctor(doctor); - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingDoctorSchedulePleaseWait.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingDoctorSchedulePleaseWait.tr(context: context)); await bookAppointmentsViewModel.getDoctorFreeSlots( isBookingForLiveCare: false, onSuccess: (dynamic respData) async { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( - title: LocaleKeys.pickADate.tr(), + title: LocaleKeys.pickADate.tr(context: context), context, child: AppointmentCalendar(), isFullScreen: false, @@ -841,14 +841,14 @@ class _AppointmentDetailsPageState extends State { case 0: break; case 10: - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingAppointmentPleaseWait.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingAppointmentPleaseWait.tr(context: context)); await myAppointmentsViewModel.confirmAppointment( patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onSuccess: (apiResponse) { LoaderBottomSheet.hideLoader(); myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.getPatientAppointments(true, false); - showCommonBottomSheet(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr()), callBackFunc: (str) { + showCommonBottomSheet(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), callBackFunc: (str) { Navigator.of(context).pop(); }, title: "", @@ -869,10 +869,10 @@ class _AppointmentDetailsPageState extends State { ), ); case 50: - // return LocaleKeys.confirmLiveCare.tr(); + // return LocaleKeys.confirmLiveCare.tr(context: context); case 90: showCommonBottomSheetWithoutHeight(context, - title: LocaleKeys.onlineCheckIn.tr(), + title: LocaleKeys.onlineCheckIn.tr(context: context), child: AppointmentCheckinBottomSheet( patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, myAppointmentsViewModel: myAppointmentsViewModel, diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart index a38a9f1f..f817a898 100644 --- a/lib/presentation/appointments/appointment_payment_page.dart +++ b/lib/presentation/appointments/appointment_payment_page.dart @@ -90,7 +90,7 @@ class _AppointmentPaymentPageState extends State { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.appointmentPayment.tr(), + title: LocaleKeys.appointmentPayment.tr(context: context), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -248,7 +248,7 @@ class _AppointmentPaymentPageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.insuranceExpiredOrInactive.tr() + LocaleKeys.insuranceExpiredOrInactive.tr(context: context) .toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500) .paddingSymmetrical(24.h, 0.h), CustomButton( @@ -274,12 +274,12 @@ class _AppointmentPaymentPageState extends State { ) : const SizedBox(), SizedBox(height: 24.h), - LocaleKeys.totalAmountToPay.tr().toText18(isBold: true).paddingSymmetrical(24.h, 0.h), + LocaleKeys.totalAmountToPay.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.amountBeforeTax.tr().toText14(isBold: true), + LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol( myAppointmentsVM.patientAppointmentShareResponseModel!.patientShare!.toString().toText16(isBold: true), AppColors.blackColor, @@ -380,7 +380,7 @@ class _AppointmentPaymentPageState extends State { } void checkPaymentStatus() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); if (selectedPaymentMethod == "TAMARA") { await payfortViewModel.checkTamaraPaymentStatus( transactionID: transID, @@ -438,7 +438,7 @@ class _AppointmentPaymentPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr()), + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -519,7 +519,7 @@ class _AppointmentPaymentPageState extends State { } else { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr()), + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart index eed45dfb..f3301f0c 100644 --- a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart +++ b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart @@ -32,7 +32,7 @@ import '../../../emergency_services/call_ambulance/widgets/type_selection_widget // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // Text( -// LocaleKeys.selectHospital.tr(), +// LocaleKeys.selectHospital.tr(context: context), // style: TextStyle( // fontSize: 21, // fontWeight: FontWeight.w600, @@ -40,7 +40,7 @@ import '../../../emergency_services/call_ambulance/widgets/type_selection_widget // ), // ), // Text( -// LocaleKeys.selectHospitalSubTitle.tr(), +// LocaleKeys.selectHospitalSubTitle.tr(context: context), // style: TextStyle( // fontSize: 16, // fontWeight: FontWeight.w500, @@ -49,8 +49,8 @@ import '../../../emergency_services/call_ambulance/widgets/type_selection_widget // ), // SizedBox(height: 16.h), // TextInputWidget( -// labelText: LocaleKeys.search.tr(), -// hintText: LocaleKeys.searchHospital.tr(), +// labelText: LocaleKeys.search.tr(context: context), +// hintText: LocaleKeys.searchHospital.tr(context: context), // controller: searchText, // onChange: (value) { // appointmentsViewModel.filterHospitalListByString( @@ -135,8 +135,8 @@ class HospitalBottomSheetBody extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextInputWidget( - labelText: LocaleKeys.search.tr(), - hintText: LocaleKeys.searchHospital.tr(), + labelText: LocaleKeys.search.tr(context: context), + hintText: LocaleKeys.searchHospital.tr(context: context), controller: searchText, onChange: (value) { debouncer.run((){ diff --git a/lib/presentation/authentication/login.dart b/lib/presentation/authentication/login.dart index a59062d6..6dcf15fb 100644 --- a/lib/presentation/authentication/login.dart +++ b/lib/presentation/authentication/login.dart @@ -71,10 +71,10 @@ class LoginScreenState extends State { children: [ Utils.showLottie(context: context, assetPath: AppAnimations.login, width: 200.h, height: 200.h, repeat: true, fit: BoxFit.cover), SizedBox(height: 130.h), // Adjusted to sizer unit - LocaleKeys.welcomeToDrSulaiman.tr().toText32(isBold: true, color: AppColors.textColor), + LocaleKeys.welcomeToDrSulaiman.tr(context: context).toText32(isBold: true, color: AppColors.textColor), SizedBox(height: 32.h), TextInputWidget( - labelText: "${LocaleKeys.nationalId.tr()} / ${LocaleKeys.fileNo.tr()}", + labelText: "${LocaleKeys.nationalId.tr(context: context)} / ${LocaleKeys.fileNo.tr(context: context)}", hintText: "xxxxxxxxx", controller: authVm.nationalIdController, focusNode: _nationalIdFocusNode, @@ -87,13 +87,13 @@ class LoginScreenState extends State { isAllowLeadingIcon: true, padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 10.h), leadingIcon: AppAssets.student_card, - errorMessage: LocaleKeys.enterValidIDorIqama.tr(), + errorMessage: LocaleKeys.enterValidIDorIqama.tr(context: context), hasError: false, ), SizedBox(height: 16.h), CustomButton( height: 50.h, - text: LocaleKeys.login.tr(), + text: LocaleKeys.login.tr(context: context), icon: AppAssets.login1, iconColor: Colors.white, onPressed: () { @@ -116,10 +116,10 @@ class LoginScreenState extends State { text: TextSpan( style: context.dynamicTextStyle(color: Colors.black, fontSize: 14.f, height: 26 / 16, fontWeight: FontWeight.w500), children: [ - TextSpan(text: LocaleKeys.dontHaveAccount.tr(), style: context.dynamicTextStyle()), + TextSpan(text: LocaleKeys.dontHaveAccount.tr(context: context), style: context.dynamicTextStyle()), TextSpan(text: " "), TextSpan( - text: LocaleKeys.registernow.tr(), + text: LocaleKeys.registernow.tr(context: context), style: context.dynamicTextStyle( color: AppColors.primaryRedColor, fontSize: 14.f, // Adjusted to sizer unit @@ -172,7 +172,7 @@ class LoginScreenState extends State { Padding( padding: EdgeInsets.only(bottom: 10.h), child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(), + text: LocaleKeys.sendOTPSMS.tr(context: context), onPressed: () async { if (ValidationUtils.isValidatePhone( phoneNumber: phoneNumberController!.text, @@ -196,14 +196,14 @@ class LoginScreenState extends State { children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 8.h), - child: LocaleKeys.oR.tr().toText16(color: AppColors.textColor), + child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), ), ], ), Padding( padding: EdgeInsets.only(bottom: 10.h, top: 10.h), child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(), + text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), onPressed: () async { if (ValidationUtils.isValidatePhone( phoneNumber: phoneNumberController!.text, diff --git a/lib/presentation/authentication/quick_login.dart b/lib/presentation/authentication/quick_login.dart index bdeb0fff..fbcb17d8 100644 --- a/lib/presentation/authentication/quick_login.dart +++ b/lib/presentation/authentication/quick_login.dart @@ -49,7 +49,7 @@ class QuickLoginState extends State { ], ), Utils.showLottie(context: context, assetPath: AppAnimations.checkmark, width: 120, height: 120, repeat: true), - LocaleKeys.allSet.tr().toText16(textAlign: TextAlign.center, weight: FontWeight.w500) + LocaleKeys.allSet.tr(context: context).toText16(textAlign: TextAlign.center, weight: FontWeight.w500) // Text( // ' TranslationBase.of(context).allSet', // textAlign: TextAlign.center, @@ -67,7 +67,7 @@ class QuickLoginState extends State { children: [ Image.asset(AppAssets.lockIcon, height: 100), SizedBox(height: 10.h), - LocaleKeys.enableQuickLogin.tr().toText26(isBold: true), + LocaleKeys.enableQuickLogin.tr(context: context).toText26(isBold: true), // Text( // ' TranslationBase.of(context).enableQuickLogin', // style: context.dynamicTextStyle( @@ -77,7 +77,7 @@ class QuickLoginState extends State { // ), // ), SizedBox(height: 5.h), - LocaleKeys.enableQuickLogin.tr().toText16(color: AppColors.quickLoginColor), + LocaleKeys.enableQuickLogin.tr(context: context).toText16(color: AppColors.quickLoginColor), // Description // Text( // 'TranslationBase.of(context).enableMsg', @@ -94,7 +94,7 @@ class QuickLoginState extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.enableQuickLogin.tr(), + text: LocaleKeys.enableQuickLogin.tr(context: context), onPressed: () { widget.onPressed(); }, @@ -114,7 +114,7 @@ class QuickLoginState extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.notNow.tr(), + text: LocaleKeys.notNow.tr(context: context), onPressed: () { cacheService.saveBool(key: CacheConst.quickLoginEnabled, value: false); Navigator.pop(context, "true"); diff --git a/lib/presentation/authentication/register.dart b/lib/presentation/authentication/register.dart index fa10b95d..d14419f7 100644 --- a/lib/presentation/authentication/register.dart +++ b/lib/presentation/authentication/register.dart @@ -80,7 +80,7 @@ class _RegisterNew extends State { children: [ Utils.showLottie(context: context, assetPath: 'assets/animations/lottie/register.json', width: 200.w, height: 200.h, fit: BoxFit.cover, repeat: true), SizedBox(height: 16.h), - LocaleKeys.prepareToElevate.tr().toText32(isBold: true), + LocaleKeys.prepareToElevate.tr(context: context).toText32(isBold: true), SizedBox(height: 24.h), Directionality( textDirection: Directionality.of(context), @@ -96,7 +96,7 @@ class _RegisterNew extends State { ).withVerticalPadding(8.h), Divider(height: 1.h), TextInputWidget( - labelText: LocaleKeys.nationalIdNumber.tr(), + labelText: LocaleKeys.nationalIdNumber.tr(context: context), hintText: "xxxxxxxxx", controller: authVm.nationalIdController, focusNode: _nationalIdFocusNode, @@ -111,7 +111,7 @@ class _RegisterNew extends State { ).withVerticalPadding(8), Divider(height: 1), TextInputWidget( - labelText: LocaleKeys.dob.tr(), + labelText: LocaleKeys.dob.tr(context: context), hintText: "11 July, 1994", controller: authVm.dobController, focusNode: _dobFocusNode, @@ -156,7 +156,7 @@ class _RegisterNew extends State { Row( children: [ Text( - LocaleKeys.iAcceptThe.tr(), + LocaleKeys.iAcceptThe.tr(context: context), style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), ), GestureDetector( @@ -165,7 +165,7 @@ class _RegisterNew extends State { Navigator.of(context).pushNamed('/terms'); }, child: Text( - LocaleKeys.termsConditoins.tr(), + LocaleKeys.termsConditoins.tr(context: context), style: context.dynamicTextStyle( fontSize: 14.f, fontWeight: FontWeight.w500, @@ -179,7 +179,7 @@ class _RegisterNew extends State { ), // Expanded( // child: Text( - // LocaleKeys.iAcceptTermsConditions.tr().split("the").first, + // LocaleKeys.iAcceptTermsConditions.tr(context: context).split("the").first, // style: context.dynamicTextStyle(fontSize: 14.fSize, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), // ), // ), @@ -188,7 +188,7 @@ class _RegisterNew extends State { ), SizedBox(height: 25.h), CustomButton( - text: LocaleKeys.registernow.tr(), + text: LocaleKeys.registernow.tr(context: context), icon: AppAssets.note_edit, onPressed: () { // Dismiss keyboard before proceeding @@ -220,10 +220,10 @@ class _RegisterNew extends State { fontWeight: FontWeight.w500, ), children: [ - TextSpan(text: LocaleKeys.alreadyHaveAccount.tr(), style: context.dynamicTextStyle()), + TextSpan(text: LocaleKeys.alreadyHaveAccount.tr(context: context), style: context.dynamicTextStyle()), TextSpan(text: " "), TextSpan( - text: LocaleKeys.loginNow.tr(), + text: LocaleKeys.loginNow.tr(context: context), style: context.dynamicTextStyle( color: AppColors.primaryRedColor, fontSize: 16.f, @@ -271,7 +271,7 @@ class _RegisterNew extends State { Padding( padding: const EdgeInsets.only(bottom: 10), child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(), + text: LocaleKeys.sendOTPSMS.tr(context: context), onPressed: () async { // Dismiss keyboard before validation FocusScope.of(context).unfocus(); @@ -298,14 +298,14 @@ class _RegisterNew extends State { children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 8.h), - child: LocaleKeys.oR.tr().toText16(color: AppColors.textColor), + child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), ), ], ), Padding( padding: EdgeInsets.only(bottom: 10.h, top: 10.h), child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(), + text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), onPressed: () async { FocusScope.of(context).unfocus(); if (ValidationUtils.isValidatePhone( diff --git a/lib/presentation/authentication/register_step2.dart b/lib/presentation/authentication/register_step2.dart index 71cef960..c4bdf0f9 100644 --- a/lib/presentation/authentication/register_step2.dart +++ b/lib/presentation/authentication/register_step2.dart @@ -73,7 +73,7 @@ class _RegisterNew extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.personalDetailsVerification.tr().toText26(color: AppColors.textColor, weight: FontWeight.w600, letterSpacing: -2), + LocaleKeys.personalDetailsVerification.tr(context: context).toText26(color: AppColors.textColor, weight: FontWeight.w600, letterSpacing: -2), SizedBox(height: 24.h), Container( decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)), @@ -81,8 +81,8 @@ class _RegisterNew extends State { child: Column( children: [ TextInputWidget( - labelText: authVM!.isUserFromUAE() ? LocaleKeys.fullName.tr() : LocaleKeys.name.tr(), - hintText: authVM!.isUserFromUAE() ? LocaleKeys.enterNameHere.tr() : (name), + labelText: authVM!.isUserFromUAE() ? LocaleKeys.fullName.tr(context: context) : LocaleKeys.name.tr(context: context), + hintText: authVM!.isUserFromUAE() ? LocaleKeys.enterNameHere.tr(context: context) : (name), controller: authVM!.isUserFromUAE() ? authVM!.nameController : null, isEnable: true, prefix: null, @@ -100,7 +100,7 @@ class _RegisterNew extends State { ).paddingSymmetrical(0.h, 16.h), Divider(height: 1.h, color: AppColors.greyColor), TextInputWidget( - labelText: LocaleKeys.nationalIdNumber.tr(), + labelText: LocaleKeys.nationalIdNumber.tr(context: context), hintText: authVM!.isUserFromUAE() ? appState.getUserRegistrationPayload.patientIdentificationId.toString() : (appState.getNHICUserData.idNumber ?? ""), controller: null, isEnable: true, @@ -120,8 +120,8 @@ class _RegisterNew extends State { builder: (context, genderType, child) { final authVM = context.read(); return DropdownWidget( - labelText: LocaleKeys.gender.tr(), - hintText: LocaleKeys.malE.tr(), + labelText: LocaleKeys.gender.tr(context: context), + hintText: LocaleKeys.malE.tr(context: context), isEnable: true, dropdownItems: GenderTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), selectedValue: genderType != null ? (appState.isArabic() ? genderType.typeAr : genderType.type) : "", @@ -136,7 +136,7 @@ class _RegisterNew extends State { ).withVerticalPadding(8); }) : TextInputWidget( - labelText: LocaleKeys.gender.tr(), + labelText: LocaleKeys.gender.tr(context: context), hintText: (appState.getNHICUserData.gender ?? ""), controller: null, isEnable: true, @@ -157,8 +157,8 @@ class _RegisterNew extends State { builder: (context, maritalStatus, child) { final authVM = context.read(); // For onChange return DropdownWidget( - labelText: LocaleKeys.maritalStatus.tr(), - hintText: LocaleKeys.married.tr(), + labelText: LocaleKeys.maritalStatus.tr(context: context), + hintText: LocaleKeys.married.tr(context: context), isEnable: true, dropdownItems: MaritalStatusTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), selectedValue: maritalStatus != null ? (appState.isArabic() ? maritalStatus.typeAr : maritalStatus.type) : "", @@ -174,7 +174,7 @@ class _RegisterNew extends State { }, ) : TextInputWidget( - labelText: LocaleKeys.maritalStatus.tr(), + labelText: LocaleKeys.maritalStatus.tr(context: context), hintText: appState.isArabic() ? (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)!.typeAr) : (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)!.type), @@ -203,8 +203,8 @@ class _RegisterNew extends State { builder: (context, data, child) { final authVM = context.read(); return DropdownWidget( - labelText: LocaleKeys.country.tr(), - hintText: LocaleKeys.uae.tr(), + labelText: LocaleKeys.country.tr(context: context), + hintText: LocaleKeys.uae.tr(context: context), isEnable: true, dropdownItems: (data.countriesList ?? []).map((e) => data.isArabic ? e.nameN ?? "" : e.name ?? "").toList(), selectedValue: data.selectedCountry != null @@ -224,7 +224,7 @@ class _RegisterNew extends State { }, ) : TextInputWidget( - labelText: LocaleKeys.nationality.tr(), + labelText: LocaleKeys.nationality.tr(context: context), hintText: appState.isArabic() ? (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).nameN ?? "") : (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).name ?? ""), @@ -243,7 +243,7 @@ class _RegisterNew extends State { color: AppColors.greyColor, ), TextInputWidget( - labelText: LocaleKeys.mobileNumber.tr(), + labelText: LocaleKeys.mobileNumber.tr(context: context), hintText: (appState.getUserRegistrationPayload.patientMobileNumber.toString() ?? ""), controller: null, isEnable: false, @@ -260,7 +260,7 @@ class _RegisterNew extends State { color: AppColors.greyColor, ), TextInputWidget( - labelText: LocaleKeys.dob.tr(), + labelText: LocaleKeys.dob.tr(context: context), hintText: authVM!.isUserFromUAE() ? appState.getUserRegistrationPayload.dob! : appState.getNHICUserData.dateOfBirth ?? "", controller: authVM!.isUserFromUAE() ? authVM!.dobController : null, isEnable: false, @@ -280,7 +280,7 @@ class _RegisterNew extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), icon: AppAssets.cancel, onPressed: () { Navigator.of(context).pop(); @@ -298,7 +298,7 @@ class _RegisterNew extends State { backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, - text: LocaleKeys.confirm.tr(), + text: LocaleKeys.confirm.tr(context: context), icon: AppAssets.confirm, iconColor: AppColors.whiteColor, onPressed: () { @@ -345,7 +345,7 @@ class _RegisterNew extends State { Padding( padding: const EdgeInsets.only(bottom: 10), child: CustomButton( - text: LocaleKeys.submit.tr(), + text: LocaleKeys.submit.tr(context: context), onPressed: () { if (ValidationUtils.isValidateEmail( email: authVM!.emailController.text, diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index 39d5eee5..bc0c49ab 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -89,8 +89,8 @@ class _BookAppointmentPageState extends State { activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), initialIndex: bookAppointmentsVM.selectedTabIndex, tabs: [ - CustomTabBarModel(null, LocaleKeys.general.tr()), - CustomTabBarModel(null, LocaleKeys.liveCare.tr()), + CustomTabBarModel(null, LocaleKeys.general.tr(context: context)), + CustomTabBarModel(null, LocaleKeys.liveCare.tr(context: context)), ], onTabChange: (index) { bookAppointmentsVM.onTabChanged(index); @@ -121,7 +121,7 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ if (appState.isAuthenticated) ...[], - LocaleKeys.recentVisits.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + LocaleKeys.recentVisits.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), SizedBox(height: 16.h), SizedBox( height: 110.h, @@ -232,8 +232,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByClinic.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByClinic.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), ], @@ -264,8 +264,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByDoctor.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelect.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByDoctor.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.tapToSelect.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), ], @@ -294,8 +294,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByRegion.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.centralRegion.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByRegion.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.centralRegion.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), ], @@ -340,8 +340,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.immediateConsultation.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.immediateConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), ], @@ -382,8 +382,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.scheduledConsultation.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.scheduledConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), ], @@ -412,7 +412,7 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.pharmaLiveCare.tr().toText14(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.pharmaLiveCare.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), "".toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), ], ), @@ -447,9 +447,9 @@ class _BookAppointmentPageState extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.notSureHelpMeChooseClinic.tr().toText16(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), SizedBox(height: 8.h), - LocaleKeys.mentionYourSymptomsAndFindDoctors.tr().toText12( + LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12( fontWeight: FontWeight.w500, color: AppColors.greyTextColor, ), @@ -531,7 +531,7 @@ class _BookAppointmentPageState extends State { getTitle(AppointmentViaRegionViewmodel data) { if (data.selectedRegionId == null) { - return LocaleKeys.selectRegion.tr().toText20(weight: FontWeight.w600); + return LocaleKeys.selectRegion.tr(context: context).toText20(weight: FontWeight.w600); } else { return Transform.flip( flipX: data.isArabic ? true : false, @@ -558,8 +558,8 @@ class _BookAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.immediateService.tr().toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.noNeedToWaitGetMedicalConsultation.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.immediateService.tr(context: context).toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.noNeedToWaitGetMedicalConsultation.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ), @@ -574,7 +574,7 @@ class _BookAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.noVisitRequired.tr().toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.noVisitRequired.tr(context: context).toText18(color: AppColors.textColor, isBold: true), LocaleKeys.livecarePoint5.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), @@ -590,8 +590,8 @@ class _BookAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.doctorWillContact.tr().toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.specialisedDoctorWillContactYou.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.doctorWillContact.tr(context: context).toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.specialisedDoctorWillContactYou.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ), @@ -606,8 +606,8 @@ class _BookAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.freeMedicineDelivery.tr().toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.offersFreeMedicineDelivery.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.freeMedicineDelivery.tr(context: context).toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.offersFreeMedicineDelivery.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ), diff --git a/lib/presentation/book_appointment/select_clinic_page.dart b/lib/presentation/book_appointment/select_clinic_page.dart index e76e1c9e..d96c9da9 100644 --- a/lib/presentation/book_appointment/select_clinic_page.dart +++ b/lib/presentation/book_appointment/select_clinic_page.dart @@ -79,7 +79,7 @@ class _SelectClinicPageState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, customBorder: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r))), padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.h), child: CustomButton( - text: LocaleKeys.bookAppo.tr(), + text: LocaleKeys.bookAppo.tr(context: context), onPressed: () { if (widget.calculatedResult["clinicId"] == null) { bookAppointmentsViewModel.setIsDoctorsListLoading(true); @@ -1097,7 +1097,7 @@ class _SelectClinicPageState extends State { getTitle(AppointmentViaRegionViewmodel data) { if (data.selectedRegionId == null) { - return LocaleKeys.selectRegion.tr().toText20(weight: FontWeight.w600); + return LocaleKeys.selectRegion.tr(context: context).toText20(weight: FontWeight.w600); } else { return Transform.flip( flipX: data.isArabic ? true : false, @@ -1185,7 +1185,7 @@ class _SelectClinicPageState extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), onPressed: () { bookAppointmentsViewModel.setIsContinueDentalPlan(false); bookAppointmentsViewModel.setIsChiefComplaintsListLoading(true); @@ -1206,7 +1206,7 @@ class _SelectClinicPageState extends State { SizedBox(width: 8.h), Expanded( child: CustomButton( - text: LocaleKeys.confirm.tr(), + text: LocaleKeys.confirm.tr(context: context), onPressed: () async { bookAppointmentsViewModel.setIsContinueDentalPlan(true); Navigator.of(context).pop(); diff --git a/lib/presentation/book_appointment/widgets/appointment_calendar.dart b/lib/presentation/book_appointment/widgets/appointment_calendar.dart index c91e7a7a..8fa72d4c 100644 --- a/lib/presentation/book_appointment/widgets/appointment_calendar.dart +++ b/lib/presentation/book_appointment/widgets/appointment_calendar.dart @@ -204,13 +204,13 @@ class _AppointmentCalendarState extends State { children: [ Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), - (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), + (LocaleKeys.loginToUseService.tr(context: context)).toText16(color: AppColors.blackColor), SizedBox(height: 16.h), Row( children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), onPressed: () { Navigator.of(context).pop(); }, @@ -224,7 +224,7 @@ class _AppointmentCalendarState extends State { SizedBox(width: 8.h), Expanded( child: CustomButton( - text: LocaleKeys.confirm.tr(), + text: LocaleKeys.confirm.tr(context: context), onPressed: () async { Navigator.of(context).pop(); Navigator.pushAndRemoveUntil( diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 5df415dd..9292004d 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -97,7 +97,7 @@ class LargeServiceCard extends StatelessWidget { ], ).paddingSymmetrical(12.w, 24.h), CustomButton( - text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr() : LocaleKeys.bookNow.tr(context: context), + text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr(context: context) : LocaleKeys.bookNow.tr(context: context), onPressed: () { handleOnTap(); }, diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 2ccf21ce..390c0013 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -173,7 +173,7 @@ class SmallServiceCard extends StatelessWidget { void openIndoorNavigationBottomSheet(BuildContext context) { showCommonBottomSheetWithoutHeight( - title: LocaleKeys.selectHospital.tr(), + title: LocaleKeys.selectHospital.tr(context: context), context, child: ChangeNotifierProvider( create: (context) => HospitalSelectionBottomSheetViewModel(getIt()), diff --git a/lib/presentation/lab/lab_orders_page.dart b/lib/presentation/lab/lab_orders_page.dart index 799f5742..538f250f 100644 --- a/lib/presentation/lab/lab_orders_page.dart +++ b/lib/presentation/lab/lab_orders_page.dart @@ -1 +1 @@ -import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingToolbar( title: LocaleKeys.labResults.tr(), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...group.map((order) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr()}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex:2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), SizedBox(height: 12.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), SizedBox(height: 12.h), ], ); }), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file +import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingToolbar( title: LocaleKeys.labResults.tr(context: context), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr(context: context)), CustomTabBarModel(null, LocaleKeys.byTest.tr(context: context)), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...group.map((order) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr(context: context)}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex:2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), SizedBox(height: 12.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), SizedBox(height: 12.h), ], ); }), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file diff --git a/lib/presentation/lab/lab_results/lab_result_details.dart b/lib/presentation/lab/lab_results/lab_result_details.dart index eb39fef7..29e15eeb 100644 --- a/lib/presentation/lab/lab_results/lab_result_details.dart +++ b/lib/presentation/lab/lab_results/lab_result_details.dart @@ -74,7 +74,7 @@ class LabResultDetails extends StatelessWidget { .getSeverityText( recentLabResult.calculatedResultFlag ?? "", ) - .tr() + .tr(context: context) .toText10(weight: FontWeight.w500, color: AppColors.greyTextColor), Utils.buildSvgWithAssets( icon: AppAssets.lab_result_indicator, @@ -151,8 +151,8 @@ class LabResultDetails extends StatelessWidget { children: [ Text( labmodel.isGraphVisible - ? LocaleKeys.historyFlowchart.tr() - : LocaleKeys.history.tr(), + ? LocaleKeys.historyFlowchart.tr(context: context) + : LocaleKeys.history.tr(context: context), style: TextStyle( fontSize: 16, fontFamily: 'Poppins', @@ -181,7 +181,7 @@ class LabResultDetails extends StatelessWidget { height: 24) .onPress(() { showCommonBottomSheetWithoutHeight( - title: LocaleKeys.setTheDateRange.tr(), + title: LocaleKeys.setTheDateRange.tr(context: context), context, child: DateRangeSelector( onRangeSelected: (start, end) { diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index fc490000..fa8a5919 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -319,7 +319,7 @@ class _MedicalFilePageState extends State { LocaleKeys.vitalSigns.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ - LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -359,7 +359,7 @@ class _MedicalFilePageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.call_for_vitals, width: 32.h, height: 32.h), SizedBox(height: 12.h), - LocaleKeys.noVitalSignsRecordedYet.tr().toText12(isCenter: true), + LocaleKeys.noVitalSignsRecordedYet.tr(context: context).toText12(isCenter: true), ], ), ), @@ -577,10 +577,10 @@ class _MedicalFilePageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.appointmentsAndVisits.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ - LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -705,7 +705,7 @@ class _MedicalFilePageState extends State { ); }), SizedBox(height: 10.h), - LocaleKeys.labAndRadiology.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.labAndRadiology.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), SizedBox(height: 16.h), Row( children: [ @@ -744,7 +744,7 @@ class _MedicalFilePageState extends State { ], ).paddingSymmetrical(0.w, 0.h), SizedBox(height: 24.h), - LocaleKeys.activeMedicationsAndPrescriptions.tr().toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.activeMedicationsAndPrescriptions.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), SizedBox(height: 16.h), Consumer(builder: (context, prescriptionVM, child) { return prescriptionVM.isPrescriptionsOrdersLoading @@ -902,7 +902,7 @@ class _MedicalFilePageState extends State { LocaleKeys.myDoctor.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), Row( children: [ - LocaleKeys.viewAll.tr().toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), SizedBox(width: 2.w), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -1352,7 +1352,7 @@ class _MedicalFilePageState extends State { SizedBox(height: 16.h), Row( children: [ - LocaleKeys.others.tr().toText16(weight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.others.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.textColor), ], ), SizedBox(height: 16.h), diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 0bf70587..8cc21034 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -114,8 +114,8 @@ class ProfileSettingsState extends State { onAddFamilyMemberPress: () { DialogService dialogService = getIt.get(); dialogService.showAddFamilyFileSheet( - label: LocaleKeys.addFamilyMember.tr(), - message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), + label: LocaleKeys.addFamilyMember.tr(context: context), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), onVerificationPress: () { medicalVm.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); }); @@ -197,19 +197,18 @@ class ProfileSettingsState extends State { 1.divider, actionItem(AppAssets.bell, LocaleKeys.notificationsSettings.tr(context: context), () {}), 1.divider, - actionItem(AppAssets.touch_face_id, LocaleKeys.touchIDFaceIDServices.tr(), () {}, switchValue: true), + actionItem(AppAssets.touch_face_id, LocaleKeys.touchIDFaceIDServices.tr(context: context), () {}, switchValue: true), ], ), ), - LocaleKeys.personalInformation.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.personalInformation.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ - actionItem(AppAssets.email_transparent, LocaleKeys.updateEmailAddress.tr(), () {}), + actionItem(AppAssets.email_transparent, LocaleKeys.updateEmailAddress.tr(context: context), () {}), // 1.divider, // actionItem(AppAssets.smart_phone_fill, "Phone Number".needTranslation, () {}), // 1.divider, @@ -219,8 +218,7 @@ class ProfileSettingsState extends State { ], ), ), - LocaleKeys.helpAndSupport.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.helpAndSupport.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -231,9 +229,9 @@ class ProfileSettingsState extends State { launchUrl(Uri.parse("tel://" + "+966 11 525 9999")); }, trailingLabel: "011 525 9999"), 1.divider, - actionItem(AppAssets.permission, LocaleKeys.permissions.tr(), () {}, trailingLabel: "Location, Camera"), + actionItem(AppAssets.permission, LocaleKeys.permissions.tr(context: context), () {}, trailingLabel: "Location, Camera"), 1.divider, - actionItem(AppAssets.rate, LocaleKeys.rateApp.tr(), () { + actionItem(AppAssets.rate, LocaleKeys.rateApp.tr(context: context), () { if (Platform.isAndroid) { Utils.openWebView( url: 'https://play.google.com/store/apps/details?id=com.ejada.hmg', @@ -245,7 +243,7 @@ class ProfileSettingsState extends State { } }, isExternalLink: true), 1.divider, - actionItem(AppAssets.privacy_terms, LocaleKeys.privacyPolicy.tr(), () { + actionItem(AppAssets.privacy_terms, LocaleKeys.privacyPolicy.tr(context: context), () { Utils.openWebView( url: 'https://hmg.com/en/Pages/Privacy.aspx', ); @@ -262,7 +260,7 @@ class ProfileSettingsState extends State { CustomButton( height: 56.h, icon: AppAssets.minus, - text: LocaleKeys.deactivateAccount.tr(), + text: LocaleKeys.deactivateAccount.tr(context: context), onPressed: () {}, ).paddingAll(24.w), ], @@ -346,7 +344,8 @@ class FamilyCardWidget extends StatelessWidget { ), ], ).expanded, - Icon(Icons.qr_code, size: 56.h) + // Icon(Icons.qr_code, size: 56.h) + Image.network("https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${profile.responseId.toString()}", fit: BoxFit.contain, height: 56.h, width: 56.w) ], ), SizedBox(height: 4.h), @@ -421,7 +420,7 @@ class FamilyCardWidget extends StatelessWidget { ), ], ).paddingOnly(top: 16.h, right: 16.w, left: 16.w, bottom: 12.h), - 1.divider, + 1.divider.paddingSymmetrical(16.w, 0.h), _buildActionButton(appState), ], ), @@ -445,7 +444,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: canSwitch ? AppAssets.switch_user : AppAssets.add_family, - text: canSwitch ? LocaleKeys.switchFamilyFile.tr() : LocaleKeys.addANewFamilyMember.tr(), + text: canSwitch ? LocaleKeys.switchAccount.tr() : LocaleKeys.addANewFamilyMember.tr(), onPressed: canSwitch ? () => onFamilySwitchPress(profile) : onAddFamilyMemberPress, backgroundColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, @@ -461,7 +460,7 @@ class FamilyCardWidget extends StatelessWidget { return CustomButton( icon: AppAssets.switch_user, - text: canSwitchBack ? LocaleKeys.switchBackFamilyFile.tr() : LocaleKeys.switchLogin.tr(), + text: canSwitchBack ? LocaleKeys.switchBackFamilyFile.tr() : LocaleKeys.switchAccount.tr(), backgroundColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, borderColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, textColor: canSwitchBack ? AppColors.whiteColor : AppColors.greyTextColor, diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index 30926749..79cc3a95 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -212,7 +212,7 @@ Widget exceptionBottomSheetWidget( children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), onPressed: () { Navigator.of(context).pop(); }, @@ -226,7 +226,7 @@ Widget exceptionBottomSheetWidget( SizedBox(width: 10.h), Expanded( child: CustomButton( - text: LocaleKeys.confirm.tr(), + text: LocaleKeys.confirm.tr(context: context), onPressed: onOkPressed, backgroundColor: AppColors.bgGreenColor, borderColor: AppColors.bgGreenColor, @@ -240,7 +240,7 @@ Widget exceptionBottomSheetWidget( Padding( padding: EdgeInsets.only(bottom: 10.h), child: CustomButton( - text: LocaleKeys.cancel.tr(), + text: LocaleKeys.cancel.tr(context: context), onPressed: (onCancelPressed == null) ? () { context.pop(); @@ -266,7 +266,7 @@ Widget showPhoneNumberPickerWidget( Padding( padding: EdgeInsets.only(bottom: 10.h), child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(), + text: LocaleKeys.sendOTPSMS.tr(context: context), onPressed: onSMSPress, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedBorderColor, @@ -280,14 +280,14 @@ Widget showPhoneNumberPickerWidget( children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 8.h), - child: LocaleKeys.oR.tr().toText16(color: AppColors.textColor), + child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), ), ], ), Padding( padding: EdgeInsets.only(bottom: 10.h, top: 10.h), child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(), + text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), onPressed: onWhatsappPress, backgroundColor: Colors.white, borderColor: AppColors.borderOnlyColor, diff --git a/lib/widgets/app_language_change.dart b/lib/widgets/app_language_change.dart index 67a52dbe..c94195a5 100644 --- a/lib/widgets/app_language_change.dart +++ b/lib/widgets/app_language_change.dart @@ -48,7 +48,7 @@ class _AppLanguageChangeState extends State { ), ), CustomButton( - text: LocaleKeys.save.tr(), + text: LocaleKeys.save.tr(context: context), onPressed: () { context.setLocale(selectedValue == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')).then((val) { Navigator.pop(context); diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart index 4cfde1b3..1f8593a3 100644 --- a/lib/widgets/common_bottom_sheet.dart +++ b/lib/widgets/common_bottom_sheet.dart @@ -42,13 +42,13 @@ class BottomSheetUtils{ Future _showReminderBottomSheet(BuildContext providedContext, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, {required Function onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool? isMultiAllowed}) async { - showCommonBottomSheetWithoutHeight(providedContext, title: LocaleKeys.setTimerOfReminder.tr(), child: PrescriptionReminderView( + showCommonBottomSheetWithoutHeight(providedContext, title: LocaleKeys.setTimerOfReminder.tr(context: providedContext), child: PrescriptionReminderView( setReminder: (int value) async { if (!isMultiAllowed!) { if (onMultiDateSuccess == null) { CalenderUtilsNew calendarUtils = CalenderUtilsNew.instance; await calendarUtils.createOrUpdateEvent( - title: title ?? LocaleKeys.youHaveAppointmentWithDr.tr() + doctorName, + title: title ?? LocaleKeys.youHaveAppointmentWithDr.tr(context: providedContext) + doctorName, description: description ?? "At " + appoDateFormatted + " " + appoTimeFormatted, scheduleDateTime: dateTime, eventId: eventId, diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index d97b0f02..ad2a5790 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -153,10 +153,18 @@ class TextInputWidget extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildLabelText(labelColor).paddingOnly(right: (appState.getLanguageCode() == "ar" ? 10 : 0)), + _buildLabelText(labelColor).paddingOnly( + right: (appState.getLanguageCode() == "ar" ? 10 : 0), + left: (appState.getLanguageCode() == "en" ? 10 : 0), + ), Row( children: [ - Expanded(child: _buildTextField(context)), + Expanded( + child: _buildTextField(context).paddingOnly( + right: (appState.getLanguageCode() == "ar" ? 10 : 0), + left: (appState.getLanguageCode() == "en" ? 10 : 0), + ), + ) ], ), ], @@ -191,7 +199,7 @@ class TextInputWidget extends StatelessWidget { return Container( height: 40.h, width: 40.h, - margin: EdgeInsets.only(right: 10.w, left: 10.w), + // margin: EdgeInsets.symmetric(horizontal: 10.w), padding: EdgeInsets.all(8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( borderRadius: 12.r, From d2deb974b183b89956964a6e19601c46b214ad96 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 21 Jan 2026 10:31:36 +0300 Subject: [PATCH 19/67] symptoms merge --- lib/features/symptoms_checker/symptoms_checker_repo.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/features/symptoms_checker/symptoms_checker_repo.dart b/lib/features/symptoms_checker/symptoms_checker_repo.dart index 154b13aa..c0214e18 100644 --- a/lib/features/symptoms_checker/symptoms_checker_repo.dart +++ b/lib/features/symptoms_checker/symptoms_checker_repo.dart @@ -63,7 +63,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { required String userName, required String password, }) async { - Map body = {"userName": userName, "password": password}; + Map body = {"userName": userName, "password": password}; try { GenericApiModel? apiResponse; From 4188365e6dfb36af819d6b290248c6ae85f3e0ee Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 21 Jan 2026 10:34:24 +0300 Subject: [PATCH 20/67] readme update --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 1a459e37..3fea310f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +# Translation prompt & Command + +Read the context for both files & generate translations strings in the en-US.json & ar-SA.json files for the strings containing "needTranslation". Also replace the strings in the dart with the generated Strings. Also do not remove existing properties & do no generate duplicate strings in the json files + +flutter3_32 pub run easy_localization:generate -O ./lib/generated -f keys -o locale_keys.g.dart --source-dir ./assets/langs + + + # HMG Patient App A comprehensive Flutter-based mobile application for HMG (Habib Medical Group) patients, From 10a5a6f558fae4f2d7d284c27bfe2150afc25e66 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 21 Jan 2026 14:52:50 +0300 Subject: [PATCH 21/67] Ask Doctor implemented --- assets/images/svg/doctor_response_icon.svg | 4 + lib/core/api/api_client.dart | 2 +- lib/core/api_consts.dart | 2 +- lib/core/app_assets.dart | 2 + lib/core/dependencies.dart | 5 + lib/features/ask_doctor/ask_doctor_repo.dart | 128 +++++++++++ .../ask_doctor/ask_doctor_view_model.dart | 93 ++++++++ .../models/ask_doctor_appointments_list.dart | 200 +++++++++++++++++ .../models/doctor_response_model.dart | 180 +++++++++++++++ lib/main.dart | 4 + .../ask_doctor/ask_doctor_page.dart | 104 +++++++++ .../ask_doctor/doctor_response_page.dart | 157 ++++++++++++++ .../widgets/ask_doctor_appointment_card.dart | 205 ++++++++++++++++++ .../widgets/doctor_response_transactions.dart | 131 +++++++++++ lib/presentation/authentication/register.dart | 6 +- .../home/widgets/habib_wallet_card.dart | 14 +- .../medical_file/medical_file_page.dart | 11 +- lib/widgets/appbar/collapsing_list_view.dart | 7 + 18 files changed, 1243 insertions(+), 12 deletions(-) create mode 100644 assets/images/svg/doctor_response_icon.svg create mode 100644 lib/features/ask_doctor/ask_doctor_repo.dart create mode 100644 lib/features/ask_doctor/ask_doctor_view_model.dart create mode 100644 lib/features/ask_doctor/models/ask_doctor_appointments_list.dart create mode 100644 lib/features/ask_doctor/models/doctor_response_model.dart create mode 100644 lib/presentation/ask_doctor/ask_doctor_page.dart create mode 100644 lib/presentation/ask_doctor/doctor_response_page.dart create mode 100644 lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart create mode 100644 lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart diff --git a/assets/images/svg/doctor_response_icon.svg b/assets/images/svg/doctor_response_icon.svg new file mode 100644 index 00000000..1c4b156a --- /dev/null +++ b/assets/images/svg/doctor_response_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 66aa34a7..234cb471 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -212,7 +212,7 @@ class ApiClientImp implements ApiClient { final int statusCode = response.statusCode; log("uri: ${Uri.parse(url.trim())}"); log("body: ${json.encode(body)}"); - log("response.body: ${response.body}"); + // log("response.body: ${response.body}"); if (statusCode < 200 || statusCode >= 400) { onFailure('Error While Fetching data', statusCode, failureType: StatusCodeFailure("Error While Fetching data")); logApiEndpointError(endPoint, 'Error While Fetching data', statusCode); diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 51cf6c5b..7003aa76 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index bfe7707f..c3a24f75 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -309,6 +309,8 @@ class AppAssets { static const String arLangIcon = '$svgBasePath/ar_lang_icon.svg'; static const String enLangIcon = '$svgBasePath/en_lang_icon.svg'; + static const String doctorResponseIcon = '$svgBasePath/doctor_response_icon.svg'; + // PNGS // static const String hmgLogo = '$pngBasePath/hmg_logo.png'; static const String liveCareService = '$pngBasePath/livecare_service.png'; diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index 44a8bde2..d020eaa6 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -4,6 +4,8 @@ import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_repo.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_repo.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo.dart'; @@ -166,6 +168,7 @@ class AppDependencies { getIt.registerLazySingleton(() => MonthlyReportsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => QrParkingRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => NotificationsRepoImp(loggerService: getIt(), apiClient: getIt())); + getIt.registerLazySingleton(() => AskDoctorRepoImp(loggerService: getIt(), apiClient: getIt())); // ViewModels // Global/shared VMs → LazySingleton @@ -306,5 +309,7 @@ class AppDependencies { ), ); + getIt.registerLazySingleton(() => AskDoctorViewModel(askDoctorRepo: getIt(), errorHandlerService: getIt())); + } } diff --git a/lib/features/ask_doctor/ask_doctor_repo.dart b/lib/features/ask_doctor/ask_doctor_repo.dart new file mode 100644 index 00000000..4e4a4006 --- /dev/null +++ b/lib/features/ask_doctor/ask_doctor_repo.dart @@ -0,0 +1,128 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/ask_doctor_appointments_list.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/doctor_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ask_doctor_request_type_response_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class AskDoctorRepo { + Future>>> getAskDoctorAppointmentsList(); + + Future>>> getDoctorResponse({ + required String fromDate, + }); +} + +class AskDoctorRepoImp implements AskDoctorRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + AskDoctorRepoImp({ + required this.loggerService, + required this.apiClient, + }); + + @override + Future>>> getAskDoctorAppointmentsList() async { + Map mapDevice = { + "Top": 25, + "beforeDays": 15, + "exludType": 4, + }; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + IS_ALLOW_ASK_DOCTOR, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['PatientDoctorAppointmentResultList']; + + final clinicsList = list.map((item) => AskDoctorAppointmentHistoryList.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: clinicsList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>>> getDoctorResponse({ + required String fromDate, + }) async { + Map mapDevice = { + "isDentalAllowedBackend": false, + "from": fromDate, + }; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_DOCTOR_RESPONSE, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['List_DoctorResponse']; + + if (list == null || list.isEmpty) { + // Return empty list if no responses + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: [], + ); + return; + } + + final doctorResponsesList = list + .map((item) => DoctorResponseModel.fromJson(item as Map)) + .toList() + .cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: doctorResponsesList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("AskDoctorRepo.getDoctorResponse error: $e"); + return Left(UnknownFailure(e.toString())); + } + } +} diff --git a/lib/features/ask_doctor/ask_doctor_view_model.dart b/lib/features/ask_doctor/ask_doctor_view_model.dart new file mode 100644 index 00000000..2b9600e1 --- /dev/null +++ b/lib/features/ask_doctor/ask_doctor_view_model.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_repo.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/ask_doctor_appointments_list.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/doctor_response_model.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; + +class AskDoctorViewModel extends ChangeNotifier { + final AskDoctorRepo askDoctorRepo; + final ErrorHandlerService errorHandlerService; + + AskDoctorViewModel({ + required this.askDoctorRepo, + required this.errorHandlerService, + }); + + bool isAskDoctorAppointmentsLoading = false; + bool isDoctorResponsesLoading = false; + + List askDoctorAppointmentsList = []; + List doctorResponsesList = []; + + /// Initialize the view model + void initAskDoctorViewModel() { + askDoctorAppointmentsList.clear(); + doctorResponsesList.clear(); + isAskDoctorAppointmentsLoading = true; + getAskDoctorAppointmentsList(); + notifyListeners(); + } + + Future getAskDoctorAppointmentsList({Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await askDoctorRepo.getAskDoctorAppointmentsList(); + + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + askDoctorAppointmentsList = apiResponse.data!; + isAskDoctorAppointmentsLoading = false; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + /// Get doctor responses from a specific date + Future getDoctorResponses({ + String? fromDate, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isDoctorResponsesLoading = true; + notifyListeners(); + + // If no date provided, use current date minus 30 days + final dateToUse = "${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day} ${DateTime.now().hour}:${DateTime.now().minute}:00"; + + final result = await askDoctorRepo.getDoctorResponse(fromDate: dateToUse); + + result.fold( + (failure) async { + isDoctorResponsesLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isDoctorResponsesLoading = false; + + if (apiResponse.messageStatus == 2) { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error"); + } + } else if (apiResponse.messageStatus == 1) { + doctorResponsesList = apiResponse.data ?? []; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } +} diff --git a/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart b/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart new file mode 100644 index 00000000..7f40d71c --- /dev/null +++ b/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart @@ -0,0 +1,200 @@ +class AskDoctorAppointmentHistoryList { + String? setupID; + int? projectID; + int? appointmentNo; + String? appointmentDate; + bool? appointmentType; + String? bookDate; + bool? patientType; + int? patientID; + int? clinicID; + int? doctorID; + String? endDate; + String? startTime; + String? endTime; + bool? status; + bool? visitType; + bool? isReminderActivated; + int? companyID; + String? bookedOn; + String? confirmedOn; + String? arrivedOn; + String? editedOn; + int? appointmentDays; + int? isActive; + int? actualDoctorRate; + String? clinicName; + String? date; + num? decimalDoctorRate; + String? doctorCases; + String? doctorImageURL; + String? doctorInfo; + String? doctorName; + num? doctorRate; + num? doctorStarsRate; + String? doctorTitle; + int? gender; + String? genderDescription; + bool? isActiveDoctorProfile; + bool? isAppointmentAllowed; + bool? isDoctorAllowVedioCall; + bool? isLiveCareClinic; + String? nationalityFlagURL; + String? nationalityID; + String? nationalityName; + int? noOfPatientsRate; + String? projectName; + String? qR; + List? speciality; + + AskDoctorAppointmentHistoryList( + {this.setupID, + this.projectID, + this.appointmentNo, + this.appointmentDate, + this.appointmentType, + this.bookDate, + this.patientType, + this.patientID, + this.clinicID, + this.doctorID, + this.endDate, + this.startTime, + this.endTime, + this.status, + this.visitType, + this.isReminderActivated, + this.companyID, + this.bookedOn, + this.confirmedOn, + this.arrivedOn, + this.editedOn, + this.appointmentDays, + this.isActive, + this.actualDoctorRate, + this.clinicName, + this.date, + this.decimalDoctorRate, + this.doctorCases, + this.doctorImageURL, + this.doctorInfo, + this.doctorName, + this.doctorRate, + this.doctorStarsRate, + this.doctorTitle, + this.gender, + this.genderDescription, + this.isActiveDoctorProfile, + this.isAppointmentAllowed, + this.isDoctorAllowVedioCall, + this.isLiveCareClinic, + this.nationalityFlagURL, + this.nationalityID, + this.nationalityName, + this.noOfPatientsRate, + this.projectName, + this.qR, + this.speciality}); + + AskDoctorAppointmentHistoryList.fromJson(Map json) { + setupID = json['SetupID']; + projectID = json['ProjectID']; + appointmentNo = json['AppointmentNo']; + appointmentDate = json['AppointmentDate']; + appointmentType = json['AppointmentType']; + bookDate = json['BookDate']; + patientType = json['PatientType']; + patientID = json['PatientID']; + clinicID = json['ClinicID']; + doctorID = json['DoctorID']; + endDate = json['EndDate']; + startTime = json['StartTime']; + endTime = json['EndTime']; + status = json['Status']; + visitType = json['VisitType']; + isReminderActivated = json['IsReminderActivated']; + companyID = json['CompanyID']; + bookedOn = json['BookedOn']; + confirmedOn = json['ConfirmedOn']; + arrivedOn = json['ArrivedOn']; + editedOn = json['EditedOn']; + appointmentDays = json['AppointmentDays']; + isActive = json['IsActive']; + actualDoctorRate = json['ActualDoctorRate']; + clinicName = json['ClinicName']; + date = json['Date']; + decimalDoctorRate = json['DecimalDoctorRate']; + doctorCases = json['DoctorCases']; + doctorImageURL = json['DoctorImageURL']; + doctorInfo = json['DoctorInfo']; + doctorName = json['DoctorName']; + doctorRate = json['DoctorRate']; + doctorStarsRate = json['DoctorStarsRate']; + doctorTitle = json['DoctorTitle']; + gender = json['Gender']; + genderDescription = json['GenderDescription']; + isActiveDoctorProfile = json['IsActiveDoctorProfile']; + isAppointmentAllowed = json['IsAppointmentAllowed']; + isDoctorAllowVedioCall = json['IsDoctorAllowVedioCall']; + isLiveCareClinic = json['IsLiveCareClinic']; + nationalityFlagURL = json['NationalityFlagURL']; + nationalityID = json['NationalityID']; + nationalityName = json['NationalityName']; + noOfPatientsRate = json['NoOfPatientsRate']; + projectName = json['ProjectName']; + qR = json['QR']; + speciality = json['Speciality'].cast(); + } + + Map toJson() { + final Map data = new Map(); + data['SetupID'] = this.setupID; + data['ProjectID'] = this.projectID; + data['AppointmentNo'] = this.appointmentNo; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentType'] = this.appointmentType; + data['BookDate'] = this.bookDate; + data['PatientType'] = this.patientType; + data['PatientID'] = this.patientID; + data['ClinicID'] = this.clinicID; + data['DoctorID'] = this.doctorID; + data['EndDate'] = this.endDate; + data['StartTime'] = this.startTime; + data['EndTime'] = this.endTime; + data['Status'] = this.status; + data['VisitType'] = this.visitType; + data['IsReminderActivated'] = this.isReminderActivated; + data['CompanyID'] = this.companyID; + data['BookedOn'] = this.bookedOn; + data['ConfirmedOn'] = this.confirmedOn; + data['ArrivedOn'] = this.arrivedOn; + data['EditedOn'] = this.editedOn; + data['AppointmentDays'] = this.appointmentDays; + data['IsActive'] = this.isActive; + data['ActualDoctorRate'] = this.actualDoctorRate; + data['ClinicName'] = this.clinicName; + data['Date'] = this.date; + data['DecimalDoctorRate'] = this.decimalDoctorRate; + data['DoctorCases'] = this.doctorCases; + data['DoctorImageURL'] = this.doctorImageURL; + data['DoctorInfo'] = this.doctorInfo; + data['DoctorName'] = this.doctorName; + data['DoctorRate'] = this.doctorRate; + data['DoctorStarsRate'] = this.doctorStarsRate; + data['DoctorTitle'] = this.doctorTitle; + data['Gender'] = this.gender; + data['GenderDescription'] = this.genderDescription; + data['IsActiveDoctorProfile'] = this.isActiveDoctorProfile; + data['IsAppointmentAllowed'] = this.isAppointmentAllowed; + data['IsDoctorAllowVedioCall'] = this.isDoctorAllowVedioCall; + data['IsLiveCareClinic'] = this.isLiveCareClinic; + data['NationalityFlagURL'] = this.nationalityFlagURL; + data['NationalityID'] = this.nationalityID; + data['NationalityName'] = this.nationalityName; + data['NoOfPatientsRate'] = this.noOfPatientsRate; + data['ProjectName'] = this.projectName; + data['QR'] = this.qR; + data['Speciality'] = this.speciality; + return data; + } +} diff --git a/lib/features/ask_doctor/models/doctor_response_model.dart b/lib/features/ask_doctor/models/doctor_response_model.dart new file mode 100644 index 00000000..b44ee0ac --- /dev/null +++ b/lib/features/ask_doctor/models/doctor_response_model.dart @@ -0,0 +1,180 @@ +class DoctorResponseModel { + int? projectID; + int? transactionNo; + int? patientID; + int? doctorID; + int? requestType; + String? requestTypeDescription; + dynamic requestTypeDescriptionN; + int? status; + String? remarks; + String? createdOn; + int? readStatus; + String? doctorResponse; + dynamic clinicID; + dynamic clinicName; + int? createdBy; + String? doctorName; + dynamic infoStatusDescription; + bool? isDoctorRespond; + bool? isPatientRead; + dynamic memberName; + dynamic memberNameN; + dynamic patientDateofBirth; + dynamic patientGender; + dynamic patientMobileNumber; + dynamic patientName; + dynamic patientNameN; + dynamic projectName; + dynamic statusDescription; + List? transactions; + + DoctorResponseModel( + {this.projectID, + this.transactionNo, + this.patientID, + this.doctorID, + this.requestType, + this.requestTypeDescription, + this.requestTypeDescriptionN, + this.status, + this.remarks, + this.createdOn, + this.readStatus, + this.doctorResponse, + this.clinicID, + this.clinicName, + this.createdBy, + this.doctorName, + this.infoStatusDescription, + this.isDoctorRespond, + this.isPatientRead, + this.memberName, + this.memberNameN, + this.patientDateofBirth, + this.patientGender, + this.patientMobileNumber, + this.patientName, + this.patientNameN, + this.projectName, + this.statusDescription, + this.transactions}); + + DoctorResponseModel.fromJson(Map json) { + projectID = json['ProjectID']; + transactionNo = json['TransactionNo']; + patientID = json['PatientID']; + doctorID = json['DoctorID']; + requestType = json['RequestType']; + requestTypeDescription = json['RequestTypeDescription']; + requestTypeDescriptionN = json['RequestTypeDescriptionN']; + status = json['Status']; + remarks = json['Remarks']; + createdOn = json['CreatedOn']; + readStatus = json['ReadStatus']; + doctorResponse = json['DoctorResponse']; + clinicID = json['ClinicID']; + clinicName = json['ClinicName']; + createdBy = json['CreatedBy']; + doctorName = json['DoctorName']; + infoStatusDescription = json['InfoStatusDescription']; + isDoctorRespond = json['IsDoctorRespond']; + isPatientRead = json['IsPatientRead']; + memberName = json['MemberName']; + memberNameN = json['MemberNameN']; + patientDateofBirth = json['PatientDateofBirth']; + patientGender = json['PatientGender']; + patientMobileNumber = json['PatientMobileNumber']; + patientName = json['PatientName']; + patientNameN = json['PatientNameN']; + projectName = json['ProjectName']; + statusDescription = json['StatusDescription']; + if (json['Transactions'] != null) { + transactions = []; + json['Transactions'].forEach((v) { + transactions!.add(new Transactions.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + data['TransactionNo'] = this.transactionNo; + data['PatientID'] = this.patientID; + data['DoctorID'] = this.doctorID; + data['RequestType'] = this.requestType; + data['RequestTypeDescription'] = this.requestTypeDescription; + data['RequestTypeDescriptionN'] = this.requestTypeDescriptionN; + data['Status'] = this.status; + data['Remarks'] = this.remarks; + data['CreatedOn'] = this.createdOn; + data['ReadStatus'] = this.readStatus; + data['DoctorResponse'] = this.doctorResponse; + data['ClinicID'] = this.clinicID; + data['ClinicName'] = this.clinicName; + data['CreatedBy'] = this.createdBy; + data['DoctorName'] = this.doctorName; + data['InfoStatusDescription'] = this.infoStatusDescription; + data['IsDoctorRespond'] = this.isDoctorRespond; + data['IsPatientRead'] = this.isPatientRead; + data['MemberName'] = this.memberName; + data['MemberNameN'] = this.memberNameN; + data['PatientDateofBirth'] = this.patientDateofBirth; + data['PatientGender'] = this.patientGender; + data['PatientMobileNumber'] = this.patientMobileNumber; + data['PatientName'] = this.patientName; + data['PatientNameN'] = this.patientNameN; + data['ProjectName'] = this.projectName; + data['StatusDescription'] = this.statusDescription; + if (this.transactions != null) { + data['Transactions'] = this.transactions!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class Transactions { + int? lineItemNo; + String? doctorResponse; + int? infoEnteredBy; + String? infoEnteredOn; + String? createdOn; + int? infoStatus; + String? infoStatusDescription; + dynamic infoStatusDescriptionN; + + Transactions( + {this.lineItemNo, + this.doctorResponse, + this.infoEnteredBy, + this.infoEnteredOn, + this.createdOn, + this.infoStatus, + this.infoStatusDescription, + this.infoStatusDescriptionN}); + + Transactions.fromJson(Map json) { + lineItemNo = json['LineItemNo']; + doctorResponse = json['DoctorResponse']; + infoEnteredBy = json['InfoEnteredBy']; + infoEnteredOn = json['InfoEnteredOn']; + createdOn = json['CreatedOn']; + infoStatus = json['InfoStatus']; + infoStatusDescription = json['InfoStatusDescription']; + infoStatusDescriptionN = json['InfoStatusDescriptionN']; + } + + Map toJson() { + final Map data = new Map(); + data['LineItemNo'] = this.lineItemNo; + data['DoctorResponse'] = this.doctorResponse; + data['InfoEnteredBy'] = this.infoEnteredBy; + data['InfoEnteredOn'] = this.infoEnteredOn; + data['CreatedOn'] = this.createdOn; + data['InfoStatus'] = this.infoStatus; + data['InfoStatusDescription'] = this.infoStatusDescription; + data['InfoStatusDescriptionN'] = this.infoStatusDescriptionN; + return data; + } +} diff --git a/lib/main.dart b/lib/main.dart index ec3b7ec8..79b600cf 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; import 'package:hmg_patient_app_new/features/active_prescriptions/active_prescriptions_view_model.dart'; @@ -197,6 +198,9 @@ void main() async { ), ChangeNotifierProvider( create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), ) ], child: MyApp()), ), diff --git a/lib/presentation/ask_doctor/ask_doctor_page.dart b/lib/presentation/ask_doctor/ask_doctor_page.dart new file mode 100644 index 00000000..4c2c267f --- /dev/null +++ b/lib/presentation/ask_doctor/ask_doctor_page.dart @@ -0,0 +1,104 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; +import 'package:hmg_patient_app_new/features/medical_file/models/patient_sickleave_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/doctor_response_page.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart'; +import 'package:hmg_patient_app_new/presentation/medical_file/widgets/patient_sick_leave_card.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +class AskDoctorPage extends StatefulWidget { + const AskDoctorPage({super.key}); + + @override + State createState() => _AskDoctorPageState(); +} + +class _AskDoctorPageState extends State { + late MyAppointmentsViewModel myAppointmentsViewModel; + + @override + Widget build(BuildContext context) { + myAppointmentsViewModel = Provider.of(context, listen: false); + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Consumer( + builder: (context, askDoctorVM, child) { + return CollapsingListView( + title: LocaleKeys.askDoctor.tr(context: context), + doctorResponse: () { + askDoctorVM.getDoctorResponses(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorResponsePage(), + ), + ); + }, + child: SingleChildScrollView( + child: Column(children: [ + SizedBox(height: 16.h), + ListView.builder( + padding: EdgeInsets.only(top: 8.h), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: askDoctorVM.isAskDoctorAppointmentsLoading + ? 4 + : askDoctorVM.askDoctorAppointmentsList.isNotEmpty + ? askDoctorVM.askDoctorAppointmentsList.length + : 1, + itemBuilder: (context, index) { + return askDoctorVM.isAskDoctorAppointmentsLoading + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + child: PatientSickLeaveCard( + patientSickLeavesResponseModel: PatientSickLeavesResponseModel(), + isLoading: true, + )).paddingSymmetrical(0.w, 12.h) + : askDoctorVM.askDoctorAppointmentsList.isNotEmpty + ? AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + margin: EdgeInsets.symmetric(vertical: 8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AskDoctorAppointmentCard( + askDoctorAppointmentHistoryList: askDoctorVM.askDoctorAppointmentsList[index], + myAppointmentsViewModel: myAppointmentsViewModel, + ) + ], + ), + ), + ), + ), + ) + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noAppointmentsYet.tr(context: context)); + }, + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 24.h), + ]), + ), + ); + }, + ), + ); + } +} diff --git a/lib/presentation/ask_doctor/doctor_response_page.dart b/lib/presentation/ask_doctor/doctor_response_page.dart new file mode 100644 index 00000000..9cd19ef6 --- /dev/null +++ b/lib/presentation/ask_doctor/doctor_response_page.dart @@ -0,0 +1,157 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; +import 'package:hmg_patient_app_new/features/medical_file/models/patient_sickleave_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/widgets/doctor_response_transactions.dart'; +import 'package:hmg_patient_app_new/presentation/medical_file/widgets/patient_sick_leave_card.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:provider/provider.dart'; + +class DoctorResponsePage extends StatefulWidget { + const DoctorResponsePage({super.key}); + + @override + State createState() => _DoctorResponsePageState(); +} + +class _DoctorResponsePageState extends State { + late MyAppointmentsViewModel myAppointmentsViewModel; + + @override + Widget build(BuildContext context) { + myAppointmentsViewModel = Provider.of(context, listen: false); + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.doctorResponses.tr(context: context), + child: SingleChildScrollView( + child: Column( + children: [ + SizedBox(height: 16.h), + Consumer(builder: (context, askDoctorVM, child) { + return ListView.builder( + padding: EdgeInsets.zero, + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: askDoctorVM.isDoctorResponsesLoading + ? 4 + : askDoctorVM.doctorResponsesList.isNotEmpty + ? askDoctorVM.doctorResponsesList.length + : 1, + itemBuilder: (context, index) { + return askDoctorVM.isDoctorResponsesLoading + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + child: PatientSickLeaveCard( + patientSickLeavesResponseModel: PatientSickLeavesResponseModel(), + isLoading: true, + )).paddingSymmetrical(0.w, 12.h) + : askDoctorVM.doctorResponsesList.isNotEmpty + ? AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + margin: EdgeInsets.symmetric(vertical: 8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + askDoctorVM.doctorResponsesList[index].requestTypeDescription!.toText18(isBold: true), + SizedBox(height: 24.h), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.network( + "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + width: 50.w, + height: 50.h, + fit: BoxFit.cover, + ).circle(100.r), + ], + ), + SizedBox(width: 16.h), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + askDoctorVM.doctorResponsesList[index].doctorName!.toText16(isBold: true, maxlines: 1), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: (askDoctorVM.doctorResponsesList[index].clinicName ?? "").length > 15 + ? '${askDoctorVM.doctorResponsesList[index].clinicName!.substring(0, 12)}...' + : askDoctorVM.doctorResponsesList[index].clinicName ?? "", + ), + AppCustomChipWidget( + labelText: (askDoctorVM.doctorResponsesList[index].projectName ?? "").length > 15 + ? '${askDoctorVM.doctorResponsesList[index].projectName!.substring(0, 12)}...' + : askDoctorVM.doctorResponsesList[index].projectName ?? ""), + AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(askDoctorVM.doctorResponsesList[index].createdOn), false), + ), + ], + ), + ], + ), + ), + ], + ), + ], + ), + ), + ).onPress(() { + showCommonBottomSheetWithoutHeight( + context, + title: askDoctorVM.doctorResponsesList[index].requestTypeDescription!, + child: DoctorResponseTransactions(doctorResponseModel: askDoctorVM.doctorResponsesList[index],), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }), + ), + ), + ) + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDataAvailable.tr(context: context)); + }, + ).paddingSymmetrical(24.h, 0.h); + }), + SizedBox(height: 24.h), + ], + ), + ), + ), + ); + } +} diff --git a/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart b/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart new file mode 100644 index 00000000..4ff24c7a --- /dev/null +++ b/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart @@ -0,0 +1,205 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/ask_doctor_appointments_list.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; + +class AskDoctorAppointmentCard extends StatelessWidget { + final AskDoctorAppointmentHistoryList askDoctorAppointmentHistoryList; + final MyAppointmentsViewModel myAppointmentsViewModel; + + const AskDoctorAppointmentCard({super.key, required this.askDoctorAppointmentHistoryList, required this.myAppointmentsViewModel}); + + @override + Widget build(BuildContext context) { + final appState = getIt.get(); + return Padding( + padding: EdgeInsets.all(14.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(context, appState), + SizedBox(height: 16.h), + _buildDoctorRow(context), + SizedBox(height: 16.h), + _buildActionArea(context, appState), + ], + ), + ); + } + + Widget _buildHeader(BuildContext context, AppState appState) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: _buildChips(context, appState)), + ], + ); + } + + Widget _buildChips(BuildContext context, AppState appState) { + return Wrap( + alignment: WrapAlignment.start, + direction: Axis.horizontal, + spacing: 6.w, + runSpacing: 6.h, + children: [ + AppCustomChipWidget( + icon: AppAssets.walkin_appointment_icon, + iconColor: AppColors.textColor, + labelText: LocaleKeys.walkin.tr(context: context), + backgroundColor: AppColors.greyColor, + textColor: AppColors.textColor, + ), + AppCustomChipWidget( + labelText: LocaleKeys.outPatient.tr(context: context), + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), + textColor: AppColors.primaryRedColor, + ), + AppCustomChipWidget( + labelText: LocaleKeys.booked.tr(context: context), + backgroundColor: AppColors.successColor.withValues(alpha: 0.1), + textColor: AppColors.successColor, + ), + ], + ); + } + + Widget _buildDoctorRow(BuildContext context) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.network( + askDoctorAppointmentHistoryList.doctorImageURL!, + width: 63.h, + height: 63.h, + fit: BoxFit.cover, + ).circle(100.r), + Transform.translate( + offset: Offset(0.0, -20.h), + child: Container( + width: 40.w, + height: 40.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + shape: BoxShape.circle, // Makes the container circular + border: Border.all( + color: AppColors.scaffoldBgColor, // Color of the border + width: 1.5.w, // Width of the border + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h), + SizedBox(height: 2.h), + "${askDoctorAppointmentHistoryList.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), + ], + ), + ).circle(100), + ), + ], + ), + SizedBox(width: 16.h), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ("${askDoctorAppointmentHistoryList.doctorTitle} ${askDoctorAppointmentHistoryList.doctorName!}").toText16(isBold: true, maxlines: 1), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: + askDoctorAppointmentHistoryList.clinicName!.length > 15 ? '${askDoctorAppointmentHistoryList.clinicName!.substring(0, 12)}...' : askDoctorAppointmentHistoryList.clinicName!, + ), + AppCustomChipWidget( + labelText: askDoctorAppointmentHistoryList.projectName!.length > 15 + ? '${askDoctorAppointmentHistoryList.projectName!.substring(0, 12)}...' + : askDoctorAppointmentHistoryList.projectName!), + AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(askDoctorAppointmentHistoryList.appointmentDate), false), + ), + ], + ), + ], + ), + ), + ], + ); + } + + Widget _buildActionArea(BuildContext context, AppState appState) { + return CustomButton( + text: LocaleKeys.askDoctor.tr(context: context), + onPressed: () async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); + await myAppointmentsViewModel.isDoctorAvailable( + projectID: askDoctorAppointmentHistoryList.projectID!, + doctorId: askDoctorAppointmentHistoryList.doctorID!, + clinicId: askDoctorAppointmentHistoryList.clinicID!, + onSuccess: (value) async { + if (value) { + await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.askDoctor.tr(context: context), + child: AskDoctorRequestTypeSelect( + askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, + myAppointmentsViewModel: myAppointmentsViewModel, + patientAppointmentHistoryResponseModel: PatientAppointmentHistoryResponseModel() + // myAppointmentsVM.patientAppointmentsHistoryList[index], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + LoaderBottomSheet.hideLoader(); + } + }, + onError: (_) { + LoaderBottomSheet.hideLoader(); + }, + ); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: isTablet || isFoldable ? 46.h : 40.h, + height: 40.h, + icon: AppAssets.ask_doctor_icon, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, + ); + } +} diff --git a/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart b/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart new file mode 100644 index 00000000..33b544d7 --- /dev/null +++ b/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart @@ -0,0 +1,131 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/models/doctor_response_model.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +class DoctorResponseTransactions extends StatelessWidget { + const DoctorResponseTransactions({super.key, required this.doctorResponseModel}); + + final DoctorResponseModel doctorResponseModel; + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.network( + "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + width: 50.w, + height: 50.h, + fit: BoxFit.cover, + ).circle(100.r), + ], + ), + SizedBox(width: 16.h), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + doctorResponseModel.doctorName!.toText16(isBold: true, maxlines: 1), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: (doctorResponseModel.clinicName ?? "").length > 15 ? '${doctorResponseModel.clinicName!.substring(0, 12)}...' : doctorResponseModel.clinicName ?? "", + ), + AppCustomChipWidget( + labelText: (doctorResponseModel.projectName ?? "").length > 15 ? '${doctorResponseModel.projectName!.substring(0, 12)}...' : doctorResponseModel.projectName ?? ""), + AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(doctorResponseModel.createdOn), false), + ), + ], + ), + ], + ), + ), + ], + ), + SizedBox(height: 16.h), + Divider(color: AppColors.dividerColor, height: 1.h), + SizedBox(height: 16.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 72.w), + child: CustomButton( + text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(doctorResponseModel.createdOn), false), + onPressed: () {}, + backgroundColor: AppColors.greyColor, + borderColor: AppColors.greyColor, + textColor: AppColors.textColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 10.r, + height: 40.h, + ).paddingSymmetrical(16.w, 0.h), + ), + SizedBox(height: 16.h), + Row( + children: [ + Image.asset(getIt.get().getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 42.w, height: 42.h), + SizedBox(width: 8.w), + Container( + padding: EdgeInsets.all(8.w), + decoration: BoxDecoration( + color: AppColors.infoColor.withAlpha(20), + borderRadius: BorderRadius.circular(8.r), + ), + child: doctorResponseModel.requestTypeDescription!.toText12(color: AppColors.infoColor, fontWeight: FontWeight.w500), + ), + ], + ), + SizedBox(height: 24.h), + ListView.builder( + padding: EdgeInsets.zero, + itemCount: doctorResponseModel.transactions!.length, + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + padding: EdgeInsets.all(8.w), + decoration: BoxDecoration( + color: AppColors.infoColor.withAlpha(20), + borderRadius: BorderRadius.circular(8.r), + ), + child: doctorResponseModel.transactions![index].doctorResponse!.toText12(color: AppColors.textColor, fontWeight: FontWeight.w500), + ), + SizedBox(width: 8.w), + Image.network("https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", fit: BoxFit.cover, width: 42.w, height: 42.h).circle(100.r), + ], + ), + ], + ); + }, + ), + ], + ); + } +} diff --git a/lib/presentation/authentication/register.dart b/lib/presentation/authentication/register.dart index d14419f7..71bddb38 100644 --- a/lib/presentation/authentication/register.dart +++ b/lib/presentation/authentication/register.dart @@ -162,10 +162,12 @@ class _RegisterNew extends State { GestureDetector( onTap: () { // Navigate to terms and conditions page - Navigator.of(context).pushNamed('/terms'); + Utils.openWebView( + url: 'https://hmg.com/en/Pages/Terms.aspx', + ); }, child: Text( - LocaleKeys.termsConditoins.tr(context: context), + " ${LocaleKeys.termsConditoins.tr(context: context)}", style: context.dynamicTextStyle( fontSize: 14.f, fontWeight: FontWeight.w500, diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index fb04baf3..0725b1de 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -24,13 +24,13 @@ class HabibWalletCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.myBalance.tr(context: context).toText16(isBold: true), - Row( - children: [ - LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), - ], - ), + // Row( + // children: [ + // LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor), + // SizedBox(width: 2.h), + // Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + // ], + // ), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 16.h), diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index fa8a5919..1fdf8ea0 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/active_prescriptions/models/active_prescriptions_response_model.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; @@ -38,6 +39,7 @@ import 'package:hmg_patient_app_new/presentation/allergies/allergies_list_page.d import 'package:hmg_patient_app_new/presentation/appointments/my_appointments_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/my_doctors_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/ask_doctor_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/doctor_profile_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; @@ -1374,7 +1376,14 @@ class _MedicalFilePageState extends State { svgIcon: AppAssets.ask_doctor_medical_file_icon, isLargeText: true, iconSize: 36.w, - ).onPress(() {}), + ).onPress(() { + getIt.get().initAskDoctorViewModel(); + Navigator.of(context).push( + CustomPageRoute( + page: AskDoctorPage(), + ), + ); + }), // MedicalFileCard( // label: LocaleKeys.internetPairing.tr(context: context), // textColor: AppColors.blackColor, diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 897d2411..3cae1082 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -24,6 +24,7 @@ class CollapsingListView extends StatelessWidget { VoidCallback? instructions; VoidCallback? requests; VoidCallback? sendEmail; + VoidCallback? doctorResponse; Widget? bottomChild; Widget? trailing; bool isClose; @@ -44,6 +45,7 @@ class CollapsingListView extends StatelessWidget { this.instructions, this.requests, this.sendEmail, + this.doctorResponse, this.isLeading = true, this.trailing, this.leadingCallback, @@ -83,6 +85,7 @@ class CollapsingListView extends StatelessWidget { instructions: instructions, requests: requests, sendEmail: sendEmail, + doctorResponse: doctorResponse, bottomChild: bottomChild, trailing: trailing, ) @@ -114,6 +117,7 @@ class CollapsingListView extends StatelessWidget { instructions: instructions, requests: requests, sendEmail: sendEmail, + doctorResponse: doctorResponse, bottomChild: bottomChild, trailing: trailing, ), @@ -188,6 +192,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget VoidCallback? instructions; VoidCallback? requests; VoidCallback? sendEmail; + VoidCallback? doctorResponse; Widget? bottomChild; Widget? trailing; @@ -203,6 +208,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget this.instructions, this.requests, this.sendEmail, + this.doctorResponse, this.bottomChild, this.trailing, }); @@ -277,6 +283,7 @@ class _ScrollAnimatedTitleState extends State { if (widget.instructions != null) actionButton(context, t, title: LocaleKeys.instructions.tr(context: context), icon: AppAssets.requests).onPress(widget.instructions!), if (widget.requests != null) actionButton(context, t, title: LocaleKeys.requests.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.requests!), if (widget.sendEmail != null) actionButton(context, t, title: LocaleKeys.sendEmail.tr(context: context), icon: AppAssets.email).onPress(widget.sendEmail!), + if (widget.doctorResponse != null) actionButton(context, t, title: LocaleKeys.doctorResponses.tr(context: context), icon: AppAssets.doctorResponseIcon).onPress(widget.doctorResponse!), if (widget.search != null) Utils.buildSvgWithAssets(icon: AppAssets.search_icon).onPress(widget.search!), if (widget.trailing != null) widget.trailing!, ] From 14f3c6cb81fa6546e87498249e50bcfba6208bab Mon Sep 17 00:00:00 2001 From: faizatflutter Date: Wed, 21 Jan 2026 23:15:25 +0300 Subject: [PATCH 22/67] Added Arabic Support for symptoms checker --- assets/langs/ar-SA.json | 12 ++ assets/langs/en-US.json | 12 ++ convert_json.dart | 146 +++++++++--------- lib/core/api/api_client.dart | 2 +- .../data/organ_mapping_data.dart | 102 ++++++++++++ .../symptoms_checker/models/organ_model.dart | 18 +++ .../risk_and_suggestions_response_model.dart | 15 +- .../resp_models/triage_response_model.dart | 16 ++ .../symptoms_checker_view_model.dart | 45 +++++- lib/generated/locale_keys.g.dart | 11 ++ .../organ_selector_screen.dart | 77 +++++---- .../possible_conditions_screen.dart | 22 +-- .../symptoms_checker/risk_factors_screen.dart | 7 +- .../symptoms_checker/suggestions_screen.dart | 9 +- .../symptoms_selector_screen.dart | 14 +- .../symptoms_checker/triage_screen.dart | 8 +- .../symptoms_checker/user_info_selection.dart | 38 +++-- .../pages/gender_selection_page.dart | 49 +++++- .../user_info_flow_manager.dart | 29 ++-- .../widgets/condition_card.dart | 19 ++- .../widgets/interactive_body_widget.dart | 7 +- lib/widgets/buttons/custom_button.dart | 18 ++- 22 files changed, 497 insertions(+), 179 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index e0b0d8ad..3ceb2e99 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1377,6 +1377,18 @@ "suggestions": "الاقتراحات", "pleaseGoBackAndSelectOrgansFirst": "يرجى العودة واختيار الأعضاء أولاً", "symptomsSelector": "محدد الأعراض", + "possibleSymptomsRelatedTo": "الأعراض المحتملة المتعلقة بـ", + "suggestionAIListDescription": "هذه قائمة بالأعراض المقترحة من قبل الذكاء الاصطناعي، بناءً على المعلومات التي تم جمعها حتى الآن خلال المقابلة", + "analyzing": "جاري التحليل...", + "seekMedicalAdvice": "اطلب المشورة الطبية", + "monitorDescription": "لا حاجة لطلب المشورة الطبية. فقط حافظ على روتين صحي.", + "seekMedicalAdviceDescription": "ليست حالة طوارئ ولكن من الأفضل مراقبة الأعراض.", + "emergencyDescription": "تحتاج إلى استشارة الطبيب في أقرب وقت ممكن قبل فوات الأوان.", + "colorScience": "دلالات الألوان", + "noNeedToVisitDoctor": "لا حاجة لزي��رة الطبيب", + "commonSymptom": "الأعراض الشائعة", + "bookAppointment": "احجز موعد", + "notApplicable": "لا ينطبق", "emergencyTriage": "طوارئ", "emergencyEvidenceDetected": "تم اكتشاف دليل طوارئ. يرجى طلب العناية الطبية.", "noQuestionItemsAvailable": "لا توجد عناصر أسئلة متاحة", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index fa59b194..50d44816 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1367,6 +1367,18 @@ "suggestions": "Suggestions", "pleaseGoBackAndSelectOrgansFirst": "Please go back and select organs first", "symptomsSelector": "Symptoms Selector", + "possibleSymptomsRelatedTo": "Possible symptoms related to", + "suggestionAIListDescription": "This is a list of symptoms suggested by our AI, based on the information gathered so far during the interview", + "analyzing": "Analyzing...", + "seekMedicalAdvice": "Seek Medical Advice", + "monitorDescription": "No need to seek medical advice. Just keep healthy routine.", + "seekMedicalAdviceDescription": "Not emergency but better to monitor the symptoms.", + "emergencyDescription": "Need to consult doctor as soon as possible before getting too late.", + "colorScience": "Color Science", + "noNeedToVisitDoctor": "No need to visit doctor", + "commonSymptom": "Common Symptom", + "bookAppointment": "Book Appointment", + "notApplicable": "Not Applicable", "emergencyTriage": "Emergency", "emergencyEvidenceDetected": "Emergency evidence detected. Please seek medical attention.", "noQuestionItemsAvailable": "No question items available", diff --git a/convert_json.dart b/convert_json.dart index 08f344d4..af5c5945 100644 --- a/convert_json.dart +++ b/convert_json.dart @@ -1,73 +1,73 @@ -import 'dart:convert'; -import 'dart:io'; - -void main() async { - final file = File('assets/json/body_symptoms_data.json'); - final content = await file.readAsString(); - - print('File size: ${content.length} characters'); - - // Split into two parts - final parts = content.split('export const SymptomsData = ['); - if (parts.length != 2) { - print('ERROR: Could not split file properly'); - exit(1); - } - - print('Split into ${parts.length} parts'); - - // Process BodySymptomsData - var bodyPart = parts[0] - .replaceAll('export const BodySymptomsData = ', '') - .trim() - .replaceAll(RegExp(r';$'), ''); - - print('Parsing body symptoms...'); - Map bodySymptomsData; - try { - bodySymptomsData = json.decode(bodyPart); - print('✅ Body symptoms parsed: ${bodySymptomsData.length} body parts'); - } catch (e) { - print('❌ Error parsing body symptoms: $e'); - exit(1); - } - - // Process SymptomsData - print('Processing symptoms data...'); - var symptomsPart = parts[1] - .trim() - .replaceAll(RegExp(r'\];$'), '') - .replaceAllMapped(RegExp(r'\n(\s*)id:'), (m) => '\n${m.group(1)}"id":') - .replaceAllMapped(RegExp(r'\n(\s*)type:'), (m) => '\n${m.group(1)}"type":') - .replaceAllMapped(RegExp(r'\n(\s*)name:'), (m) => '\n${m.group(1)}"name":') - .replaceAllMapped(RegExp(r'\n(\s*)common_name:'), (m) => '\n${m.group(1)}"common_name":'); - - print('Parsing symptoms...'); - List symptomsData; - try { - symptomsData = json.decode('[$symptomsPart]'); - print('✅ Symptoms parsed: ${symptomsData.length} symptoms'); - } catch (e) { - print('❌ Error parsing symptoms: $e'); - print('First 1000 chars:'); - print('[$symptomsPart]'.substring(0, 1000)); - exit(1); - } - - // Create final JSON - print('Creating final JSON structure...'); - final jsonStructure = { - 'bodySymptoms': bodySymptomsData, - 'symptoms': symptomsData, - }; - - // Write to file - print('Writing to file...'); - final encoder = JsonEncoder.withIndent(' '); - await file.writeAsString(encoder.convert(jsonStructure)); - - print('\n✅ SUCCESS! File converted to proper JSON'); - print('✅ Body parts: ${bodySymptomsData.length}'); - print('✅ Symptoms: ${symptomsData.length}'); -} - +// import 'dart:convert'; +// import 'dart:io'; +// +// void main() async { +// final file = File('assets/json/body_symptoms_data.json'); +// final content = await file.readAsString(); +// +// print('File size: ${content.length} characters'); +// +// // Split into two parts +// final parts = content.split('export const SymptomsData = ['); +// if (parts.length != 2) { +// print('ERROR: Could not split file properly'); +// exit(1); +// } +// +// print('Split into ${parts.length} parts'); +// +// // Process BodySymptomsData +// var bodyPart = parts[0] +// .replaceAll('export const BodySymptomsData = ', '') +// .trim() +// .replaceAll(RegExp(r';$'), ''); +// +// print('Parsing body symptoms...'); +// Map bodySymptomsData; +// try { +// bodySymptomsData = json.decode(bodyPart); +// print('✅ Body symptoms parsed: ${bodySymptomsData.length} body parts'); +// } catch (e) { +// print('❌ Error parsing body symptoms: $e'); +// exit(1); +// } +// +// // Process SymptomsData +// print('Processing symptoms data...'); +// var symptomsPart = parts[1] +// .trim() +// .replaceAll(RegExp(r'\];$'), '') +// .replaceAllMapped(RegExp(r'\n(\s*)id:'), (m) => '\n${m.group(1)}"id":') +// .replaceAllMapped(RegExp(r'\n(\s*)type:'), (m) => '\n${m.group(1)}"type":') +// .replaceAllMapped(RegExp(r'\n(\s*)name:'), (m) => '\n${m.group(1)}"name":') +// .replaceAllMapped(RegExp(r'\n(\s*)common_name:'), (m) => '\n${m.group(1)}"common_name":'); +// +// print('Parsing symptoms...'); +// List symptomsData; +// try { +// symptomsData = json.decode('[$symptomsPart]'); +// print('✅ Symptoms parsed: ${symptomsData.length} symptoms'); +// } catch (e) { +// print('❌ Error parsing symptoms: $e'); +// print('First 1000 chars:'); +// print('[$symptomsPart]'.substring(0, 1000)); +// exit(1); +// } +// +// // Create final JSON +// print('Creating final JSON structure...'); +// final jsonStructure = { +// 'bodySymptoms': bodySymptomsData, +// 'symptoms': symptomsData, +// }; +// +// // Write to file +// print('Writing to file...'); +// final encoder = JsonEncoder.withIndent(' '); +// await file.writeAsString(encoder.convert(jsonStructure)); +// +// print('\n✅ SUCCESS! File converted to proper JSON'); +// print('✅ Body parts: ${bodySymptomsData.length}'); +// print('✅ Symptoms: ${symptomsData.length}'); +// } +// diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 66aa34a7..39a6177c 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -189,7 +189,7 @@ class ApiClientImp implements ApiClient { // body['SessionID'] = "45786230487560q"; } - body['IsNewFlutterApp'] = true; + // body['IsNewFlutterApp'] = true; body.removeWhere((key, value) => value == null); } diff --git a/lib/features/symptoms_checker/data/organ_mapping_data.dart b/lib/features/symptoms_checker/data/organ_mapping_data.dart index 6b50b254..c338a94e 100644 --- a/lib/features/symptoms_checker/data/organ_mapping_data.dart +++ b/lib/features/symptoms_checker/data/organ_mapping_data.dart @@ -8,28 +8,36 @@ class OrganData { OrganModel( id: 'head', name: 'whole_head', + nameAr: 'الرأس_كامل', description: 'Head', + descriptionAr: 'الرأس', bodyView: BodyView.front, position: OrganPosition(x: 0.50, y: 0.03), ), OrganModel( id: 'left_eye', name: 'eyes', + nameAr: 'العيون', description: 'Left Eye', + descriptionAr: 'العين اليسرى', bodyView: BodyView.front, position: OrganPosition(x: 0.43, y: 0.07), ), OrganModel( id: 'right_eye', name: 'eyes', + nameAr: 'العيون', description: 'Right Eye', + descriptionAr: 'العين اليمنى', bodyView: BodyView.front, position: OrganPosition(x: 0.57, y: 0.07), ), OrganModel( id: 'nose_mouth', name: 'oral_cavity', + nameAr: 'تجويف_الفم', description: 'Nose/Mouth', + descriptionAr: 'الأنف/الفم', bodyView: BodyView.front, position: OrganPosition(x: 0.50, y: 0.09), ), @@ -38,7 +46,9 @@ class OrganData { OrganModel( id: 'throat', name: 'neck_or_throat', + nameAr: 'الرقبة_أو_الحلق', description: 'Throat', + descriptionAr: 'الحلق', bodyView: BodyView.front, position: OrganPosition(x: 0.50, y: 0.15), ), @@ -47,14 +57,18 @@ class OrganData { OrganModel( id: 'left_shoulder', name: 'upper_arm', + nameAr: 'الذراع_العلوي', description: 'Left Shoulder', + descriptionAr: 'الكتف الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.22, y: 0.22), ), OrganModel( id: 'right_shoulder', name: 'upper_arm', + nameAr: 'الذراع_العلوي', description: 'Right Shoulder', + descriptionAr: 'الكتف الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.8, y: 0.22), ), @@ -63,21 +77,27 @@ class OrganData { OrganModel( id: 'left_chest', name: 'chest', + nameAr: 'الصدر', description: 'Left Chest', + descriptionAr: 'الصدر الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.38, y: 0.22), ), OrganModel( id: 'center_chest', name: 'chest', + nameAr: 'الصدر', description: 'Center Chest', + descriptionAr: 'وسط الصدر', bodyView: BodyView.front, position: OrganPosition(x: 0.52, y: 0.25), ), OrganModel( id: 'right_chest', name: 'chest', + nameAr: 'الصدر', description: 'Right Chest', + descriptionAr: 'الصدر الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.65, y: 0.22), ), @@ -86,14 +106,18 @@ class OrganData { OrganModel( id: 'left_ribs', name: 'chest', + nameAr: 'الصدر', description: 'Left Ribs', + descriptionAr: 'الأضلاع اليسرى', bodyView: BodyView.front, position: OrganPosition(x: 0.38, y: 0.35), ), OrganModel( id: 'right_ribs', name: 'chest', + nameAr: 'الصدر', description: 'Right Ribs', + descriptionAr: 'الأضلاع اليمنى', bodyView: BodyView.front, position: OrganPosition(x: 0.64, y: 0.35), ), @@ -102,21 +126,27 @@ class OrganData { OrganModel( id: 'upper_abdomen', name: 'upper_abdomen', + nameAr: 'البطن_العلوي', description: 'Upper Abdomen', + descriptionAr: 'أعلى البطن', bodyView: BodyView.front, position: OrganPosition(x: 0.51, y: 0.31), ), OrganModel( id: 'navel', name: 'mid_abdomen', + nameAr: 'البطن_الأوسط', description: 'Navel', + descriptionAr: 'السرة', bodyView: BodyView.front, position: OrganPosition(x: 0.51, y: 0.38), ), OrganModel( id: 'lower_abdomen', name: 'lower_abdomen', + nameAr: 'البطن_السفلي', description: 'Lower Abdomen', + descriptionAr: 'أسفل البطن', bodyView: BodyView.front, position: OrganPosition(x: 0.51, y: 0.44), ), @@ -125,14 +155,18 @@ class OrganData { OrganModel( id: 'left_groin', name: 'sexual_organs', + nameAr: 'الأعضاء_التناسلية', description: 'Left Groin', + descriptionAr: 'الفخذ الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.42, y: 0.49), ), OrganModel( id: 'right_groin', name: 'sexual_organs', + nameAr: 'الأعضاء_التناسلية', description: 'Right Groin', + descriptionAr: 'الفخذ الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.59, y: 0.49), ), @@ -142,21 +176,27 @@ class OrganData { OrganModel( id: 'left_elbow', name: 'elbow', + nameAr: 'الكوع', description: 'Left Elbow', + descriptionAr: 'الكوع الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.21, y: 0.35), ), OrganModel( id: 'left_forearm', name: 'forearm', + nameAr: 'الساعد', description: 'Left Forearm', + descriptionAr: 'الساعد الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.19, y: 0.43), ), OrganModel( id: 'left_wrist', name: 'hand', + nameAr: 'اليد', description: 'Left Wrist', + descriptionAr: 'المعصم الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.14, y: 0.5), ), @@ -166,21 +206,27 @@ class OrganData { OrganModel( id: 'right_elbow', name: 'elbow', + nameAr: 'الكوع', description: 'Right Elbow', + descriptionAr: 'الكوع الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.79, y: 0.35), ), OrganModel( id: 'right_forearm', name: 'forearm', + nameAr: 'الساعد', description: 'Right Forearm', + descriptionAr: 'الساعد الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.81, y: 0.43), ), OrganModel( id: 'right_wrist', name: 'hand', + nameAr: 'اليد', description: 'Right Wrist', + descriptionAr: 'المعصم الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.85, y: 0.5), ), @@ -189,28 +235,36 @@ class OrganData { OrganModel( id: 'left_thigh', name: 'thigh', + nameAr: 'الفخذ', description: 'Left Thigh', + descriptionAr: 'الفخذ الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.4, y: 0.60), ), OrganModel( id: 'left_knee', name: 'knee', + nameAr: 'الركبة', description: 'Left Knee', + descriptionAr: 'الركبة اليسرى', bodyView: BodyView.front, position: OrganPosition(x: 0.4, y: 0.72), ), OrganModel( id: 'left_shin', name: 'lower_leg', + nameAr: 'الساق_السفلي', description: 'Left Shin', + descriptionAr: 'الساق اليسرى', bodyView: BodyView.front, position: OrganPosition(x: 0.41, y: 0.82), ), OrganModel( id: 'left_ankle', name: 'foot', + nameAr: 'القدم', description: 'Left Ankle', + descriptionAr: 'الكاحل الأيسر', bodyView: BodyView.front, position: OrganPosition(x: 0.43, y: 0.91), ), @@ -219,28 +273,36 @@ class OrganData { OrganModel( id: 'right_thigh', name: 'thigh', + nameAr: 'الفخذ', description: 'Right Thigh', + descriptionAr: 'الفخذ الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.65, y: 0.60), ), OrganModel( id: 'right_knee', name: 'knee', + nameAr: 'الركبة', description: 'Right Knee', + descriptionAr: 'الركبة اليمنى', bodyView: BodyView.front, position: OrganPosition(x: 0.6, y: 0.72), ), OrganModel( id: 'right_shin', name: 'lower_leg', + nameAr: 'الساق_السفلي', description: 'Right Shin', + descriptionAr: 'الساق اليمنى', bodyView: BodyView.front, position: OrganPosition(x: 0.57, y: 0.82), ), OrganModel( id: 'right_ankle', name: 'foot', + nameAr: 'القدم', description: 'Right Ankle', + descriptionAr: 'الكاحل الأيمن', bodyView: BodyView.front, position: OrganPosition(x: 0.57, y: 0.91), ), @@ -252,14 +314,18 @@ class OrganData { OrganModel( id: 'back_of_head', name: 'whole_head', + nameAr: 'الرأس_كامل', description: 'Back of Head', + descriptionAr: 'مؤخرة الرأس', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.04), ), OrganModel( id: 'neck_back', name: 'nape_of_neck', + nameAr: 'مؤخرة_الرقبة', description: 'Neck', + descriptionAr: 'الرقبة', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.14), ), @@ -268,14 +334,18 @@ class OrganData { OrganModel( id: 'left_shoulder_back', name: 'upper_arm', + nameAr: 'الذراع_العلوي', description: 'Left Shoulder', + descriptionAr: 'الكتف الأيسر', bodyView: BodyView.back, position: OrganPosition(x: 0.33, y: 0.19), ), OrganModel( id: 'right_shoulder_back', name: 'upper_arm', + nameAr: 'الذراع_العلوي', description: 'Right Shoulder', + descriptionAr: 'الكتف الأيمن', bodyView: BodyView.back, position: OrganPosition(x: 0.67, y: 0.19), ), @@ -284,21 +354,27 @@ class OrganData { OrganModel( id: 'upper_spine', name: 'back', + nameAr: 'الظهر', description: 'Upper Spine', + descriptionAr: 'العمود الفقري العلوي', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.23), ), OrganModel( id: 'left_upper_back', name: 'back', + nameAr: 'الظهر', description: 'Left Upper Back', + descriptionAr: 'أعلى الظهر الأيسر', bodyView: BodyView.back, position: OrganPosition(x: 0.38, y: 0.28), ), OrganModel( id: 'right_upper_back', name: 'back', + nameAr: 'الظهر', description: 'Right Upper Back', + descriptionAr: 'أعلى الظهر الأيمن', bodyView: BodyView.back, position: OrganPosition(x: 0.62, y: 0.28), ), @@ -307,21 +383,27 @@ class OrganData { OrganModel( id: 'mid_spine', name: 'back', + nameAr: 'الظهر', description: 'Mid Spine', + descriptionAr: 'العمود الفقري الأوسط', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.35), ), OrganModel( id: 'left_mid_back', name: 'back', + nameAr: 'الظهر', description: 'Left Mid Back', + descriptionAr: 'وسط الظهر الأيسر', bodyView: BodyView.back, position: OrganPosition(x: 0.38, y: 0.35), ), OrganModel( id: 'right_mid_back', name: 'back', + nameAr: 'الظهر', description: 'Right Mid Back', + descriptionAr: 'وسط الظهر الأيمن', bodyView: BodyView.back, position: OrganPosition(x: 0.62, y: 0.35), ), @@ -330,21 +412,27 @@ class OrganData { OrganModel( id: 'lower_spine', name: 'lower_back', + nameAr: 'أسفل_الظهر', description: 'Lower Back', + descriptionAr: 'أسفل الظهر', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.43), ), OrganModel( id: 'left_lower_back', name: 'lower_back', + nameAr: 'أسفل_الظهر', description: 'Left Lower Back', + descriptionAr: 'أسفل الظهر الأيسر', bodyView: BodyView.back, position: OrganPosition(x: 0.40, y: 0.43), ), OrganModel( id: 'right_lower_back', name: 'lower_back', + nameAr: 'أسفل_الظهر', description: 'Right Lower Back', + descriptionAr: 'أسفل الظهر الأيمن', bodyView: BodyView.back, position: OrganPosition(x: 0.60, y: 0.43), ), @@ -353,21 +441,27 @@ class OrganData { OrganModel( id: 'sacrum', name: 'lower_back', + nameAr: 'أسفل_الظهر', description: 'Sacrum', + descriptionAr: 'العجز', bodyView: BodyView.back, position: OrganPosition(x: 0.50, y: 0.52), ), OrganModel( id: 'left_glute', name: 'buttocks', + nameAr: 'الأرداف', description: 'Left Glute', + descriptionAr: 'الأرداف اليسرى', bodyView: BodyView.back, position: OrganPosition(x: 0.45, y: 0.56), ), OrganModel( id: 'right_glute', name: 'buttocks', + nameAr: 'الأرداف', description: 'Right Glute', + descriptionAr: 'الأرداف اليمنى', bodyView: BodyView.back, position: OrganPosition(x: 0.55, y: 0.56), ), @@ -376,28 +470,36 @@ class OrganData { OrganModel( id: 'left_hamstring', name: 'thigh', + nameAr: 'الفخذ', description: 'Left Hamstring', + descriptionAr: 'عضلة الفخذ الخلفية اليسرى', bodyView: BodyView.back, position: OrganPosition(x: 0.43, y: 0.65), ), OrganModel( id: 'right_hamstring', name: 'thigh', + nameAr: 'الفخذ', description: 'Right Hamstring', + descriptionAr: 'عضلة الفخذ الخلفية اليمنى', bodyView: BodyView.back, position: OrganPosition(x: 0.57, y: 0.65), ), OrganModel( id: 'left_calf', name: 'lower_leg', + nameAr: 'الساق_السفلي', description: 'Left Calf', + descriptionAr: 'ربلة الساق اليسرى', bodyView: BodyView.back, position: OrganPosition(x: 0.43, y: 0.79), ), OrganModel( id: 'right_calf', name: 'lower_leg', + nameAr: 'الساق_السفلي', description: 'Right Calf', + descriptionAr: 'ربلة الساق اليمنى', bodyView: BodyView.back, position: OrganPosition(x: 0.57, y: 0.79), ), diff --git a/lib/features/symptoms_checker/models/organ_model.dart b/lib/features/symptoms_checker/models/organ_model.dart index fab7dffd..9a871f39 100644 --- a/lib/features/symptoms_checker/models/organ_model.dart +++ b/lib/features/symptoms_checker/models/organ_model.dart @@ -3,29 +3,47 @@ import 'package:hmg_patient_app_new/core/enums.dart'; class OrganModel { final String id; final String name; + final String nameAr; final String description; + final String descriptionAr; final BodyView bodyView; final OrganPosition position; const OrganModel({ required this.id, required this.name, + required this.nameAr, required this.description, + required this.descriptionAr, required this.bodyView, required this.position, }); + /// Get localized name based on isArabic flag + String getLocalizedName(bool isArabic) { + return isArabic ? nameAr : name; + } + + /// Get localized description based on isArabic flag + String getLocalizedDescription(bool isArabic) { + return isArabic ? descriptionAr : description; + } + OrganModel copyWith({ String? id, String? name, + String? nameAr, String? description, + String? descriptionAr, BodyView? bodyView, OrganPosition? position, }) { return OrganModel( id: id ?? this.id, name: name ?? this.name, + nameAr: nameAr ?? this.nameAr, description: description ?? this.description, + descriptionAr: descriptionAr ?? this.descriptionAr, bodyView: bodyView ?? this.bodyView, position: position ?? this.position, ); diff --git a/lib/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart b/lib/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart index b2be4a27..9928d786 100644 --- a/lib/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart +++ b/lib/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart @@ -22,6 +22,8 @@ class RiskAndSuggestionsItemModel { final String? type; final String? name; final String? commonName; + final String? nameAr; + final String? commonNameAr; final String? language; RiskAndSuggestionsItemModel({ @@ -29,6 +31,8 @@ class RiskAndSuggestionsItemModel { this.type, this.name, this.commonName, + this.nameAr, + this.commonNameAr, this.language, }); @@ -38,6 +42,8 @@ class RiskAndSuggestionsItemModel { type: json['type'], name: json['name'], commonName: json['common_name'], + nameAr: json['nameAr'], + commonNameAr: json['common_nameAr'], language: json['language'], ); } @@ -48,12 +54,17 @@ class RiskAndSuggestionsItemModel { 'type': type, 'name': name, 'common_name': commonName, + 'nameAr': nameAr, + 'common_nameAr': commonNameAr, 'language': language, }; } - // Helper method to get display name - String getDisplayName() { + // Helper method to get display name based on locale + String getDisplayName({bool isArabic = false}) { + if (isArabic) { + return commonNameAr ?? nameAr ?? commonName ?? name ?? ''; + } return commonName ?? name ?? ''; } } diff --git a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart index 60a3ad3a..da0f4b67 100644 --- a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart +++ b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart @@ -172,6 +172,8 @@ class TriageCondition { final String? id; final String? name; final String? commonName; + final String? nameAr; + final String? commonNameAr; final double? probability; final ConditionDetails? conditionDetails; @@ -179,6 +181,8 @@ class TriageCondition { this.id, this.name, this.commonName, + this.nameAr, + this.commonNameAr, this.probability, this.conditionDetails, }); @@ -188,6 +192,8 @@ class TriageCondition { id: json['id'], name: json['name'], commonName: json['common_name'], + nameAr: json['nameAr'], + commonNameAr: json['common_nameAr'], probability: json['probability']?.toDouble(), conditionDetails: json['condition_details'] != null ? ConditionDetails.fromJson(json['condition_details']) : null, ); @@ -198,11 +204,21 @@ class TriageCondition { 'id': id, 'name': name, 'common_name': commonName, + 'nameAr': nameAr, + 'common_nameAr': commonNameAr, 'probability': probability, 'condition_details': conditionDetails?.toJson(), }; } + /// Get display name based on locale + String getDisplayName({bool isArabic = false}) { + if (isArabic) { + return commonNameAr ?? nameAr ?? commonName ?? name ?? ''; + } + return commonName ?? name ?? ''; + } + /// Get probability as percentage String getProbabilityPercentage() { if (probability == null) return '0%'; diff --git a/lib/features/symptoms_checker/symptoms_checker_view_model.dart b/lib/features/symptoms_checker/symptoms_checker_view_model.dart index 929fe915..ed82451f 100644 --- a/lib/features/symptoms_checker/symptoms_checker_view_model.dart +++ b/lib/features/symptoms_checker/symptoms_checker_view_model.dart @@ -23,6 +23,23 @@ class SymptomsCheckerViewModel extends ChangeNotifier { required this.appState, }); + // Gender constants for both English and Arabic + static const String _maleEn = "male"; + static const String _femaleEn = "female"; + static const String _maleAr = "ذكر"; + static const String _femaleAr = "أنثى"; + + /// Convert gender string to integer (1 for male, 2 for female) + /// Handles both English and Arabic values + int _getGenderAsInt(String? gender) { + if (gender == null) return 1; // Default to male + final lowerGender = gender.toLowerCase(); + if (lowerGender == _maleEn || gender == _maleAr) { + return 1; + } + return 2; // Female or any other value + } + // State variables bool isBodyHidden = false; BodyView _currentView = BodyView.front; @@ -440,7 +457,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { await getRiskFactors( age: _selectedAge!, - gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, + gender: _getGenderAsInt(_selectedGender), evidenceIds: evidenceIds, sessionId: currentSessionId, language: appState.isArabic() ? 'ar' : 'en', @@ -498,6 +515,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { id: "not_applicable", commonName: "Not Applicable", name: "Not Applicable", + commonNameAr: "لا ينطبق", + nameAr: "لا ينطبق", language: appState.isArabic() ? 'ar' : 'en', type: null, ); @@ -612,7 +631,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { await getSuggestions( age: _selectedAge!, - gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, + gender: _getGenderAsInt(_selectedGender), evidenceIds: evidenceIds, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { @@ -668,6 +687,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { id: "not_applicable", commonName: "Not Applicable", name: "Not Applicable", + commonNameAr: "لا ينطبق", + nameAr: "لا ينطبق", language: appState.isArabic() ? 'ar' : 'en', type: null, ); @@ -764,7 +785,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { await getDiagnosisForTriage( age: _selectedAge!, - gender: _selectedGender!.toLowerCase() == "male" ? 1 : 2, + gender: _getGenderAsInt(_selectedGender), evidenceIds: evidenceIds, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { @@ -927,6 +948,22 @@ class SymptomsCheckerViewModel extends ChangeNotifier { bool get isUserInfoFirstPage => _userInfoCurrentPage == 0; + /// Check if current user info page has valid selection + bool get isCurrentUserInfoPageValid { + switch (_userInfoCurrentPage) { + case 0: // Gender page + return _selectedGender != null && _selectedGender!.isNotEmpty; + case 1: // Age/Birth date page + return _dateOfBirth != null || (_selectedAge != null && _selectedAge! > 0); + case 2: // Height page + return _selectedHeight > 0; + case 3: // Weight page + return _selectedWeight > 0; + default: + return false; + } + } + /// Validate and submit user info Map getUserInfoData() { return { @@ -988,7 +1025,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getBodySymptomsByName( organNames: organNames, userSessionToken: currentSessionAuthToken, - gender: (selectedGender ?? "Male").toLowerCase() == "male" ? 1 : 2, + gender: _getGenderAsInt(selectedGender ?? "Male"), ); result.fold( diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index d6f2d239..41cb64fb 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1371,6 +1371,17 @@ abstract class LocaleKeys { static const suggestions = 'suggestions'; static const pleaseGoBackAndSelectOrgansFirst = 'pleaseGoBackAndSelectOrgansFirst'; static const symptomsSelector = 'symptomsSelector'; + static const possibleSymptomsRelatedTo = 'possibleSymptomsRelatedTo'; + static const suggestionAIListDescription = 'suggestionAIListDescription'; + static const analyzing = 'analyzing'; + static const seekMedicalAdvice = 'seekMedicalAdvice'; + static const monitorDescription = 'monitorDescription'; + static const seekMedicalAdviceDescription = 'seekMedicalAdviceDescription'; + static const emergencyDescription = 'emergencyDescription'; + static const colorScience = 'colorScience'; + static const noNeedToVisitDoctor = 'noNeedToVisitDoctor'; + static const commonSymptom = 'commonSymptom'; + static const notApplicable = 'notApplicable'; static const emergencyTriage = 'emergencyTriage'; static const emergencyEvidenceDetected = 'emergencyEvidenceDetected'; static const noQuestionItemsAvailable = 'noQuestionItemsAvailable'; diff --git a/lib/presentation/symptoms_checker/organ_selector_screen.dart b/lib/presentation/symptoms_checker/organ_selector_screen.dart index cc956dc3..e3944c24 100644 --- a/lib/presentation/symptoms_checker/organ_selector_screen.dart +++ b/lib/presentation/symptoms_checker/organ_selector_screen.dart @@ -7,7 +7,6 @@ import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; @@ -44,7 +43,9 @@ class _OrganSelectorPageState extends State { ); return; } - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context),); + LoaderBottomSheet.showLoader( + loadingText: LocaleKeys.pleaseWait.tr(context: context), + ); final String userName = 'guest_user'; final String password = '123456'; @@ -102,7 +103,7 @@ class _OrganSelectorPageState extends State { width: 32.h, height: 32.h, ), - padding: const EdgeInsets.only(left: 12), + padding: EdgeInsetsDirectional.only(start: 12), onPressed: () => Navigator.pop(context), highlightColor: Colors.transparent, ), @@ -125,21 +126,32 @@ class _OrganSelectorPageState extends State { } Widget _buildBodyViewer(SymptomsCheckerViewModel viewModel) { - return Padding( - padding: EdgeInsets.fromLTRB(16.h, 16.h, 16.h, 60.h), - child: AnimatedSwitcher( - duration: const Duration(milliseconds: 600), - transitionBuilder: (child, animation) => _build3DFlipTransition(child, animation), - switchInCurve: Curves.easeInOut, - switchOutCurve: Curves.easeInOut, - child: InteractiveBodyWidget( - key: ValueKey(viewModel.currentView), - bodyImageAsset: viewModel.currentView == BodyView.front ? AppAssets.fullBodyFront : AppAssets.fullBodyBack, - organs: viewModel.currentOrgans, - selectedOrganIds: viewModel.selectedOrganIds, - onOrganTap: viewModel.toggleOrganSelection, - isBodyHidden: viewModel.isBodyHidden, - tooltipOrganId: viewModel.tooltipOrganId, + return GestureDetector( + onHorizontalDragEnd: (details) { + // Swipe left or right to toggle view + if (details.primaryVelocity != null) { + if (details.primaryVelocity! < -200 || details.primaryVelocity! > 200) { + viewModel.toggleView(); + } + } + }, + child: Padding( + padding: EdgeInsets.fromLTRB(16.h, 16.h, 16.h, 60.h), + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 600), + transitionBuilder: (child, animation) => _build3DFlipTransition(child, animation), + switchInCurve: Curves.easeInOut, + switchOutCurve: Curves.easeInOut, + child: InteractiveBodyWidget( + key: ValueKey(viewModel.currentView), + bodyImageAsset: viewModel.currentView == BodyView.front ? AppAssets.fullBodyFront : AppAssets.fullBodyBack, + organs: viewModel.currentOrgans, + selectedOrganIds: viewModel.selectedOrganIds, + onOrganTap: viewModel.toggleOrganSelection, + isBodyHidden: viewModel.isBodyHidden, + tooltipOrganId: viewModel.tooltipOrganId, + isArabic: _appState.isArabic(), + ), ), ), ); @@ -169,8 +181,8 @@ class _OrganSelectorPageState extends State { } Widget _buildViewToggleButtons(SymptomsCheckerViewModel viewModel) { - return Positioned( - left: 16.w, + return PositionedDirectional( + start: 16.w, top: 36.h, child: Column( children: [ @@ -275,6 +287,8 @@ class _OrganSelectorPageState extends State { ); } + final isArabic = _appState.isArabic(); + return ConstrainedBox( constraints: BoxConstraints(maxHeight: 150.h), child: SingleChildScrollView( @@ -284,7 +298,7 @@ class _OrganSelectorPageState extends State { runSpacing: 8.h, children: viewModel.selectedOrgans.map((organ) { return AppCustomChipWidget( - labelText: organ.description, + labelText: organ.getLocalizedDescription(isArabic), backgroundColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, deleteIcon: AppAssets.cancel, @@ -313,8 +327,8 @@ class _OrganSelectorPageState extends State { } Widget _buildExpandCollapseButton(SymptomsCheckerViewModel viewModel) { - return Positioned( - right: 24.w, + return PositionedDirectional( + end: 24.w, top: -24.h, child: GestureDetector( onTap: viewModel.toggleBottomSheet, @@ -331,13 +345,16 @@ class _OrganSelectorPageState extends State { borderRadius: 11.r, ), child: Center( - child: AnimatedRotation( - duration: const Duration(milliseconds: 300), - turns: viewModel.isBottomSheetExpanded ? 0.25 : -0.25, - child: Utils.buildSvgWithAssets( - icon: AppAssets.arrowRight, - width: 25.w, - height: 25.h, + child: Transform.flip( + flipX: _appState.isArabic(), + child: AnimatedRotation( + duration: const Duration(milliseconds: 300), + turns: viewModel.isBottomSheetExpanded ? 0.25 : -0.25, + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, + width: 25.w, + height: 25.h, + ), ), ), ), diff --git a/lib/presentation/symptoms_checker/possible_conditions_screen.dart b/lib/presentation/symptoms_checker/possible_conditions_screen.dart index 858218d7..8fb0e0fd 100644 --- a/lib/presentation/symptoms_checker/possible_conditions_screen.dart +++ b/lib/presentation/symptoms_checker/possible_conditions_screen.dart @@ -108,25 +108,25 @@ class PossibleConditionsPage extends StatelessWidget { ); } - Widget _buildInfoTile({required PossibleConditionsSeverityEnum severityEnum}) { + Widget _buildInfoTile({required PossibleConditionsSeverityEnum severityEnum, required BuildContext context}) { String title; String description; Color dotColor; switch (severityEnum) { case PossibleConditionsSeverityEnum.monitorOnly: - title = "Monitor".needTranslation; - description = "No need to seek medical advice. Just keep healthy routine.".needTranslation; + title = LocaleKeys.monitor.tr(context: context); + description = LocaleKeys.monitorDescription.tr(context: context); dotColor = AppColors.chipColorMonitor; break; case PossibleConditionsSeverityEnum.seekMedicalAdvice: - title = "Seek Medical Advice".needTranslation; - description = "Not emergency but better to monitor the symptoms.".needTranslation; + title = LocaleKeys.seekMedicalAdvice.tr(context: context); + description = LocaleKeys.seekMedicalAdviceDescription.tr(context: context); dotColor = AppColors.chipColorSeekMedicalAdvice; break; case PossibleConditionsSeverityEnum.emergency: - title = "Emergency".needTranslation; - description = "Need to consult doctor as soon as possible before getting too late.".needTranslation; + title = LocaleKeys.emergency.tr(context: context); + description = LocaleKeys.emergencyDescription.tr(context: context); dotColor = AppColors.chipColorEmergency; break; } @@ -156,7 +156,7 @@ class PossibleConditionsPage extends StatelessWidget { _buildSeverityDetailsBottomsheet({required BuildContext context}) { return showCommonBottomSheetWithoutHeight( - title: "Color Science".needTranslation, + title: LocaleKeys.colorScience.tr(context: context), context, child: Container( padding: EdgeInsets.all(16.w), @@ -164,11 +164,11 @@ class PossibleConditionsPage extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ - _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.monitorOnly), + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.monitorOnly, context: context), Divider(color: AppColors.bottomNAVBorder, height: 24.h, thickness: 1), - _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice), + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.seekMedicalAdvice, context: context), Divider(color: AppColors.bottomNAVBorder, height: 24.h, thickness: 1), - _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.emergency), + _buildInfoTile(severityEnum: PossibleConditionsSeverityEnum.emergency, context: context), ], ), ), diff --git a/lib/presentation/symptoms_checker/risk_factors_screen.dart b/lib/presentation/symptoms_checker/risk_factors_screen.dart index da41d781..8264b8b4 100644 --- a/lib/presentation/symptoms_checker/risk_factors_screen.dart +++ b/lib/presentation/symptoms_checker/risk_factors_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -25,11 +26,13 @@ class RiskFactorsScreen extends StatefulWidget { class _RiskFactorsScreenState extends State { late DialogService dialogService; + late AppState _appState; @override void initState() { super.initState(); dialogService = getIt(); + _appState = getIt(); // Fetch risk factors based on selected symptoms WidgetsBinding.instance.addPostFrameCallback((_) { final viewModel = context.read(); @@ -90,6 +93,8 @@ class _RiskFactorsScreenState extends State { } Widget _buildRiskFactorsList(SymptomsCheckerViewModel viewModel) { + final isArabic = _appState.isArabic(); + return Container( key: ValueKey(viewModel.riskFactorsList.length), width: double.infinity, @@ -100,7 +105,7 @@ class _RiskFactorsScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ ...viewModel.riskFactorsList.map((factor) { - return _buildRiskFactorItem(viewModel, factor.id ?? '', factor.getDisplayName()); + return _buildRiskFactorItem(viewModel, factor.id ?? '', factor.getDisplayName(isArabic: isArabic)); }), SizedBox(height: 12.w), Row( diff --git a/lib/presentation/symptoms_checker/suggestions_screen.dart b/lib/presentation/symptoms_checker/suggestions_screen.dart index f09ebd57..8d32b7f4 100644 --- a/lib/presentation/symptoms_checker/suggestions_screen.dart +++ b/lib/presentation/symptoms_checker/suggestions_screen.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -24,11 +25,13 @@ class SuggestionsScreen extends StatefulWidget { class _SuggestionsScreenState extends State { late DialogService dialogService; + late AppState _appState; @override void initState() { super.initState(); dialogService = getIt(); + _appState = getIt(); // Initialize symptom groups based on selected organs WidgetsBinding.instance.addPostFrameCallback((_) { final viewModel = context.read(); @@ -92,6 +95,8 @@ class _SuggestionsScreenState extends State { } Widget _buildSuggestionsList(SymptomsCheckerViewModel viewModel) { + final isArabic = _appState.isArabic(); + return Container( key: ValueKey(viewModel.suggestionsList.length), width: double.infinity, @@ -102,7 +107,7 @@ class _SuggestionsScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ ...viewModel.suggestionsList.map((factor) { - return _buildSuggestionItem(viewModel, factor.id ?? '', factor.getDisplayName()); + return _buildSuggestionItem(viewModel, factor.id ?? '', factor.getDisplayName(isArabic: isArabic)); }), SizedBox(height: 12.w), Row( @@ -115,7 +120,7 @@ class _SuggestionsScreenState extends State { ), SizedBox(width: 12.w), Expanded( - child: "This is a list of symptoms suggested by our AI, based on the information gathered so far during the interview".toText12( + child: LocaleKeys.suggestionAIListDescription.tr(context: context).toText12( color: AppColors.greyInfoTextColor, ), ) diff --git a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart index b241b448..2bfcb62f 100644 --- a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart +++ b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -26,11 +27,13 @@ class SymptomsSelectorPage extends StatefulWidget { class _SymptomsSelectorPageState extends State { late DialogService dialogService; + late AppState _appState; @override void initState() { super.initState(); dialogService = getIt(); + _appState = getIt(); // Initialize symptom groups based on selected organs WidgetsBinding.instance.addPostFrameCallback((_) { final viewModel = context.read(); @@ -100,10 +103,11 @@ class _SymptomsSelectorPageState extends State { // Find matching organ ID from selected organs String? organId; String? organName; + final isArabic = _appState.isArabic(); for (var organ in viewModel.selectedOrgans) { if (organ.name == organResult.name) { organId = organ.id; - organName = organ.description; + organName = organ.getLocalizedDescription(isArabic); break; } } @@ -141,6 +145,8 @@ class _SymptomsSelectorPageState extends State { String organName, List symptoms, ) { + final isArabic = _appState.isArabic(); + return Container( width: double.infinity, margin: EdgeInsets.symmetric(horizontal: 24.w), @@ -154,7 +160,7 @@ class _SymptomsSelectorPageState extends State { children: [ Expanded( child: Text( - 'Possible symptoms related to "$organName"', + '${LocaleKeys.possibleSymptomsRelatedTo.tr(context: context)} "$organName"', style: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, color: AppColors.textColor), ), ), @@ -166,7 +172,7 @@ class _SymptomsSelectorPageState extends State { spacing: 8.w, children: symptoms.map((symptom) { final symptomId = symptom.id ?? ''; - final symptomLabel = symptom.getDisplayName(false); // Pass isArabic from AppState if needed + final symptomLabel = symptom.getDisplayName(isArabic); bool isSelected = viewModel.isSymptomSelected(organId, symptomId); return GestureDetector( onTap: () => viewModel.toggleSymptomSelection(organId, symptomId), @@ -306,7 +312,7 @@ class _SymptomsSelectorPageState extends State { fontSize: 16.f, ), ), - ], + ], ), SizedBox(height: 24.h), ], diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index c0d48d61..a7975e2c 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -32,12 +33,14 @@ class TriagePage extends StatefulWidget { class _TriagePageState extends State { late SymptomsCheckerViewModel viewModel; late DialogService dialogService; + late AppState _appState; @override void initState() { super.initState(); viewModel = context.read(); dialogService = getIt.get(); + _appState = getIt.get(); // Start triage process when screen loads WidgetsBinding.instance.addPostFrameCallback((_) { @@ -436,7 +439,8 @@ class _TriagePageState extends State { Widget _buildStickyBottomCard(BuildContext context, SymptomsCheckerViewModel viewModel) { // Get the top condition with highest probability final conditions = viewModel.currentConditions ?? []; - String suggestedCondition = "Analyzing..."; + final isArabic = _appState.isArabic(); + String suggestedCondition = LocaleKeys.analyzing.tr(context: context); double probability = 0.0; if (conditions.isNotEmpty) { @@ -445,7 +449,7 @@ class _TriagePageState extends State { sortedConditions.sort((a, b) => (b.probability ?? 0.0).compareTo(a.probability ?? 0.0)); final topCondition = sortedConditions.first; - suggestedCondition = topCondition.commonName ?? topCondition.name ?? "Unknown"; + suggestedCondition = topCondition.getDisplayName(isArabic: isArabic); probability = (topCondition.probability ?? 0.0) * 100; // Convert to percentage } // final bool isHighConfidence = probability >= 70.0; diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index 78eb9167..1d05c5a0 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -43,13 +43,10 @@ class _UserInfoSelectionPageState extends State { if (user == null) return; // Populate gender (gender is int: 1=Male, 2=Female) + // Use internal keys (male/female) for storage if (user.gender != null) { - String genderStr = user.gender == 1 - ? "Male" - : user.gender == 2 - ? "Female" - : "Other"; - viewModel.setGender(genderStr); + String genderKey = user.gender == 1 ? "male" : user.gender == 2 ? "female" : "other"; + viewModel.setGender(genderKey); } if (user.dateofBirth != null && user.dateofBirth!.isNotEmpty) { @@ -84,12 +81,13 @@ class _UserInfoSelectionPageState extends State { child: Row( children: [ Container( - height: 40.h, - width: 40.h, - margin: EdgeInsets.only(right: 10.h), - padding: EdgeInsets.all(8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.greyColor), - child: Utils.buildSvgWithAssets(icon: leadingIcon, iconColor: iconColor)), + height: 40.h, + width: 40.h, + margin: EdgeInsetsDirectional.only(end: 10.h), + padding: EdgeInsets.all(8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.greyColor), + child: Utils.buildSvgWithAssets(icon: leadingIcon, iconColor: iconColor), + ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -112,6 +110,20 @@ class _UserInfoSelectionPageState extends State { ).paddingSymmetrical(0, 8.h); } + /// Convert internal gender key to localized display string + String _getLocalizedGender(String? genderKey, BuildContext context) { + if (genderKey == null) return LocaleKeys.notSet.tr(context: context); + + final lowerKey = genderKey.toLowerCase(); + if (lowerKey == "male") { + return LocaleKeys.malE.tr(context: context); + } else if (lowerKey == "female") { + return LocaleKeys.femaleGender.tr(context: context); + } else { + return genderKey; // Return as-is if not recognized + } + } + @override Widget build(BuildContext context) { AppState appState = getIt.get(); @@ -151,7 +163,7 @@ class _UserInfoSelectionPageState extends State { viewModel.selectedWeight == null; // Get display values - String genderText = viewModel.selectedGender ?? LocaleKeys.notSet.tr(context: context); + String genderText = _getLocalizedGender(viewModel.selectedGender, context); // Show age calculated from DOB (prefer viewModel's age, fallback to calculated from user's DOB) int? displayAge = viewModel.selectedAge ?? userAgeFromDOB; String ageText = displayAge != null ? "$displayAge ${LocaleKeys.years.tr(context: context)}" : LocaleKeys.notSet.tr(context: context); diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart index 6eaae8ce..07f44f16 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart @@ -15,12 +15,16 @@ class GenderSelectionPage extends StatelessWidget { final String? selectedGender; final Function(String) onGenderSelected; - GenderSelectionPage({ + const GenderSelectionPage({ super.key, required this.selectedGender, required this.onGenderSelected, }); + // Internal gender keys (constant, not localized) + static const String maleKey = "male"; + static const String femaleKey = "female"; + _buildGenderOption(String iconPng, String label, bool isSelected) { return Container( height: 160.h, @@ -40,7 +44,27 @@ class GenderSelectionPage extends StatelessWidget { ); } - final genders = ["Male", "Female"]; + /// Check if the selected gender matches the given key + /// Handles both internal keys and localized strings + bool _isGenderSelected(String genderKey, String? currentSelection, BuildContext context) { + if (currentSelection == null) return false; + + final lowerSelection = currentSelection.toLowerCase(); + + if (genderKey == maleKey) { + // Check against internal key, English, and Arabic + return lowerSelection == maleKey || + lowerSelection == "male" || + currentSelection == LocaleKeys.malE.tr(context: context) || + currentSelection == "ذكر"; + } else { + // Check against internal key, English, and Arabic + return lowerSelection == femaleKey || + lowerSelection == "female" || + currentSelection == LocaleKeys.femaleGender.tr(context: context) || + currentSelection == "أنثى"; + } + } @override Widget build(BuildContext context) { @@ -56,16 +80,25 @@ class GenderSelectionPage extends StatelessWidget { children: [ Expanded( child: InkWell( - onTap: () => onGenderSelected(genders[0]), - child: _buildGenderOption(AppAssets.maleIcon, LocaleKeys.malE.tr(context: context), symptomsViewModel.selectedGender == genders[0]), + onTap: () => onGenderSelected(maleKey), + child: _buildGenderOption( + AppAssets.maleIcon, + LocaleKeys.malE.tr(context: context), + _isGenderSelected(maleKey, symptomsViewModel.selectedGender, context), + ), ), ), SizedBox(width: 16.w), Expanded( - child: InkWell( - onTap: () => onGenderSelected(genders[1]), - child: _buildGenderOption(AppAssets.femaleIcon, LocaleKeys.femaleGender.tr(context: context), symptomsViewModel.selectedGender == genders[1]), - )) + child: InkWell( + onTap: () => onGenderSelected(femaleKey), + child: _buildGenderOption( + AppAssets.femaleIcon, + LocaleKeys.femaleGender.tr(context: context), + _isGenderSelected(femaleKey, symptomsViewModel.selectedGender, context), + ), + ), + ) ], ), ], diff --git a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart index b5df05b2..fdfe2288 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart @@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart'; @@ -29,13 +28,15 @@ class _UserInfoFlowManagerState extends State { late PageController _pageController; late SymptomsCheckerViewModel _viewModel; - // Page titles - final List _pageTitles = [ - "Your Gender", - "Your Birth Date", - "Your Height", - "Your Weight", - ]; + // Get localized page titles + List _getPageTitles(BuildContext context) { + return [ + LocaleKeys.genderSymptoms.tr(context: context), + LocaleKeys.dateOfBirthSymptoms.tr(context: context), + LocaleKeys.heightSymptoms.tr(context: context), + LocaleKeys.weightSymptoms.tr(context: context), + ]; + } @override void initState() { @@ -187,9 +188,11 @@ class _UserInfoFlowManagerState extends State { ? // Single page edit mode - show only Save button CustomButton( text: LocaleKeys.save.tr(context: context), - onPressed: _onNext, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, + isDisabled: !(viewModel.isCurrentUserInfoPageValid), + onPressed: () => viewModel.isCurrentUserInfoPageValid ? _onNext() : () {}, + backgroundColor: + viewModel.isCurrentUserInfoPageValid ? AppColors.primaryRedColor : AppColors.primaryRedColor.withValues(alpha: 0.5), + borderColor: viewModel.isCurrentUserInfoPageValid ? AppColors.primaryRedColor : AppColors.primaryRedColor.withValues(alpha: 0.5), textColor: AppColors.whiteColor, fontSize: 16.f, ) @@ -228,6 +231,8 @@ class _UserInfoFlowManagerState extends State { @override Widget build(BuildContext context) { + final pageTitles = _getPageTitles(context); + return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Column( @@ -235,7 +240,7 @@ class _UserInfoFlowManagerState extends State { Expanded( child: CollapsingListView( physics: NeverScrollableScrollPhysics(), - title: _pageTitles[_viewModel.userInfoCurrentPage], + title: pageTitles[_viewModel.userInfoCurrentPage], isLeading: true, child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/presentation/symptoms_checker/widgets/condition_card.dart b/lib/presentation/symptoms_checker/widgets/condition_card.dart index b95e55c9..e48f41ea 100644 --- a/lib/presentation/symptoms_checker/widgets/condition_card.dart +++ b/lib/presentation/symptoms_checker/widgets/condition_card.dart @@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -24,8 +26,11 @@ class ConditionCard extends StatelessWidget { this.onActionPressed, }); - /// Get title from condition - String get title => condition.commonName ?? condition.name ?? ''; + /// Get title from condition (localized) + String get title { + final appState = getIt(); + return condition.getDisplayName(isArabic: appState.isArabic()); + } /// Get percentage from probability (0-1 to 0-100) int get percentage => ((condition.probability ?? 0) * 100).toInt(); @@ -69,14 +74,14 @@ class ConditionCard extends StatelessWidget { return LocaleKeys.emergency.tr(context: context); case TriageLevelEnum.consultation24: case TriageLevelEnum.consultation: - return "Seek Medical Advice".needTranslation; + return LocaleKeys.seekMedicalAdvice.tr(context: context); case TriageLevelEnum.selfCare: return LocaleKeys.monitor.tr(context: context); } } // Default based on probability if (percentage >= 70) { - return "Seek Medical Advice".needTranslation; + return LocaleKeys.seekMedicalAdvice.tr(context: context); } else { return LocaleKeys.monitor.tr(context: context); } @@ -85,7 +90,7 @@ class ConditionCard extends StatelessWidget { /// Get monitor note if applicable String? getMonitorNote(BuildContext context) { if (severityEnum == PossibleConditionsSeverityEnum.monitorOnly) { - return "No need to visit doctor".needTranslation; + return LocaleKeys.noNeedToVisitDoctor.tr(context: context); } return null; } @@ -236,7 +241,7 @@ class ConditionCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Common Symptom".needTranslation.toText14(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.commonSymptom.tr(context: context).toText14(weight: FontWeight.w600, color: AppColors.textColor), _buildSymptomsRow(), SizedBox(height: 16.h), LocaleKeys.description.tr(context: context).toText14(weight: FontWeight.bold, color: AppColors.textColor), @@ -244,7 +249,7 @@ class ConditionCard extends StatelessWidget { description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), if (severityEnum != PossibleConditionsSeverityEnum.monitorOnly) CustomButton( - text: "Book Appointment".needTranslation, + text: LocaleKeys.bookAppointment.tr(context: context), onPressed: () { if (onActionPressed != null) { onActionPressed!(); diff --git a/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart b/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart index 8957fb19..62c38f9a 100644 --- a/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart +++ b/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart @@ -13,6 +13,7 @@ class InteractiveBodyWidget extends StatefulWidget { final bool isBodyHidden; final Function(String organId) onOrganTap; final String? tooltipOrganId; + final bool isArabic; const InteractiveBodyWidget({ super.key, @@ -22,6 +23,7 @@ class InteractiveBodyWidget extends StatefulWidget { required this.onOrganTap, this.isBodyHidden = false, this.tooltipOrganId, + this.isArabic = false, }); @override @@ -118,7 +120,10 @@ class _InteractiveBodyWidgetState extends State { (organ) { final centerX = organ.position.x * imageConstraints.maxWidth; final centerY = organ.position.y * imageConstraints.maxHeight; - return OrganTooltipWidget(organName: organ.description, position: Offset(centerX, centerY)); + return OrganTooltipWidget( + organName: organ.getLocalizedDescription(widget.isArabic), + position: Offset(centerX, centerY), + ); }, ), ], diff --git a/lib/widgets/buttons/custom_button.dart b/lib/widgets/buttons/custom_button.dart index 7fa5c3f8..a81f0ebf 100644 --- a/lib/widgets/buttons/custom_button.dart +++ b/lib/widgets/buttons/custom_button.dart @@ -74,15 +74,18 @@ class CustomButton extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) - Padding( - padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, - child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), + Flexible( + child: Padding( + padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, + child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), + ), ), - Visibility( - visible: text.isNotEmpty, - child: Text( + if (text.isNotEmpty) + Text( text, - overflow: textOverflow, + overflow: textOverflow ?? TextOverflow.ellipsis, + maxLines: 1, + textAlign: TextAlign.center, style: context.dynamicTextStyle( fontSize: fontS, color: isDisabled ? AppColors.greyTextColor : textColor, @@ -90,7 +93,6 @@ class CustomButton extends StatelessWidget { fontWeight: fontWeight, ), ), - ), ], ), )); From f46f97832651420d2a6e7f52635067b01100b3f2 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Jan 2026 10:30:55 +0300 Subject: [PATCH 23/67] Clinic icons updated --- assets/images/clinicIcons/1.svg | 3 ++ assets/images/clinicIcons/104.svg | 12 +++++++ assets/images/clinicIcons/105.svg | 7 ++++ assets/images/clinicIcons/106.svg | 3 ++ assets/images/clinicIcons/107.svg | 11 +++++++ assets/images/clinicIcons/108.svg | 5 +++ assets/images/clinicIcons/11.svg | 3 ++ assets/images/clinicIcons/110.svg | 3 ++ assets/images/clinicIcons/111.svg | 3 ++ assets/images/clinicIcons/118.svg | 3 ++ assets/images/clinicIcons/12.svg | 8 +++++ assets/images/clinicIcons/126.svg | 3 ++ assets/images/clinicIcons/128.svg | 6 ++++ assets/images/clinicIcons/130.svg | 3 ++ assets/images/clinicIcons/131.svg | 33 +++++++++++++++++++ assets/images/clinicIcons/134.svg | 3 ++ assets/images/clinicIcons/14.svg | 3 ++ assets/images/clinicIcons/140.svg | 6 ++++ assets/images/clinicIcons/148.svg | 3 ++ assets/images/clinicIcons/149.svg | 6 ++++ assets/images/clinicIcons/16.svg | 3 ++ assets/images/clinicIcons/17.svg | 4 +++ assets/images/clinicIcons/18.svg | 3 ++ assets/images/clinicIcons/19.svg | 3 ++ assets/images/clinicIcons/2.svg | 5 +++ assets/images/clinicIcons/20.svg | 5 +++ assets/images/clinicIcons/21.svg | 4 +++ assets/images/clinicIcons/23.svg | 6 ++++ assets/images/clinicIcons/24.svg | 3 ++ assets/images/clinicIcons/25.svg | 3 ++ assets/images/clinicIcons/250.svg | 5 +++ assets/images/clinicIcons/252.svg | 6 ++++ assets/images/clinicIcons/253.svg | 3 ++ assets/images/clinicIcons/254.svg | 4 +++ assets/images/clinicIcons/255.svg | 7 ++++ assets/images/clinicIcons/257.svg | 5 +++ assets/images/clinicIcons/26.svg | 5 +++ assets/images/clinicIcons/260.svg | 5 +++ assets/images/clinicIcons/262.svg | 16 +++++++++ assets/images/clinicIcons/264.svg | 3 ++ assets/images/clinicIcons/27.svg | 3 ++ assets/images/clinicIcons/28.svg | 6 ++++ assets/images/clinicIcons/29.svg | 4 +++ assets/images/clinicIcons/3.svg | 3 ++ assets/images/clinicIcons/30.svg | 6 ++++ assets/images/clinicIcons/31.svg | 3 ++ assets/images/clinicIcons/32.svg | 4 +++ assets/images/clinicIcons/34.svg | 3 ++ assets/images/clinicIcons/35.svg | 3 ++ assets/images/clinicIcons/36.svg | 8 +++++ assets/images/clinicIcons/38.svg | 9 +++++ assets/images/clinicIcons/4.svg | 3 ++ assets/images/clinicIcons/40.svg | 4 +++ assets/images/clinicIcons/41.svg | 3 ++ assets/images/clinicIcons/42.svg | 3 ++ assets/images/clinicIcons/44.svg | 3 ++ assets/images/clinicIcons/46.svg | 6 ++++ assets/images/clinicIcons/5.svg | 3 ++ assets/images/clinicIcons/50.svg | 7 ++++ assets/images/clinicIcons/51.svg | 4 +++ assets/images/clinicIcons/53.svg | 6 ++++ assets/images/clinicIcons/55.svg | 8 +++++ assets/images/clinicIcons/56.svg | 3 ++ assets/images/clinicIcons/58.svg | 3 ++ assets/images/clinicIcons/59.svg | 3 ++ assets/images/clinicIcons/6.svg | 6 ++++ assets/images/clinicIcons/67.svg | 6 ++++ assets/images/clinicIcons/68.svg | 6 ++++ assets/images/clinicIcons/69.svg | 3 ++ assets/images/clinicIcons/7.svg | 3 ++ assets/images/clinicIcons/74.svg | 3 ++ assets/images/clinicIcons/78.svg | 5 +++ assets/images/clinicIcons/79.svg | 5 +++ assets/images/clinicIcons/8.svg | 6 ++++ assets/images/clinicIcons/83.svg | 3 ++ assets/images/clinicIcons/84.svg | 5 +++ assets/images/clinicIcons/85.svg | 7 ++++ assets/images/clinicIcons/86.svg | 5 +++ assets/images/clinicIcons/87.svg | 4 +++ assets/images/clinicIcons/88.svg | 3 ++ assets/images/clinicIcons/89.svg | 9 +++++ assets/images/clinicIcons/9.svg | 3 ++ assets/images/clinicIcons/90.svg | 3 ++ assets/images/clinicIcons/91.svg | 3 ++ assets/images/clinicIcons/93.svg | 3 ++ assets/images/clinicIcons/98.svg | 3 ++ assets/images/clinicIcons/Cardiac Surgery.svg | 5 +++ .../Colorectal Oncology Clinic 2.svg | 3 ++ .../clinicIcons/Dental Employee Clinic.svg | 4 +++ .../clinicIcons/ENT Oncology Clinic 2.svg | 4 +++ assets/images/clinicIcons/ER CLINIC.svg | 5 +++ .../images/clinicIcons/EXCELLENCE CLINIC.svg | 7 ++++ assets/images/clinicIcons/Frame.svg | 7 ++++ .../Gynecology oncology Clinic.svg | 7 ++++ .../Interventional Radiology Clinic.svg | 3 ++ ...LIVER , GALLBLADDER, PANCREATIC CLINIC.svg | 7 ++++ .../Maternal-Fetal Medicine Clinic.svg | 5 +++ .../clinicIcons/Maxilliofacial Surgery.svg | 3 ++ .../OB-GYNE physiotherapy clinic-1.svg | 4 +++ .../Occupational Therapy Clinic.svg | 4 +++ .../Orthopedic Oncology Surgery Clinic.svg | 8 +++++ assets/images/clinicIcons/RRT Clinic 2.svg | 3 ++ .../Radiation Oncology Clinic 2.svg | 7 ++++ .../Retinopathy of prematurity(ROP).svg | 3 ++ .../images/clinicIcons/SKIN AND HAIR CARE.svg | 30 +++++++++++++++++ assets/images/clinicIcons/SPA SKIN CARE.svg | 23 +++++++++++++ assets/images/clinicIcons/Smell Clinic 2.svg | 9 +++++ .../clinicIcons/Surgical Oncology Clinic.svg | 7 ++++ assets/images/clinicIcons/Thoracic Clinic.svg | 3 ++ .../clinicIcons/Urology Oncology Clinic.svg | 5 +++ .../book_appointment_page.dart | 11 +++---- .../book_appointment/widgets/clinic_card.dart | 2 +- pubspec.yaml | 1 + 113 files changed, 602 insertions(+), 8 deletions(-) create mode 100644 assets/images/clinicIcons/1.svg create mode 100644 assets/images/clinicIcons/104.svg create mode 100644 assets/images/clinicIcons/105.svg create mode 100644 assets/images/clinicIcons/106.svg create mode 100644 assets/images/clinicIcons/107.svg create mode 100644 assets/images/clinicIcons/108.svg create mode 100644 assets/images/clinicIcons/11.svg create mode 100644 assets/images/clinicIcons/110.svg create mode 100644 assets/images/clinicIcons/111.svg create mode 100644 assets/images/clinicIcons/118.svg create mode 100644 assets/images/clinicIcons/12.svg create mode 100644 assets/images/clinicIcons/126.svg create mode 100644 assets/images/clinicIcons/128.svg create mode 100644 assets/images/clinicIcons/130.svg create mode 100644 assets/images/clinicIcons/131.svg create mode 100644 assets/images/clinicIcons/134.svg create mode 100644 assets/images/clinicIcons/14.svg create mode 100644 assets/images/clinicIcons/140.svg create mode 100644 assets/images/clinicIcons/148.svg create mode 100644 assets/images/clinicIcons/149.svg create mode 100644 assets/images/clinicIcons/16.svg create mode 100644 assets/images/clinicIcons/17.svg create mode 100644 assets/images/clinicIcons/18.svg create mode 100644 assets/images/clinicIcons/19.svg create mode 100644 assets/images/clinicIcons/2.svg create mode 100644 assets/images/clinicIcons/20.svg create mode 100644 assets/images/clinicIcons/21.svg create mode 100644 assets/images/clinicIcons/23.svg create mode 100644 assets/images/clinicIcons/24.svg create mode 100644 assets/images/clinicIcons/25.svg create mode 100644 assets/images/clinicIcons/250.svg create mode 100644 assets/images/clinicIcons/252.svg create mode 100644 assets/images/clinicIcons/253.svg create mode 100644 assets/images/clinicIcons/254.svg create mode 100644 assets/images/clinicIcons/255.svg create mode 100644 assets/images/clinicIcons/257.svg create mode 100644 assets/images/clinicIcons/26.svg create mode 100644 assets/images/clinicIcons/260.svg create mode 100644 assets/images/clinicIcons/262.svg create mode 100644 assets/images/clinicIcons/264.svg create mode 100644 assets/images/clinicIcons/27.svg create mode 100644 assets/images/clinicIcons/28.svg create mode 100644 assets/images/clinicIcons/29.svg create mode 100644 assets/images/clinicIcons/3.svg create mode 100644 assets/images/clinicIcons/30.svg create mode 100644 assets/images/clinicIcons/31.svg create mode 100644 assets/images/clinicIcons/32.svg create mode 100644 assets/images/clinicIcons/34.svg create mode 100644 assets/images/clinicIcons/35.svg create mode 100644 assets/images/clinicIcons/36.svg create mode 100644 assets/images/clinicIcons/38.svg create mode 100644 assets/images/clinicIcons/4.svg create mode 100644 assets/images/clinicIcons/40.svg create mode 100644 assets/images/clinicIcons/41.svg create mode 100644 assets/images/clinicIcons/42.svg create mode 100644 assets/images/clinicIcons/44.svg create mode 100644 assets/images/clinicIcons/46.svg create mode 100644 assets/images/clinicIcons/5.svg create mode 100644 assets/images/clinicIcons/50.svg create mode 100644 assets/images/clinicIcons/51.svg create mode 100644 assets/images/clinicIcons/53.svg create mode 100644 assets/images/clinicIcons/55.svg create mode 100644 assets/images/clinicIcons/56.svg create mode 100644 assets/images/clinicIcons/58.svg create mode 100644 assets/images/clinicIcons/59.svg create mode 100644 assets/images/clinicIcons/6.svg create mode 100644 assets/images/clinicIcons/67.svg create mode 100644 assets/images/clinicIcons/68.svg create mode 100644 assets/images/clinicIcons/69.svg create mode 100644 assets/images/clinicIcons/7.svg create mode 100644 assets/images/clinicIcons/74.svg create mode 100644 assets/images/clinicIcons/78.svg create mode 100644 assets/images/clinicIcons/79.svg create mode 100644 assets/images/clinicIcons/8.svg create mode 100644 assets/images/clinicIcons/83.svg create mode 100644 assets/images/clinicIcons/84.svg create mode 100644 assets/images/clinicIcons/85.svg create mode 100644 assets/images/clinicIcons/86.svg create mode 100644 assets/images/clinicIcons/87.svg create mode 100644 assets/images/clinicIcons/88.svg create mode 100644 assets/images/clinicIcons/89.svg create mode 100644 assets/images/clinicIcons/9.svg create mode 100644 assets/images/clinicIcons/90.svg create mode 100644 assets/images/clinicIcons/91.svg create mode 100644 assets/images/clinicIcons/93.svg create mode 100644 assets/images/clinicIcons/98.svg create mode 100644 assets/images/clinicIcons/Cardiac Surgery.svg create mode 100644 assets/images/clinicIcons/Colorectal Oncology Clinic 2.svg create mode 100644 assets/images/clinicIcons/Dental Employee Clinic.svg create mode 100644 assets/images/clinicIcons/ENT Oncology Clinic 2.svg create mode 100644 assets/images/clinicIcons/ER CLINIC.svg create mode 100644 assets/images/clinicIcons/EXCELLENCE CLINIC.svg create mode 100644 assets/images/clinicIcons/Frame.svg create mode 100644 assets/images/clinicIcons/Gynecology oncology Clinic.svg create mode 100644 assets/images/clinicIcons/Interventional Radiology Clinic.svg create mode 100644 assets/images/clinicIcons/LIVER , GALLBLADDER, PANCREATIC CLINIC.svg create mode 100644 assets/images/clinicIcons/Maternal-Fetal Medicine Clinic.svg create mode 100644 assets/images/clinicIcons/Maxilliofacial Surgery.svg create mode 100644 assets/images/clinicIcons/OB-GYNE physiotherapy clinic-1.svg create mode 100644 assets/images/clinicIcons/Occupational Therapy Clinic.svg create mode 100644 assets/images/clinicIcons/Orthopedic Oncology Surgery Clinic.svg create mode 100644 assets/images/clinicIcons/RRT Clinic 2.svg create mode 100644 assets/images/clinicIcons/Radiation Oncology Clinic 2.svg create mode 100644 assets/images/clinicIcons/Retinopathy of prematurity(ROP).svg create mode 100644 assets/images/clinicIcons/SKIN AND HAIR CARE.svg create mode 100644 assets/images/clinicIcons/SPA SKIN CARE.svg create mode 100644 assets/images/clinicIcons/Smell Clinic 2.svg create mode 100644 assets/images/clinicIcons/Surgical Oncology Clinic.svg create mode 100644 assets/images/clinicIcons/Thoracic Clinic.svg create mode 100644 assets/images/clinicIcons/Urology Oncology Clinic.svg diff --git a/assets/images/clinicIcons/1.svg b/assets/images/clinicIcons/1.svg new file mode 100644 index 00000000..70f4171f --- /dev/null +++ b/assets/images/clinicIcons/1.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/104.svg b/assets/images/clinicIcons/104.svg new file mode 100644 index 00000000..3fd875ff --- /dev/null +++ b/assets/images/clinicIcons/104.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/clinicIcons/105.svg b/assets/images/clinicIcons/105.svg new file mode 100644 index 00000000..a9f4bd1c --- /dev/null +++ b/assets/images/clinicIcons/105.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/106.svg b/assets/images/clinicIcons/106.svg new file mode 100644 index 00000000..bd103ad1 --- /dev/null +++ b/assets/images/clinicIcons/106.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/107.svg b/assets/images/clinicIcons/107.svg new file mode 100644 index 00000000..b1946db9 --- /dev/null +++ b/assets/images/clinicIcons/107.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/clinicIcons/108.svg b/assets/images/clinicIcons/108.svg new file mode 100644 index 00000000..a29fe001 --- /dev/null +++ b/assets/images/clinicIcons/108.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/11.svg b/assets/images/clinicIcons/11.svg new file mode 100644 index 00000000..1c276aad --- /dev/null +++ b/assets/images/clinicIcons/11.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/110.svg b/assets/images/clinicIcons/110.svg new file mode 100644 index 00000000..6d533e2d --- /dev/null +++ b/assets/images/clinicIcons/110.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/111.svg b/assets/images/clinicIcons/111.svg new file mode 100644 index 00000000..46ba92f4 --- /dev/null +++ b/assets/images/clinicIcons/111.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/118.svg b/assets/images/clinicIcons/118.svg new file mode 100644 index 00000000..238cd5ac --- /dev/null +++ b/assets/images/clinicIcons/118.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/12.svg b/assets/images/clinicIcons/12.svg new file mode 100644 index 00000000..cb6a23f7 --- /dev/null +++ b/assets/images/clinicIcons/12.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/clinicIcons/126.svg b/assets/images/clinicIcons/126.svg new file mode 100644 index 00000000..9d26d975 --- /dev/null +++ b/assets/images/clinicIcons/126.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/128.svg b/assets/images/clinicIcons/128.svg new file mode 100644 index 00000000..0888a5f3 --- /dev/null +++ b/assets/images/clinicIcons/128.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/130.svg b/assets/images/clinicIcons/130.svg new file mode 100644 index 00000000..5598ebb3 --- /dev/null +++ b/assets/images/clinicIcons/130.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/131.svg b/assets/images/clinicIcons/131.svg new file mode 100644 index 00000000..dbf94b5c --- /dev/null +++ b/assets/images/clinicIcons/131.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/clinicIcons/134.svg b/assets/images/clinicIcons/134.svg new file mode 100644 index 00000000..42f84173 --- /dev/null +++ b/assets/images/clinicIcons/134.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/14.svg b/assets/images/clinicIcons/14.svg new file mode 100644 index 00000000..46ba92f4 --- /dev/null +++ b/assets/images/clinicIcons/14.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/140.svg b/assets/images/clinicIcons/140.svg new file mode 100644 index 00000000..56c7a538 --- /dev/null +++ b/assets/images/clinicIcons/140.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/148.svg b/assets/images/clinicIcons/148.svg new file mode 100644 index 00000000..bd103ad1 --- /dev/null +++ b/assets/images/clinicIcons/148.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/149.svg b/assets/images/clinicIcons/149.svg new file mode 100644 index 00000000..0888a5f3 --- /dev/null +++ b/assets/images/clinicIcons/149.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/16.svg b/assets/images/clinicIcons/16.svg new file mode 100644 index 00000000..e1ed3160 --- /dev/null +++ b/assets/images/clinicIcons/16.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/17.svg b/assets/images/clinicIcons/17.svg new file mode 100644 index 00000000..44bad059 --- /dev/null +++ b/assets/images/clinicIcons/17.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/18.svg b/assets/images/clinicIcons/18.svg new file mode 100644 index 00000000..1148ad6b --- /dev/null +++ b/assets/images/clinicIcons/18.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/19.svg b/assets/images/clinicIcons/19.svg new file mode 100644 index 00000000..5b7d43bd --- /dev/null +++ b/assets/images/clinicIcons/19.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/2.svg b/assets/images/clinicIcons/2.svg new file mode 100644 index 00000000..b4b15214 --- /dev/null +++ b/assets/images/clinicIcons/2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/20.svg b/assets/images/clinicIcons/20.svg new file mode 100644 index 00000000..9e6db603 --- /dev/null +++ b/assets/images/clinicIcons/20.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/21.svg b/assets/images/clinicIcons/21.svg new file mode 100644 index 00000000..9b9ee825 --- /dev/null +++ b/assets/images/clinicIcons/21.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/23.svg b/assets/images/clinicIcons/23.svg new file mode 100644 index 00000000..4f8b915d --- /dev/null +++ b/assets/images/clinicIcons/23.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/24.svg b/assets/images/clinicIcons/24.svg new file mode 100644 index 00000000..70f4171f --- /dev/null +++ b/assets/images/clinicIcons/24.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/25.svg b/assets/images/clinicIcons/25.svg new file mode 100644 index 00000000..70f4171f --- /dev/null +++ b/assets/images/clinicIcons/25.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/250.svg b/assets/images/clinicIcons/250.svg new file mode 100644 index 00000000..b4b15214 --- /dev/null +++ b/assets/images/clinicIcons/250.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/252.svg b/assets/images/clinicIcons/252.svg new file mode 100644 index 00000000..9545d249 --- /dev/null +++ b/assets/images/clinicIcons/252.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/253.svg b/assets/images/clinicIcons/253.svg new file mode 100644 index 00000000..71182316 --- /dev/null +++ b/assets/images/clinicIcons/253.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/254.svg b/assets/images/clinicIcons/254.svg new file mode 100644 index 00000000..5e24ad49 --- /dev/null +++ b/assets/images/clinicIcons/254.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/255.svg b/assets/images/clinicIcons/255.svg new file mode 100644 index 00000000..e9ccd2bb --- /dev/null +++ b/assets/images/clinicIcons/255.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/257.svg b/assets/images/clinicIcons/257.svg new file mode 100644 index 00000000..b4b15214 --- /dev/null +++ b/assets/images/clinicIcons/257.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/26.svg b/assets/images/clinicIcons/26.svg new file mode 100644 index 00000000..b82e118d --- /dev/null +++ b/assets/images/clinicIcons/26.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/260.svg b/assets/images/clinicIcons/260.svg new file mode 100644 index 00000000..60ed9c2b --- /dev/null +++ b/assets/images/clinicIcons/260.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/262.svg b/assets/images/clinicIcons/262.svg new file mode 100644 index 00000000..371c0ba5 --- /dev/null +++ b/assets/images/clinicIcons/262.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/clinicIcons/264.svg b/assets/images/clinicIcons/264.svg new file mode 100644 index 00000000..b1f231e1 --- /dev/null +++ b/assets/images/clinicIcons/264.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/27.svg b/assets/images/clinicIcons/27.svg new file mode 100644 index 00000000..6da1ed72 --- /dev/null +++ b/assets/images/clinicIcons/27.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/28.svg b/assets/images/clinicIcons/28.svg new file mode 100644 index 00000000..483893ce --- /dev/null +++ b/assets/images/clinicIcons/28.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/29.svg b/assets/images/clinicIcons/29.svg new file mode 100644 index 00000000..009a406f --- /dev/null +++ b/assets/images/clinicIcons/29.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/3.svg b/assets/images/clinicIcons/3.svg new file mode 100644 index 00000000..7a313ee7 --- /dev/null +++ b/assets/images/clinicIcons/3.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/30.svg b/assets/images/clinicIcons/30.svg new file mode 100644 index 00000000..d16a33a4 --- /dev/null +++ b/assets/images/clinicIcons/30.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/31.svg b/assets/images/clinicIcons/31.svg new file mode 100644 index 00000000..93becf0b --- /dev/null +++ b/assets/images/clinicIcons/31.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/32.svg b/assets/images/clinicIcons/32.svg new file mode 100644 index 00000000..9256566c --- /dev/null +++ b/assets/images/clinicIcons/32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/34.svg b/assets/images/clinicIcons/34.svg new file mode 100644 index 00000000..b592ad80 --- /dev/null +++ b/assets/images/clinicIcons/34.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/35.svg b/assets/images/clinicIcons/35.svg new file mode 100644 index 00000000..c5ac8796 --- /dev/null +++ b/assets/images/clinicIcons/35.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/36.svg b/assets/images/clinicIcons/36.svg new file mode 100644 index 00000000..1d171d41 --- /dev/null +++ b/assets/images/clinicIcons/36.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/clinicIcons/38.svg b/assets/images/clinicIcons/38.svg new file mode 100644 index 00000000..9448feb8 --- /dev/null +++ b/assets/images/clinicIcons/38.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/clinicIcons/4.svg b/assets/images/clinicIcons/4.svg new file mode 100644 index 00000000..beb7239c --- /dev/null +++ b/assets/images/clinicIcons/4.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/40.svg b/assets/images/clinicIcons/40.svg new file mode 100644 index 00000000..168ece67 --- /dev/null +++ b/assets/images/clinicIcons/40.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/41.svg b/assets/images/clinicIcons/41.svg new file mode 100644 index 00000000..93becf0b --- /dev/null +++ b/assets/images/clinicIcons/41.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/42.svg b/assets/images/clinicIcons/42.svg new file mode 100644 index 00000000..5b7d43bd --- /dev/null +++ b/assets/images/clinicIcons/42.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/44.svg b/assets/images/clinicIcons/44.svg new file mode 100644 index 00000000..e9edf9aa --- /dev/null +++ b/assets/images/clinicIcons/44.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/46.svg b/assets/images/clinicIcons/46.svg new file mode 100644 index 00000000..926ad199 --- /dev/null +++ b/assets/images/clinicIcons/46.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/5.svg b/assets/images/clinicIcons/5.svg new file mode 100644 index 00000000..d25576e0 --- /dev/null +++ b/assets/images/clinicIcons/5.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/50.svg b/assets/images/clinicIcons/50.svg new file mode 100644 index 00000000..662a64ea --- /dev/null +++ b/assets/images/clinicIcons/50.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/51.svg b/assets/images/clinicIcons/51.svg new file mode 100644 index 00000000..8ef6791f --- /dev/null +++ b/assets/images/clinicIcons/51.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/53.svg b/assets/images/clinicIcons/53.svg new file mode 100644 index 00000000..56c7a538 --- /dev/null +++ b/assets/images/clinicIcons/53.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/55.svg b/assets/images/clinicIcons/55.svg new file mode 100644 index 00000000..a94748cf --- /dev/null +++ b/assets/images/clinicIcons/55.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/clinicIcons/56.svg b/assets/images/clinicIcons/56.svg new file mode 100644 index 00000000..be814451 --- /dev/null +++ b/assets/images/clinicIcons/56.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/58.svg b/assets/images/clinicIcons/58.svg new file mode 100644 index 00000000..49871663 --- /dev/null +++ b/assets/images/clinicIcons/58.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/59.svg b/assets/images/clinicIcons/59.svg new file mode 100644 index 00000000..87e22694 --- /dev/null +++ b/assets/images/clinicIcons/59.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/6.svg b/assets/images/clinicIcons/6.svg new file mode 100644 index 00000000..50e0c7b9 --- /dev/null +++ b/assets/images/clinicIcons/6.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/67.svg b/assets/images/clinicIcons/67.svg new file mode 100644 index 00000000..4f8b915d --- /dev/null +++ b/assets/images/clinicIcons/67.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/68.svg b/assets/images/clinicIcons/68.svg new file mode 100644 index 00000000..d16a33a4 --- /dev/null +++ b/assets/images/clinicIcons/68.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/69.svg b/assets/images/clinicIcons/69.svg new file mode 100644 index 00000000..70f4171f --- /dev/null +++ b/assets/images/clinicIcons/69.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/7.svg b/assets/images/clinicIcons/7.svg new file mode 100644 index 00000000..b1ec62e7 --- /dev/null +++ b/assets/images/clinicIcons/7.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/74.svg b/assets/images/clinicIcons/74.svg new file mode 100644 index 00000000..62371818 --- /dev/null +++ b/assets/images/clinicIcons/74.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/78.svg b/assets/images/clinicIcons/78.svg new file mode 100644 index 00000000..60ed9c2b --- /dev/null +++ b/assets/images/clinicIcons/78.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/79.svg b/assets/images/clinicIcons/79.svg new file mode 100644 index 00000000..1decce94 --- /dev/null +++ b/assets/images/clinicIcons/79.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/8.svg b/assets/images/clinicIcons/8.svg new file mode 100644 index 00000000..d16a33a4 --- /dev/null +++ b/assets/images/clinicIcons/8.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/clinicIcons/83.svg b/assets/images/clinicIcons/83.svg new file mode 100644 index 00000000..87e22694 --- /dev/null +++ b/assets/images/clinicIcons/83.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/84.svg b/assets/images/clinicIcons/84.svg new file mode 100644 index 00000000..ed242ec2 --- /dev/null +++ b/assets/images/clinicIcons/84.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/85.svg b/assets/images/clinicIcons/85.svg new file mode 100644 index 00000000..076d2018 --- /dev/null +++ b/assets/images/clinicIcons/85.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/86.svg b/assets/images/clinicIcons/86.svg new file mode 100644 index 00000000..4615e671 --- /dev/null +++ b/assets/images/clinicIcons/86.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/87.svg b/assets/images/clinicIcons/87.svg new file mode 100644 index 00000000..d0b95ae1 --- /dev/null +++ b/assets/images/clinicIcons/87.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/88.svg b/assets/images/clinicIcons/88.svg new file mode 100644 index 00000000..93f30422 --- /dev/null +++ b/assets/images/clinicIcons/88.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/89.svg b/assets/images/clinicIcons/89.svg new file mode 100644 index 00000000..768ef4a2 --- /dev/null +++ b/assets/images/clinicIcons/89.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/clinicIcons/9.svg b/assets/images/clinicIcons/9.svg new file mode 100644 index 00000000..aa0acfba --- /dev/null +++ b/assets/images/clinicIcons/9.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/90.svg b/assets/images/clinicIcons/90.svg new file mode 100644 index 00000000..6f8a44b0 --- /dev/null +++ b/assets/images/clinicIcons/90.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/91.svg b/assets/images/clinicIcons/91.svg new file mode 100644 index 00000000..42344286 --- /dev/null +++ b/assets/images/clinicIcons/91.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/93.svg b/assets/images/clinicIcons/93.svg new file mode 100644 index 00000000..be1b4a69 --- /dev/null +++ b/assets/images/clinicIcons/93.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/98.svg b/assets/images/clinicIcons/98.svg new file mode 100644 index 00000000..93f30422 --- /dev/null +++ b/assets/images/clinicIcons/98.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/Cardiac Surgery.svg b/assets/images/clinicIcons/Cardiac Surgery.svg new file mode 100644 index 00000000..20758717 --- /dev/null +++ b/assets/images/clinicIcons/Cardiac Surgery.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/Colorectal Oncology Clinic 2.svg b/assets/images/clinicIcons/Colorectal Oncology Clinic 2.svg new file mode 100644 index 00000000..b3898e57 --- /dev/null +++ b/assets/images/clinicIcons/Colorectal Oncology Clinic 2.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/Dental Employee Clinic.svg b/assets/images/clinicIcons/Dental Employee Clinic.svg new file mode 100644 index 00000000..44bad059 --- /dev/null +++ b/assets/images/clinicIcons/Dental Employee Clinic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/ENT Oncology Clinic 2.svg b/assets/images/clinicIcons/ENT Oncology Clinic 2.svg new file mode 100644 index 00000000..7defb9c0 --- /dev/null +++ b/assets/images/clinicIcons/ENT Oncology Clinic 2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/ER CLINIC.svg b/assets/images/clinicIcons/ER CLINIC.svg new file mode 100644 index 00000000..cb239be1 --- /dev/null +++ b/assets/images/clinicIcons/ER CLINIC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/EXCELLENCE CLINIC.svg b/assets/images/clinicIcons/EXCELLENCE CLINIC.svg new file mode 100644 index 00000000..b6cc121a --- /dev/null +++ b/assets/images/clinicIcons/EXCELLENCE CLINIC.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Frame.svg b/assets/images/clinicIcons/Frame.svg new file mode 100644 index 00000000..c573a489 --- /dev/null +++ b/assets/images/clinicIcons/Frame.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Gynecology oncology Clinic.svg b/assets/images/clinicIcons/Gynecology oncology Clinic.svg new file mode 100644 index 00000000..9bef9cbe --- /dev/null +++ b/assets/images/clinicIcons/Gynecology oncology Clinic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Interventional Radiology Clinic.svg b/assets/images/clinicIcons/Interventional Radiology Clinic.svg new file mode 100644 index 00000000..5b7d43bd --- /dev/null +++ b/assets/images/clinicIcons/Interventional Radiology Clinic.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/LIVER , GALLBLADDER, PANCREATIC CLINIC.svg b/assets/images/clinicIcons/LIVER , GALLBLADDER, PANCREATIC CLINIC.svg new file mode 100644 index 00000000..117b29b9 --- /dev/null +++ b/assets/images/clinicIcons/LIVER , GALLBLADDER, PANCREATIC CLINIC.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Maternal-Fetal Medicine Clinic.svg b/assets/images/clinicIcons/Maternal-Fetal Medicine Clinic.svg new file mode 100644 index 00000000..708d85fb --- /dev/null +++ b/assets/images/clinicIcons/Maternal-Fetal Medicine Clinic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/clinicIcons/Maxilliofacial Surgery.svg b/assets/images/clinicIcons/Maxilliofacial Surgery.svg new file mode 100644 index 00000000..66a0fbd1 --- /dev/null +++ b/assets/images/clinicIcons/Maxilliofacial Surgery.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/OB-GYNE physiotherapy clinic-1.svg b/assets/images/clinicIcons/OB-GYNE physiotherapy clinic-1.svg new file mode 100644 index 00000000..5e24ad49 --- /dev/null +++ b/assets/images/clinicIcons/OB-GYNE physiotherapy clinic-1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/Occupational Therapy Clinic.svg b/assets/images/clinicIcons/Occupational Therapy Clinic.svg new file mode 100644 index 00000000..31815199 --- /dev/null +++ b/assets/images/clinicIcons/Occupational Therapy Clinic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/clinicIcons/Orthopedic Oncology Surgery Clinic.svg b/assets/images/clinicIcons/Orthopedic Oncology Surgery Clinic.svg new file mode 100644 index 00000000..226d56c7 --- /dev/null +++ b/assets/images/clinicIcons/Orthopedic Oncology Surgery Clinic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/clinicIcons/RRT Clinic 2.svg b/assets/images/clinicIcons/RRT Clinic 2.svg new file mode 100644 index 00000000..f4e451a4 --- /dev/null +++ b/assets/images/clinicIcons/RRT Clinic 2.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/Radiation Oncology Clinic 2.svg b/assets/images/clinicIcons/Radiation Oncology Clinic 2.svg new file mode 100644 index 00000000..ac8e5e15 --- /dev/null +++ b/assets/images/clinicIcons/Radiation Oncology Clinic 2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Retinopathy of prematurity(ROP).svg b/assets/images/clinicIcons/Retinopathy of prematurity(ROP).svg new file mode 100644 index 00000000..814b1a73 --- /dev/null +++ b/assets/images/clinicIcons/Retinopathy of prematurity(ROP).svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/SKIN AND HAIR CARE.svg b/assets/images/clinicIcons/SKIN AND HAIR CARE.svg new file mode 100644 index 00000000..dbe39722 --- /dev/null +++ b/assets/images/clinicIcons/SKIN AND HAIR CARE.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/clinicIcons/SPA SKIN CARE.svg b/assets/images/clinicIcons/SPA SKIN CARE.svg new file mode 100644 index 00000000..55ce4736 --- /dev/null +++ b/assets/images/clinicIcons/SPA SKIN CARE.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/clinicIcons/Smell Clinic 2.svg b/assets/images/clinicIcons/Smell Clinic 2.svg new file mode 100644 index 00000000..53417591 --- /dev/null +++ b/assets/images/clinicIcons/Smell Clinic 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/clinicIcons/Surgical Oncology Clinic.svg b/assets/images/clinicIcons/Surgical Oncology Clinic.svg new file mode 100644 index 00000000..7e7f1db7 --- /dev/null +++ b/assets/images/clinicIcons/Surgical Oncology Clinic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/clinicIcons/Thoracic Clinic.svg b/assets/images/clinicIcons/Thoracic Clinic.svg new file mode 100644 index 00000000..9d26d975 --- /dev/null +++ b/assets/images/clinicIcons/Thoracic Clinic.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/clinicIcons/Urology Oncology Clinic.svg b/assets/images/clinicIcons/Urology Oncology Clinic.svg new file mode 100644 index 00000000..935af2ee --- /dev/null +++ b/assets/images/clinicIcons/Urology Oncology Clinic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index bc0c49ab..4142dbe8 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -314,11 +314,9 @@ class _BookAppointmentPageState extends State { ).paddingSymmetrical(24.h, 0.h); case 1: //TODO: Get LiveCare type Select UI from Hussain - return - // appState.isAuthenticated - // ? - Column( - children: [ + return appState.isAuthenticated + ? Column( + children: [ Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -429,8 +427,7 @@ class _BookAppointmentPageState extends State { ), ], ).paddingSymmetrical(24.h, 0.h) - // : getLiveCareNotLoggedInUI() - ; + : getLiveCareNotLoggedInUI(); default: SizedBox.shrink(); } diff --git a/lib/presentation/book_appointment/widgets/clinic_card.dart b/lib/presentation/book_appointment/widgets/clinic_card.dart index cab3b1a4..c563c16f 100644 --- a/lib/presentation/book_appointment/widgets/clinic_card.dart +++ b/lib/presentation/book_appointment/widgets/clinic_card.dart @@ -32,7 +32,7 @@ class ClinicCard extends StatelessWidget { child: Column( children: [ Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.generic_clinic_icon, width: 24.h, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), + Utils.buildSvgWithAssets(icon: "assets/images/clinicIcons/${clinicsListResponseModel.clinicID ?? 1}.svg", width: 24.h, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), (clinicsListResponseModel.isLiveCareClinicAndOnline ?? true) ? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.h, height: 32.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading) : SizedBox.shrink(), diff --git a/pubspec.yaml b/pubspec.yaml index cdad394c..26903b65 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -115,6 +115,7 @@ flutter: - assets/images/png/body_parts/female/ - assets/images/svg/ - assets/images/png/ + - assets/images/clinicIcons/ - assets/images/png/zoom/ - assets/images/png/smartwatches/ - assets/animations/ From e4b63608081e8c3716b2b3597f5c204cc57e7a0f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Jan 2026 11:01:23 +0300 Subject: [PATCH 24/67] Services Page fix --- lib/presentation/hmg_services/services_view.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/presentation/hmg_services/services_view.dart b/lib/presentation/hmg_services/services_view.dart index 59efb73f..99085a53 100644 --- a/lib/presentation/hmg_services/services_view.dart +++ b/lib/presentation/hmg_services/services_view.dart @@ -24,11 +24,12 @@ class ServiceGridViewItem extends StatelessWidget { @override Widget build(BuildContext context) { return InkWell( - onTap: () => hmgServiceComponentModel.isExternalLink - ? _openLink(hmgServiceComponentModel.route!) - : getIt - .get() - .pushPageRoute(hmgServiceComponentModel.route!), + onTap: () => hmgServiceComponentModel.route != null ? getIt.get().pushPageRoute(hmgServiceComponentModel.route!) : hmgServiceComponentModel.onTap!(), + // onTap: () => hmgServiceComponentModel.isExternalLink + // ? _openLink(hmgServiceComponentModel.route!) + // : getIt + // .get() + // .pushPageRoute(hmgServiceComponentModel.route!), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, From 7ead6d79e5ca579192b5b9915a998da1af16625a Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Jan 2026 11:34:08 +0300 Subject: [PATCH 25/67] updates --- assets/images/svg/change_language_home_page.svg | 10 ++++++++++ assets/langs/ar-SA.json | 2 +- lib/core/app_assets.dart | 1 + .../book_appointment/book_appointment_page.dart | 3 ++- .../book_appointment/widgets/clinic_card.dart | 4 ++-- lib/presentation/home/landing_page.dart | 2 +- .../symptoms_checker/organ_selector_screen.dart | 8 ++++---- .../symptoms_checker/risk_factors_screen.dart | 1 + lib/presentation/symptoms_checker/triage_screen.dart | 10 ++++------ 9 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 assets/images/svg/change_language_home_page.svg diff --git a/assets/images/svg/change_language_home_page.svg b/assets/images/svg/change_language_home_page.svg new file mode 100644 index 00000000..716a3b02 --- /dev/null +++ b/assets/images/svg/change_language_home_page.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 3ceb2e99..90103c09 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1385,7 +1385,7 @@ "seekMedicalAdviceDescription": "ليست حالة طوارئ ولكن من الأفضل مراقبة الأعراض.", "emergencyDescription": "تحتاج إلى استشارة الطبيب في أقرب وقت ممكن قبل فوات الأوان.", "colorScience": "دلالات الألوان", - "noNeedToVisitDoctor": "لا حاجة لزي��رة الطبيب", + "noNeedToVisitDoctor": "لا حاجة لزيرة الطبيب", "commonSymptom": "الأعراض الشائعة", "bookAppointment": "احجز موعد", "notApplicable": "لا ينطبق", diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index c3a24f75..1920ff25 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -310,6 +310,7 @@ class AppAssets { static const String enLangIcon = '$svgBasePath/en_lang_icon.svg'; static const String doctorResponseIcon = '$svgBasePath/doctor_response_icon.svg'; + static const String changeLanguageHomePageIcon = '$svgBasePath/change_language_home_page.svg'; // PNGS // static const String hmgLogo = '$pngBasePath/hmg_logo.png'; diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index 4142dbe8..b95e0c26 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -456,9 +456,10 @@ class _BookAppointmentPageState extends State { SizedBox(width: 16.w), CustomButton( height: 40.h, + width: 40.w, text: "", onPressed: () => context.navigateWithName(AppRoutes.userInfoSelection), - icon: AppAssets.arrow_forward, + icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, ) ], ).paddingAll(24.w), diff --git a/lib/presentation/book_appointment/widgets/clinic_card.dart b/lib/presentation/book_appointment/widgets/clinic_card.dart index c563c16f..7e3c8df1 100644 --- a/lib/presentation/book_appointment/widgets/clinic_card.dart +++ b/lib/presentation/book_appointment/widgets/clinic_card.dart @@ -32,9 +32,9 @@ class ClinicCard extends StatelessWidget { child: Column( children: [ Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: "assets/images/clinicIcons/${clinicsListResponseModel.clinicID ?? 1}.svg", width: 24.h, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), + Utils.buildSvgWithAssets(icon: "assets/images/clinicIcons/${clinicsListResponseModel.clinicID ?? 1}.svg", width: 24.w, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), (clinicsListResponseModel.isLiveCareClinicAndOnline ?? true) - ? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.h, height: 32.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading) + ? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.w, height: 32.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading) : SizedBox.shrink(), ], ), diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index b6334043..770e9532 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -249,7 +249,7 @@ class _LandingPageState extends State { ); }), !appState.isAuthenticated - ? Utils.buildSvgWithAssets(icon: appState.isArabic() ? AppAssets.enLangIcon : AppAssets.arLangIcon, height: 18.h, width: 18.h).onPress(() { + ? Utils.buildSvgWithAssets(icon: AppAssets.changeLanguageHomePageIcon, height: 18.h, width: 18.h).onPress(() { context.setLocale(appState.isArabic() ? Locale('en', 'US') : Locale('ar', 'SA')); }) : SizedBox.shrink() diff --git a/lib/presentation/symptoms_checker/organ_selector_screen.dart b/lib/presentation/symptoms_checker/organ_selector_screen.dart index e3944c24..9a4a1d96 100644 --- a/lib/presentation/symptoms_checker/organ_selector_screen.dart +++ b/lib/presentation/symptoms_checker/organ_selector_screen.dart @@ -99,11 +99,11 @@ class _OrganSelectorPageState extends State { flipX: _appState.isArabic(), child: IconButton( icon: Utils.buildSvgWithAssets( - icon: AppAssets.arrow_back, - width: 32.h, - height: 32.h, + icon: AppAssets.forward_top_nav_icon, + width: 24.w, + height: 24.h, ), - padding: EdgeInsetsDirectional.only(start: 12), + padding: EdgeInsetsDirectional.only(start: 12, end: 12), onPressed: () => Navigator.pop(context), highlightColor: Colors.transparent, ), diff --git a/lib/presentation/symptoms_checker/risk_factors_screen.dart b/lib/presentation/symptoms_checker/risk_factors_screen.dart index 8264b8b4..484ad2d7 100644 --- a/lib/presentation/symptoms_checker/risk_factors_screen.dart +++ b/lib/presentation/symptoms_checker/risk_factors_screen.dart @@ -125,6 +125,7 @@ class _RiskFactorsScreenState extends State { fontSize: 13.f, fontWeight: FontWeight.w500, color: AppColors.greyInfoTextColor, + fontFamily: isArabic ? 'GESSTwo' : 'Poppins' ), children: [ TextSpan( diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index a7975e2c..0811833e 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -467,18 +467,14 @@ class _TriagePageState extends State { text: TextSpan( text: LocaleKeys.possibleSymptom.tr(context: context), style: TextStyle( - color: AppColors.greyTextColor, - fontWeight: FontWeight.w600, - fontSize: 14.f, - ), + color: AppColors.greyTextColor, fontWeight: FontWeight.w600, fontSize: 14.f, fontFamily: isArabic ? 'GESSTwo' : 'Poppins'), children: [ TextSpan( text: suggestedCondition, style: TextStyle( color: AppColors.textColor, fontWeight: FontWeight.w600, - fontSize: 14.f, - ), + fontSize: 14.f, fontFamily: isArabic ? 'GESSTwo' : 'Poppins'), ), ], ), @@ -494,6 +490,7 @@ class _TriagePageState extends State { text: TextSpan( text: "${probability.toStringAsFixed(1)}% ", style: TextStyle( + fontFamily: isArabic ? 'GESSTwo' : 'Poppins', color: AppColors.primaryRedColor, fontWeight: FontWeight.w600, fontSize: 14.f, @@ -505,6 +502,7 @@ class _TriagePageState extends State { color: AppColors.textColor, fontWeight: FontWeight.w500, fontSize: 13.f, + fontFamily: isArabic ? 'GESSTwo' : 'Poppins', ), ), ], From 8b701255ed02bb3e0d64b09533b62af45fa4fc81 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Thu, 22 Jan 2026 11:38:47 +0300 Subject: [PATCH 26/67] logout & family file fix --- assets/images/svg/my_child_vaccine.svg | 5 + lib/core/app_assets.dart | 1 + .../authentication_view_model.dart | 28 +- .../widgets/hospital_selection.dart | 5 +- .../medical_file/medical_file_view_model.dart | 14 +- .../blood_donation/blood_donation_page.dart | 1 + .../child_vaccine/my_child_vaccine_page.dart | 376 ++++++++++++++++++ .../hmg_services/services_page.dart | 9 + .../profile_settings/profile_settings.dart | 17 +- lib/routes/app_routes.dart | 3 + lib/theme/colors.dart | 1 + 11 files changed, 446 insertions(+), 14 deletions(-) create mode 100644 assets/images/svg/my_child_vaccine.svg create mode 100644 lib/presentation/child_vaccine/my_child_vaccine_page.dart diff --git a/assets/images/svg/my_child_vaccine.svg b/assets/images/svg/my_child_vaccine.svg new file mode 100644 index 00000000..f671baf8 --- /dev/null +++ b/assets/images/svg/my_child_vaccine.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 26da9fae..17422a6e 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -183,6 +183,7 @@ class AppAssets { static const String bulb_icon = '$svgBasePath/bulb_icon.svg'; static const String select_city_icon = '$svgBasePath/select_city_icon.svg'; static const String blood_donation_icon = '$svgBasePath/blood_donation_icon.svg'; + static const String my_child_vaccine_icon = '$svgBasePath/my_child_vaccine.svg'; static const String virtual_tour_icon = '$svgBasePath/virtual_tour_icon.svg'; static const String car_parking_icon = '$svgBasePath/car_parking_icon.svg'; static const String latest_news_icon = '$svgBasePath/latest_news_icon.svg'; diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 6379456e..7ac2ae5e 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -462,7 +462,7 @@ class AuthenticationViewModel extends ChangeNotifier { if (isSwitchUser && _appState.getSuperUserID == null) { nationalIdController.text = responseID.toString(); - }else if( isSwitchUser && _appState.getSuperUserID != null){ + } else if (isSwitchUser && _appState.getSuperUserID != null) { nationalIdController.text = _appState.getSuperUserID.toString(); } @@ -1078,4 +1078,30 @@ class AuthenticationViewModel extends ChangeNotifier { return null; } } + + Future logout() async { + try { + // Clear user data from AppState + _appState.setAuthenticatedUser(null); + _appState.setAuthenticatedUser(null, isFamily: true); + _appState.setIsAuthenticated = false; + _appState.setAppAuthToken = ""; + _appState.setUserBloodGroup = ""; + _appState.setSuperUserID = null; + _appState.setIsChildLoggedIn = false; + _appState.setFamilyFileTokenID = ""; + _appState.setSelectDeviceByImeiRespModelElement(null); + _appState.setNHICUserData = CheckUserStatusResponseNHIC(); + _appState.setUserRegistrationPayload = RegistrationDataModelPayload(); + // Clear privilege lists + _appState.setPrivilegeModelList([]); + _appState.setVidaPlusProjectList([]); + _appState.setHMCProjectList([]); + _appState.setProjectsDetailList([]); + await clearDefaultInputValues(); + _navigationService.pushAndReplace(AppRoutes.landingScreen); + } catch (e) { + _navigationService.pushAndReplace(AppRoutes.landingScreen); + } + } } diff --git a/lib/features/blood_donation/widgets/hospital_selection.dart b/lib/features/blood_donation/widgets/hospital_selection.dart index c6065ae9..9889410c 100644 --- a/lib/features/blood_donation/widgets/hospital_selection.dart +++ b/lib/features/blood_donation/widgets/hospital_selection.dart @@ -15,8 +15,9 @@ import 'package:provider/provider.dart'; class HospitalBottomSheetBodySelection extends StatelessWidget { final Function(BdGetProjectsHaveBdClinic userSelection) onUserHospitalSelection; + final bool isHideTitle; - const HospitalBottomSheetBodySelection({super.key, required this.onUserHospitalSelection(BdGetProjectsHaveBdClinic userSelection)}); + const HospitalBottomSheetBodySelection({super.key, required this.onUserHospitalSelection(BdGetProjectsHaveBdClinic userSelection), this.isHideTitle = false}); @override Widget build(BuildContext context) { @@ -25,7 +26,7 @@ class HospitalBottomSheetBodySelection extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.selectHospital.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), + if(!isHideTitle) LocaleKeys.selectHospital.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), SizedBox(height: 16.h), SizedBox( height: MediaQuery.sizeOf(context).height * .4, diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index d67e5de8..17cbb94e 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/core/utils/request_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; @@ -576,9 +577,18 @@ class MedicalFileViewModel extends ChangeNotifier { await RequestUtils.getAddFamilyRequest(nationalIDorFile: authVM.nationalIdController.text, mobileNo: authVM.phoneNumberController.text, countryCode: authVM.selectedCountrySignup.countryCode); final resultEither = await medicalFileRepo.addFamilyFile(request: request.toJson()); - resultEither.fold((failure) async => await errorHandlerService.handleError(failure: failure), (apiResponse) async { + resultEither.fold( + (failure) async => await errorHandlerService.handleError( + failure: failure, + onUnHandledFailure: (failure) { + LoaderBottomSheet.hideLoader(); + _dialogService.showErrorBottomSheet( + message: failure.message!, + onOkPressed: () { + navigationService.pop(); + }); + }), (apiResponse) async { if (apiResponse.messageStatus == 2) { - print("======="); LoaderBottomSheet.hideLoader(); _dialogService.showErrorBottomSheet( message: apiResponse.errorMessage!, diff --git a/lib/presentation/blood_donation/blood_donation_page.dart b/lib/presentation/blood_donation/blood_donation_page.dart index fe365358..26da5995 100644 --- a/lib/presentation/blood_donation/blood_donation_page.dart +++ b/lib/presentation/blood_donation/blood_donation_page.dart @@ -62,6 +62,7 @@ class _BloodDonationPageState extends State { bloodDonationVM.fetchHospitalsList().then((value) { showCommonBottomSheetWithoutHeight(context, title: "Select Hospital", isDismissible: false, child: Consumer(builder: (_, data, __) { return HospitalBottomSheetBodySelection( + isHideTitle: true, onUserHospitalSelection: (BdGetProjectsHaveBdClinic userChoice) { bloodDonationVM.getFreeBloodDonationSlots(request: {"ClinicID": 134, "ProjectID": userChoice.projectId}); }, diff --git a/lib/presentation/child_vaccine/my_child_vaccine_page.dart b/lib/presentation/child_vaccine/my_child_vaccine_page.dart new file mode 100644 index 00000000..6a226ab4 --- /dev/null +++ b/lib/presentation/child_vaccine/my_child_vaccine_page.dart @@ -0,0 +1,376 @@ +// import 'package:easy_localization/easy_localization.dart'; +// import 'package:flutter/material.dart'; +// import 'package:hmg_patient_app_new/core/app_assets.dart'; +// import 'package:hmg_patient_app_new/core/app_state.dart'; +// import 'package:hmg_patient_app_new/core/dependencies.dart'; +// import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +// import 'package:hmg_patient_app_new/core/utils/utils.dart'; +// import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +// import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +// import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; +// import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; +// import 'package:hmg_patient_app_new/features/blood_donation/models/blood_group_hospitals_model.dart'; +// import 'package:hmg_patient_app_new/features/blood_donation/widgets/hospital_selection.dart'; +// import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_blood_group_widget.dart'; +// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_city_widget.dart'; +// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_gender_widget.dart'; +// import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart'; +// import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; +// import 'package:hmg_patient_app_new/services/dialog_service.dart'; +// import 'package:hmg_patient_app_new/theme/colors.dart'; +// import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +// import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +// import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +// import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +// import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +// import 'package:lottie/lottie.dart'; +// import 'package:provider/provider.dart'; +// import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; +// +// class MyChildVaccinePage extends StatefulWidget { +// MyChildVaccinePage({super.key}); +// +// @override +// State createState() => _MyChildVaccinePageState(); +// } +// +// class _MyChildVaccinePageState extends State { +// late AppState appState; +// +// @override +// void initState() { +// super.initState(); +// Future.microtask(() => getIt.get().fetchAllData()); +// } +// +// @override +// Widget build(BuildContext context) { +// appState = getIt(); +// return Scaffold( +// backgroundColor: AppColors.bgScaffoldColor, +// body: Consumer(builder: (context, bloodDonationVM, child) { +// return Column( +// children: [ +// Expanded( +// child: CollapsingListView( +// title: "Child Vaccines".needTranslation, +// trailing: CustomButton( +// icon: AppAssets.add_icon, +// text: "Add Child", +// onPressed: () {}, +// backgroundColor: AppColors.bgRedLightColor, +// borderColor: AppColors.bgRedLightColor, +// textColor: AppColors.primaryRedColor, +// iconColor: AppColors.primaryRedColor, +// padding: EdgeInsetsGeometry.symmetric(vertical: 0.h, horizontal: 10.h)), +// child: Padding( +// padding: EdgeInsets.all(24.w), +// child: SingleChildScrollView( +// child: Container( +// decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), +// child: Padding( +// padding: EdgeInsets.all(16.h), +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// Row( +// children: [ +// Utils.buildSvgWithAssets(icon: AppAssets.select_city_icon, width: 40.h, height: 40.h), +// SizedBox(width: 12.w), +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// LocaleKeys.city.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), +// (appState.isArabic() +// ? (bloodDonationVM.selectedCity?.descriptionN ?? LocaleKeys.select.tr()) +// : bloodDonationVM.selectedCity?.description ?? LocaleKeys.select.tr(context: context)) +// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// ], +// ), +// ], +// ), +// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), +// ], +// ).onPress(() async { +// showCommonBottomSheetWithoutHeight(context, +// title: LocaleKeys.selectCity.tr(context: context), isDismissible: true, child: SelectCityWidget(bloodDonationViewModel: bloodDonationVM), callBackFunc: () {}); +// }), +// SizedBox(height: 16.h), +// Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), +// SizedBox(height: 16.h), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// Row( +// children: [ +// Utils.buildSvgWithAssets(icon: AppAssets.genderInputIcon, width: 40.h, height: 40.h), +// SizedBox(width: 12.w), +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// LocaleKeys.gender.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), +// (appState.isArabic() +// ? (bloodDonationVM.selectedGender?.typeAr ?? LocaleKeys.select.tr()) +// : bloodDonationVM.selectedGender?.type ?? LocaleKeys.select.tr(context: context)) +// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// ], +// ), +// ], +// ), +// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), +// ], +// ).onPress(() { +// showCommonBottomSheetWithoutHeight(context, +// title: LocaleKeys.selectGender.tr(context: context), +// isDismissible: true, +// child: SelectGenderWidget(isArabic: appState.isArabic(), bloodDonationViewModel: bloodDonationVM), +// callBackFunc: () {}); +// }), +// SizedBox(height: 16.h), +// Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), +// SizedBox(height: 16.h), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// Row( +// children: [ +// Utils.buildSvgWithAssets(icon: AppAssets.bloodType, width: 40.h, height: 40.h), +// SizedBox(width: 12.w), +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), +// // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// (appState.isArabic() +// ? (bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr()) +// : bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr(context: context)) +// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500) +// ], +// ), +// ], +// ), +// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), +// ], +// ).onPress(() { +// showCommonBottomSheetWithoutHeight(context, +// title: LocaleKeys.select.tr(context: context), +// isDismissible: true, +// child: SelectBloodGroupWidget(isArabic: appState.isArabic(), bloodDonationViewModel: bloodDonationVM), +// callBackFunc: () {}); +// }), +// ], +// ), +// ), +// ), +// ), +// ), +// ), +// ), +// Container( +// decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), +// child: SizedBox( +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// ], +// ), +// ), +// ), +// ], +// ); +// }), +// ); +// } +// } + + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; + +class MyChildVaccinePage extends StatefulWidget { + const MyChildVaccinePage({super.key}); + + @override + State createState() => _MyChildVaccinePageState(); +} + +class _MyChildVaccinePageState extends State { + int selectedChildIndex = 0; + + final List> children = [ + {"name": "Faris", "gender": "Son", "image": AppAssets.babyBoyImg}, + {"name": "Zaina", "gender": "Daughter", "image": AppAssets.babyGirlImg}, + {"name": "Ahmed", "gender": "Son", "image": AppAssets.babyBoyImg}, + ]; + + final List> vaccinesData = [ + { + "age": "4 months", + "dueDate": "19 Aug, 2025", + "vaccines": ["IPV", "DTap", "Hepatitis B", "HIB", "Pneumococcal Conjugate (PCV)", "Rota"] + }, + { + "age": "2 months", + "dueDate": "19 June, 2025", + "vaccines": ["IPV", "DTap", "Hepatitis B", "HIB", "Pneumococcal Conjugate (PCV)", "Rota"] + } + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Column( + children: [ + Expanded( + child: CollapsingListView( + title: "Child Vaccines".needTranslation, + trailing: CustomButton( + icon: AppAssets.add_icon, + text: "Add Child", + onPressed: () {}, + backgroundColor: AppColors.bgRedLightColor, + borderColor: AppColors.bgRedLightColor, + textColor: AppColors.primaryRedColor, + iconColor: AppColors.primaryRedColor, + padding: EdgeInsets.symmetric(vertical: 0.h, horizontal: 10.w), + ), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + _buildChildSelector(), + SizedBox(height: 24.h), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: EdgeInsets.symmetric(horizontal: 24.w), + itemCount: vaccinesData.length, + separatorBuilder: (context, index) => SizedBox(height: 16.h), + itemBuilder: (context, index) { + return _buildVaccineCard(vaccinesData[index]); + }, + ), + SizedBox(height: 24.h), + ], + ), + ), + ), + ), + ], + ), + ); + } + + Widget _buildChildSelector() { + return SizedBox( + height: 50.h, + child: ListView.separated( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.symmetric(horizontal: 24.w), + itemCount: children.length, + separatorBuilder: (context, index) => SizedBox(width: 12.w), + itemBuilder: (context, index) { + bool isSelected = selectedChildIndex == index; + return GestureDetector( + onTap: () => setState(() => selectedChildIndex = index), + child: Container( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h), + decoration: BoxDecoration( + color: isSelected ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + border: Border.all( + color: isSelected ? AppColors.primaryRedColor : AppColors.borderOnlyColor.withValues(alpha: 0.1), + width: 1, + ), + ), + child: Row( + children: [ + Image.asset(children[index]['image'], width: 24.h, height: 24.h), + SizedBox(width: 8.w), + Text( + "${children[index]['name']} (${children[index]['gender']})", + style: TextStyle( + color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, + fontWeight: isSelected ? FontWeight.w600 : FontWeight.w500, + fontSize: 14.f, + ), + ), + ], + ), + ), + ); + }, + ), + ); + } + + Widget _buildVaccineCard(Map data) { + return Container( + padding: EdgeInsets.all(20.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + data['age'].toString().toText18(weight: FontWeight.bold, color: AppColors.textColor), + SizedBox(height: 12.h), + Container( + padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 8.h), + decoration: BoxDecoration( + color: AppColors.bgScaffoldColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.calendar, width: 16.h, height: 16.h, iconColor: AppColors.textColor), + SizedBox(width: 8.w), + "Due Date : ${data['dueDate']}".toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + ], + ), + ), + SizedBox(height: 16.h), + ... (data['vaccines'] as List).map((vaccine) => Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.tickIcon, width: 20.h, height: 20.h, iconColor: Colors.green), + SizedBox(width: 12.w), + vaccine.toString().toText14(weight: FontWeight.w500, color: AppColors.textColor), + ], + ), + )), + SizedBox(height: 8.h), + CustomButton( + text: "Send via email", + onPressed: () {}, + backgroundColor: AppColors.bgRedLightColor, + borderColor: Colors.transparent, + textColor: AppColors.primaryRedColor, + icon: AppAssets.email, + iconColor: AppColors.primaryRedColor, + width: double.infinity, + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 98598cc7..fd19fe51 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -147,6 +147,15 @@ class ServicesPage extends StatelessWidget { true, route: AppRoutes.bloodDonationPage, ), + HmgServicesComponentModel( + 3, + "My Child Vaccine".needTranslation, + "".needTranslation, + AppAssets.my_child_vaccine_icon, + bgColor: AppColors.myChildVaccineCardColor, + true, + route: AppRoutes.myChildVaccine, + ), // HmgServicesComponentModel( // 11, // "Covid 19 Test".needTranslation, diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 0bf70587..df2efb26 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -13,6 +13,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; @@ -84,7 +85,9 @@ class ProfileSettingsState extends State { Widget build(BuildContext context) { return CollapsingListView( title: LocaleKeys.profileAndSettings.tr(context: context), - logout: () {}, + logout: () { + context.read().logout(); + }, isClose: true, child: SingleChildScrollView( padding: EdgeInsets.only(top: 24.h, bottom: 24.h), @@ -183,8 +186,7 @@ class ProfileSettingsState extends State { ), ], ), - LocaleKeys.quickActions.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.quickActions.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -201,8 +203,7 @@ class ProfileSettingsState extends State { ], ), ), - LocaleKeys.personalInformation.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.personalInformation.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -219,8 +220,7 @@ class ProfileSettingsState extends State { ], ), ), - LocaleKeys.helpAndSupport.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.helpAndSupport.tr().toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), @@ -281,8 +281,7 @@ class ProfileSettingsState extends State { children: [ Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.greyTextColor), label.toText14(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - if (trailingLabel.isNotEmpty) - trailingLabel.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1), + if (trailingLabel.isNotEmpty) trailingLabel.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1), switchValue != null ? Switch( value: switchValue, diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index bf665ea8..325f48eb 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/presentation/authentication/register.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register_step2.dart'; import 'package:hmg_patient_app_new/presentation/blood_donation/blood_donation_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; +import 'package:hmg_patient_app_new/presentation/child_vaccine/my_child_vaccine_page.dart'; import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/comprehensive_checkup_page.dart'; import 'package:hmg_patient_app_new/presentation/covid19test/covid19_landing_page.dart'; import 'package:hmg_patient_app_new/presentation/e_referral/new_e_referral.dart'; @@ -55,6 +56,7 @@ class AppRoutes { static const String homeHealthCarePage = '/homeHealthCarePage'; static const String zoomCallPage = '/zoomCallPage'; static const String bloodDonationPage = '/bloodDonationPage'; + static const String myChildVaccine = '/myChildVaccine'; static const String smartWatches = '/smartWatches'; static const String huaweiHealthExample = '/huaweiHealthExample'; static const String covid19Test = '/covid19Test'; @@ -103,6 +105,7 @@ class AppRoutes { possibleConditionsPage: (context) => PossibleConditionsPage(), triagePage: (context) => TriagePage(), bloodDonationPage: (context) => BloodDonationPage(), + myChildVaccine: (context) => MyChildVaccinePage(), bookAppointmentPage: (context) => BookAppointmentPage(), userInfoSelection: (context) => UserInfoSelectionScreen(), userInfoFlowManager: (context) => UserInfoFlowManager(), diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index 9fbdc17b..f0171857 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -99,6 +99,7 @@ class AppColors { // Services Page Colors static const Color eReferralCardColor = Color(0xFFFF8012); // #FF8012 static const Color bloodDonationCardColor = Color(0xFFFF5662); // #FF5662 + static const Color myChildVaccineCardColor = Color(0xFFFF2D78); // #FF5662 static const Color bookAppointment = Color(0xFF415364); // #415364 // Water Monitor From b0708d85d9eefe00d81119998cfc240d21c8e92c Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Jan 2026 16:33:23 +0300 Subject: [PATCH 27/67] updates & fixes --- lib/core/api_consts.dart | 2 +- lib/core/dependencies.dart | 2 +- .../health_trackers_view_model.dart | 17 +- .../utils/appointment_type.dart | 2 +- lib/main.dart | 2 +- .../add_health_tracker_entry_page.dart | 2 +- .../health_tracker_detail_page.dart | 2 +- .../widgets/tracker_last_value_card.dart | 2 +- lib/presentation/home/landing_page.dart | 593 ++++++++++-------- .../home/widgets/habib_wallet_card.dart | 1 + .../my_invoices/my_invoices_list.dart | 6 +- .../symptoms_checker/user_info_selection.dart | 2 + lib/widgets/buttons/custom_button.dart | 8 +- 13 files changed, 351 insertions(+), 290 deletions(-) rename lib/{presentation => features}/health_trackers/health_trackers_view_model.dart (98%) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index dbf35669..f7153052 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index d020eaa6..0560ff9e 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -61,7 +61,7 @@ import 'package:hmg_patient_app_new/features/todo_section/todo_section_repo.dart import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_repo.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; -import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/services/analytics/analytics_service.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; diff --git a/lib/presentation/health_trackers/health_trackers_view_model.dart b/lib/features/health_trackers/health_trackers_view_model.dart similarity index 98% rename from lib/presentation/health_trackers/health_trackers_view_model.dart rename to lib/features/health_trackers/health_trackers_view_model.dart index ce1bdf26..ab54f595 100644 --- a/lib/presentation/health_trackers/health_trackers_view_model.dart +++ b/lib/features/health_trackers/health_trackers_view_model.dart @@ -215,7 +215,8 @@ class HealthTrackersViewModel extends ChangeNotifier { final averageResult = await healthTrackersRepo.getWeightMeasurementResultAverage(); averageResult.fold( - (failure) => errorHandlerService.handleError(failure: failure), + // (failure) => errorHandlerService.handleError(failure: failure), + (failure) => {}, (apiModel) { final data = apiModel.data; if (data is Map) { @@ -258,7 +259,8 @@ class HealthTrackersViewModel extends ChangeNotifier { final resultsResponse = await healthTrackersRepo.getWeightMeasurementResults(); resultsResponse.fold( - (failure) => errorHandlerService.handleError(failure: failure), + // (failure) => errorHandlerService.handleError(failure: failure), + (failure) => {}, (apiModel) { final data = apiModel.data; if (data is Map) { @@ -435,7 +437,8 @@ class HealthTrackersViewModel extends ChangeNotifier { final averageResult = await healthTrackersRepo.getBloodPressureResultAverage(); averageResult.fold( - (failure) => errorHandlerService.handleError(failure: failure), + // (failure) => errorHandlerService.handleError(failure: failure), + (failure) => {}, (apiModel) { final data = apiModel.data; @@ -479,7 +482,8 @@ class HealthTrackersViewModel extends ChangeNotifier { final resultsResponse = await healthTrackersRepo.getBloodPressureResults(); resultsResponse.fold( - (failure) => errorHandlerService.handleError(failure: failure), + // (failure) => errorHandlerService.handleError(failure: failure), + (failure) => {}, (apiModel) { final data = apiModel.data; if (data is Map) { @@ -636,7 +640,7 @@ class HealthTrackersViewModel extends ChangeNotifier { final averageResult = await healthTrackersRepo.getDiabeticResultAverage(); averageResult.fold( - (failure) => errorHandlerService.handleError(failure: failure), + (failure) {}, (apiModel) { final data = apiModel.data; if (data is Map) { @@ -679,7 +683,8 @@ class HealthTrackersViewModel extends ChangeNotifier { final resultsResponse = await healthTrackersRepo.getDiabeticResults(); resultsResponse.fold( - (failure) => errorHandlerService.handleError(failure: failure), + // (failure) => errorHandlerService.handleError(failure: failure), + (failure) {}, (apiModel) { final data = apiModel.data; if (data is Map) { diff --git a/lib/features/my_appointments/utils/appointment_type.dart b/lib/features/my_appointments/utils/appointment_type.dart index aa2ef383..ae3c7516 100644 --- a/lib/features/my_appointments/utils/appointment_type.dart +++ b/lib/features/my_appointments/utils/appointment_type.dart @@ -69,7 +69,7 @@ class AppointmentType { case 10: return AppColors.successColor; case 15: - return AppColors.greyColor; + return AppColors.greyTextColor; case 20: return AppColors.infoColor; case 50: diff --git a/lib/main.dart b/lib/main.dart index 79b600cf..e15e8a74 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -40,7 +40,7 @@ import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_v import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; -import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; diff --git a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart index cf92c9ba..702875d9 100644 --- a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart +++ b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart @@ -10,7 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; diff --git a/lib/presentation/health_trackers/health_tracker_detail_page.dart b/lib/presentation/health_trackers/health_tracker_detail_page.dart index 83b37f65..b5f41dae 100644 --- a/lib/presentation/health_trackers/health_tracker_detail_page.dart +++ b/lib/presentation/health_trackers/health_tracker_detail_page.dart @@ -16,7 +16,7 @@ import 'package:hmg_patient_app_new/features/health_trackers/models/blood_sugar/ import 'package:hmg_patient_app_new/features/health_trackers/models/weight/week_weight_measurement_result_average.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/weight/year_weight_measurement_result_average.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/widgets/tracker_last_value_card.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; diff --git a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart index 570005bf..7e4ac2c9 100644 --- a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart +++ b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart @@ -6,7 +6,7 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 770e9532..ab0d247e 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -654,299 +654,354 @@ class _LandingPageState extends State { ); } + // Main card selector based on index and priority Widget getIndexSwiperCard(int index) { + // Index 0: Priority cards (Queue > LiveCare > Upcoming Appointment > History) if (index == 0) { - if (myAppointmentsViewModel.isPatientHasQueueAppointment) { - return Container( + return _buildFirstCardSlot(); + } + // Index 1: Secondary cards based on first card type + if (index == 1) { + return _buildSecondCardSlot(); + } + // Index 2: Tertiary cards + if (index == 2) { + return _buildThirdCardSlot(); + } + return Container(); + } + + // First slot: Shows highest priority card + Widget _buildFirstCardSlot() { + if (myAppointmentsViewModel.isPatientHasQueueAppointment) { + return _buildQueueCard(); + } + + if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { + return _buildLiveCareRequestCard(); + } + + if (myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.isNotEmpty) { + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.first, + ); + } + + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList[0], + ); + } + + // Second slot: Shows appointment or ancillary orders + Widget _buildSecondCardSlot() { + final hasQueueOrLiveCare = myAppointmentsViewModel.isPatientHasQueueAppointment || immediateLiveCareViewModel.patientHasPendingLiveCareRequest; + + if (hasQueueOrLiveCare) { + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList.first, + ); + } + + if (todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { + return _buildAncillaryOrderCardWrapper( + todoSectionViewModel.patientAncillaryOrdersList.first, + ); + } + + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList[1], + ); + } + + // Third slot: Shows ancillary orders or appointment + Widget _buildThirdCardSlot() { + final hasQueueOrLiveCare = myAppointmentsViewModel.isPatientHasQueueAppointment || immediateLiveCareViewModel.patientHasPendingLiveCareRequest; + final hasAncillaryOrders = todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty; + + if (hasQueueOrLiveCare && hasAncillaryOrders) { + return _buildAncillaryOrderCardWrapper( + todoSectionViewModel.patientAncillaryOrdersList.first, + ); + } + + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList[2], + ); + } + + // Queue Card Widget + Widget _buildQueueCard() { + final currentQueue = myAppointmentsViewModel.currentPatientQueueDetails; + final currentStatus = myAppointmentsViewModel.currentQueueStatus; + + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + side: BorderSide( + color: Utils.getCardBorderColor(currentStatus), + width: 2.w, + ), + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildQueueHeader(currentStatus), + SizedBox(height: 8.h), + _buildQueueGreeting(), + SizedBox(height: 2.h), + LocaleKeys.thankYouForPatience.tr().toText12( + fontWeight: FontWeight.w500, + color: AppColors.textColorLight, + ), + SizedBox(height: 8.h), + currentQueue.queueNo!.toText28(isBold: true), + SizedBox(height: 6.h), + _buildServingNowSection(), + SizedBox(height: 5.h), + _buildQueueActionButton(currentStatus, currentQueue.roomNo ?? ""), + ], + ), + ), + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute(page: AppointmentQueuePage()), + ); + }); + } + + // Queue Card: Header with status chip and icon + Widget _buildQueueHeader(int currentStatus) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppCustomChipWidget( + labelText: currentStatus == 0 ? LocaleKeys.inQueue.tr() : LocaleKeys.yourTurn.tr(), + backgroundColor: Utils.getCardBorderColor(currentStatus).withValues(alpha: 0.20), + textColor: Utils.getCardBorderColor(currentStatus), + ), + Utils.buildSvgWithAssets( + icon: AppAssets.waiting_icon, + width: 24.h, + height: 24.h, + ), + ], + ); + } + + // Queue Card: Greeting text + Widget _buildQueueGreeting() { + return LocaleKeys.halaFirstName.tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}).toText16(isBold: true); + } + + // Queue Card: Currently serving section + Widget _buildServingNowSection() { + if (myAppointmentsViewModel.patientQueueDetailsList.isEmpty) { + return SizedBox(height: 12.h); + } + + final servingQueue = myAppointmentsViewModel.patientQueueDetailsList.first; + final isVitalCall = servingQueue.callType == 1; + + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + "${LocaleKeys.servingNow.tr()}: ".toText14(isBold: true), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + servingQueue.queueNo!.toText12(isBold: true), + SizedBox(width: 8.w), + AppCustomChipWidget( + deleteIcon: isVitalCall ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, + labelText: isVitalCall ? LocaleKeys.callForVitalSigns.tr() : LocaleKeys.callForDoctor.tr(), + iconColor: isVitalCall ? AppColors.primaryRedColor : AppColors.successColor, + textColor: isVitalCall ? AppColors.primaryRedColor : AppColors.successColor, + iconSize: 14.w, + backgroundColor: isVitalCall ? AppColors.primaryRedColor.withValues(alpha: 0.1) : AppColors.successColor.withValues(alpha: 0.1), + labelPadding: EdgeInsetsDirectional.only( + start: 8.h, + end: -2.h, + ), + ), + ], + ), + ], + ); + } + + // Queue Card: Action button + Widget _buildQueueActionButton(int currentStatus, String roomNo) { + return CustomButton( + text: Utils.getCardButtonText(currentStatus, roomNo), + onPressed: () {}, + backgroundColor: Utils.getCardButtonColor(currentStatus), + borderColor: Utils.getCardButtonColor(currentStatus).withValues(alpha: 0.01), + textColor: Utils.getCardButtonTextColor(currentStatus), + fontSize: 12.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ); + } + + // LiveCare Request Card Widget + Widget _buildLiveCareRequestCard() { + final liveCareData = immediateLiveCareViewModel.patientLiveCareHistoryList[0]; + + return Column( + children: [ + SizedBox(height: 12.h), + Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: false, - side: BorderSide(color: Utils.getCardBorderColor(myAppointmentsViewModel.currentQueueStatus), width: 2.w), + borderRadius: 20.r, + hasShadow: true, + side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), ), child: Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - AppCustomChipWidget( - labelText: myAppointmentsViewModel.currentQueueStatus == 0 ? LocaleKeys.inQueue.tr() : LocaleKeys.yourTurn.tr(), - backgroundColor: Utils.getCardBorderColor(myAppointmentsViewModel.currentQueueStatus).withValues(alpha: 0.20), - textColor: Utils.getCardBorderColor(myAppointmentsViewModel.currentQueueStatus), - ), - Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), - ], - ), + LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), + SizedBox(height: 10.h), + _buildLiveCareHeader(liveCareData), + SizedBox(height: 10.h), + _buildLiveCareGreeting(), SizedBox(height: 8.h), - LocaleKeys.halaFirstName.tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}).toText16(isBold: true), - SizedBox(height: 2.h), - LocaleKeys.thankYouForPatience.tr().toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + _buildLiveCareQueueInfo(liveCareData.patCount), SizedBox(height: 8.h), - myAppointmentsViewModel.currentPatientQueueDetails.queueNo!.toText28(isBold: true), - SizedBox(height: 6.h), - myAppointmentsViewModel.patientQueueDetailsList.isNotEmpty - ? Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - "${LocaleKeys.servingNow.tr()}: ".toText14(isBold: true), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - myAppointmentsViewModel.patientQueueDetailsList.first.queueNo!.toText12(isBold: true), - SizedBox(width: 8.w), - AppCustomChipWidget( - deleteIcon: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 - ? AppAssets.call_for_vitals - : AppAssets.call_for_doctor, - labelText: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 - ? LocaleKeys.callForVitalSigns.tr() - : LocaleKeys.callForDoctor.tr(), - iconColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 - ? AppColors.primaryRedColor - : AppColors.successColor, - textColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 - ? AppColors.primaryRedColor - : AppColors.successColor, - iconSize: 14.w, - backgroundColor: myAppointmentsViewModel.patientQueueDetailsList.first.callType == 1 - ? AppColors.primaryRedColor.withValues(alpha: 0.1) - : AppColors.successColor.withValues(alpha: 0.1), - labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h), - ), - ], - ), - ], - ) - : SizedBox(height: 12.h), - SizedBox(height: 5.h), - CustomButton( - text: Utils.getCardButtonText( - myAppointmentsViewModel.currentQueueStatus, myAppointmentsViewModel.currentPatientQueueDetails.roomNo ?? ""), - onPressed: () {}, - backgroundColor: Utils.getCardButtonColor(myAppointmentsViewModel.currentQueueStatus), - borderColor: Utils.getCardButtonColor(myAppointmentsViewModel.currentQueueStatus).withValues(alpha: 0.01), - textColor: Utils.getCardButtonTextColor(myAppointmentsViewModel.currentQueueStatus), - fontSize: 12.f, - fontWeight: FontWeight.w600, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ), + _buildLiveCareWaitingTime(), ], ), ), - ).onPress(() { + ).paddingSymmetrical(0.h, 0.h).onPress(() { Navigator.of(context).push( - CustomPageRoute( - page: AppointmentQueuePage(), - ), + CustomPageRoute(page: ImmediateLiveCarePendingRequestPage()), ); - }); - } else if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { - return Column( + }), + SizedBox(height: 12.h), + ], + ); + } + + // LiveCare Card: Header with status and date + Widget _buildLiveCareHeader(liveCareData) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( children: [ - SizedBox(height: 12.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: true, - side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), - SizedBox(height: 10.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - AppCustomChipWidget( - labelText: immediateLiveCareViewModel.patientLiveCareHistoryList[0].stringCallStatus, - backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), - textColor: AppColors.alertColor, - ), - SizedBox(width: 8.w), - AppCustomChipWidget( - icon: AppAssets.appointment_calendar_icon, - labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate(immediateLiveCareViewModel.patientLiveCareHistoryList[0].arrivalTime), false)), - ], - ), - Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), - // Lottie.asset(AppAnimations.pending_loading_animation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.cover), - ], - ), - SizedBox(height: 10.h), - LocaleKeys.halaFirstName - .tr(namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}, context: context).toText16(isBold: true), - SizedBox(height: 8.h), - LocaleKeys.yourTurnIsAfterPatients.tr( - namedArgs: {'count': immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount.toString()}, - context: context).toText14(isBold: true), - SizedBox(height: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "${LocaleKeys.waitingTime.tr()}: ".toText12(isBold: true), - SizedBox(height: 7.h), - ValueListenableBuilder( - valueListenable: immediateLiveCareViewModel.durationNotifier, - builder: (context, duration, child) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - buildTime(duration), - ], - ); - }, - ), - ], - ), - ], - ), + AppCustomChipWidget( + labelText: liveCareData.stringCallStatus, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), + textColor: AppColors.alertColor, + ), + SizedBox(width: 8.w), + AppCustomChipWidget( + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate(liveCareData.arrivalTime), + false, ), - ).paddingSymmetrical(0.h, 0.h).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: ImmediateLiveCarePendingRequestPage())); - }), - SizedBox(height: 12.h), + ), ], - ); - } else if (myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.isNotEmpty) { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientUpcomingAppointmentsHistoryList.first, - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, - isFromHomePage: true, - ), - ); - } else { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientAppointmentsHistoryList[index], - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, - isFromHomePage: true, - ), - ); - } - } else if (index == 1) { - if (myAppointmentsViewModel.isPatientHasQueueAppointment || immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientAppointmentsHistoryList.first, - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, - isFromHomePage: true, - ), - ); - } else if (todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { - return AncillaryOrderCard( - order: todoSectionViewModel.patientAncillaryOrdersList.first, - isLoading: false, - isOrdersList: false, - onCheckIn: () { - log("Check-in for order: ${todoSectionViewModel.patientAncillaryOrdersList.first.orderNo}"); - }, - onViewDetails: () { - Navigator.of(context).push( - CustomPageRoute( - page: AncillaryOrderDetailsList( - appointmentNoVida: todoSectionViewModel.patientAncillaryOrdersList.first.appointmentNo ?? 0, - orderNo: todoSectionViewModel.patientAncillaryOrdersList.first.orderNo ?? 0, - projectID: todoSectionViewModel.patientAncillaryOrdersList.first.projectID ?? 0, - projectName: todoSectionViewModel.patientAncillaryOrdersList.first.projectName ?? "", - ), - ), - ); - }, - ); - } else { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientAppointmentsHistoryList[index], - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, - isFromHomePage: true, - ), - ); - } - } else if (index == 2) { - if ((myAppointmentsViewModel.isPatientHasQueueAppointment || immediateLiveCareViewModel.patientHasPendingLiveCareRequest) && - todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { - return AncillaryOrderCard( - order: todoSectionViewModel.patientAncillaryOrdersList.first, - isLoading: false, - isOrdersList: false, - onCheckIn: () { - log("Check-in for order: ${todoSectionViewModel.patientAncillaryOrdersList.first.orderNo}"); - }, - onViewDetails: () { - Navigator.of(context).push( - CustomPageRoute( - page: AncillaryOrderDetailsList( - appointmentNoVida: todoSectionViewModel.patientAncillaryOrdersList.first.appointmentNo ?? 0, - orderNo: todoSectionViewModel.patientAncillaryOrdersList.first.orderNo ?? 0, - projectID: todoSectionViewModel.patientAncillaryOrdersList.first.projectID ?? 0, - projectName: todoSectionViewModel.patientAncillaryOrdersList.first.projectName ?? "", - ), - ), + ), + Utils.buildSvgWithAssets( + icon: AppAssets.waiting_icon, + width: 24.h, + height: 24.h, + ), + ], + ); + } + + // LiveCare Card: Greeting + Widget _buildLiveCareGreeting() { + return LocaleKeys.halaFirstName.tr( + namedArgs: {'firstName': appState.getAuthenticatedUser()!.firstName!}, + context: context, + ).toText16(isBold: true); + } + + // LiveCare Card: Queue position info + Widget _buildLiveCareQueueInfo(int? patCount) { + return LocaleKeys.yourTurnIsAfterPatients.tr( + namedArgs: {'count': (patCount ?? 0).toString()}, + context: context, + ).toText14(isBold: true); + } + + // LiveCare Card: Waiting time counter + Widget _buildLiveCareWaitingTime() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "${LocaleKeys.waitingTime.tr()}: ".toText12(isBold: true), + SizedBox(height: 7.h), + ValueListenableBuilder( + valueListenable: immediateLiveCareViewModel.durationNotifier, + builder: (context, duration, child) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + buildTime(duration), + ], ); }, - ); - } else { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsViewModel.patientAppointmentsHistoryList[index], - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, - isFromHomePage: true, + ), + ], + ); + } + + // Appointment Card Wrapper (reusable) + Widget _buildAppointmentCardWrapper(appointment) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + ), + child: AppointmentCard( + patientAppointmentHistoryResponseModel: appointment, + myAppointmentsViewModel: myAppointmentsViewModel, + bookAppointmentsViewModel: bookAppointmentsViewModel, + isLoading: false, + isFromHomePage: true, + ), + ); + } + + // Ancillary Order Card Wrapper (reusable) + Widget _buildAncillaryOrderCardWrapper(order) { + return AncillaryOrderCard( + order: order, + isLoading: false, + isOrdersList: false, + onCheckIn: () { + log("Check-in for order: ${order.orderNo}"); + }, + onViewDetails: () { + Navigator.of(context).push( + CustomPageRoute( + page: AncillaryOrderDetailsList( + appointmentNoVida: order.appointmentNo ?? 0, + orderNo: order.orderNo ?? 0, + projectID: order.projectID ?? 0, + projectName: order.projectName ?? "", + ), ), ); - } - } - return Container(); + }, + ); } void showQuickLogin(BuildContext context) { diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index 0725b1de..1ce16006 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -127,6 +127,7 @@ class HabibWalletCard extends StatelessWidget { borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 35.h, + // width: 35.w, ), ], ), diff --git a/lib/presentation/my_invoices/my_invoices_list.dart b/lib/presentation/my_invoices/my_invoices_list.dart index 9f969e8d..177dde84 100644 --- a/lib/presentation/my_invoices/my_invoices_list.dart +++ b/lib/presentation/my_invoices/my_invoices_list.dart @@ -52,7 +52,7 @@ class _MyInvoicesListState extends State { children: [ SizedBox(height: 24.h), ListView.builder( - itemCount: myInvoicesVM.isInvoicesListLoading ? 4 : myInvoicesVM.allInvoicesList.length, + itemCount: myInvoicesVM.isInvoicesListLoading ? 4 : myInvoicesVM.allInvoicesList.isEmpty ? 1 : myInvoicesVM.allInvoicesList.length, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsetsGeometry.zero, @@ -64,7 +64,7 @@ class _MyInvoicesListState extends State { index: index, isLoading: true, ) - : AnimationConfiguration.staggeredList( + : myInvoicesVM.allInvoicesList.isNotEmpty ? AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( @@ -105,7 +105,7 @@ class _MyInvoicesListState extends State { ), ), ), - ); + ) : Utils.getNoDataWidget(context); }).paddingSymmetrical(24.w, 0.h), ], ); diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index 1d05c5a0..c8d8cde9 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -282,6 +282,7 @@ class _UserInfoSelectionPageState extends State { borderColor: Colors.transparent, textColor: AppColors.primaryRedColor, fontSize: 16.f, + iconSize: 20.w, ), ), SizedBox(width: 12.w), @@ -297,6 +298,7 @@ class _UserInfoSelectionPageState extends State { borderColor: hasEmptyFields ? AppColors.greyLightColor : AppColors.primaryRedColor, textColor: hasEmptyFields ? AppColors.greyTextColor : AppColors.whiteColor, fontSize: 16.f, + iconSize: 20.w, ), ), ], diff --git a/lib/widgets/buttons/custom_button.dart b/lib/widgets/buttons/custom_button.dart index a81f0ebf..8500ce8e 100644 --- a/lib/widgets/buttons/custom_button.dart +++ b/lib/widgets/buttons/custom_button.dart @@ -74,11 +74,9 @@ class CustomButton extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ if (icon != null) - Flexible( - child: Padding( - padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, - child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), - ), + Padding( + padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, + child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS), ), if (text.isNotEmpty) Text( From bb4719bd8747b27cd6f663b6ed842e41ef8bceda Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Sun, 25 Jan 2026 10:17:30 +0300 Subject: [PATCH 28/67] logout & family file fix & PMA-1047 --- .../medical_file/medical_file_page.dart | 120 +++++++----------- .../my_family/widget/family_cards.dart | 2 +- lib/services/dialog_service.dart | 58 +++++---- 3 files changed, 78 insertions(+), 102 deletions(-) diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index fa8a5919..3cc7fd36 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -197,6 +197,7 @@ class _MedicalFilePageState extends State { dialogService.showFamilyBottomSheetWithoutH( label: LocaleKeys.familyTitle.tr(context: context), message: "", + isShowManageButton: true, onSwitchPress: (FamilyFileResponseModelLists profile) { medicalFileViewModel.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); }, @@ -246,14 +247,6 @@ class _MedicalFilePageState extends State { icon: AppAssets.file_icon, labelText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}", labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), - onChipTap: () { - navigationService.pushPage( - page: FamilyMedicalScreen( - profiles: medicalFileViewModel.patientFamilyFiles, - onSelect: (FamilyFileResponseModelLists p1) {}, - ), - ); - }, ), AppCustomChipWidget( icon: AppAssets.checkmark_icon, @@ -293,8 +286,7 @@ class _MedicalFilePageState extends State { iconColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, textColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor, iconSize: 12.w, - backgroundColor: - insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.successColor.withOpacity(0.1), + backgroundColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.successColor.withOpacity(0.1), labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), ); }), @@ -447,8 +439,8 @@ class _MedicalFilePageState extends State { ), ExpandableListItem( title: LocaleKeys.medicalReports.tr(context: context).toText18( - weight: FontWeight.w600, - ), + weight: FontWeight.w600, + ), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), @@ -609,8 +601,7 @@ class _MedicalFilePageState extends State { ? Container( padding: EdgeInsets.all(12.w), width: MediaQuery.of(context).size.width, - decoration: - RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, hasShadow: false), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, hasShadow: false), child: Column( children: [ Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), @@ -678,8 +669,7 @@ class _MedicalFilePageState extends State { child: AskDoctorRequestTypeSelect( askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, myAppointmentsViewModel: myAppointmentsViewModel, - patientAppointmentHistoryResponseModel: - myAppointmentsVM.patientAppointmentsHistoryList[index], + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], ), callBackFunc: () {}, isFullScreen: false, @@ -757,8 +747,7 @@ class _MedicalFilePageState extends State { child: Column( children: [ ListView.separated( - itemCount: - prescriptionVM.patientPrescriptionOrders.length <= 2 ? prescriptionVM.patientPrescriptionOrders.length : 2, + itemCount: prescriptionVM.patientPrescriptionOrders.length <= 2 ? prescriptionVM.patientPrescriptionOrders.length : 2, shrinkWrap: true, padding: EdgeInsets.only(left: 0, right: 8.w), physics: NeverScrollableScrollPhysics(), @@ -789,13 +778,11 @@ class _MedicalFilePageState extends State { spacing: 3.w, runSpacing: 4.w, children: [ - AppCustomChipWidget( - labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), + AppCustomChipWidget(labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), AppCustomChipWidget( icon: AppAssets.doctor_calendar_icon, labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate( - prescriptionVM.patientPrescriptionOrders[index].appointmentDate), + DateUtil.convertStringToDate(prescriptionVM.patientPrescriptionOrders[index].appointmentDate), false, ), ), @@ -808,19 +795,13 @@ class _MedicalFilePageState extends State { Transform.flip( flipX: appState.isArabic(), child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, - width: 15.w, - height: 15.h, - fit: BoxFit.contain, - iconColor: AppColors.textColor)), + icon: AppAssets.forward_arrow_icon_small, width: 15.w, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), ], ).onPress(() { prescriptionVM.setPrescriptionsDetailsLoading(); Navigator.of(context).push( CustomPageRoute( - page: PrescriptionDetailPage( - isFromAppointments: false, - prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), + page: PrescriptionDetailPage(isFromAppointments: false, prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), ), ); }), @@ -929,10 +910,7 @@ class _MedicalFilePageState extends State { fit: BoxFit.cover, ).circle(100).toShimmer2(isShow: true, radius: 50.r), SizedBox(height: 8.h), - ("Dr. John Smith Smith Smith") - .toString() - .toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2) - .toShimmer2(isShow: true), + ("Dr. John Smith Smith Smith").toString().toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2).toShimmer2(isShow: true), ], ) : myAppointmentsVM.patientMyDoctorsList.isEmpty @@ -1119,14 +1097,9 @@ class _MedicalFilePageState extends State { text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", onPressed: () { insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); - insuranceViewModel.getPatientInsuranceDetailsForUpdate(appState.getAuthenticatedUser()!.patientId.toString(), - appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); - showCommonBottomSheetWithoutHeight(context, - child: PatientInsuranceCardUpdateCard(), - callBackFunc: () {}, - title: "", - isCloseButtonVisible: false, - isFullScreen: false); + insuranceViewModel.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); }, backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), borderColor: AppColors.bgGreenColor.withOpacity(0.0), @@ -1479,7 +1452,7 @@ class _MedicalFilePageState extends State { return [ // Page 1: BMI + Height Padding( - padding: EdgeInsets.only(left: 24.w), + padding: EdgeInsets.only(left: 24.w), child: Row( children: [ Expanded( @@ -1507,37 +1480,36 @@ class _MedicalFilePageState extends State { ), ), // Page 2: Weight + Blood Pressure - Padding(padding: EdgeInsets.symmetric(horizontal: 12.w),child: Row( - children: [ - Expanded( - child: _buildVitalSignCard( - icon: AppAssets.weightVital, - label: LocaleKeys.weight.tr(context: context), - value: vitalSign.weightKg?.toString() ?? '--', - unit: 'kg', - status: vitalSign.weightKg != null ? "Normal" : null, - onTap: onTap, + Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Row( + children: [ + Expanded( + child: _buildVitalSignCard( + icon: AppAssets.weightVital, + label: LocaleKeys.weight.tr(context: context), + value: vitalSign.weightKg?.toString() ?? '--', + unit: 'kg', + status: vitalSign.weightKg != null ? "Normal" : null, + onTap: onTap, + ), ), - ), - SizedBox(width: 12.w), - Expanded( - child: _buildVitalSignCard( - icon: AppAssets.bloodPressure, - label: LocaleKeys.bloodPressure.tr(context: context), - value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null - ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" - : '--', - unit: '', - status: _getBloodPressureStatus( - systolic: vitalSign.bloodPressureHigher, - diastolic: vitalSign.bloodPressureLower, + SizedBox(width: 12.w), + Expanded( + child: _buildVitalSignCard( + icon: AppAssets.bloodPressure, + label: LocaleKeys.bloodPressure.tr(context: context), + value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" : '--', + unit: '', + status: _getBloodPressureStatus( + systolic: vitalSign.bloodPressureHigher, + diastolic: vitalSign.bloodPressureLower, + ), + onTap: onTap, ), - onTap: onTap, ), - ), - ], - )), - + ], + )), ]; } @@ -1636,14 +1608,12 @@ class _MedicalFilePageState extends State { backgroundColor: scheme.chipBg, textColor: scheme.chipFg, ), - ] - else + ] else AppCustomChipWidget( labelText: "", backgroundColor: AppColors.bgScaffoldColor, - textColor:null, + textColor: null, ) - ], ), ), diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index 675da18f..f76f3c12 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -151,7 +151,7 @@ class _FamilyCardsState extends State { crossAxisCount: 2, crossAxisSpacing: 10.w, mainAxisSpacing: 10.h, - childAspectRatio: widget.isShowDetails ? 0.56.h : 0.65.h, + childAspectRatio: widget.isShowDetails ? 0.56.h : 0.64.h, ), padding: EdgeInsets.only(bottom: 20.h), itemBuilder: (context, index) { diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index b8d480e6..773dfe62 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; import 'package:hmg_patient_app_new/presentation/my_family/widget/family_cards.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -24,23 +25,22 @@ abstract class DialogService { Future showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); - Future showSuccessBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); Future showFamilyBottomSheetWithoutH( {String? label, required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, - required List profiles}); + required List profiles, + bool isShowManageButton = false}); - Future showFamilyBottomSheetWithoutHWithChild( - {String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); + Future showFamilyBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); Future showPhoneNumberPickerSheet({String? label, String? message, required Function() onSMSPress, required Function() onWhatsappPress}); Future showAddFamilyFileSheet({String? label, String? message, required Function() onVerificationPress}); - Future showReminderBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); + Future showReminderBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); // TODO : Need to be Fixed showPhoneNumberPickerSheet ( From Login ADn Signup Bottom Sheet Move Here } @@ -114,8 +114,7 @@ class DialogServiceImp implements DialogService { } @override - Future showCommonBottomSheetWithoutH( - {String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( @@ -126,10 +125,8 @@ class DialogServiceImp implements DialogService { ); } - @override - Future showSuccessBottomSheetWithoutH( - {String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showSuccessBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( @@ -145,7 +142,8 @@ class DialogServiceImp implements DialogService { {String? label, required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, - required List profiles}) async { + required List profiles, + bool isShowManageButton = false}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight(context, @@ -154,7 +152,7 @@ class DialogServiceImp implements DialogService { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - (message).toText16(isBold: false, color: AppColors.textColor), + if (message != null) (message).toText16(isBold: false, color: AppColors.textColor), SizedBox(height: 24.h), FamilyCards( profiles: profiles, @@ -164,14 +162,29 @@ class DialogServiceImp implements DialogService { onRemove: (FamilyFileResponseModelLists profile) {}, isShowDetails: false, ), + SizedBox(height: isShowManageButton ? 15.h : 24.h), + if (isShowManageButton) + CustomButton( + text: "ManageFamilyFiles", + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedBorderColor, + height: 48.h, + onPressed: () { + navigationService.pushPage( + page: FamilyMedicalScreen( + profiles: profiles, + onSelect: (FamilyFileResponseModelLists p1) {}, + ), + ); + }) ], ), callBackFunc: () {}); } @override - Future showFamilyBottomSheetWithoutHWithChild( - {String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showFamilyBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( @@ -183,7 +196,7 @@ class DialogServiceImp implements DialogService { } @override - Future showReminderBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showReminderBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( @@ -195,14 +208,11 @@ class DialogServiceImp implements DialogService { } @override - Future showPhoneNumberPickerSheet( - {String? label, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) async { + Future showPhoneNumberPickerSheet({String? label, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight(context, - title: label ?? "", - child: showPhoneNumberPickerWidget(context: context, message: message, onSMSPress: onSMSPress, onWhatsappPress: onWhatsappPress), - callBackFunc: () {}); + title: label ?? "", child: showPhoneNumberPickerWidget(context: context, message: message, onSMSPress: onSMSPress, onWhatsappPress: onWhatsappPress), callBackFunc: () {}); } @override @@ -218,8 +228,7 @@ class DialogServiceImp implements DialogService { } } -Widget exceptionBottomSheetWidget( - {required BuildContext context, required String message, required Function() onOkPressed, Function()? onCancelPressed}) { +Widget exceptionBottomSheetWidget({required BuildContext context, required String message, required Function() onOkPressed, Function()? onCancelPressed}) { return Column( children: [ (message).toText16(isBold: false, color: AppColors.textColor), @@ -274,10 +283,7 @@ Widget exceptionBottomSheetWidget( ); } - - -Widget showPhoneNumberPickerWidget( - {required BuildContext context, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) { +Widget showPhoneNumberPickerWidget({required BuildContext context, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) { return StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { return Column( children: [ From ae3ed83dd004a7af85c864ecdc6fa56ff42eb75d Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 25 Jan 2026 14:07:34 +0300 Subject: [PATCH 29/67] contact us page changes --- lib/core/api_consts.dart | 8 ++ .../contact_us/live_chat_page.dart | 78 +++++++++++++++++-- 2 files changed, 80 insertions(+), 6 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index f7153052..8319c9de 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -702,6 +702,8 @@ class ApiConsts { static String QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + static String CHAT_URL = "https://chat.hmg.com/Index.aspx?RequestedId="; + // static String GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments"; // var payFortEnvironment = FortEnvironment.test; @@ -719,6 +721,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamaralive/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/Index.aspx?RequestedId="; break; case AppEnvironmentTypeEnum.dev: baseUrl = "https://uat.hmgwebservices.com/"; @@ -730,6 +733,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId"; break; case AppEnvironmentTypeEnum.uat: baseUrl = "https://uat.hmgwebservices.com/"; @@ -741,6 +745,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId"; break; case AppEnvironmentTypeEnum.preProd: baseUrl = "https://webservices.hmg.com/"; @@ -752,6 +757,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId"; break; case AppEnvironmentTypeEnum.qa: baseUrl = "https://uat.hmgwebservices.com/"; @@ -763,6 +769,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId"; break; case AppEnvironmentTypeEnum.staging: baseUrl = "https://uat.hmgwebservices.com/"; @@ -774,6 +781,7 @@ class ApiConsts { GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId"; break; } } diff --git a/lib/presentation/contact_us/live_chat_page.dart b/lib/presentation/contact_us/live_chat_page.dart index 2b86ccb4..a602eb14 100644 --- a/lib/presentation/contact_us/live_chat_page.dart +++ b/lib/presentation/contact_us/live_chat_page.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -8,12 +9,17 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -23,10 +29,12 @@ class LiveChatPage extends StatelessWidget { String chatURL = ""; late AppState appState; + late AuthenticationViewModel authVm; @override Widget build(BuildContext context) { appState = getIt.get(); + authVm = context.read(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Consumer(builder: (context, contactUsVM, child) { @@ -158,13 +166,71 @@ class LiveChatPage extends StatelessWidget { child: CustomButton( text: LocaleKeys.liveChat.tr(context: context), onPressed: () async { - if (contactUsVM.chatRequestID != null) { - chatURL = "https://chat.hmg.com/Index.aspx?RequestedId=${contactUsVM.chatRequestID}"; - debugPrint("Chat URL: $chatURL"); - Uri uri = Uri.parse(chatURL); - launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + if(appState.isAuthenticated) { + if (contactUsVM.chatRequestID != null) { + chatURL = "${ApiConsts.CHAT_URL}${contactUsVM.chatRequestID}"; + debugPrint("Chat URL: $chatURL"); + Uri uri = Uri.parse(chatURL); + launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + } else { + debugPrint("Chat Request ID is null"); + } } else { - debugPrint("Chat Request ID is null"); + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox(height: 8.h), + (LocaleKeys.loginToUseService.tr(context: context)).toText16(color: AppColors.blackColor), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(context: context), + onPressed: () { + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + icon: AppAssets.cancel, + iconColor: AppColors.primaryRedColor, + ), + ), + SizedBox(width: 8.h), + Expanded( + child: CustomButton( + text: LocaleKeys.confirm.tr(context: context), + onPressed: () async { + Navigator.of(context).pop(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + await authVm.onLoginPressed(); + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + icon: AppAssets.confirm, + ), + ), + ], + ), + SizedBox(height: 16.h), + ], + ).center, + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); } }, backgroundColor: contactUsVM.selectedLiveChatProjectIndex == -1 ? AppColors.greyColor : AppColors.primaryRedColor, From 940ce5ff140fa1ea595ba2debad60c3b7425b5b1 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 26 Jan 2026 09:44:19 +0300 Subject: [PATCH 30/67] updates --- lib/presentation/my_family/my_family.dart | 2 +- lib/services/dialog_service.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index b16c587a..cd727dac 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -50,7 +50,7 @@ class _FamilyMedicalScreenState extends State { AppState appState = getIt.get(); return CollapsingListView( - title: LocaleKeys.medicalFiles.tr(context: context), + title: LocaleKeys.familyTitle.tr(context: context), bottomChild: appState.getAuthenticatedUser()!.isParentUser! ? Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index 773dfe62..b185d894 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -165,7 +165,7 @@ class DialogServiceImp implements DialogService { SizedBox(height: isShowManageButton ? 15.h : 24.h), if (isShowManageButton) CustomButton( - text: "ManageFamilyFiles", + text: LocaleKeys.manageFiles.tr(context: context), backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedBorderColor, From 6e1eb0d0bb46b1468185250ffbacc096da866fea Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 26 Jan 2026 10:48:07 +0300 Subject: [PATCH 31/67] ui improvements --- lib/core/utils/size_utils.dart | 17 +- lib/main.dart | 234 ++++++++++--------- lib/presentation/home/landing_page.dart | 4 +- lib/widgets/appbar/collapsing_list_view.dart | 38 ++- pubspec.yaml | 1 + 5 files changed, 150 insertions(+), 144 deletions(-) diff --git a/lib/core/utils/size_utils.dart b/lib/core/utils/size_utils.dart index 736f1acd..d04ad70d 100644 --- a/lib/core/utils/size_utils.dart +++ b/lib/core/utils/size_utils.dart @@ -4,8 +4,11 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; // These are the Viewport values of your Figma Design. // These are used in the code as a reference to create your UI Responsively. -const num figmaDesignWidth = 430; // iPhone X / 12 base width, -const num figmaDesignHeight = 927; // iPhone X / 12 base height +const num figmaDesignWidth = 430; // iPhone X / 12 base width, 375 +const num figmaDesignHeight = 927; // iPhone X / 12 base height 812 + +const num figmaDesignWidthTF = 375; +const num figmaDesignHeightTF = 812; extension ConstrainedResponsive on num { /// Width with max cap for tablets @@ -50,9 +53,9 @@ extension ResponsiveExtension on num { double get w { double baseScale = (this * _screenWidth) / figmaDesignWidth; - if (_isFoldable) { + if (_isFoldable|| isTablet ) { // For foldables, use more conservative width scaling - double scale = _screenWidth / figmaDesignWidth; + double scale = _screenWidth / figmaDesignWidthTF; scale = scale.clamp(0.8, 1.4); return this * scale; } @@ -64,9 +67,9 @@ extension ResponsiveExtension on num { double get h { double baseScale = (this * _screenHeight) / figmaDesignHeight; - if (_isFoldable) { + if (_isFoldable || isTablet ) { // For foldables, use height-based scaling but with constraints - double scale = (_screenHeight / figmaDesignHeight).clamp(0.8, 1.4); + double scale = (_screenHeight / figmaDesignHeightTF).clamp(0.8, 1.4); return this * scale; } @@ -79,7 +82,7 @@ extension ResponsiveExtension on num { if (_isFoldable || isTablet) { // Use the same logic as enhanced width for foldables - double scale = _screenWidth / figmaDesignWidth; + double scale = _screenWidth / figmaDesignWidthTF; scale = scale.clamp(0.8, 1.4); return this * scale; } diff --git a/lib/main.dart b/lib/main.dart index e15e8a74..82b758ec 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,10 @@ import 'dart:io'; +import 'package:device_preview/device_preview.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -89,120 +91,123 @@ Future callInitializations() async { void main() async { await callInitializations(); runApp( - EasyLocalization( - supportedLocales: const [ - Locale('en', 'US'), - Locale('ar', 'SA'), - ], - path: 'assets/langs', - fallbackLocale: Locale('en', 'US'), - child: MultiProvider(providers: [ - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ) - ], child: MyApp()), + DevicePreview( + enabled: false, + builder: (context) => EasyLocalization( + supportedLocales: const [ + Locale('en', 'US'), + Locale('ar', 'SA'), + ], + path: 'assets/langs', + fallbackLocale: Locale('en', 'US'), + child: MultiProvider(providers: [ + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ) + ], child: MyApp()), + ), // Wrap your app ), ); } @@ -243,4 +248,3 @@ class MyApp extends StatelessWidget { } } // flutter pub run easy_localization:generate -S assets/langs -f keys -o locale_keys.g.dart - diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 36bd3a1b..59babf8a 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -299,9 +299,9 @@ class _LandingPageState extends State { backgroundColor: Color(0xFF2B353E), borderColor: Color(0xFF2B353E), textColor: AppColors.whiteColor, - fontSize: 14, + fontSize: 14.f, fontWeight: FontWeight.w600, - borderRadius: 12, + borderRadius: 12.r, height: 40.h, ), ], diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 2b453ef1..7a771d1a 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -1,4 +1,3 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -69,7 +68,7 @@ class CollapsingListView extends StatelessWidget { automaticallyImplyLeading: isLeading, pinned: true, toolbarHeight: 40.h, - leadingWidth: isLeading ? null : double.infinity, + leadingWidth: isLeading ? 40.w + 32.w : double.infinity, systemOverlayStyle: SystemUiOverlayStyle(statusBarBrightness: Brightness.light), surfaceTintColor: Colors.transparent, backgroundColor: AppColors.bgScaffoldColor, @@ -93,23 +92,22 @@ class CollapsingListView extends StatelessWidget { // : null, leading: Visibility( visible: isLeading, - child: Transform.flip( - flipX: appState.isArabic(), - child: IconButton( - icon: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), - padding: EdgeInsets.zero, - constraints: BoxConstraints(), - style: const ButtonStyle(tapTargetSize: MaterialTapTargetSize.shrinkWrap), - onPressed: () { - if (leadingCallback != null) { - leadingCallback!(); - } else { - context.pop(); - } - }, - highlightColor: Colors.transparent, + child: Container( + height: 32.h, + width: 32.w, + alignment: appState.isArabic() ? Alignment.centerRight : Alignment.centerLeft, + margin: EdgeInsets.fromLTRB(24.w, 0, 24.w, 0), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), ), - ), + ).onPress(() { + if (leadingCallback != null) { + leadingCallback!(); + } else { + context.pop(); + } + }), ) // : ScrollAnimatedTitle( // title: title, @@ -218,7 +216,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget }); @override - Size get preferredSize => const Size.fromHeight(50.0); + Size get preferredSize => const Size.fromHeight(56.0); @override State createState() => _ScrollAnimatedTitleState(); @@ -265,7 +263,7 @@ class _ScrollAnimatedTitleState extends State { final isRtl = Directionality.of(context) == TextDirection.RTL; return Container( // height: (widget.preferredSize.height - _fontSize / 2).h, - height: 60.h, + height: 56.h, alignment: isRtl ? (widget.showBack ? Alignment.topRight : Alignment.centerRight) : (widget.showBack ? Alignment.topLeft : Alignment.centerLeft), padding: EdgeInsets.fromLTRB(24.w, 0, 24.w, 0), child: Row( diff --git a/pubspec.yaml b/pubspec.yaml index 26903b65..a8978ca6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -83,6 +83,7 @@ dependencies: open_filex: ^4.7.0 flutter_swiper_view: ^1.1.8 flutter_callkit_incoming: ^3.0.0 + device_preview: ^1.3.1 location: ^8.0.1 gms_check: ^1.0.4 From f78eb5da677bb41a3208f0a1fbe365eacf001390 Mon Sep 17 00:00:00 2001 From: tahaalam Date: Mon, 26 Jan 2026 11:18:52 +0300 Subject: [PATCH 32/67] Wd: Unware clinic bottom sheet shown on appointment page. --- assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 5 +- lib/generated/locale_keys.g.dart | 2 + .../book_appointment_page.dart | 71 ++++++++++++++++--- 4 files changed, 71 insertions(+), 13 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 90103c09..49b03c9b 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1524,7 +1524,7 @@ "medicalServices": "الخدمات الطبية", "insuranceAndPayments": "التأمين والمدفوعات", "trackerAndOthers": "المتتبع وأخرى", - "bmi": "مؤشر كتلة الجسم" - - + "bmi": "مؤشر كتلة الجسم", + "yesPleaseINeedHelp": "نعم، من فضلك أريد المساعدة", + "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 50d44816..e2e3f14d 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1515,7 +1515,8 @@ "medicalServices": "Medical Services", "insuranceAndPayments": "Insurance & Payments", "trackerAndOthers": "Tracker & Others", - "bmi": "BMI" - + "bmi": "BMI", + "yesPleaseINeedHelp": "Yes, Please I need help", + "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic" } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 41cb64fb..44951a58 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1512,5 +1512,7 @@ abstract class LocaleKeys { static const insuranceAndPayments = 'insuranceAndPayments'; static const trackerAndOthers = 'trackerAndOthers'; static const bmi = 'bmi'; + static const yesPleaseINeedHelp = 'yesPleaseINeedHelp'; + static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; } diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index b95e0c26..cf5eef34 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -60,6 +60,9 @@ class _BookAppointmentPageState extends State { bookAppointmentsViewModel.getLocation(); immediateLiveCareViewModel.initImmediateLiveCare(); }); + WidgetsBinding.instance.addPostFrameCallback((_) { + showUnKnownClinicBottomSheet(); + }); super.initState(); } @@ -313,10 +316,10 @@ class _BookAppointmentPageState extends State { ], ).paddingSymmetrical(24.h, 0.h); case 1: - //TODO: Get LiveCare type Select UI from Hussain + //TODO: Get LiveCare type Select UI from Hussain return appState.isAuthenticated ? Column( - children: [ + children: [ Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -447,9 +450,9 @@ class _BookAppointmentPageState extends State { LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), SizedBox(height: 8.h), LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12( - fontWeight: FontWeight.w500, - color: AppColors.greyTextColor, - ), + fontWeight: FontWeight.w500, + color: AppColors.greyTextColor, + ), ], ), ), @@ -470,10 +473,13 @@ class _BookAppointmentPageState extends State { regionalViewModel.flush(); regionalViewModel.setBottomSheetType(type); // AppointmentViaRegionViewmodel? viewmodel = null; - showCommonBottomSheetWithoutHeight(context, title: "", titleWidget: Consumer(builder: (_, data, __) => getTitle(data)), isDismissible: false, + showCommonBottomSheetWithoutHeight(context, title: "", + titleWidget: Consumer(builder: (_, data, __) => getTitle(data)), + isDismissible: false, child: Consumer(builder: (_, data, __) { - return getRegionalSelectionWidget(data); - }), callBackFunc: () {}); + return getRegionalSelectionWidget(data); + }), + callBackFunc: () {}); } Widget getRegionalSelectionWidget(AppointmentViaRegionViewmodel data) { @@ -632,4 +638,53 @@ class _BookAppointmentPageState extends State { ], ).paddingSymmetrical(24.h, 0.h); } + + void showUnKnownClinicBottomSheet() { + showCommonBottomSheetWithoutHeight( + context, + title: "", + isDismissible: true, + isCloseButtonVisible: false, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText28(color: AppColors.textColor, isBold: true, height: 1.5), + SizedBox(height: 4.h), + LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500,), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.yesPleaseINeedHelp.tr(context: context), + onPressed: () { + context.pop(); + context.navigateWithName(AppRoutes.userInfoSelection); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + SizedBox(height: 8.h), + CustomButton( + text: LocaleKeys.noThanksIKnowTheClinic.tr(context: context), + onPressed: () { + context.pop(); + }, + backgroundColor: AppColors.chipSecondaryLightRedColor, + borderColor: AppColors.chipSecondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + ], + ).paddingSymmetrical(24.w, 20.h), + callBackFunc: () {}, + ); + } } From 9c7cfde5f464ab0c42d102bf8dede392d667c60f Mon Sep 17 00:00:00 2001 From: faizatflutter Date: Mon, 26 Jan 2026 11:38:20 +0300 Subject: [PATCH 33/67] ui improvements --- lib/presentation/hmg_services/services_page.dart | 2 +- lib/presentation/hmg_services/services_view.dart | 4 ++-- lib/presentation/home/widgets/large_service_card.dart | 2 ++ lib/widgets/appbar/collapsing_list_view.dart | 2 +- lib/widgets/bottom_navigation/bottom_navigation.dart | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 6ebbb5e4..10b93423 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -529,7 +529,7 @@ class ServicesPage extends StatelessWidget { crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row crossAxisSpacing: 21.w, mainAxisSpacing: 18.h, - childAspectRatio: 80 / 94, + childAspectRatio: 80.w / 94.h, ), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, diff --git a/lib/presentation/hmg_services/services_view.dart b/lib/presentation/hmg_services/services_view.dart index 99085a53..3dd5c462 100644 --- a/lib/presentation/hmg_services/services_view.dart +++ b/lib/presentation/hmg_services/services_view.dart @@ -36,7 +36,7 @@ class ServiceGridViewItem extends StatelessWidget { children: [ Container( height: 48.h, - width: 48.w, + width: 48.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: hmgServiceComponentModel.bgColor, borderRadius: 12.r, @@ -51,7 +51,7 @@ class ServiceGridViewItem extends StatelessWidget { ), ), ), - SizedBox(height: 5.h), + SizedBox(height: 4.h), hmgServiceComponentModel.title.toText12( fontWeight: FontWeight.w500, color: AppColors.textColor, diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index a7782d75..2762a6ee 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -101,6 +101,7 @@ class LargeServiceCard extends StatelessWidget { onPressed: () { handleOnTap(); }, + padding: EdgeInsets.zero, backgroundColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.2) : AppColors.bgRedLightColor, borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.bgRedLightColor, textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.primaryRedColor, @@ -232,6 +233,7 @@ class FadedLargeServiceCard extends StatelessWidget { onPressed: () { handleOnTap(); }, + padding: EdgeInsets.zero, backgroundColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.2) : AppColors.blackBgColor, borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.blackBgColor, textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.whiteColor, diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 7a771d1a..575de03c 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -274,7 +274,7 @@ class _ScrollAnimatedTitleState extends State { maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( - fontSize: _fontSize, + fontSize: _fontSize.f, fontWeight: FontWeight.bold, letterSpacing: -0.5, ), diff --git a/lib/widgets/bottom_navigation/bottom_navigation.dart b/lib/widgets/bottom_navigation/bottom_navigation.dart index 8c40a4ce..bbe8d81f 100644 --- a/lib/widgets/bottom_navigation/bottom_navigation.dart +++ b/lib/widgets/bottom_navigation/bottom_navigation.dart @@ -59,7 +59,7 @@ class BottomNavigation extends StatelessWidget { onTap: () => onTap(index), behavior: HitTestBehavior.opaque, child: SizedBox( - height: 50.h, + height: 56.h, child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, From 4e6d3d3178aa6844245034b45e574e6c465a0297 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 26 Jan 2026 13:43:39 +0300 Subject: [PATCH 34/67] SmartWatch implementation contd. --- .../images/png/smartwatches/Huawei_Watch.png | Bin 0 -> 97460 bytes .../images/png/smartwatches/Whoop_Watch.png | Bin 0 -> 53130 bytes .../radiology/radiology_view_model.dart | 3 +- .../health_provider.dart | 9 + .../smartwatches/smartwatch_home_page.dart | 180 +++++++ .../smartwatch_instructions_page.dart | 464 +----------------- .../widgets/supported_watches_list.dart | 71 +++ lib/routes/app_routes.dart | 4 +- 8 files changed, 284 insertions(+), 447 deletions(-) create mode 100644 assets/images/png/smartwatches/Huawei_Watch.png create mode 100644 assets/images/png/smartwatches/Whoop_Watch.png create mode 100644 lib/presentation/smartwatches/smartwatch_home_page.dart create mode 100644 lib/presentation/smartwatches/widgets/supported_watches_list.dart diff --git a/assets/images/png/smartwatches/Huawei_Watch.png b/assets/images/png/smartwatches/Huawei_Watch.png new file mode 100644 index 0000000000000000000000000000000000000000..97c416e4719dbc4035e7c1a39eed9fba866428b1 GIT binary patch literal 97460 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%0Dir_sAmG=b=0R%MD{Z?vn;yPn!iT&p;PmE zwqfoF+gCisE|@dI4o(|k7tbrQJKSZt`?BSB-!*IO+vm);ug@55SB);Ri-rxi%SH^h zo2QPpdlpZyC){;;++CI*?w(^maOLsb1q|4v@zdkG6*w6xl;_ zhT8+vhu9s%df3fOknHN?Vpkeh_wE?QIA-dlS$BQdM zZwGMW=SPkAYPc!@6sQAc!Ur4zNOga`fuHk22Lx`*(wb=zAc`Fj#SRdfR0xgN7uQI$ zp{^bqs`)m%>#_GBY#=a+NLn!SNehl&xAbp>HBh7|v_Kw$&<^w|?y# z+1d$(wrk2DyTsj%YtETvH(j*EzTxd_>!#QxqX*f+A%pDV5yR~2u_NvFg%j+aRg>*o z4xW3KjkWvN`t#Le>~a6xv+n*pvT2Gvv|_y7w_v2*Gh?WId)g5D*3?0Ej|1eUq1~gb z3KJwB?$O>Z@6*Z7@6_Bb>D9q5b(kFL)4|R!Xzi+_flbZLvN=uiY)GA&HZ-e_tBxAh zqH41Ba7c7_fFz2>YFkf#o>8HkWmKwYja;QrZ7Oi+SOF|OR^h;b$DPfKZE*z|&qAh) z8=Y(7CMI#J=}Mq!Qe_)by@oAF&$MN=>)0|^AG8P{C2ovb^m^@d8(O}SHFbDoIK=B_ zXGQQJMN3A3Iu3%TjF=?|7#546I4B}R72!g>_S$RlE998vz4zXWdf>3IOQ}`B!Sm2H zQOrV63Dt!fuVKXW`udCp#mR+Hik3A-Pez2-<+>=VB8bp%NtghL3<_>H@9|jzr5Z=W zHh=@=L0VeyAfQW(1@)pD5P-w)eH36%rRB2$NXhcYpa0yJv}kFQzMRO)Fn7o#S0y7- zs#+fDT{oQQVrRzjI%!rp>DY;O88boZtG1K={nvvDX}-iQ8oy+<-01qZX>6P3kF&WZDRKbpU;Ol@!YGOgPflF0+hOrMR3=CHT-Uy&# zs9il{ zxE+~WWJhKWw=2gCv}?x}+6^-X+ik@~cGtS`cKeFacH4Z1$Gl;7+q|K6TiZT&U(W5?%64?lw?$2Ithi<4=!V%NGHTm!R~^H%Gpwj? zh7HTfh#=C#0Wu(~mi6_=43uk|R^2ixSFp;I^2eYMZx||(`@+J)$VG^bo1nAM3$ETgvTp@M_Ohy+kU<)k2L>o zln2m4QM7ZI_vzg`f(H$dXg&}AEB#-A<&sE&Xsinrqy#@XPBKt@2Gt>W&`=*C zKu{pWKBxy_;QP~0MdiHXA3qIiL~TGf)RTa$V=woP+e*sYVD z)wjFt7~0FuAJ@puSB>dmhX;1H^W9xp*S480Zr;dS16xVFqe-sytCea4Gt;eCT8${) z(Z}J?y+$?b;g8$6>(ZfSYLr!JU9*}steRx0<;q&QlFUj19v?l6I)J4N8dnB`#;pOe zwW9m4q*_YVM12Q9NhM9|=d-gzWTv|nE3@j_N{0u4h#*k{kOV{$@ZkMbb+T+^#UyKq z+u|_Fb+@FU{}#nz`Tl+A&@i;${qA@1%i*{Scb>zDl_e1{ z6sOQ*0YcDF6C6T-@EnDNvXT0r0SCo51Q8ySnk8l;P%tW25Rv=Bd#DB!2r(dBIb0M} zj$$7)UQ^(d?^N&LB^BKzsOLR% zLA@-S*twOh9^T6~4C`%Yd)q#s!1g#)cJ}LPXZP%A=MU>{2a0;w{$bth;D`b{FtnSy zJzebrZ~Gk_`v-Ki9o<^F!f5F3M;$A0mtkmbt`%mbTOW5%hStxq&S|xyq3x||RJSf^ zHLXWx9c$+R$*#;We1~LNpz%RBMf;DUcpsP_Y*c-6@iB*HB6wLdx@Bn9stJH_58_%5 zj|P>Kt-rrkT)%;>%E+=+X&DKC90QR=TT!#Nt*PVhJ3NXiQaN1K>bP>LUoY1|)hHTG zON;|(;QM1V)ITuU4+@0If&d5&;G;e$FymH~C%Q1#hXR{&NffUD5Q<;04q*`wh6*%n zM=F(B$WSc2rW7o2P>NQu4YtJ%6C{8J0KqK@RS0n4+yip5P(T2MfeXWTuvWc?Vjlp6 z{h$FU>QaCR86N_??9-_}k#e|v`T+Tm<-I@s+0Gp~CYr@P0T6G@BjQSA6yq_d1u2`D z*_}#8vNQOY1P$Z&I6e?7r zh%L&Nv&__LR?k&S0vyevASu5~!PLNkgKbdZzzAeO1Qo)3rkZt3rP}nofBW0t;+Md2 z7lyA>C??k;oV73&5g!54I6RP#!>pHFJ!RxgiFED~gIim9SqZu+p-8ZUABV+dJ>t z=05#wLIjaAkqVja5Six6WNejc)~0;TwQX-0v#D}S?X}W;; z>(OURT3K(E94K{CDq9nGIXY*j+km{fHm-FOo7}32&2+%bYTe9c<~Om~EgRd!M)j?z zeq9@wlWiSp*Rtjg3~u7o$lV8SC&?6oHJPT7qPQ;+*iFD9Y@rK=a*AG$fsqD0fk^mT znX+Y~)GT8tFl;W~8om#ysfi)^HGN;W$#w_dmnqqGZC#$jBO}|^dIKPWhybFt&RrW~ z9-}H&wq}fFaq#6iv>UtnBZGq5(lWng1Pd*4@l8h}(}zZ*%NjC9M$%8ZPM-d2IbxZ$a>UEDC$^T%J; zdl)@XK`F3~0P|(02>eQP=QnPdkV@@}8yPhyazT#5;RBVk$If^jZ)7wodEp>h5z{N*o?x+|f30t_&IDF?Y97_+wLJ*f)?LxBaap_njGzC$jHVi{qI zmgmGGa3_ET@8OPw5K&x&)GNo$WJz3SC<}t6C=dXmic{Pd;30s}$iU#j01&)^#axh{&BuKxBH^iZ&&=s`W}vu`D+rCL~I86#_uA zyl15Xl3IgsM)7z%Ua^&W`&92?o8)WJ|c0?4|| z1VjW7L4@ZU>(;koS0jVmeXQ>w%c;YyEE`9GLE=sdh~kn^uFgfT8MJVrsKlg(0g#aC zATGjoq(V^?A7^>_<(DHE2nqrMAdt!s958mN4k->nLu)A#z=mrifT$=eOwGz&!I)76 z0t^9B44XIz?hD)UI?9V}Nl|mWxFCXu020Cjea^~QsI4oc$>kTB9)SDY>iq`5mTzGfSNU`J3z86r(QkF zt)FL2nznF|l*9@GBdu1gs!RH6A23Q9Wz_^;u8;r z_*g+v)CU(kemnAe#*A4JM07_rKtfNCVPO#5g5l#X+_C|KS9}BaC4@p4yO8@LC@3H* z7lm!*?y%oHSC)kqst}X~V8HMRhO#ZM0}KG75wtV~RykgRsLZi~YQZhh_KJfj`=a78 z8txJC65KmLOcg4hXTKSNTv{?PET0KLPH1r@@|R!#)-Ljk5{OKVAX4!tM5c4^)vDE_ z5u@oCo%fWP>FHKKuYnsF*@31}Pe5<3n8!!CHq=La*!#p-D65aZ4sejHWE_sC7^sbi zzotgo^}}K@fCW{h=Twmr*J#$Fxi!zvk8Ws<+CnDd&O|qRas`rAv%2ND`sz@ns%;rL z%D%JvT>JKpop$H?P4@M9i)?4xj<&vTZseW_B5N|UU6JJ2rh0jV zsbWoh{{e@Jz)&2>bK)7SQ5MKp&wKgY0dkBw@e}vg-~G;(c@IC{p~0;o z1dy5Tn{xx_8I@CPRP`FxrhEmfac{`SsYcBdt5dU<8=w2^`7JHqjjwgP_SUvt z2Zu>J@3j-t_{mr?e&ql0AVA}Sh`&aY0wFFCe~(7YApV+~Qql3(0Sot?ZPli&b?DgH z-GmO-x=p+27@9dingEbSO{@X#OPzG9>&mCGtFNhU&{wZsV~<~Ug*|%dGG&_WY~9|@a)4~g&b6)e8`}1UjcrNIH0xiXk~Q;l(%6BN?@EU_ z2arH%sH!xqFhzCIOKKRp{CJv_2t7T1J!#928~b1(fQsS>D^6A4Aus?A3|LtcGB(Pn zgszR^BN#nU<2_!Nf>1_9P*6++^#LFSjQAu#d@tVvOi>>SprS5-0N@A*(4ju!CF~jl zBY+Ty7Np*K>#g`{Ii;7+9U#YxkNoSO|FjJ&mRlD$J*;cD?$)tWmq>ZEb@kM`bz94KB}Mk5vF|S#kz8szDpa&_ z{`z(6*4yKkUujQVb+tWl!l_gdP~9AU1Nc zbqtI^1sqZzs@ah82;CP9S(z8TuK0#P!WuPzfh#~6W?iI06g=fMj2btD$BKD`W$gS0 z-vej>2&$8F1RPX>sxo$f0zec<4J%Lu5P(Z8MFHZ{6hLM9+yU}o%R9gQt&Q;$+p%tr z4Xaw+CY7ydGs;x3StSsO?!)R3neBj?T_x3~c(2+cDaGpy-c21-O+BtNr*C^(@iMz^+(g^aG~bris$&By zR<2CJNKUk9EWR+% zPJz=9AWGj#frLs#>O?9;N<=|a;6`jlun}k!&(JZ^FnnB89)~GgDGwg=Tc`!j4d;q1 zATZ(l01dVUBtTXLWSl1yiUO&)FvLHAEdU{g#J&-C32$pr8kSQQAS~R4y?v`z*1;h% zpjMhqbYRQ?Bqb^Yh;UoQ=We*FvGXnHwRxfO9W%ScId@6po={riUu9d1L1kBEMwaNuC;KVV?=+r4}ry8G{SbFg*l z>aAlZ2S>g&%&u$o9DaEfD_Ix+-8ugLwXP-}aX{d%pg5iY91f7^F#vHF=F!8K*h2>| zwEO(xzh~z;_MJ^z?AEypY*(B1HY>HJbtzxb8oL|SykVp0T*y@c6g_+Qi~^*9gDewk zj6*lR2AUX?0-1^pNTzFy2R$p39-qvD;V^lRDoZu$Rxyw;#vurV1!Q_pk5zC+Pmj^+ zJ!M{ifif^sB`5{XjgAo*@H)pXw~6;SW>g2zC2oa_#5n-0oEODE*bacuGzNx!kpjUD z;Bb8{1`Zk$L1gH# z5jLV|logE}ZKKDGv+)xq+N8--y-kT8j~P48#*Lq7(`U?#-XAr3toLjaY~rLTHhIc4 zn>uYqwEg%AlYHCp(ffSY@DU@U@8&lKI6weZ-+ukwK>I{S+`&~qT?Z1kkjySq*4p^~ z5A}UK$G_{A&0Fn}3lBx^$)lHC8Yzt@uDCJ*4tHO^7XjqTgbQ==rS|YehwS0~2kapS z$kk&e*y0TD9bLgR_twXs0a*D01#>>1Q8m3Iw}A~pp+>F zsM-kBh-CW7R#9>fSPjqD=v%1}jc>ttm7>MCnLJ1-U%e++N7)Cjdl~2!#p+#eo7LZbSwKMZ)jD@WKo6 z({jo$pD#c@ba@{sZ@=|+Bte_Fui4B&(z#xq4fY;?VsbT`?(mpdp+t#rdqp5pnfsMg zvxV;VEOd~}OG~#Ybuz3!rSTCZ6oWsipeck z&f5CEjA+!@&Kfw#Zg6+t?(IA6zVr6kefthXZpp(J9d?LZ;t;va9>4qwd)%S%Jy#yz zzapVPp1Ax@a95Pcn< z10ppAG?3stCcdMJQkrBsN<)+NVBqS>Wyn$^yneE`V#IiWg(eE(_rf9kQX(4O_`a?!If3EoHcP()H*rY2Iu73T6bv{RE`|W`P2i-Nf$R0j)IC5i98$bl*0YIK~74oEmJ?vjv3QbLq&L1{rm0RcflefIl5`+VQ+ z&AHFHJo0F=W zi#E^!&^aLi0Lvn-ex(Gy8P>^dTM%r6ze10dVfbZD%AW4l#uNbJ!_XiIjD7&N-j`W6 zr8fJJZ3={4I)#GvSjGGkpf9Xj8>JZ@;}~KZzUQQU5UI#%n`+V$ZYP8F?h^IqW_J}R z2Hyvm$c<%}x-9z4fex{qCsSsy$6n?JVvl8Jk2^ZZEue(} z<2mKuNgW!C&uGGki^bv@FVBCK-?i~uEe{W2&(qB&IJvZ@^r5ea`wh7IL`Fl`MfI*%U)A=QZ*gg!_KF!GnunIvj=yg)uLIrOQFzr{ z$2#BQ=90)I-|*${Ewip<5%5+*X)Cu2$6dJ(S43>Msc&%Kr7yav{Pu$=dQW}{T4mn! z*FDI~&<^~3N_CaJ#ruv#XJE7UAL>O13-N{bx!w!!bG)y8e&6(UN9NT_DQibXX^9q_ zn>DX&K6e=F@|-kGuCHV#BWkfXJN3c!TKi=%koW83yTJiybj3oQi_) z_v-T_<4OIV&Yp3n^~t@0t&kAkntdU887}TO5L-~;W$Y{z)%(Xp^cq`b1v$MxJ0=#F z01^=G-`O~$l$N?)352|xG1lPCvaYs%%vyW9cW<$(^z`nTQ}o%J43C8dtMC15quO_G zZnjWVqyZ2TGqS~RgKo-A*7!WIv3c2DJK^cZ&85(id?ROB^il87<;|8sTz#=;#EY4x z))zCKFTd@5oCpqGo-5D)_TAp?J~d-AZ7j!9VUbC&+m>7BB)>f-tc3UH@RJlySBs?Q zZWb!ox;&MSbYmFFcdOiq_*n1T@UiXHqK{omzmHW6)an4~obezaqdLu-hRy%r zdq8Sc+BF6{x7D8A`j1V18Q=Wb898Y#B#Pm4! zsC08Ed446OAE|qCw8JUy`UEW1EFelj@WlXA>5}&MM8-VV68srvf5uD$M{PZt; z&eJniA7#Gcy6nb+_UyR*JWW$Cq}aIrIekABAd)z#oJjQTZTS9ZBo!hZhfzH zU2bhTcy&Mcg%hKS_V?2T>ANtrz-htk-ux$X{JU2l=EXHuLs3XmUl?*>Yze{uXr&ix*2)NRS z+GPlV@OX$ZarJQaQ#i4^^>Z6l9`QVhgd5q8MW3Y?0@>=s$7unRel%Q|N}=(H&sQDF zl=wEg*E;l;^qLQEjh>6uCxCzmOeS4j5@;%k8|f`>n{7%Bv*n}{u5$9_h{!9pX?S`-4u@%=nkZrQo~YJ$8bnd`Ty-j&D8N4{-4>$k%f2MRfX3 z;;&)?+ivX}Y%yC1JW1xfW1)nt%f$@V(lvQumh$89#vciIb$i&fM6?#^CQ|fo_YFq31{IMFk3RR!MLZRvfm?I_%}nhSq~VFA_CsKZldA1_=7%P6MFh)T<)C$ z07i3d!%asdqklDfNPiryQr}t*rs>) z(>>SASD87b1Q12#wL7Nxw6qL8{iJH+)$VjJ-pPkpRucJ*{i8Kt+r0Hr5&ow%{KkPT(6UXhHaYs zshJAgzkk~B;KA=@AoU1kOcV=%Q>CBbDps0TUUYrP@F`C_`dZnc*4q0Ve z%!l!x6BFLk?{!^oTmR#dugy5~xwX>s9e5u4v%Vi#hgm5|Bn>S#d^*0706+!Y2EjA6 zohY1nFtg!P8#?jLiqbceb14zp|J)-P0fjMr1VH2o6;A?A?}1)bb<0NkPF~_aohw}^ zkF%f4cT(x_KkTIeKlq#dmc3hbU9iXTKO? zN1GVz``PZ(0HdEVi_~b?n8TDh*!FIRV$>0_)2h~8k(+~7?5 zRt3x>3kEk<9=t}mhfA2@Cahva-|J>R_FJ-Ok^M2`9t=D~4TK7AhDs9j&vxDPO z@iDop#jP(^J5z71`Mk&7bz*3Twug-PcFul$DxsV7>iVr@9=OtCaJ#|M?CU2|0e9UJ zBwpaY=bY3I(!cts^LDJcPRhnQpHHo}=U@jTxTE=h`RHWTD@gk9OTV7UIt- z;8%0?L#O}I4$QZ+32y-fV_M3A+{w9fHI8j)P@JPc1rH@3n?#xl(h@z5iL z&Hj*mZ zO;z{Xp%p;qGbNc;Z8Qf{8~Hw0qM$Flx?9(Pp}FSiW9aDl%Rs*C?{1W&v}Rh9>Mysh zXvBvaCNEyDsmtC@}xS4-o6-_@mTtYq%?P@SuT6PdanI^zPP1VSa+h2iQ@5CX!Cp=Vss zmgn+}&@NLkT`o2tXZcvtxwSU?IkZc#09s#26H|@(MIrQtBlODiZkNweNl*VQOa}jq zIwmzVGRlV2aq3`2qc#a&RQ)Jzfj73Iu16I5*C3hA*xcdOcx={$?|Xl9H~&Nc`x;1; zN3o9fV(^@U_)dB4Jc0|F@Re~vG-sw%_-4^Pb4)9Aaz{h6_R#9*7w77`#xbP?aCD5F z$tY+P%vg$cw>9)Y<~oj178De&$Y{J2y>T~GPW~G8mC~(}Pd7-`BTVBT;{xj`e{V#)^Z7#nvKQ!8 z;^p@o9x;Zv9$CYhqcdYvR(`E2CbnbaAB8P|F2+3Pi76xOvoS&?1-f2D1MJr+O4Q_t z^+2?tP+ZoTuj4}3&SaDx_?);AGb+;Kums1;;+2sQ)ej5B3A&4xBy6H-#dmPP(T!YU zhLDC5`ku5dt+3!-$G$L|wzL*hB!vgCc;QVa7KFkJ&f7jfGH&baG-KWN^-KYU{t{9dO2A&$og8MC^%@`KwnG}oq1pprNrMqS5skpOjM$eixV3?`Pq5mJBM{#v$>S)d%QxeUsM?0Z`my|Jt`c9DLS$LFmm^dXj3q>u;V zEGjztOoN{?efJb?N9Q5i8?G6%;zXV-%`k%|`SPkP@TRc!H)JX2WyY7`7Sd~YdPR!RW~ zW4ti(if;DdE<8eE#)LqGbJYbXJvQJ^{Y202xtAN|Wdx~mN~~oXna2NIYXHqp0&AI= zWRVd1GMk!gl24!DsYVDc@}C$j*_WqX;uj-VXvYHH>RiFDnfjuk47Rz;cZF}CFvI$v zbqC>^=Cu_%CI@iVdk=tdq$1?CF+kl?KSjD*KA25&NOuX25R_*JMIW##q1fro7Vdx~ z32)yTk)qbqC{1$AVFHNwLS|3MCJ!LlDNaJV{Z7X!boj<4Zs1%wn78#dFyr@z3P6Ek zW1IPl>ST#_sXFI_cU`F7Y)j~OY9iRp_D&AioJFeP&VFj0oH$>&7H)Q$=O0no8=x7% z8C!*|imaH-OC)LB0s#4-ct=ATUrAM!;VT@xuTu-KGn7!Cz$x9j!LqRym*Z?bnn_IU z3*i z5`4ci0x3cyl*StXq8s8R5AE-NYd)_O5BhI$$wDD}mF0qzAZ=!sPw~4~Un3g{fWotF zV@f`d9&5E2jjDn7J#9_ziY!Vs%xp`BU{sc3~fdjzBsxh0@WUH0Rp3u1|)xt z4dAD0m^%;ewn#o6erS{PZed{i6&OOx{A`w=g9#_G{U;*Mv=yGTfj~BHL<-`oI%rRY zZQ-VT4oO;l#^Nx#TRyZf2-_nR_&*?^hqEwcgS|M$?F?eU|Ffx?`9fhaSO2t#ucceLL-c+CXU3?5}-IEPdg)N z-%40%*Dv)H`TZMgX_UHeWQ=bAdT0NanJr&mIeIb!QF&jTT&WtZoDdHSBDNybSjAZ9%yNFp9HHh z6M$t!=iEpj@Nde*WfT~mN0|ewn0@JD6LCZE)F?3qp!Swyg_ref>)mk(b7WlJ*M?9X zGEK@Xib0T#*|<6u4f|=PCdkpe0#8l`@|g-$d9Mpz`CCX66OunMLSN)(bgmkE6vcmu z2(L1BTOapCvMuZ`z<3;PP!l1Z>Kjlkn0nsynyP`r?nBsODKjPAU%3LN+pqfrYL0mr zMQLYE-MDn#-`hm*Sl~Rkc3%8@x~V0SPu4yotd#DHgZyAV)#4PqONSRg0wPt1&&=De zPO}UYUP~uzZ=d7Z%gcd0h53@?P>U*QIR9>=m_fYUzz(d64NhLjGt_`fo^~ zKw5PDq%~S-{MmfrC=3w$M>dRzO1iG59rY>^^P?zgjlPo zCcie&o%jAhl=0m5E9$sx#nmvm-^Y}x#WR1i2vx{>1LLFym|Wi<6MeY`R`u!$AjhDI zFJ&7MFJWs7Zz>S{XZ7qEOw4xeC{dk(jM{RsWqq>NdVXU?<|p?lfM?O7k=%n*Aq9Fk ztAY=whe1HozF$LLBvHlKcwK)025g_7{NdsE;XgRKg^5fd#F+vw{n%GHpnm~+O8QKD zk@8fuCFkMv?3odc^`n84&hK+sC|kE3cjaqKr~5Tk2VZU#K}J=x6OqjVL06vWtfhID zgA`mkEd%HZFZ%Co{nHkCvHv>2XmFbr49i}<{H!>o6N5`DjV}WR>J$aO#A*(p%%Le> z7Gcryz1U~I4q}ck8yGOjzvomw5w^F-;L51&$ zSRUtk;V$i3!}!iC>r;k~K*rKu?ecG87h`L(8rfxuCCa)Hzt?zV6}C&C*d^p|q}l>f zpu<}oV(^5O^6{ul$w6DzWS~4NELB-|jZKEaY@OrAPQF%RP*ns>K8wLtwG%0-RR55ye*+;ls6GS{7Knce6je z!?rD9&R5`T(dX9LfOi@eqOq%H0-W_*A!t|%e}SXzrJdN^T*&wlY#`+FXxO-omD}R6 ze#1ZxV>=QqbjoqbUx8ZT?xS1~sY%48`;9BV+@|=R4i|>EfTdS-LvDdF76zqxFJi<>DN_fkm0e4%UegRY$ZoZxyxG1m4v*ZgX85~``&jC zdGc5WB|~aJsCEMBX4<-3m>s|*J29Yksx8-^etz?zE5q{{_g|VIZCb6Vb}Yur26r>m zQQzWkm^5k(SNKXM7H$FDJ9P>CQ7B(^6R8v6E|x|OA-v^kLDj;2t`MW2f#yU;EEvra z1+XY87kl4(O>w4Bp+R~S(d8N- z-a|pt;uXZ6w9cg|=Cbtqi z`;YVscklnA2lOj%!*)X?HJvn z{nAmB!K!h3@smwpCTY~15rFCRQ{g(0S?ABDPYQyWI=;8B#T4OSUX_r$)jzV0&&I|$ zCv;W>+L%}HJOMq*!9UvEu?3i?=*I;1!o;RLo78-kdfp+47%YRYU-uSh`o2?~SUL;_ z-#wxSz_U2YxNd_>JGOB^i$f3PJ9IH-+ zWdGxn$;DEySwb2|*|4&!^PQ)mX}{Eb3jxrJ(!fsAz|UO%akic3PHVYLY1>_~oGL-0 zUNWQt-E)SYsWz6mKJPe5Z`i|vr15mdLHvFq{V_O$^gwY^p~VI$<7%%?RKt*yps8SF z+zR8Iu$yf%mPtXJF^BMI9vK3Ssu<0QmZrN1?7~(7B7x##bgIhX2u)kkHz3jSC}DX( zowzlj@h|L>z;~-Hl~I~$vXCz(P%2e_ps}Y)g?>)kvaq@!0FqdrEgBuYp800IOWeUqE-sTeiG=&m$VDT`gQHb2dZ; zyh;?vV7uSy1x#g$OZ;QlGRen27&fZk7;esPbwE0Ilt~49jFYJ!d%ny4-V*DS%`qe0 z54kx^1u+gkUc-40Df`<}1Td^ZK)O-QFMg2t5Zwg!D!ClcJXC>S=CCGGE@!+H@b+PG z0orpMI9wCT)`zOm?`tj|02*P!A3f0E6=hWUMBYRE4ZaPgaIhz^M0bMdtGZ z^LPcSC;@;pq6~ztq;Hov$>w2!(Pd@qUBOU4`fToSKZ$yCxD7AmrS)>`4lxb>Ff5F& z^m`Zkc#V+=a+tE7lu89d8Zl8vBbcaC@6}8Pm}fxg1l+cfpja5QgG(i;&nahmmJ5my zc~nKvkrrRs+S(eS6bvqkPY!v(D#J^^!%V7wxUZoI)8KvbKbu^Qof2|V(z{Ow)za+u z7eEKca#3A6&}kOmH*bh%Ufb9b)K#Bh0Ww8KVxvD<+|_rAw^;WWAheRryI=Sa#wS=I_cyK2gOW0a$m{5R){RK>ccvD%>)DbM@j zc&_wBi~?`Ikp$R;q{2P;DCl_^=?4dug+B|JGtGC6%t6><9MvLYr#DPp{mjc)Lm`mT z!p*ca|Cs{)%ZR19qd$9oXb7mB;w&@BWc{fvTgtVl9k-J_*;wCwx|a>Sy?rFS3rSzd_#R!GlJw`_ zM1gDy)&2(yf2;Aye{NoC0@8n{?Lme?H0*v0T76C_SEIFUb)xYF?%x^IZnh*inQqGe z^`sX8)Irs&*OG?*jU6?u0-n7>;Xgmc+w-$IOOKIH{pItRWk%xD6Kn^VkE2J_r_93i zbFAHq#8}z{KCT{nSUPi`7>d1Ddos<=5@B*$ie>)fXwqu6)&89=@oMoap;i5fJ6ds6@9V$rxg;4(XwV{LvCfGGgPVUv2rFUEg?e;7LWc1XJd{6Vy5;oFXzn!~qD zax5raZ4b3SqOp84P7W1?%s9RP0b0S1H3}x_SNLRzuz;a+v=}VeZP2^dH=ZByFa7Lf z@{)b+u_hj24xo{fhRebF+`g!}dtCt+iibx!9P(`TANC8%6M(N#7o~sZ(UXgJ+C6zX zH#kgL9k5T2MU)&~U6xTvSLw$51G$i%vnl*B#-{yC@GibD_yn6bbaBK0ME&>!;y6M? z?zDMzmG5T_A-{Ch_q_2vH(t6nOHIPv%k_zII@+eg8u=D-;P(9e$Zdc9W(P@V$B-n* zc968Nv~=h@Ur9_unX*nGJ8Z_drNcT^ec0O{x2halX-sP~NB z9W$9xRHo(2z3rP)u7DqC_RG*Dilt-${m<2BAi)#6J(^P8wn-F`j*~oU`~4ujwx)a} zdhIch2Tp^fp^l2VA!NOjXP3{1qJX@<2RGb43tA6If0yjg1EjzTcSkU}JJ;>uLT;QQ zu(3{?$H;YRK}cywCjVF`tt+~LFVcYPZP5C-hqLn;D zP=c@S0pCxz_d0#|DbQaUc5B^FB2N-*XKnWlP8|`Tcq9fbmSpIpgTmOk+R#Cw)*Z8H zqa28=ATq(W!E&rmQo_(~kO|)Qa`a98YGj-(U{LbB+gAlR$V>nX{RKjj_`uoRk*1qX zaD)foOeBe(hQT4n8in_;kn0wQRAVK-);~=;F#k-oNyP)u7QZDf?_$r&9nXl(yeJCg z!uE$(3o1!Mw^Zw;7Dm5xlcm>}l<7WqERn>i9m-*Mbm^kBPAe0>%=3f}l;Nb&( zkWJ+r!WgwCNI%@}TPV@{Xc|_3&X85@MC7{1-64*R-09U4^46e37`RU_Dz?iSME$V! z00CfeZ+207->wvtICzbgxG~WG%vjwy(@QXnc?YXP~|gJR#J{LcM6Tgx6N@*8?OJCz7n8k4r0uV zD|^3L^n{s4Aacr}+iBK7Kh|B(deLlD9^YXSM8_q}VRSg4BKi2Sr0dmRr(xwoWZ159 zZ@LZGc6ZR+kP55BK!z{kl#EiIJAGDOW%;>Pv&3Nw|B3q^FZzt!zG|CX|AXLUp=lu^ zi5g&g+yT9Xp}V#HE7v|nC&K(8-527H<_uPZ&OYEGQ0AMKc?;?wd(VxXId-G8(qIVhN7;ZOxA zG3{_b$?~w2^hLs}sOUiNP=L{cALNm6qKUWjmo#i~S!14fzDbb6zQj({ae=bMFLf8Y z{&S|6v^)mNO`mPQu7oo=@>`Dswlr+pX1ENZKP9uz3y8HLEfBd#^vRr`Jb;FylI|9Y ziGqSvIv5udJGIx4P`K53eDAcNP3_0JU-A}T1Eaqup^&Qs<$p($wANqoS96b6i$JtQ z(rAHGYO*M&yu2c{Eg#o;%)sEt>lRs+(+#Fp4q4(va!_Z+>e_c}ok#yv41V3I=lrFT zZl-|CZyvef-n)KvluUoQ$E7Yref3ToYWK8!Z*}XDAJ{NW+Dd)OUu|*ddQ=+}-}aRA zP1%muz(t`!VJiWJkHAs_*|cEz5?KmP>EL+-HRSmfaM}+5A3SN6+K(~Zc!mq9P*h2$ zNm-<%SD~qNI}fbJ3K*(s5TUq@)^52f zwAr*~?ska2fJ^TrMsR8C0xRIe)|4Om!B3#rpluhJWGhI=6E%#OW$jEmlIR==C@2tB z)CsWLmHVAbc;v`;X{RKk2T7|3Wo`}vltp`Eah?lAd{ZF(C%@mTN+g z2!M*y^GUD^yNMZ5bdj9 z1N_5(KDS$D{KyWNv9H4l9fvZi#K5zrJ93igiqr2G{kW4A9iSRXebB@UBa=x< z@Q&X3q0*D8Da04a1f{|NHGNVMg$r9bZoSV*g&~RaZN{c9{vR{9fz$ANsuF|kPc$h6 z0elP8yI)!uxQZtHn(p}9xLt}8H||!bh}8ep`JamIND!@7nrRb0BYFyYt^UJ`JJ?dU z70TFmF@`dg?f?{XsNx*SjSNh)HqSV(m`th~JMSv;;+F9nHt&U@RFaYt?T=$BdJQ*k zpt#x{OH6^$D^E}iAZ>u?@Zb*0IVEB>{eGc4ZKc(E5S@K9hu=VwYnq$aO9VQ$x=21k ztIu)HJ6hb)B?l0<*2m>rpmZ)nz?3_E{I5*dw97RHLAPo@-sMwGN z6ft|#N%9B@wZ{LUfMH=m%u1~P(m;i8A837d+9z+rXr?A(!c?Pun`~s3?lSWAm@7I^ z{^xbzZEU%p_$Wa?2qFqf&U^wIbr98I5lo*p56y9crp7ENTU7bG{5#Jj@U6Z*1J<#; zZXW#7M!vJkU-|M|hIvWrg34`cC|HB8VEAU1r;f#6CkpsQIQiOM>IH?mQXXPD**IQ( zrlDkZFh{1|yCHu4h5{=!WQg}R=k5(Oaq!yKDA87oft3nNAv}tS@kt^;0DW+@QeFl- zB|E%lblIxOn5WoL-M^tEmUY)W;aS-tYR6YOhqk zU68re)oH#bv7fF|(2($22A-&ALoq~(3XZJSN5z5imUN^Fz;!e3Mh#PeHyW&xl!9VR z*tnu;DFJx_6U%jd6Lu^A;+@i%Md}KxZkUHuRX#S;v4y@W!V>yuuvE2~Fs z$8gxiNfRjv@+=%`DzBAZD|1}oP*VGMWXlz*MrVh+hSj8}BtmFk^+SzsP*>1AGJi{h z1u&z*NjM+y5WFmAdnj5q{{fX?(g&UR!>2<}+2;DhYTuz9-;a_iLg>YcGD#30jz0a5 zBGTbzo-W!a9ipf*padWZsyVhU?I*pYScUgv@#6(j4VUGxS2D5<9pwfTPTy;f^B_g< zKZAmm^LFy?OaE1TDDYo!oRrd#9`_K?V0{y zK7(h)>LhA3*Er2i!u{p&sf0mw5AroT;rr`2{~r&h^lL#_A1neg{espW{5r(&U|azX zMgS3T-l3G`2riQ)B`aVi8G96Tr5A?59K=+K#YYe^4s_87COk%`f24mo8wJRxVQH|jak90;eunA<^jpJs)NZ&{B3$~5F~O9`x_qL7R<#O_ZTEt z!9W}d4+uBWDH-2xsi5JjXz-P0n)~4PSg`wg9V1p9oa*#HopRg`y(a2JjMTGyZD4F{ zY?N9~7riIjcF1<(lx)%@rH0ZqFxLOgTmhgV=g+j{*^#mXfUFoG9v*C2nh+r#TtKW^ zfg>UsHZ%_{>ymnL;5h#!R>-y@o*}{FFqbIj!(Ond49IxicVO_xH=IIh?!|};2t$f| zu&$i^XNRW>BE>UiI4}t2@i)he7=5_|C?B=uO1s*`(@8$}JN1)^>3=gY9C};xVp3H( zv^XtJZbzX}10uq}#&MramKn8hcVuCK73?q1D!i?j>F%KMN+VR#Tp%m@enC5?-&^xk zfK-2*d-hsIAnV~9ya`)ZtUv%aRCtWa~n%?rlMbNY?zm(m4VQ%89K zdP6*?2UaVUMrG5-ua3fJL*719;5WbPf9Cab*r%Y9)Jlxfju=5*jW{CiV+sn6#67yo z&Ss;IxeeG@79h{<1}ZkBR`}RTc539$8HK=Hesg^}iwv>X_aldbv5{?Ywj%AtFGEGtk}*8I5w4QnNT%evG|=F}xBMGDIP9jkym6BX!26^b$L@Zz^o-_OeO zJeAFkun}?^EdRJj`KAjgL4b&VUvJ*-zb$q(!taQWI5i9GrRvplh(3fl15yf#^R7ml zSkjffPs@>&Fcma~7miMLy#T|8JT(E@Jm5V@|Ri!eK0|KJ$~!-SSKC&_v< z8ZzG~dZE3RHSr^N;)vIjP{Fu%a(O(FA2HlxMRw3wtsr%>Wsw(eAG=J^CtI>qyg|v! zDkQlerqHTk;d54EY}fA~7le4qQh!V?W`(@p2-(BI@ZK?eGjWe9nBF*#-91wKkdo3sX(G1;%pjigmqEJ*Wv_w-)U`ew@7!S!U{sbPmmCXd5sq8!t0EI0H@ z%F=7RUfz@I53DvA7&xihV1Uk#syRyO0hx$6u%zGG;opCE4j687#Yc+KX+$3UleB7^ zu$yeYde`U8ivf=FLO0kjL{7zwTH4)l`ioEHOnKG#Yj2HjER}i-1`TN?n+2>e%0UO3 zw|TQWVPQkcrkrYbZ>#rKJ$h1Z-PMtuAN{_ zU{#=^oY!VefEkCZeJc=;f4s&yML{E2V6?ZgXfKi3{M6*wxGVw3#U}afWoPj4y5jS{ zc8T)+#Y)!p7!X>t5Uwr}^7_-tiY@!qV7sLyAray2kP-+m4jiktQp@z z`VYLl$J{DY+Wk8>DFQyu!?^*W^m% z2Um)F&X4b#!OD<1OMA_l&IV3p8ce#eRVzh7s+T_UtW|G$`ScNKe3e+M5a}dkkqu%#&BSpotU)0;frb9DwDeeyCtNa8I4;H zQJ&OP68^b;0qGEh9dB3)PiuGnLWnyT$7=R1x<;F%pXrHK%B;TB5}_~7%Xx6$%jQ}f zRgv}(oy)YqLeSAY$%so|y}OcjZ^Cp6cTo^_58NT`j}GY!yurORt-T@@Y=RK&eV@rC z>MPefvEvs4I^xMV!N?cwiKg*eJT|LlZ%V5!$I$2A+78-$8QNagwbIys#GebM z4xO|hbS`e1Svf5(G*J9tjASKew!^OGPdvHIfBnLl!w}SSQ(AUJ)Mrb;ozEaZw`}@p zb+8Uk(>Lx2JYpIi@e%rkido#nJxgJW`R%LZkTjV2X6y6Nhmwn-rEV23Div}i8lOhV zrtcxFkUmF2f6u!k&`96mxMvG}~ zqbyd8b`bx4syJ|H@9m>zaR~7O)@evHt)_8EkRb2>=sTm&JC8f$s%ck kj(+lFDH8|h{{N3nj_%^igah7}djRrJU&lzhPLmk#Cp zN_F;+H;oW80N?;^b(Oo`7Jnw}*PV23?`?l>1(f z+2QGNliLN)h48J<7eY@Dn@-1nU!bhfjO03)VjxX!^m(mL9uaS>Ssadyu3DTPjIK@Y zx8GQ`*m-9{%G^p{_>;L2W&g)w^JUVX$?g0bB#Yx^6BqKDPrskiJJRW~mcnd&y02B@ zLPNL*>g*XI>rH3RsAC9NRI6hMTn{lKotR}zj<(U{s{OWe zxf<$*Ggb+Q$5W@r6TL2hTN7m`%Vn#9s|$h7dlJf95_Me1gIp5fdtq+6~KR0n`tzzB6g;TBS*9YF*t-sykYh8?D`4 zeVWwpE2qBLX`0(&mVNZc!{s|kW5C?gq`F_LwWAHIRDvkA)D@{RpI%{xfd@qKq@NED z4ds)Rzx7p=`jnIi&o}MAX!72Rp4yM*C{$QfVHhJMG5AkYbR)9Z|F<)U8v|@#_8Qg# z(mK}-PPYx}3KU6L4$+8M?=L*khWmYMM|~3}0V5`)(xBs&wZ`M|rhvNB*DmDObZh{` zs%e?q5TKtraGI(;oLoDe6mC)o*0VwOWbOH6Rn@hRlzprlVlJ(&`}0<${Oo6GW8EgV zXw7OxS^2}V0Il^h-^60)G0JEPQB2x*m0^Gd*QtmDU3s&4Q1hJ|Rny9is-5&Gt*h%w zEUm|D?XaIiiS5e&nxRj7wtaRordGbC6aE*-tjNG64ElhBt7pe@)!A=+eAW5M3-dpLCksJ=dkEzXL|XfLBAT4Y0hrFiPDTSJMoEpc@{Km; zHOD8PL=HdcX~9-l0|r^0mTuGzMpqWs3vqSTeOa)u_6ifSu<~kCv&B(zHyzE3G=XqJ z(f9%MF&y*YIL;EiDxNg)kOViawpd{w{RL3Q!96{ob-v9DLrIO>R>GfUl=j?|y@b3v zbu69=@dOD4K@}dG_yJ#J2nCIwfSc?{@jjRRXD&Z<3pJHC)K0?w`>9DkgjCZstw!h~d0m|@d9rCtra z*NPqn>!V=O-2B9S9wjL7Nz zu7}+)tR4uvPB{E#aQtnez`v{D&vjS)xj#ze1ZA@O#y`i1p~K)H&p?i|`}CEX$4Jw3 z*!Ai|g25qS;vXz<$~u2yZ#(5$`Y4S;LWZ2% zj?chmLfFNpTTfy-XxeBxDEl7V-Hf88Dm9V-Q@ze$3inh+#`3%*qdr5Sg``aw6Zf5_ zK+MG+HgIXFR(0cVp+@VyMD$K#T`?CpLN}Z<-Jf-|{y<84IP_HI5_Lf>AqKK*9WF^> z)@IKMrU9Q6u^xS!;1BAe^vrU{8%zd(Q8Ew!#RDt}{#l_lo%FLoqJW^G7z=yk##^fkF3sTWeVsp-GH4rL-pky(^c|GJ)fbq3@2LOus6U@? zOXo-D{>j?uiJlSi7br|?04Ac+_Cpf4c2K%DHgQ%xCJ4`r$&gpOs2BU0YvfEie{o?j z&CbX$>sCly0ZgDkNthA^O4n19xw4%klZSoqXP_&fNQX;Yf*vb^2TN!uHgi9Xc^XCZ zvXmaU0~N}lqctu8V>I-RD=u^mqV7e?=J&GDWct<>Z zNE*;wRw`KZyfh2PxI3%K8R1cg15}7%8FEIDY1KNL(N!0v-3`#BNGz{MFCq*nHI}h9 zU_B3T2^M@Isghu&q!4T0OFoA=KIzOl>U5Hqug%o@|Ld+Kr~AyeLw@oj_JZcZH?8pXS2FG;i}*3y zG2fr8by$|Gsf~bePS#1>5JN4)U1_dP(dePO+Z$()ykUM+Y5Cy=x;Fv%7QnpNyMT^e=}oV(sw z8JSIowC=c~Qs8X!h@A?^)+-c2E5=K!9)9Il)v<~(ZGl0!zZTVEuU5(_gCW?9W1^Y; zO{+VV6lUn7Ff;)aQO=2{Gpt?brkfsCo*lk1^~{0TD#>B&D#PUMjy|bp`h!BHJ3*L? zC{l}(n8c)k+_?eMDr%HlgL0S5puDoWTFf)pSL2|@5iu$>to=e*OxxS3XxwE zBxkSjBZl;NLbN}Flh2qKh$Xb@-lYgp7*yifUHXtA$;!{S!;O`Yxq9p`LJWuSAS6Ib zR(dc_8n{8HdI&sw#)Ho2EqkK1?$+E@H^~hr*XsmMasxGUtG~lH$9yLUIchtVTkPQn zwcEVP{&MFd#4c`Xi?TAU--|%(N-*t1{Cl%JBzz(f>h$0wvix-N?9&Xpgd;!%*;(JY zl-l1}9|^P#`kOCz_?gc8tevfV(Iw6oCud-mpjQnOSNTKW+rk6j=k(V>Ff%9;5Da~V zWP03;L^p62G;3b@vRqt18?91@k5I_YquY`5xLU@XAWe~ui;&l!iTP{$s3e`*rMRVr^SA3Rf=2m~ zwMRL-r0fU8J4utJF$pW>4=>q@_Th>J00qR6_i`DMKpCMhZ&<{X^TX}TPhs$2hvgpa54`(5gxfy)EK3QSC|953s zEcR+gNhi|`CzgoyK0Q}gafo}C;9%cn?zlQzMo5w|_7>L#9Ghu&}2?|qw1_~%O>=V zz)0jkk>T+LBci4f^BCPa(~Y?5Z{bxw(GTU@bFxVF6jDda;gacUP0B~F|IFVo1Y=6J zLmy|hXcaOU1}C`&{OJh%<4LDJ)|Vkv?WvGZs~dVmx7lMfUX~&;#E<)yxlIrT>=j6P z0un6((~GI!Zy$n^4<)ZPxxL$c-~P>eg2SaTUP-Ju>TS^_gTEakzZ<}5QR+KQ!ByR0 z)LPZ@C3)c@R8*yRVNlG4md?^QY$8#5$oQIFl7TsJS&|8bR20tJ)5Zu~Zij%ot`6sj zdx(h`Hg9(U(xh5JF3ZA&$$k0O=$~5&1Gn-(>HiRnsXqCmU6<2cs}3QRoZAF7mFfJ* zsYt~tLyGW9?Qub7x7U184(xEIirJr-Yo##Pe0?(=JI&@d?>E4~H5X|m<-Dofhjbrn z`eY-t^20C=;Bg4!d~X2t-h+!&?ydXYu)ht`{g8)=9ZI_&(_HTy;~{5oNEi{k7?J0+ zy(?(da~0-@IcKfk=V^b343o=(S{cYA1!Rc?QdQ$vChztTF6tvTi7&p0LO|4Y{A-uH z-RJ#)`i^j~%>tP>C${K~`8tuK-y&lH3(<`ZdyzrMqr<)7Wr4C{4z$>d!&%%^S3u46 zto$F|H??`3^9VKo&KK@ygbcIExrnbgNEl+HHo>otq`Hg^QgAG$)k!W#M(1w%!A!x8 z1b#OzU;kZl4z% z*LjV*r@8rYW)p?h+bUV*%y0$EJo`HA{+^kSb{B)e?u^2V4C z<$o>f1y#t-ys*4b-xEUbt!zMjJO_Ke=YpR{Ah_DGn3O-4=heS`OfM%NKcKh1UMB;36pcWA_Zx-D6o1f6w17!7Xv5fW0Hq4M< z?}&O~cPDMk)jL`vhqie-omnCcup%1b?n^RE!j%Nz5SOBN5>oMm_z>U`IN1A&t1J_a z^OZ7aLCb?4oN?a^+(#q5T9MSrH2rn&eM4aq`bvqq&vtqB_MJ?hz*a=&2mSfU)_?1- z{*^k z4;Mjf#@FzKRn^Z6kAFNip1FW{G-|vmK@m5UA9T~KH4rY^>s#LQUcS3@&!NG3nyIi_ zfA}ggmHs!@7)ud7&a0+&j$vWjCnxMLqIxsfKXUoBKpHjwS<;TWoB(Ml+7EpZi^uVP z!G|e4R>HS&;z8Wha4fsiq4>RRl>v}(us#M$_eQ*7j<3wK4W)4@8^j)v^CAVDj*;3N z@~tPIyO#G;`?t)_2DjPsk6vFM*0r;^QeMiuC*QQK(?rmpS_+o+#C0i9UUG^r1y8PB zofcx_Eb_++Y4vPU<43PaNadkO+4VkIKHrc3A#! zCqD(5p+qg$c=qMGu_Z&{a6@Dc{j)ob274aQc-$_Rs2zu<85XDgynGSIX2Ne4J%Z-k zCl*ON@*hyWTiAWB*55ZeyZ}~EjvF)yh(LX5Q1Um~>1h>0le_d*I$=Ncd(RWE;)>U~ zV50dSN}Wpf%KN2Ugl`P<3-kukv+r>l9E;iHpI$MdN)~vryJ&4Oco9vuBPo6U_ZY?O zS@O@M^!pQc>8Mr3tJF&tLsN10N3f7hIoGfONXjnC&~IF-1bG_bivm}#>uK4K0bsx= z=z#lIDa69e{KHs$l1Nzd5IqnlJq8lB@B#9C=RNdWe-Ql6I`SuV;9~TC82SeRnr(gE zan`PD?%beVGcyiy`AtTV#JT3N@vnq*de`Ue8WF~ZDH}bgmSe$f*ppG_D0;ygprXo$ zTOPW&u50*rai<}TS1M_o#h1~q$~6vY{uYExijKnJTu1NL*OB^*X1(%Y z`tyJa8tKKgRh)$Lh|p=EfAsvKm=`4qhZD77%BH}*UnSq3t8ifQwp8MKJ~aewk{d%v zglxt~1nMv>%4vc{ldolNgrAlD8#4ty7Pz(-=t2=%DSb0o!&HtC_Pm5<6QFMC zjY4KaUawa(E&5Y6t10f32*~P|e9H*DBGZ#=%n|T)lqIJJBqR)6UUzEpM8ZDoSYIR# zd!`~>m*bKZrZu{2k4Y{~^Mk4W`^3>e(r6`A3m3t_IjHK7`6>A0MF5~(2kM9-wn*>& zgmrPOxGRC92*UlU`%I!>uYp6cp~D8S+8zQDiSRZyl)XdCsc!QS#Ba$cao-q6kxnjM zS36}s@85=YR!pXD+8{&@bjuLN*TNgY*ymybj*7U*?PdIi zVapQe$=0QAILh3;)O#(b2 zioF_{LE*W!i{UI_8BQH9Tn}@^fFXu^l8>lMGI(PQU|9;W)k=`-kb*Nu($N7C`!+fIQPiB-|1G9o%#z9#F>dJ?e2@abZ&eMz$ zU;FLDp6$<`k@>Y)*@*u@jE3)&TAKv_GkTq`b8I-nSxG(zS z)fJxd3ggjAjM&RQsYU!a<=NTrB^DFCp-C-ail(3-u6&;-w? zso(Q`GiD9Ba_vij=LFU$TFmytIvii(10~$j11Mc58wE7@9PLi@;C8$lQ$%Nfs8y=W ztktjdJP>q!KVyoV@fmrB;G$LsQE#45C?7jWEI83W82qsyFK*8drvA#C>+?*Wv}{`N{i7?^sakdXUDljuW&KA3Oi6|M+MCVIp_tA7ybBkMmPlU!MvwP@ zP|r2dr|qxFt&X5eH=4-33?WcpMhJwA`Lnmj(0*~fbkKX}_)IHx$T%ryb}UXi6KV#S zKIk&4G8^hHIINXG1Yz$!Z2_#@(o;kob5KmO@g1%dNux#iqk9=RArvNRqW=>@>mY+A z&&4)ctl-Hphl~6}Nfnp1OE3O|3f}tNin57`W#cNj`bZmZ-CKo68k}`kAY6qIrqJ^K zbAm78@ajYwJ+=Ew$q)Tx^&jHFD*XnRzgK<4Xqt_ul%|N68X*|*%y2^!c{WiTO?s4e z=C0h~%meCPS4)P%+nrWG{8}Gwb-L z)o|O7w6r5yBN>F`M+!3uDp9gBIDGRP19F=?2uwewkG@5sa-A<3(`r@5+Xm|(nH~;) zTqq3e=VRciaL|0Az;YT|^)H{F<@Hu6YO?*ZF3T-O&G!~B>XdJIi<%F|JDg{fCmHH5 z0O?9xw^Jo#(8S5b%k?s=mMD`$^?%-Vo&{e*q3VWDMm>o%uD2%o9t|4DSOoy*X7AC9 zo(X#mX-qgRYEHyi95^}+5Be{hbLUd|#%YiT^6bUAYbC#k(p5h*W$CVi^idSS#@?eT zub;hySH4Rcy&fY_LT0#qz7^gf>SGB2H~?GH*IL8Ren6lvmdIi9c4v?`dCMCz9F15quSzK zuWl1|{`e4kr7zf9q&;ZlM~S!>%Jo2*9t@xTpcg0!hJzjrv&K;kEh|z=%&erMywGM( z9$!6h?WO%4Zs-DTkxbYgRpnL|=GWuzg>ijD+hn3fyerU+pFmlauQtZ-1$pyurH!7( z+Wl8@;hCpL3og`eFi5s^R8^$89_;>OaU{S*fPpg}7hM8!#O8!L{bJ%u`c@r;@VC^s z{ktHLvHlw^O@Jd9%pT&2Q&VCmQJP^jWgmdFeb{buBn#_BY`rr0yye@`rXp4+hN5&m zkB1e!bGzIZK?o}jI@aCd#UUmrSZsW!4kxQ#PIFR=NP@BVR?>>^%R_fEB9T5^q82`hoa1ZP<27j!jitM7!c z@hl8STHsJ9pSLc2*|Lypf|9*uQIPiM%-nZL-Brq z+h@9Or@Uq)wFfM(Ip<^je$9Tz%6I%{b$P5a?1cvN ze9J>vfb|7RUOSc5g6V9bU_9^oWnxKsy+sU9RPyBtx*tr=nd=z})#njM9nWIwdvMb=V8*-I`Gg(BJneRoA9>t|nvU0KrL7Mnt zffP5cGS&fsnwdLge6Ux=m*<3dn+B%XBv7s}TXkqFb;tfgUs);dKTO0@}F zvTWzeW;E6bc?W>K1#al&^h~D{@Trvp-~G)6uEk99DgV!cv~9+n$qGRYPHMhk={S8n zEv@*)F@0WlddDYEE4P@~;Hp4g%u_MS%l5YxLy#cQ62xo@=BIQHy9uTx8z=Vpeo;t% zF@0-PM5T{h>=NLi!DGbNEMeDoM_%;6rtwE3r2vi@13?lP&0wU^gpv4Tr5ghqer}#{ z+^fl77xg6aEu)MmuoV_~ODU{z9MtlcJ(XU`ZzSohwEZNF;4ziJu@j}R8W%PfuiqS^ zL>_*X7I@)U%b?s*0eg)okN&E7W_o+n_TB!QKRy@gFD&!4V42t&K5OCe6O_e5D$Y`d zcBwKD#(0qK_@`lP;YHQ=nZ=E-(}i+MbK?AyTbZDY^Y$e%C`zEB5M6}EjHIkW4E z2#RF5d$Gh!*EPn9A_c2aJ7hMk85g5Z}}A`o~mK%2Ny-%+Dvh} z_fx6eZl?9fOaoVv1ye*o(1d4|zj@S_d;2+)m7U&C4?dto9#DJYmP|tzl=f=Iw-_(G zWw6}oLC3l3x1?L5;!J>B^7mD&DdTwXcP;N^q*NZ<`OSR$BsHAN%-guYxqmTIQ}(JuY_kUq zvYs>$HSO;4w4W-!W?{Obt7ls&3(|milKmb`7`W<4#6RO2o0nKSv-lmpFUgtzhX6O5 z37+8hpBjE>h{7xiuF4zXvAj@F?w33lC9x0Ml)f)&8=` zhI3@lW%ip%|4WAajFcW0Tk(M8%P2JtN$?mYRc?UpRu~`nF76zcc7cIx{KBdZAnp~M z*SVsYqu*bfIqqd0bN(8<-@9F+QdX>gxI>gu-YQe|Eb<&updJJ8P8n~LU$#@*Um)G_ zz2S)Py=$*d>HEb?_3<_jIIw(}7>$O>^_NNYbL&Y{ea`=74Wqx>P~G_es81%^mG_77 zS;|4j29Z$#EkbyM!lLk$Gv5+>E`y2}HQb}UIAqGC(3-JcV`9LOj7r_bpufB*yPqHU0>=pHYx;{6YS+|Lt%x_^fJW6$NlYkU;Kd zpNmoQX67%bDO*9v-Wwo?(aSj*LV>|bVW-HPvOo1%s3(R8_4@0k zyaM|!nYma>dW{+0Xdp(l$G+1m~Dh;ifhLPV2Zfy-1&RU&8fMGFQP2gj}?_lLR%d#Nr6l8|_P zSMy$bv*7!w4y3mr-8h=_f+9hrf)o21DUn8~>E_m>T1?XYEitYwv2ZDbO=7I^M%R6^ z>WRwVY&oR27!TV2%++|YN&gV}Eg}SI>;ewoxN}^xO$fazV0?%QnP$?r#p|X**CPfZ z-s_q5p7&%FfS1xoaeE@IXvZG!y$uL5nH4{&j2VxA!Yt3YB6qQ*RF~B(Tsni#wsAl_ zf9sn^=J8j5?xP0VU)9FzP!ulFUP8kxcVk4Q_P&O2PV7MT7jGpDbMYx7)-_ z%@Bt5$NK_JDaE8U_yIOWYE0evP=;ZXQs$`je$sc{3yfM3k`x~BOHazxK=feiIjH^s zAwk>7T|@-;GC!I=7hA4oSMq0!RWan~h^OLWH2^Kp!k;S%CR-=jDk`-5(3p+|+;38P zjmDfMd{Ddf1KAKodE9Yv(?PLYo@!P`c7Vt)kbLViePZ{TWF$nfyu5xf1z86C-jg)X zU#Gqr7=V~ z{3$dNPEg&Wi%T!S(j_-$#OQL~ZgBL4z>XQOi+1^I%Ok&pvQu=Aa;fIu`{n}HSlk}I zm5V09&1Q!*XvdQCI97fMzdW<_WjH%@WoGyO^ssger-(?>=XbkjiaQtc zI4or>kmn|P#G5Q<)U#(2;{naSv{R_*9!^YaNPLa!k!&swiT=LjW%U}*1M!xwa1LQy{ zLi*MypOFT-v^_~SVd)C^f*9!;kk^uzPXURMY+YM%2=ICT*#@LVJmmQ_mF%eU`jcIv>7laS^!pJJ?jH9iQkgwTn@<&(RQr)4)7sUDX~K&TLKKWv zLLZf~S7DSnHL=p9^h$(*^fu?CL%onlEr-2bRBfh?T&8+L`Qc#BzqOMjA#KM%9OzlI_tRn?gJkoZsqr$H8|2tKA7;1#A^oU1~aVpFcA=p~Ox@jJ3d z6*~E}3xNf9Dr|b%U%BvPWBp76oUkUcvztlGz&E$unQR~Ti@55_!`~x;Q<{|0k~eV0 zF1W{&XAEa4TFs~boy%Ga@ID~iqO$uux9KVcrZq7&i$SpYYj_+VKb5*9!nUVLjv9NR zLZZbwSPM6}lYNBa2F@(o0K2|v#JLVh8wK+Y>TBSCCffR5U#+qqM1%M#AqtuFmv4>-rKP3 zxeEqSdCnr*HD0m6^@uFr~o-7f+^{Y-kwDZ@S5ZSj*J&4Tq#&@S!zCk@*0g310;RD=L zUm?#VWv)M7iv3vf z%%WQSW6HG%=Mnz*C`z}sN02ueRJOWuczzuDyy$r=r|_FUjl=((REj6YPD4AVR0^T~ zNR=ORZ(HWh!LEotJ)xg{KC?6Ll|TBf2E*$8LvOIL>1~hyeJ`|Jt@BCDd$1}%CfWS>lCqz&X0H67M9$g`ISNBo$m4T7`7EnTQDUInL&C33LgH0~VXa`e#y-WxzH6uV<^GZ>!z_K77si8{FJQTxEPWX7%ohpv#A(*6lnkx}wy@<^S@-i}A! zL=wO|?K=6z%{y@H#cp4*rDpr@cpNnq-jk?Z#|qK6aC@Hb6ubLQkv-Xkkg0Ea^wRhZ zDb(vR9Z0K*KMq0z3f(n94H{=ltK_w{H#jtw^@Z(6cWhQo9DJ{`C|Hj8uPi~0xhgHt z4B@qRS1hdfY4zmn0C>hH+ADAYqeq#?NXbA%A7?2nnK0s#)6^G{M{i^1L*O}P>giOF z#qKD2p`)TLcTe;e^t(E?S1V$l?~6KiEEh9Sd$=o3X#%Zzo&FyW#hdCIQ$-Lc@HJG3 zieju-HJJF1QEcB$R7zE8`ezQ8;T#%;0t(hXAH9vAJ3S-W_i>@pxbE|-*jh~SuAO{n zz0zjqU9@krq5Oy&bKxXX-vYY`>gVT<6|KzW4qBB4=;lY>_PRfntT2&9Ws5kedz(zFm?J~SB2~Uo2OSp|WU~=7W;a6DXw~*6PA|Ab(O$9sSs5o9y2ZPIn>bOr9vuRxhmhqR^euHd0JkaQa?_6@fh5b*y6)1UR zlv4a>64`#;Jx&TDCplGw5saUH966(?%UA151o@JBr{u+Q`~(mD`T5>3J(_;Q;AE>` zZ5RCL%@uz@D-A1z^WfOc^QWL#x-f`y;l zy}CFWr!wuHH(W5J-v4VxVX23;DYnhauwVPbhhOv8y?%y%{Wbr{u@qrA8X}1w>PA%D zOatgcUwx?bNM*sHef!F{@z~ELEb}~qI1i!^{E0lB#xbJJBE5jaw+2G;t&f|9UKe%B$IH3JP&0_UcOS? zpU>kFRuqOLs+z8~Z-su%>c}l#wlbmiP1?<|(%#jQ=&m77oVw)oiXrV&f7>i4)6JEwA#9QM>MRw6;qA- zIf%Z?WQ~aVV2qno;qGCi!H+NVazesB@S%=9AGSOKtH>)I^yo4rR+%M@de61V}R&nj+hKpI)qXk!M+7qPJJl!;^vMK#oh{5)Nya;h5z=Vd;MUvDbTBKe8QRHMI}nid%W=HA2DT>J$Xb3 zQp-Wgi_}05{?j;usxe-o54(vZ0kDALkgr3DSU=;sq9KqO*u3HHLz}^HF@qooJmE&{ z*E(u8{|iHZT6=D|P{2n|JoFpOxdQeiw|J@71F5(7IeXH`UhtOF6IUa`M zP1rUhs)#N^$oq@{mQSi!-f`SXx}*hw2_4kf_Tjk!egEu6f@e@ZpHzqPF^_es0WkY> z10G0)v`|pU{p&H{NWS37S9TwD|y6vHi0}J2m}^n zHb=vR(0V`-N=SzBff!Xv)BRN^v-BB#-5niFe-?ermaNdVj2!Bfy6czx+Y##Hi4~-c7xT$(Q)g63Z zl>6>l6$WiyR5#ZBfZKIU=ko`!yGEP$r?6qZAxG%PMcM7*p7VC3ucOZt8e?h>hrA3H z!b6CwIzg#UQNi?9t`Dco(FmfV$MGMH{~}un(8Gl?{#&!ye$yU5z4GUf&6EXsek1K z(=dKza_2b96>g*c+ z8id3&^9vV96YtUXEOS^AcGAf4mG6%v&A&;UrYMdGXW6Aza#}uLozHMGO?*#3YI$~>?v zJk^;#7EgbLz{>M3tzGiWzquFnF(WfGxBlpA`@HPFX!4aViaSJ|Q#oo$PR_LOj)P&x z)7Uh!wST*HRPmBH=*m`DJ5@6-*0)SHDd-U)7Eq_ah04sh#B1;Kqtv@`k0x39Ep_E~ z{U}ow@26Y7#3qz8$3Djjy?L6!&`Le**g4n9Ib`1-9kb7h_O)L|uEYOYC)a{Y3VT?i zCTLOtEuM8YB}wTSwoCv>4IRFc=J>7##upVTK?M>w#v%-U*j)42vd1L3cJn+q=u+ zBM4^j=@Ro|zcH0S@krD9%j{JdA@vC8{d3I_=$;S`!rrCV%Y($In5ys~Q_dIzpV3X9 z(e@!1+oyr~ijVqqg$wHmi3BDR)fu@irZszWk^CXV$MCPrFi6j~yAd07RQV7)!izCB zNU+}&)5@n6jj-e!h@9#OfZBu(Qz5@faxdcbW7_-?p*KEsk>3T5cSPhWoK2m)Q$~sL z+1jv=_OR_h|2(=iyQHQGvgk7l5W8L9s9((>r|`Yojnp_`m@IOmx`j@^>hO(|jRoim zNv-h-*ztJyy}J1#zv_oJ$4MBAsO|tb73-!2XuX~DT)Vcx)I_m=lth$N2&j-Kcs1=e!t1B%rur3Dwjmv37&5d z>6~uus}E}+AF>UR(SBK+ur8prFdcq3E1Qon zPD$U~97fG8jW--DK4-wru%w3khiRVPZ9*0wi)Pt;QTTE0PTCZ+Pd7+Jg`@Knxe(y5vb15^SC$X(TXZPBi-7jkuokAuhD#yxDVin=5 zi1ifd?jAygbCW|*WuoWcF(j&!AIqNdLpTs;6NrK}O>>Xx*SvGc;X&-T-;Vfi>IFkp zC(`KGb&{`9Rf`BsPb^tHQ{(}0NV%G=8-Gaq?YpJ-S|1HR#-YONE;j~(SS&#@ZueB! zz@v3C3EV^1qhy=(grYuSDY|U?ESY9+4Mb0n&k-X(GX5bipB#--H63o6t~Ks&vTe2P zOQ3s<+$z8kH6%Yl;<^3gj)0@J?m^n-7~;rdQluUJ^!x#VLJY0tt{X=YRxx?)2L4U5 z-R+d3hp%pQMFwGd@|Q)T*W1tGHIapI9BiT z5(c$)%fF4Vna`zv*ATDA><%!ykRzvVb^N2j>EB4r<;>iCRp1!j!I^$*p1zkNL^mZ) zv7)4$mGA5>l{yK95$bph&S2LX2KZ1KO(iS`h89_y6^sdseyN7hQpA_ex`1j>iE*+i zSF>xTnUnq3VlE-*jDc)j^bc)|0v_nHfe zm+zQGx(6d{zB;5y1!>Y>bz%=WD;?nC@N5(qm^(ibB&0rGNq%4!08ciKOSspNdCq3t zPgKWu;hBWTiPOBwc$IGY$=-anNNfpk2i^YeY_RP*A3)rKbtZ1;hg!;y*1w6D_28Ye zo{o98C=}hy`=M0!n$BmAu0-_v2FdVF9Ry&E)&iK4r*qoB1)%P6q=>D$)l#(R8Z|S@ zu-D0DI9bP(PJMXz&+U$ZmBMFdw{ShiYr@F|{oh>ol50CzU{s>hf6A>jQ3$7-PD#A@ zGWri<8xVmC!=9dGc>$QGY7B;~{y@UyF@H0Kbjj1Atb^Y4!M#UX9yUxn7zFAwTe3)> z=lk(0x4pJHvE#LFNwn|x5FpRKJorM@6QAn~&cKi7pAMfI0&j>_!iIxKzU|(;{6aGh z*9Rhj-G{NBrrL;h6`;M_t%tS10DB#)LCmg6A3UmN4{Al7V_b7Dkk5!4(`=c!(SI{p4(#mQYtN2t z28;GEoM{` zK%(n^flzXF?kp=MX23!UWkrq1SdP%RIDI$N#ih{kIbQh1)#Z9k@C)QcXf9Ec(*t&I z*XCGYP0+x%@wMZyWHRu@v@QKzX^L3l&FxS&n>w$zo?vRTBr!S8Gbi+%0_O6W4Bu4p zCkUNSw!XvwhBsR`D#+(=`5)=y7J3>n9`)hjihr!qToKzaz}ilyIIuZmU5a%vw2E-s zm%4V{5D;tOofIm0x?$ok39>sWZTNj{yx|Gu^$o7cR{Q8d2|;_%qtdC}$|}W)qknuK z*V@7KZp*ibvn$W10p%-r$in5EZgXcrV=dSOl&znumad6P(P*{kmt4?;jtmqH4?Ry_&E?ebt z(P?d*>)2`jLW9C+!vdw`&!bfk6fPIv%Q|B#;`h^PrrYZo7xA0}5u7o=^)SCC!6!SD z9G`R_!2qGbtDiHH%*=*YLm=4H32NsF6X|k|Z~DY@C&d|@@Ai4&?uqDw1M7)@=zoau zf*b^C@$53RPsAHTs~AAxmZ%SiQmYDuEN;T=NteImhUe;Wv*ti$R8=qm8@J zyxphm&vWGAx65`#?~Ebz+Sb^vxxF1O?ecEVGzti$6KTZ`b5sD2jyDe!6sR1NMd&9t z9&T?w$o7WgEZ=(u;ldZJUKg$CEb#k!pE+`Mim~KAO&m4T_5O6?59?R`pVwHBs=_5~ zrtVX+3H$TN=r>b%RWl8&k8q=zLW1D#jwucz#@ zMF3s>=UXDihNP|T+S6e4e;8LuUYyT=&7&AzG*wZO?h>>Px**cAc+hbh%N1~#o3tPo za4Ur3fvf?)_xb403O@QhcGq#SO8s4@k?BxS_8Vp2cIwbUg*2DFk{@TBNZovX&cicL z4zD-$e>}Z+Jk|gI|9=+FA@j%{hjg^;y^j@gtQ2L3aFQr{b`FZNL-t-FG!6*_5S?6|M<&4kIQ*Ho{#(Ee!tzWx7~RDp*M*?SdFL|2+=z|9bub~mj94- z%c|niL=DdA4$0GhUb8wWQct9dfRHu*tN&fRD_bom55M(qjxHO93&M!h*qC>ShVB&* zTORhifz80pWyApM#xe5>gfn#HMj^e1u=P=o&K(opX0%Ztvt?h3#w7cX#aysue zJBB!0K)MT#&8sD$b{TxJ+6Bh)rEgou-5nl$%7&+o~|>s|8>lEEkqt-<5&WiG#@F+XU1WcinH zPQU*1LV16&htt>Y$GY^2_C08H{MxrRe$Z(WT=y=k^gKq=mRN;d2@*Cr@gIB9a3mS_ zRPx^~AaPK89BbI4<=T{d+n3gN4A;{p*HhGgDWV3~N3mS(Ybk$3DP+a24xf}Whg_Rk(6GQaXB{4>C zO!utFaJVr#N_E~SFHso1zs+?g{17MJT<}-Qys%`U%%MTSTq#|C@;LXc=idU6iAI(Dq8yCO5O1&Z0hniuZ27hlE0$W#{g{X5vHLYyU=r ziu^>;WNLPpLHrWBf~O-MKe`|JxVV-0-qkV#CsO$b;T^pO;;qnBnN(k!RR@}!>N%py zq}qQ1(38N0WBvv5&+Y2WYp0AYW<*WzrRC4t?l3_bgh#rb`TO>JqOdi6xMNjYqG zAw|`xdPb(e16MsrnQ*Z=bvFF~tjopNIDCE5vcf&c$W)H~|Nm)j+qo-U9P50F5TagJ zVuSGyYiZSfO=r?zd8~O?gZ%kr9|D=FhQY33dmm?oQi*RlxO67tYppZfg^V%M&DsTk z!vz!U{IsT3$~+xr)pYnSV+LL$%S*dj#SOI2`1mr!2JhZIoV1)BNm)#5mH=yUI<)jH zocH4>F>Mx(IxDc_L%ce0+l}=}lSS&HKfV1*DHG#O#l~o5u|ehm?Rh4?HwPVaj8k1K z=v7X`NLDlYCmT@{<5KWuCpXM(`S?EG@oD_8ta)a*DF3}`uTH{l3e)9_L zSdKK>U*uNWp^EK1S@c(8);{@B$$za{jS^3upt_+OH%>Z^ITZ3F13T+J|Pv38_T}Y|Z=#5^_7@ii2M(6D~fOQL=l*$@)%aqEbXl z#ni!b@;Wr6mD@3@;XmK%HKJnY^kYEU>eTq13grR2GK&38B^{d5VMoHgy!~aH4^iGN zBoyN6nvRI%oQ88u31CBX;K3|ki5bm89SM(=S02cDlV#irc~c{!3F1`r1U83jha@p^ zGEK>w*^cbqwAdQ=#abh9WZ?2@ts3RSz}|;LRX{Yot+ZXlD5WxuFuJ4Xc{BXqn|ZwpBxkSZg3QD8P4=}S{&mn%#>%n}!#f7koQ^U1X6p|5tZ|BtsZ1tPcHoGLGAzVT$Z;1tav1*V}S zH3AC}#yd9dY-Rd7N!q45WoZwe(xTFyFMLe}MK%%`rxXC3lG#=!Ys(%+MVRl#M>yaR zn-M>72-VvIx5E-vXvA>{&wFW3`WEVIZRW{Ulgo@R;;f=JS6~gqp60eMALdXYjsIMx z{k{L)lKc%>zp`MCx(l?spSQt@jM^q)YfHPw~E#gEcZSu8)1-HtOT)_D{~W zMi`15Bq6&%$E0`{3JmbX2N4!@gR~H&ILktFegnoawEdx+Nc(xUwx%8`N8C9go&WyD zY+cLlVXmC%tNujh<*nU_$`xTGPT}CDmc#o`@d-+k2Ls~`|B0oBmU*82(|C+up-h^+ z6u6kTGllMKTjXFxQYUK2V{IUlqFRm7zm5HQlF%kUBG)Z)Du49A6L@CmtQ52n#{cuz(Zt?Fa~N&xriz^wHBWeo z2Pp2dpxq(N^2Z1U0zqw26)u$a?kugdVtrN$4@p}e3w>7TrioCvizH5K1!XbbZJ(PP z{THmyr5?@pvDDK4Sd~{io z^Y>pBC$!D392uBxAR3wfS5SJ@v}Q~mFRa}c4$Y{#myRyA!V7kmy|@^}%K=qH{zA|S zK(tJ&$u&D>i_&RWy8Bk6G#q)=0i@~+KB81Zg`Cw-m`;!RNeeGu+v@zH^mswCgLt!F zh;@B?yJiUt*LTL~Pqs5t7DwDWFN5yN#1p0F?d2UnC_!&c=N%y@O5H3|eBhkDszF*9*xsiJob-os#PR zhD+C^6~|jrJ|ZA)f@onPNAMw^*4KnmJ9{RLTWI<`M9e4BNH1p;QyL>+eNN1|=mr~x zKM^+7e7eS&c)r2ML3TJ*aq8Q*$5-jDn}{*t?%&jb!H5ilq`zy2leIHJ{-S3(bj0+!Ui=5SQkaezS>O0800a+>&!$!rPe#y^H#Hy z`5{k2UVgN4(&xGnmF{dJR&miLW8wYIKD&D&GhOWe-5wu#`8M!04_D-n)U!x@jlzjx z`}W333{?F^7aFYwb)O*w7K)*>TdMyB3IXpL7N;!6 zvZhAvQ`uI0&D68-%2^Pv?kdGOQeetp?X{Ou6@Q1UEKrF!WK~;<3rsivc5`m!q6?kP z2%F-pz8kf)!lT*1LBpDj#{Vs&;3LmlxS{fspUk(Squ;C82`fsdXasm5Q;dJh4Mxa~6bQPz;z zll+x9YgEXf*!ahHQgyBA$@u@Fa5sMkQ}Xcm1LNX zBN>AN{r)v6l69SBcGgVCUjvN^(lv4aB`k_^9&y)znqU|5MklgJ;O&c5wFlcJg)J_L zpEd4C>Ps3Z*5;|TAx5hapqGcEX5Qn~h@>QQBhI}Q7qS!;Y75fD5k*aX4OFn{{}C{( znX2})Q#yl=UjO*m7_3z5E{wMmofR)OL(h+ks-FL<$+s2XioQ7g(%E8DSQiEpVZ$+N z@1no=DKqmM;L}l()k%KrMxTsYjXQ5E&5sV05gbXElsb8H4zpT$#Jq0J{6kc|K%jUN z{|z>h)Sp%&c>7avze4C1dl)1&jy%8FFv*rk*ka3P+#N(_~w`3z``kgD{xS`=gJu^3~>*K1VK2Pr07`=yFIO) zzf>Zv>b_B{x)2bUnF|LZL0eK0KNq!R&|Z&_7~nx-{Uo90um?Z{w!xSPoo8aFGh(tH z?;s8yjN^r=ZmW!Z9YCvMhuGuA1Y|fKikM( zG&UbUG~8B~-#euJY5yr3EDtgn#FXD@QvLRa4m8dFKDhU6`u0z&Kg&zo|^Pz*p~SQ#-w&tOz1JlV#yO|V5TIE^T!!*TFD9;+6nBRUa za_PsDo(>qiiXnce=5uZgh-snMD|cXa^_ZVwqB?l>F241Dx5T}^)P5BZ81wbN^YK+5 zASA|^Es9VQ^91BS!{c?pGQE}k-wH@e=hiZ0+ zuk3?6S~ttIuNv(C7!3LQf(~T{EfFmpPMrv2&aJUGa4gnCBfzN)*AlPt`duPB3c>{j zt(Y|3yjdiJ*^m#Ll6?(OQu>mvJ9#I4O!F76d|gbEso5HlaJs)T>Fxv{@)%5MsT~Hs zuE#Vq4?4#JkG>82t}}p5f;krx08eR5^;j>?uH@_AwR7%%t=zH`x~*>B*^S|5{$3A9 z0VPt4AVI7`Tg>><(+B*7zK7+D;x98Jg~n&9B9cxa+3--xZbPmqd~ z$VMt?rq&Cv$06tvyZ8SYb^vK9u62C!^lvNV#-|}oSi=If$DDpwVfRkVqhWc|j+2Hf zN-eoZpf2~_ZD*{_Io71@`bJlsbJ&+XoWABeuPc9Lwj(h_J-&@a1Rd)1`@+9zM#qkH zJh~Ygs0-3~Cvb6wMHOk6k5JqIv7)bhY%BDNjA~A8?u+WHJvnNNRQWN((*z%Z>7|?~_p{~PIorS2>v#R3{cvW;&2!3^@h@^F$3m_YdQ7T;dHx?wf-lJTc6g&brMP>sjZ3!u`Dhu87<9w3o+ zPN%Re>9n4@&a3SpC&WTT9ewEHwICR$(N30^Ju!u|jI@?Jb%Z8}|DfMte&kt8iA zJ|?Zid!drdTi1Li)Uy>Uh=_Ouw#X<|(jUU6q{h&l{TZ2N@vz^-W)Rx@)9|14Y8 zZZN$J@HhFt!_Ha5Z>l4Z;S)lu_hMM%&D@6VlU3 zN%e)lYY8AN#rVy)slQSWvijoI-(}L)i%~gSlORxpGyd>IN zHOK+Egeg>`#K3?4G`d~W=ny#$xRWE)_&q*m{CWsY`qw@@JmffwU_2YT^JGL;?J8c{ zx8vmt@w&jNS@>}&#}FGmi`LlXpo%S**JP#an~YtlI{qR;E5dJZ{=-%wxh$z~bD53% zjuCt~{`t%10nIbMTzXL{&h4IA^eqLXP1!~z0dQMWxJgSzw#t-{%j8v%=oX2Ibd&O- zk0DuDg{DlePgW*DI%OqwiO9VNE1%tFz8)C<;TL;zK@fxVuA;aTHZRaAUU{vDT&&3Z zlf)(>4+a#=<)UE#jco zK=>n7PhySTl-Tm7MI-fYvDpQ&HJOiSk5rUYb34yNwCBZlkRpX8IZWc1&l6`wd)7WsCMg8I>WG@nN7tY){zlEyy0L04KyrWL@bT8;dXC7J)whY@9r%p}s-+@>Oi<{G?2k zJzbpt*mc!p;^5_D!i$iS8s=22K@mrsYj5yW67KfMS&*!9t`%40vCX1do-`9^t3$5w zv86#pX6pAaNa(~{83jZhB9~IzW7x75e7?`lUh@v}by`7)Q*3J3NZWF4GAwT=PsMz1 zR6RcSMLECb?W(mOW(Q^>4np5y%4#=4c+It_&h>HJ-+D?6rUMR!yzyG!+}Tup?w2%f zhet|BC{W8#kJqK1RC!}w4W;uo*_KeghrU$nQxVd=(nG{HtScs7FKn#u^5JEEztr)i zt44wSpM(4lyM^L9$>L^A%U5`Fif)&zMIKg7JS>>Z9==2RM#d=H()G6TpKc&&Ft7(7 zN53I%F}}`G-@%}JHPca{ggXj%G+p0I_r?1Uhu@=xjKEf%S&Y-R$Pec9q&}x9dDa`< z4IlnC68S*W=G@39q@z~y*b17Y44`x-)fGF(4&(#QE`m14SC2f8YGzl1dvb5PQ!x$V z-Y#5lqJGZP;QM9O+MJZh(jxl^!e^XXP8{36+Gs3lV3+=*od}m`$)fa)@R3}s%jIOO zah28VO@pTo$|sXuf5(iichemNfKmdZ_!|AbxAOVSfZ#h#lP7;_fBZ3P374AAV7xBA z0F?6!qWUo7I1nUvMT_r&o(f zaIA|m`Q=ZDLo5r1$fECgTbN1rg1TkYGneVeZ~fH=Ie;N#zY6*)WHH`gHCZ_nDQgK2)Z{nFhz$mZb4bKli8b^y6+H0Q!v`k7Ll-hq|cUjoxSqfqD zGLLAhQuRnZ_SZoAX=Zuw_%n^@G(o3RD(`u{@{nR|^K04rRx4ndV%WPUnVAP)&m_Q( zCx_pa8x4CUY8LKO#V@FzNmOq6*b#lpp6@j*s&M~8uvkn#b73?7lz$s%e>`$U4E+}D zg{uY|za$l>{mf^5r=O8-V#0}wxx6jJmsA`whS3W-8GRHb98$YfcgXPPUvuzkLM&_c zPNA^dfD&XVY(csGH{VcLx^(F1YqvL1#^^%!S&hF$hN~aE3~wf)4H`q>jQxan<~nK} z!w1a%I89UT?jO(n(yqe6ExjoboGYg3K@M&g1(zs7Z397XdS9%pb4%JPo-yM=$&HNz zzK-?2A;Bs`nSh>y;AN<4!QWXvc$ihzGGJ<#^N!|R8XdwlbY;TbKbbLzc(Isy?&zjk zjD{96>PE49?w>M-iNrWx()G4O*4<$a=()!acvbYHK5T`QM^#yObA7%bEIhJ@`2*nH z-A@^XFBznF3u*n9IF~b(-j-RuWuW2oTyNkOd>)z&leO)F#rr(m^6yG<=2?5U&)ZXP z4+~%0ab3=|_xbmF|PaUkY>Y?%mEgJ4Qk=4UJD%EhhsU9su^* zd!gd>sde)dp~9C&iRcmf&(=jc81v<{i#<2WRWVGvNc-A+kW8p8Z#1hNDEF8lM&&u3 zII;ZUx$o7g;?yx;Q`(|4E>y4Q4E#!otr~C4s#*vBoW?D)W4_OF`g!ZB7;mr@!krS?s4qwDkH4Nxb;CyW)5=}g zv6;@KNGR^crv2c>3e)%Ybj4RytA}Rp^2^x%)7D%hse`vnM+rKi?kpM>km)>^3usi8 zG-1i{N{g{-e?D*AfL&oxY6CVB`x+=t(s(K5vC3=4t8H77`VdAp(iM_NG|~hoAN+=m zxqPwqebM6qkQ;KP!!F98a{T-axlxsQwWsss86E!py1%~M0O8o#;9+D zX+nROy@cAtBKH;kWttix>brfShYro2$V=P>Jmv@Jt9ua3r#CrHQH=x|@n+90l3!U^ z6Sq|Mny=0-8KWW>G9vns*C^A6f)l33EB|>MH*RJ;9*Ibb*x4{<^&_5lWeK#iBkLI^ za;?-o&$ll>x;5NW-oWAa0qMK_DP8J2(n2Wt3hA`?h|Vf&K2z6)s{qe;|p! z5>vQmi^lI9Xc&Gw=Eu`Cx8utX1ZzS$g*#ev4 z|LZAKw7gto43=lC$PG^vheW~d<;$qU(4-6DZ-Ok}GGBxg3xM!?UMEB@*QV|y8dgO{ z7P~g(17}HZG+Y3a`#SD|{Yt$=!1IysplzTk*j&*4<`mJLDt1B`0n}P2M^=k!q_+%^ z_|jkw*F^?=+~$5fxs)de6M@R>9g&|&+egPZ&Y4m%2 zt#Eh2iVC)6ajrV;dS0XK=H2>OocvajLE`YEhH|S$jbia1R{z^gToVTazI>+-bJXST z-Fgi9ormQKN5lLh4PuErMPK~WJ%{G>&6~oUCV2(vK9$Vk%1!H^LPv3$B z-44~nlf0&&%|?IK230?L0JAQKf-wIZ-=X*rUwR&^F(QHmdCe*C4>abO7o4JqqjPZq zuCFOJe4Fd=tt{+K36ROt8sU|K0@&d>OcEf^tgYIt`e)1^S}F)NS~eXooiqrK*ux8y zzd+6hHrH60j#?SK4jTKsQj(=Rcumg%{)M1h<}~4U;xZ_Y^}AB=Ce}-0T5h1D(t0>J zJt`70qCIk(>Kl81e(k+4XI}}Fvq`??V;Y^SZrWcOS07j%%EK{pX;B=^soxc8bV~v@ z_VQpzH{eCX$)~{z6owTBuUmh$GTw>WE0$!D7?0! zc4prg7jzLP!zTH^fyQ?GAUlV|}cP3i7077t01G;ma6Nfte$4R2zylt~sg6Z?AL;DVu3 zgd`!M{BMuc`{20qkFg=)i6uE5dFvzk_aS`20hN@#OuewL96ZH+%zaR%2J7)ja|rMj zUw^vs6!l@7|0GxwJM+T~)O~gjs}gp)*2ppY4?B{qTw(?KKFlC8Z2y23aRQ6^W4S>> zLzu?WM8EyHwyFw32%Cmb=mZ2S8PG} zgTl;9;5St;N<8RaZIR*cKC<;_!xQy1yTD4%?tI2~XgRaj)%0IA`VoI8NBVh9%r6?l z%ER?w-d(O7<=Fwfms6B$MwZQbUn0w}Scv!`yJ~vm5g?a6yK~k^IBWg8xAPQcSpHXF zMGYij=v^ILMne(rXSBA!v;4+G#9-$(Cs#%n7UcTdE^s5t}GjHYfw1 ziLq~|lecHP^%M&<5?>Wd4?bPu<~5w( z<`0#NA4ac%Y_$Wu9<@9WcuX&!bn&>T0$^0Z|8ExS(fqFQvo1=3-gFtR?xe4~o`=Ao)m`|3Jb?5mbg{Dc z4cD0`mtHWFgvzR7ci<0rwwMIfy|T_-h|4X$on&r}L-^h&7VxQc7yvmX6$T5Dzmkvn z)5LK6nD#%>+x(4Z)4Z=gZk;eLA9&!44rY}k&Q257ZZY=Zyxhx)S&TTpuR%pCohgWA zX-f#AiOexa1)1;6**dPwB>Kq=y-^wSEAct5wAmtbWFhoso4MWOLG3j`yT~QS*sF_o zn*MKo);j&qKzOy;GdnmHF_a_4%Zpm2Ql#jt zH|;>O+-!i;!_BvLEsGf+iNp4gYz#-6-0y@9>cLnJSbi3KIcO6Of8XjW!ZiHhnNaQ$ zS9~AG5{&CG;kjY;dCc5)Gk3KN`;FatbGDf7Bw0}IqRZnog@pz6sp+(96JL7PpN9UY z^kGxvWw069tkemiXI#vaVpn9=5y#p^G+-@I_w28TN#1?iL3vnYpz@J~9{J-s*hUQr z&%(>K5blJe99}kh+Of2!9PSjovUHVO+LZeJ2iu}@o%$sa$8QdHtZPr=5p{B{e zkyzH*ka-PY9+NODPd=DCVygBH*?*^?f+Jspb9zNd~rJ(pGs!Q84Zdw6c2ukt2HeYRj+?T|ZMeo;SYE=R^`mk$|d3uE0*a%9H(CyuUyC{;Gr6MV9e)j%I=|Y<49XTs5 zSPWiGQ&pUbA(#-HeYSLxVw3B+Kd`5^^>hwn4K6%?nVZ8{!g@re5{S$?4>Ym5?H&#P z$V?UUjPN;78S3Hb={*PHb5SrDXG?9)ovb8iVwmD?iQbD_*Y>u=K$G!hRD&`$fA-4W z7iMv}&lAbtlh<~cl>+}KAB$n2;ji+3$f5o=H+2$f+zJkzEVWMK&-$?Qj+7=G`D>Cr zH5$uy9}C;=EK88%ZK)n+t3dPX-a~w1%sFq(xRNVDZn4M|iZtX9N|g(DIkZ-J9I9hy!Yx==cYP6m|J$Y# zU*wsKUM$1B&Mc4l%F*Q>o7nB;^24S=kPaK~wz*C^&{aQOy3iRzGMEE^P z2*MvHa@Z5ZG_PkahtvtN&_6&3tIJfH@f?uK$G?x_E@G%q z7^oi>1QtK$&pLBaQXH*YOrH`+cfAj$DY<(6{Yv)Acx@(kIl0yu*P> z;3YF^or$coPp7+8Pxnt!md{c_f?P($DgIP~I4xj$Xq>fz+In5va6h92Hl$oLQ_D0( zXqM0JZ-{vc1>U4;No=q7MeGo)PSI7wA2U+wg^$hn_@%Q+mZ>KLI;jg_t>ccX z3bQ4){~aIolGc{Xay3dL>+Q9C9feRtsJd>ZCcYo~31+xrJl* z!b$=34!YKB4P0=j@yV>H?}A&|q`WKzFlW2ix}Ck(5EGkL+dTTSJurXAP^Ocy58pSA zK(`tt?mR>gZ`U|axp>N)6ZrV^4e9y<+LfxT#sq1os zOEYh$(>$qZFlUm=aIPG-Fq6FD)iOg2^xI>Dl}wqjYhF?9&AqH<{B{DSzY51T2O( zHIC!$%3L3f40rr|pEea=BM!EI@D^z|GrQtdWz)22<5pCC3r)5;+x)0ZXCE~ap$ZIr zHvzu!;=R66w&T6$1>aNCp`)7b`900*Y&=@10&4+?YK`ANXeYN{WJtN?uLo)d=jN?{ zJ517d#kG^1t|t9rjWu;>zTBfc zy|^THP0CggvrvEe3nt|PE8gxW$J34=6wVY3M-O)%cqofA_KUQ{(Zuk_m`gujkeIm4 zD9^M+WKF=|u;txcDPmsIuRDcr!Qw#<6TR-kSKPlnu9^hg;4!LEqzzbzZo&1ikiucC z2$uZ5v1farHMK_s=miLu=5jd0=LCo4dp;DiJJ(f2RF zf7$*#dImt|zx>OM8)xsuez=_~UY&)Ae6w4l8qD2FYj`QE$YV6lC3(?rPRV1pTC7}N zEqdva|M0Tm*FL@F%$LagB4#UG_{41s^Y>yIu9ja`RtluePcVUv3^ZNXGEZLVXr4Fa zXV7;$DJk1f4Gzw27YCVp7A7&?Q(&*1;N_x}N>fkAFa-fG0!>SgP&Z5A`P7~G`vR0ZMEq|+3xVz9=g{g?tGLNe`|iYdx|7^icYOdmItd2Qmq z6^XyN=MD%3jDAI4EQDR$Ri4@?tGhbHgkWgN2NKFa5NQ`~P`L5u5(12e5W(T$r)>k{ z!$a|R`i1fP^zuLo4HrQhG?UII0Aa{A$wUc4=o_CS_-sNvN&nQ!X_q7Zs@{_a7eXDs zV8-}$H=lyCxfRdAb^xhPWwE-Vx1jMz(8_!C_R-ht?*c3-`xlQ9HW>AH2!4Tw^RjU; z#TZQ@$Rl{L`YVoyaGa=B_z?6}Q_pK{r4<_VHB^#sX#}2T1j#IQhY!a&YnMf#m6&O@O8ZNYZ%IG5(A9~#UOYpF|Bvu%pQgQjvb#W(`lwa zTnZxA&~wcAKDaXc0l>dw@xbg?L-y9SEEJA}56$ZtKyx@o29)t^3DS=eX9Y%qhsZ~pHm`n-_t zT9eEwDSWN`FIZgiu35zeGL;964<=Nlu2g2RVGFf29g|J^WH26Q#bhHikfq<;oWWR$m-F7%z&-*&bxy$ZbC?OOaVu( zfq_;a@_XUDaBJWiANbM%QFMx+_V7s`@LU;a6f)iv3_nV;f6q;$2yn=Sgg2V|g zju#Xr4mjyQQrUqRAIn%ic>{?DI#3aT#rmg=Ajzz?hNbNH~O?D!S&PIOWMLAHH1qOoz#WuR4TYh@xoV}q5(!?NG+;T^M%A?|mOcEn-Qh39 zP-aoM*(oe@R7=kl4lm1iDzxaTBtniZwISXxS7k~Vt4ydNg>3W|0ANAy$N^wt1r`|p zU}pH$K-@*(KzX6&;n?!_ovdQmOC|`*7?w@K4Z1-b2TnXQC9{zMubwev=%k;U@NL+~ zEnUa*Gf1<~t9wks;B_C{uu28=J4g~qa|fU6Y*Xv82$pnsF1p6E1NlXZqSVY(oH7pj ztMV`!&alXT{ifcA7aVfAzo#@U+LM!>BZ+u`VwkH=(9`fJ+7*rQx#2wExB%iixeqCd znQQHO`u+h5Oly&P32eMm0LaepQf_~9oBjgughc_328<4d=MET>CJL~`=tFI>vrORj z9e+^5G4HQM)co6vc-Z+!U2o8%n$^ z2@7HLCPt)ejEtJweqk6+gQBW}*IeZUB7Bg_l9nL&25Jt5?!>9a4FrJVq~n?kDkwxo zyG>8EJJ8_iE--H}x)lN~VleHIt4GEI)46Y>hw zD?<-AzJK~=T*J}zEZ0cs-^Iuz@Q(l?3-$>8koDTX18Vm+q75J_UjyqpD+9g4yEleX z(f^vBvV^2>ua{@}fuNpEUl8L7^91nm)B#Bj1{4PK5Dn;ngR~V0iUGA9FoynCkh(nd z$Da`re@YM?A~Pa&Rj}T{pil`wJYZv|9H|#;54ewCO8(kJ*`vVN;#s~s#Ejtsh6H1^Wj!N` z+5-mhh4;J5*Rm|Dar^`w)i@$O<=Nz)q5~0%3b2vBf{2LR?`)4Ey6|0Ixez_CU5NE* zTKhBXy%q106-k(p$5n47fkcJF-Z^kKk&)}@A7wU+Mr$8)mC(E|9gbyhejLBR zj3@T8_`y&L`cl>loQz));;B~;mzHXcE|IhpXVpdjz0!Of|EbF&+<*|Ok5XLrkb@@GL1Occ*-O@Vxk2qruVjW8{5-fB2_qAdRymrTuP z>VmKgWyc5+kwPyC8uQR-SV*Yenw(A%vk!pS7WBOSnWwyu$v^nM(fIuE6+Hg9FX32( zNRJ=Rs98DW{WRw?HaVYS8-jBGx0&#f|API#gTQ$puw7pkTho{u1@EA!ue91?1?GWW z1>qKf7*?8C6CiNmKHuJ_PB;8Uq>i#ZSpyFe(as4+MiR-dCLQ=#Tx;i1{RO{XgM`Qz z`=NfHw)9-gd841n4m$IIbSV+8>rGvQ5v|8i>Ms~yL686|2YO=)n)k=Xe?FN;vfJcb zhtlnAChp$w?072puc(EGGIt>aj8muyMc1D~hkf$Axck!$a)^cYqN-N&P@qxBBD{Z- z5*0v6VZ@A#JHTHH#E9It0%jgcq}Sh~1FUH5HUdvn1y z@3tdu{r%kblJ24M?7e4uK4LAzo+GUc+0kk`0e&W{pv`t}3@E-5$4lrOQ7mpMSffbC z_NA2iM;`OR_#;y>gY!HzPA=t~cv6oGil;;nlCHZ`b_8QA}xxvLq?305;B29 zbF(?_7$dDvF1~1=i+NM*lQ2~B;?{t>HxxF84Fw5!wkjJmGxsO#_&kK1Qoyuq@KCpj z5!{%zbQ4BECm`ole96PfNM>l_KwRX(^^taAwhzd)J^-Wy{A>Vy`eFuZ6YQ1l^~)sf zGzN==Oq%R4Jo7$o@VyhT?ACZp4Fg5ifKv*_rO)k_Zi2qbmL{v7U3XS0E)}F^(?$)8 z_Ikxr^WndKWFtg$O@cQM6yK!#6hwnTR9?qYShmJ=hVPu^{-*`(O92t~ly4GwUI*KB zj+NQ%bY6?C6BGYjH^Cx#zaphyl)Ax$!bL&2x1)3zCna#_wVZDPH!@UHd|bXMz$6bo zKgnGXl4*kF=oQ5D@tAwh%}QX9@7}B`;7vRK9zDEtSNh$hsFrFp zAhDTK&V5JgyLL{e{xbHJ&uvL?TEll~CU%n6=y9fm;N0p%>AAD$BB;K>sHs-^ZWLU79_TIFZtIC z9iSKfJ}A*7^O1z$l@*rv388<1z~6o2;gyeY)~&l(q+_VY9yXylGYPQ<0vT!RX{q13 z2ho1|*T8@cp&A2uuRFL5rRdNM;JH0W9mn_~b>K@4lrv0ICjf=aZa(G$ zcWNZ8`-WS)EdMsf+%BP8W9p}H5+IV#EN$=7Z%zAZ4QLG1HMw-hN|U{)Vc)%JtG7{E zR_#b>Q%q9FbQwL6GSohR_hXnUm4 zoQ4)0tUezS8hK=Iaos_bS`;b%(K=X19OV@DDFmWBC`v)9*aDHyZ?+F@v zN|)Rt>C1ynjb~2;K`oA{KqlJ8Pa=oqvQ98f$MzA@ZI(*t$qfkYw(Fm02g_WT7gh8h zvN$A-_%hsv;??uI#L(_SQvkSo#Kx*$cq4T&r0}5PQHhynWdJp^m|rZBc@4s7GEQk; zv^n_n&lEH8pV*sz{*7I@tZ+f#ChDm=YG}oM-Uzz1j$%0u52-xOS9fd#r4zv@ukMQ} z55;yb9t%8%+MWXiP}Q40Z6BG;G;>Q#<3O%az5s?X6<&h{=|2Xu11-cXkvPW4n(I-L zvf0beYut+p1Sm?~UDp)(V`<#OkqtE}{q%&M@b{tIogmHha{2z`{4E?ejuq)bVlvy1 za3<(XNmh5^g)HVSM@(8tIV{#oF4R-${{j_mqq5u2$F+6Re8I>8XjLV~|AhA~+SjIQ zU-@LIhMtF8oYcQG3*f@gI2`}6!S2)N`y41K(njAcR9U?{NHP11fFMF##L_>7Hyxor zbxZ5Df4<^9*~1z}x`vgsSd-t)9t=!{OQZd5jjZ$iML9O~J42X}@>n z_uo<$WXAwy>nseL{l1kEHgvDTFe<$_GYQ-Zi(61pO+6m^a@JE~)YIOrpkQmuCqolbVo?tJdol5lasLT{8?~!w_XhN{hOa23ljGWrX1+LH+S4 z9F1a9hRDl+r|ji4CJA3zF~}!O;)Tx#l3hAD%3SiDV0 z2o~RS;s2tSalmpx+g;+kY=1$8vTc(Z|6f_>yiJLSj)9+8WZ}-`H~qF^VvA*y-SJ*iW7{)<4K3?_fOZe)*ZcC> zY^RSsEPhFom9G7GR0z94%f_3YhPsFUKyOWEEB+=H->QY(69Pu(uQPDy1? z%E!a``c#+RTWhZNFjGt$Mf=TAEiw>|BjyLQSzQRUXZH_dMwoX zF9;_%e$dx$VlzXV-aT!W!L7TsYRv*euNC5i@Dl%!r*aa>G_U`I2L2nyotH z-9%2;R#x!m%Th2(?(h5mcsdtHroaD>Z!?$4eTB$fBa+*Y`~5zbBFg>FWKk};n@dsd z&1G}HUlQtLq1-8jxoxCKRPK`dWsCgQ=hOH1ADq2+&g;A`&+~k|5;{%%v)$vZYQR15 zd7@r#;5Y7BnzIdPa^v`&rOD?;^88TueZVf~XWCbCi=0n7~E4!EkfOnwx0M_BXy{zd}AMd*UE zYIVH47E)`ugfky71-sKA`qOsU-B&;|Lu`e z|8tS7>V4X@GVg2Az5-><{zhi%Q@SyNcRr_LUUj=SEKRE6l)n2A?xo}}FL9+WIQQzV z;cR#F1Ld|D0N*MTG@K+&&U6zwvo<}#P`o6nr)E{v#M5!`rGcQfqu$~gxPC1^&{8r8RvwQx5=1fHg0;^CJP>wQNFsbXO}j|IrZieN^&D17?> zwMh0+Zrm=x<$KO8;cpN6Eu5z5w5=^(zap6%4%H=&P7L4`MngsU^8&M%NbTongjSL8 zpHv5AV|nAiyNyiz1MT;vy55>A?+q4cR{$9ihud4D8S{&Ld&k%bVjf>7c=aVOTSljUF9n?jJ*Rb~9^vcKfDe^$Qi9_DGqyB8MG!KUM zYX8S2FVWo2NTkS;qL`*O!9g}%*=9JieRX|s-2cb0{PR2*!o_+T%-kg(OAM9NY%Dvt zJ*ps2-#AYj`EkUw8;jihR4}UYzb{Sg$Frik=UvhL$AXq^tWiVdSLbqZ(!;@Le^WG+ zTlr&(-_1tI{uInm&LqRNm-IUGCQ}B17d~Pm_axmP+@tlSjE5{?DQjk1KIi;A^RB7% z_u)yAci&#_e0z`EKsh&F(^O8N_LR&_6y41>lM)%0?}4Q#J44FwJGYTl#WJKBW(aeI3E0X ztoD^6eQ&qkL5ujZ8wAavt8r3`P+ADksM7ZdCO?+YiwIO~d?sf_=c&TvPME7i<)@$dN znea5Ql}3+W=~zw}NSNHg5iOV*ALR>;)z{*9Z%u~++PPE{CLCZfM};5OmB%v3!UE1; zl?3Wl{Qj$#uf70)^r+S1de8~Wdoa}+IMqWTtZKE%7uHd#3aqd_e0walekN@F*VWkf zK?mkCIJ+}45X*bV=326)<^^7=?(MH`6mGnx+=9iQrC|-Ltt3VEjG-x!A7|2bpeEl{ zdTtfiCH=xD+C(1nJf|A_s&a`}hBe=YZn1qPi0n_U4z1wM0pEe+Ufp~)Z4^|WY~qQB zZcS8o;^Q?UU4$V@NIsX9}@w^A8 zla+hX?!J6cn>058X%L=7U`qElJ+!PlkJ0$TdOnZw;=XDkN@7>L`8`r z__3V-xKwpZ(I#Pvn_e(ASRzKUeQpp8Q#RZcS#TH?9k}JB8rZS?0Om6{qg=1-l?&r-!UVc0jJA`?>sYD{1EFZxt}6m^T`zp^o&ZZcBgC{ zEwJLuKaMn($V;ER=4j}a)uze@YzgggiAg=Fq-&=srKj#AOoC`+Xn*UAVwZ6TxBxJ% zZqCY`@TT#P!!nn31ipwQ zCjKEKs67Ld`TNeA5O|YXir)eKlaRZY>pb5 z2zl-wwwGuXRjQ8Cuc%}zFb~c7vROL};CG=3^0|ytBm0TCsnwEjI$ z(e^>u1d4uLRr5^76ASs3jMA{I20xgYU9!q_aC#2K_h-5CbY9?wcV~@cmt#lYojJ}w zf5T0Pgk?EaV(eqd%>js%6!1CQR%b8E<&u3`E{Es$lkGpdwT=8c$kQAN@-)34^JkW) z8;!}ejbf~Tl$UYrCGZ2lOv-BV#&S3A6;)L(xKNqAF-ZgTf;Ru8aU1GN_A~3de=rHP z+`9l|s%HrhcM}z?H=0R9d`FB%4i@+tgbL{O%KGKU(Xs64-WJL)j3yZqjBQZ*Q};dRfYVeR#BvpL zd6>W1v&>TdI(#dSA&?dj`T1ScXHK!JtK+DgTBSrxNIT{ezn>sZ)084|Q~;&t&XT++^=EYsb<4A3x(?o6>5#xY5txjBZ+f z@EE$yTx)B_gKc8%tZMi(!i4pNv_)Ze-wowONK`Ng3%MeB^O2QE9>BJ3+)xr&q`V4B z>Gq(_j^6z`=0|lcBH*-Kyb$ZB0cm!j6XpCb{e^iFUtNdx6Ji0qQPakYAnrq`PZlI& z2jc;&G)|)UyHd6LpHdJRfbJVntJ}IGQ)tt!L4%0B;Kmdc)cNv9>E%2YDYK^ReNp&7VUpLCEe(db-JLUD|~uBEBN|R19?(YRF6`pz^8jP%v#P zJQeK+O6r_6{XX8%i4@@m6o!pfAM#@?AIX-_5!5?zkPESor}> zm%ZG0^n1TNsvsdEx%0TRUooM8L*V?e3MbIjsVhD2C1DY=ERb_k_!u z`d-F$Ex)4a3AnS_xr#s$LD^0#8c5`zlA#qZQfQ5j=h`cIi z`ODBtvzxWbSQ(6e90N+n?>X~R6-diD0T~a|JirDm_u#;gpG1eTb?2iiQZ6P<+Yum3 zPki;sj{ZjImC;-Q8b`jYT|Y_?`VK`4hW1cxJBTal8d8(^S}7g1ssZ4xBV-Z@ni>Em zWSCp8({#J@?rrIk_mKm5h}xbze??2p*E5mKY!2I8U$QpsW`H=2EiJf5XGN5U$$tCJ zB<%%?SEtilvEhHc7V7F{zLry&N6l`E&*{dZ;!IbVI)exqR>T`&z3wg$pLwBC(L5QN z`g(}Ur&79@N$~|_uH982ME*VIiU7cRG%5@@>c<6rxl^xr`JqeaTk6c2o#)IZJ-Gv9 zRChMNWv>7G&XBZoBDvrUBA37wsNB+YV$Lll{@(xP&qHtqA-?t&Sgj#cLjDqIeDd>T zF8tc3X?btFUT}U)`@>ToUbFx!SY`3>{G%fpf8*Rao$53Vm996D%7pxuKX%)H;tC7& z3)O<>PJCw6)dyw-f7kgF^D~ysJ*N78TW_&GjH-g;X^-w?i;v#m+o%syc5&B&7IO+Y zcP-xV&yy<>gAG@6L~)P3fuf6sZrIBfx}P+oNh%<=up(MZH$jx_{U1Js>%h>XpafYt z=l*J1k)nX&TO4fMw(i9TYyr>aGnLhQMCRTvKyAm5M=89eeR`7S1xDW(9qzV zt$x|M2A#_)_9|1~5RXs4GxCk9_WBdZU3=}n?Bt->Am%#f%XlZi#K)*^ox3zx&G_z% z8N^Bj2$Ct=*2XFB$Nf0_JdIrp*kqb*UqsqUbXPAN$|Lw_Eh5LqviXJ#l@tC`EY!ti z#Ijlvm~?W2roQM!B!}S_C(*&l#}3REF%*)fL4-`_(uX7Cb>BOnjKS9yrpEK%+wf3X zL5R##$wo@$rF?_SF?lN4vfc#5G_BJR*TaJ^D+=j8MaT8b!4sRe^beQ#HLqqMb-z{p zjfE^w!76Q~44f1lTiIhe8LRGu^Lp`KXy|p>7<3R#L;dtnslqV5Cny)Dm-pL8H=2e+ zmj0$BT8)5=3(TrAf9=~8VzS<%;jnM4P^kwscrv9|Es1Xs;bwCXvW|3?5y_2H6HR$ey z>YrwSOz-OqIqf0p=(Gb4#V8-iE(3-JmH;f;TBYC8!Y*wbE3s6ds;g{JKIcys_8POe zHWOGk>R)HYBHPK_$tr#NHd21=-A}?>F6Z{BN2XULrV}+~<$vR{km!CtXT=B}xY^iaVD=;n4_3m4hv4qHs%ubh7r40F-gPq5 z)xolw$?*G-R)$-0yp_F%a4igyd-qAs`Mj;ywqjo%#Z)P>YXvFzJJyj-5dOeNiG*A8 zUp377z6o{lsn{-J<%%w0I%vhWj1;pU1q}C6oRs3j@2?uPNVE>ARTg@Qo@Z{@Zr?e&ig~+v z#39`>mh@Adl`_tvHW3)LUq>CLlTum!t3CK&?fdoqv(6__In2yvg5uenqWiD2^$O9# zB=FPxXAqSgIUwR*iHKV-_uGZR^@$oa)T(Jg+vP#mo53{vWTYr1bBa;^Wf8Xm6h@C! z{O9H;?q~yV!8;?50~P7a-RL(`Zco#7zR&!)9q?VC_-1KD=J2tCKluxxW!o>B1~P?i zi$u}Gt*mN_l&uVytU={e!>99kx;E;8tZc^yEf4Ao&xgf2dj-siZ@WIj+})uXFBK+c zm-K-RGf}oY*o>)pZcAGlWUpC>FR$w$6|7f(FzusnqM9^dM~3#Jz4P?yf0W_TS{+!g zC0bF;qrF^BQD;U2$>wY>+(!}ADjIB}Sv*ttDf zl|BKDdD7b9g5wDfcA$}ix8Dxga-auH`)Zs<+6mm`NekMIM*1u(SoVZ`S^W*XhTivY z8;j*&{y2-XM|ZCD+zWWtH6{aFqIu5Sr=dPjam~glIdS_Z0TKAD$j3a3Yx|57qaY|7 zj^Rw*8T2pBJ58#TWlRBo>1{YrSPUp`qh-=uXPZ8w^|}GTCIx&LLgYLi+04B4y+s3*vm@tSO-B?i7pOWT1FjL1 z{2MYpZXLbTjLv6>D^e-m!iB~cpx?4tS*?6okX+U%g&h&?g(_&05L}oXMjY}d^ zg}1*}N3T^M^eDS1en9d<3e*C>wQR31h&dUX!sj5h5hxS?ai6!jMK&@$zMzwd3u7Xh z7>^}dxwVD$8ov@D$AaH7o^q~Zn2>M2&~G09%S(78)8@3;FT^8Dd_YJ>GQ_PQVXlPZ zYVhZ}c*u2IGdreuAqRJ1+rwZk|bMs?&L5p~3%l%rvm$&<#;t>-xL$en?fA;{ARF%}3$GeEf1hCt?7Y zoP75i5!B+gF`8g2D`@nK;Q}ZnRHO^yWc0npi6@at17^Aj!WA{WwYt^*^%M3kRe^Ha z%JRwVe<4IMv~*;?QoG`}Sm@4mM@V?La98;}o$YiaZ;P%9xT{&l0$Od}$sucSO{^!q zR;FUldeEkuz>cqE9`6K3jyL( zWS{Jyrk*yAawlkwqQ0;kCm}E3#P|-LaNV3N#`|nv)?chI*;sbBK~lE)nSice_&fot zG@pNi-W1^Z^1U+WDJUk$O|;+Vz_gIwsdjqCCA#8;4EPtYf(D{*+{xuh?S+`Nm@i7B zKgT(`TMbX`48ygEO?wvrtWp#daOeU}*_1=zu<>H*e_87t#1XETj5Dht3Nmq5$*la8 zw`UUXH|CWcH*1}vyH$vI0FMP2y&Ciyv37o@nZmZUVo%^_o&d4KhwA({_AdxO>}xGk zTvw&r*s_AV3knL)#w=aXk9o(Gw$6KqzKRlwb+kQgJLxap6ris0A z#Y_<;TCbJA1JpTY7et^lsu9y>c_UzsL)>CfU8h>x@s~nMsQ{%k7<=arZ2sR02l)6N z-SDKUw+FP?ONi&_haDzw)orKxP=y&?l1Q1(^E%`8sONfEa`e!UwQ-=)n7sEG=gmb^ zZCj>lsT9SNi^Pt4HCqo9mvdXAr!msGW%|0AV1o!mGv@YU2l z{10A`<a;P!~3*Oo;Bj7+=}Xk z_5?p{BImd4tzKzq``{&NS0QAvR7vZa^scE&|MT8k!DCfwb}}!r&!W|+b4`^e0G-|N z@nk3baFeXC7BK$Tk_xJV9IP2-x)W&5V|%!ETZ#EY>)~s)VT&0n`;GLTg|C&I^t-rC zz3}95DwK<|kc)%hA;nu!qDgODud(0lWbwe)6U)6}45@5e=@=dTHz$g0`xWYPr8&%M`a$%%YF@UPy|FsVbF#BptlTvZ6Fj};#~4zw6)WrW0QTc&HAO(YA{cyj zxC4)m!?S08F#H~12EBWu>r|)T7KtrW%-YPCihWe$pp`YMlVx*Cy=NccIWMtqwscpF zhtk2g@}eAm{jrG&11O7gbJJi&BvXa7?`WB&$&pPM0$}I}ooTLF`v(Yap(>%hR1(ZK z!m3FolQL=BnMHYgsp6e=ZPO=$EP7|X$%9Dn?tSCd#z-7jW7Ssw^=Z^8alL?vtZ}?p zTbN783K=GtJ?+GX%om}_g`C$vO%|}Xv0}H3^}FblYrCx?W< zbnNobiXaAZbW5S6lo%&))L4>|%6|fSfENj#>L0w2eMwhST};>lyi(+lYZkv^5wcvA`n6zKfQWOP zcJ>!%_#P1#Yksqdk2!o^*lZ%_AJ}F2i_E1rU@^(Zk(XjK+Ytpe3`n2BV&XzFB|pz> z`b-ss!7@x=6t1XoE);0)(HLT)-?AtOiMxap$(9dkfKbhb zq3o$IBj>;J8y(F?-i}eRurJs`zoH5Zt?8VN(+$Ul8_(5%MWsxDsdMC2;?-{gRIr(5 z(HySCDoi5mzjQO7!*7PHmOr3WLKgnK9Ft+-VrC+lDYw!3zV9+O=zE3G`(lKG0^eb* zHS9X50hN;b=~~fx!5-1ph2tbm_I7z>uqjmr1ZjeKYkuma$ag^=VU^C zZS>i@y!QU~_RvIO^1DASX8Fg7*Zwz8n4OrnyoK@5g4pZad5+|_a;YBtr03O1ZRaC( z^IpT=MQN~Wak#&Fsu^{O@8`gP@_mO1cK0lN+K!BAN!G4){`ewJ=DI4#2P2SV1U>2K zd&RT#ighlQmZhIM;4iF7yxo<0EfDQ3XGXkU_1s*_3uItVW zIJk~-i^IvCY?HPOf!2yk9wS*_qU_?t)va`RxoanVe6=YbU|xL;JMu5~(l5D%?}PZs z(*`Yd_hdV`1Kr@G5^fcN!Ah{Xca6t`jec>n?F-UafLkr(_A$T0`KQZv==Xn~oLyCoD$J*1n z4??P||4#q2OY(VsQ&mO5O|iT_&}?d0q`R4=VS9}26+M#voN%55WJ@UD6W|kSCbkg9zzBQe2Ye{!z67V^i)5vgf`=N zguW~ib(<aQJ$D830{zS(ATw;tI!no#267(?o}l%ZYThnsYKLq}M1iOf?fLilUA!c4`;HX`;$f0MVxz;luoPFy za_Xod34a%Z493YnXcRfj#`o$7-hw|6lP1wA5@QBbco($VPa# zwEhN0L>*IJZ-)_@)f>*%gkBUdPO%JMM6@5|`)nAn#=aBXskVXE*I(Va_wDgoNnQ8` z2U4IOi|2xjKX@hMIFl+Jy`4PuRb{ zKvlNbu1DUbMOsVTmB9R)DUT%9&torRFNhewJF>wyGgDux|0=ecc?Ey!fArA*gDPTa4wNEe0wa|Kum3Ual7(PyQFhg4r`A>z`z9@ zPjWk!4XRY?`y>XNazo@WzWBDMRSAD z&)@l5fC-SnDntn+s?kXj6Qa!~n=$~oKoq>LRLv@k@j5BomG2%*j1>am@rB32Sl0UK zVy~P|_dEM9!~RSnhmsX-PnNRZMHZROt+_~~czfdYH54y!JdZk7!;p7AClHQkInaHFnlo#N+ww5-o0LzCXV*7x*k4i)V32t#*6{nR z=kh^=GKA{D&IxZvd*LJK7QZo*k#B*e8icxg7Lnhe)U&eqH{4;)6_E+vcW8>8``);; zMv8#pq_+#M?-OLldIAP3A1t&!$uTHbqswee)iO*OpCE;3K=O8CE&wN;b5*LEl&(_s`isKN)hUir)?_)-oNM zIK$1eTpKI8hZF;vdz!j>w z+vdi^YVDWcTmR}2CAGyQuNM0J`sZAsOMZ!;J1Aeex8hAGQlvq)8WLEn3_>FWwTm<$ zU4bi=NEd)k3UDm*K#&zva@BW%ul|0p8@%#4HtO z^>RI+a68uJXk;}v>QgQX^kKK{UIB-&ZP;+Ea?_LKi3re?L}Q9Fy-L4{J?_l(duI+K zu-2f7#V>KqEf!0V&|(|w=eE2?>OaiF9z)r9`BqI~9nPytH?s8h8 zQ-avh}H=E0d<(Ode zcaMXu{*@tagfX;vum7sR1(m6>+{hCvEm*2~jjooSqG1XYNw+i+!9!Ng5|=y~Bc~r+ zEv$|;1=yS?Hz3(7b8Xuuf&8Iw+rNt)HmrpBUr}#dmvq{GOlsEe`fuJcz`{LR;lUyr z3Gud%#jy*2eQT6(PUKQBbDm5A4(;7aLP{*sGc^$PJtYKc5cRbx>hu~6dU>b#vu7TNtXH4; z|E&=+FGJNL3bb}zZ*%J<0H6y>Kw3JtC9O1tU=ABWm)>29qL>nUgOqA?Hkwo)GX zw5!q7mtvZw!1eP0;0hoWuKnE&AxA}og~&S(D|EgmAfT6|nad;g7tQ8tVonhCqTLJ= zv-Epw<|xtSr^^t4KB{Ku+1=AhXG*2&T(jff^I0w2{+)00Y+692YZ4Xf zFbKbWJ=?v1Vi})|NP=7;dAse%`Yf^74fg3x4?VlaRYe~Y?yhK<*1hp$Fw6V7%ZdDX4FohlCP_Z+$(l+dd6C$fE`nRoNc zI+I0^mU&`fI&SDyr?v~VoX@08#0YXQh#mv2sp>}|fx^0+Cm&X(1L23jTt&*wu|K_d zmYI?NtzP1IiE3)u&z6t{aOc6~XweH3D{B^2MG(_PDJijyvf0c8)p_F? z>@>|1L+B1}#s1cw%jMujWdzK*1D<~j8$U~Wgp~zcztiw|?f^B{e3+RY>A}}P;;&iU zj9gY#(iZyIQO1vE>wPs?eGu^h-0GO7adK556@fwUtqubCf-7k+_jA?wh>>h!*1Von zY@2B@T;4&o(#a^h(_|AkqG-~V7&P_nk0!A=7il`Ck$# z!S~yXXl>!H&NcvM@NI!V8ntTr8X&Cm(% zNPSzhK316XSKd;~z)gI-L?g*96U-)03j)N+;1DS}f$~jsBpl(GskXTx+FQw@2}bW7 z(tJ!1XODMz45+dIA)37M)W&PmkA<{!?WiikM?PBxh4Ktnvym?euF01=K83@;yL*2? zz!B+@3nGWMp0Zy}<~iQmY}p)ynQ84}jO6JCX)=~n**J$^ZaA{skX|sGOTI^-Z&L>J ze}*RxdNyENDCwP$I}J#5Wwuk)F0a;PQPNLCP0F}8fo1x?4oq0f0aX#?mX{ke8vg>)XB#zXiz?Q=3g!NnpR3rg8<6e2qV^7)36>1(*|lz5 z9`gP+ZT}qUM?~v44trk_olj6=))PR9csp^sqi~4;ZN6*d>44M&LjK?&$|U~nc|<$uzPYL(}Q5YswE*WRnJdwGDL)i&&7E@#6a;gVps42>u*tTyk@b!jVc zd2zFgBm*+ynU+CY15P^DnI~h8R9%*$#vXW};~3I%pay*%5krTe+`9#Pv&sk;0_8nK zE5_wM7T_*XayIJaHZq^DC4h_IJo`T9owsP6p92|UnU7`zo8|5<)CveB`TWSLQ6w?S zdo%o=kZ{SK8HAoiu|+4469olS*1GDF3_Nr}aaJZ#y+Xe0y=MeIAQ_ zt@Ckbnj>|*+~n_bSn4!50Wvp5-`Vq|-lIO1H}^_tUL^Bv`OxbQ1Zrx&NP39p2t(?W z9gqyha_9P^>U`tC43qlR2QpR5_fKZ$PG*B!Lpc8kXE$cQ^B;cn@ykEw2o@*FGwa%o zxn3c?tr6+m-+_xEDM<5c< zQ)!CgwH^CPJz~s#QRW?l%*YF}Tw0bk;Z@AAtlTCUv~?oI|1ILEBDqK?QNjSmR{dRs zP*62@lsebCS%VnzIcG6;5~2wd?a9q4Y0j&Dfk0I#9xGnyPk<5G!%ix`;+((t6H3pm z(y!1hjC)*=KlAoN2~tGLa!1bfb^7VOiKVM3roCSmop&xqOgTktsQ6X?E%x!r-Pe}i zKKqm1d@e>n&ADUIlf1eW%}WS{0TQP8mb^mBg%V{mk^@7lqRd0J;NuU}((siGyP&bv zwW@662@5;Ry@kW1)uA&P6^mKtpjttTSN$g8oX&^A&Mj76lT&|~C{fzQaPvS9S_b@U zY4hjCM^6RDDy~^ORUpBlV09@iYyNH!o2R`D@rzubkI0fj6Y<6@y!Kdpkb5)Iig+?I z%DGw6F}3&dq)Mp+$=56|{9m5}UkA|pa{Bww-|#g}9IQyj?TJlVtt%K5HV+9O-<0%h17-&kjG$eJ?fe)5XAOo!xKTS#Y%)m}C! z(~sE*x;=fHzZ6O<+z@3o7LFis5Yy=>PT$OU#~O3?AY{&243F zK(Bb+TX>FmIn4f)Ut8>%jRk7KTbvK$nsy9z<3V>4FMy=4#o&b9rqkNbh2ra_f@lRB z))rIrxeN@?d=+9qUcxH%AZ|u2{_JPBdJHWd@;O&$+Kk(b63DH>gb~DXBle zbf}g~8NL|Tt{Jv!2!gHY_K{5xeQ9{7B%Zv5R`O0zpJRg z6T}{_R$6rTyXKmi^R8#n_L)-?XKvENcDN;33NW4G70o&)Q+ly@;BUo5Vwc(Nqe_sY zenH*wzRR2Mn^A_kqFJ%%M;1{ppXN45AuvezOm-qpE^va?fhbeqeg#ow9tGkK^3+{d z!iYT|f*D#w{hED@%_|EEh*F1{%+#6~Cd%vzSPP}O(=QVzU$$N7G*dSbV8AWWP*-p_*x`J}r zCD~S;|G=46Dcx|acb+JcabKyhYK@)|cf(C9OWu}mqx>RDl-cy;LUjU7pTzR5mz72E z-jstsGs%e4Ncvw+sjC=PAP;f;IIk{qI`MEwyaf>*-^A zCM+wE-f_m=g3dE*9}MygkSFSN0VSo604gZZ?2ZpFT%6o3)MeMEyrXUltM|ThWvrBG zI)prTMM>;`o2c(k3mPRUovkVK4p57OX))| zzofF>#))uAYD0%_)rS-^oz^KEIAVRWe<8L=1HYjxBMUTRo4hs>*qm3MD){2CjK5STq$ivi0Q~e922l-%s*Z(?xL+&ZkOUL{M0iC(r zEZI+>myKda0!VKxHH5^NxMc+gYM)*aG9ET72XHiytw7B->u9lQVhO&{X&$3k*)9n) z5OD2oKiF9c*v{MxErBzmCa78*v2C^8Q1427^zJHH^__P#YY8S$zK5CV zADm;XKA;345sJ=!m>CwEgBE(OW1D9fC4o70&yxXWs!)*jO7-3HK12Si^*(t(0q7-*-nM?wL>TAMH>T&%*?v1#-$*y+)4>|1eUxfdn5&fG|18 z&k!$zs=F(f&(Re1mxe2wtKKUfr4a`^^-of1^%_-0qr118wgFfDqj&QyUiVR~|8|>3 z5?pqoPY+{a+*z1>X>ou|($LfE2zMV^Tl#o+aZo`#bQf>uD<5FV)mNqP-qcEPi>$T> z-7=c8MY&jpVXeM^1x^gS?VjBJ&9*<5Kn`SE=REyh>H(c=X|aJ>FXNyM zSXK=E734)M2xy=->(rQL z52S!U!{j|Vo`MIvPG{MgRFe*{@6@~mi~@N$;5s6OA=R2)`e8Wll|4TKuc|;neRKqD z?-G5=^Z~P;TrlXdmayga$x*PqiM8^>_(})!Df6csh`AqIET--X z@w;c{4x{E;USi^9i)mwptP`a7HLVhIbj}DxDx2)n-qedSCFRVWbW}#~)GcV@rcE@` zd|1yqk`xD7MWI{p%(Wcn^GIAQ(EN7>BD-58Pj9pV<I2zH$XQysnm-lbH)IXxf^7yIF~hy%Wd95aM`(!H$@3^zc=POql(>pMgE{rJEP=!)`l*x3VgSF z*=Am^n|Ck7nbK4NIJXhv;UkD=C*w4Was>}_nKuGN+n4&9Jjz7pf#`^+YS)SvS&HkE z<|y$#__iNeeXqDb_90x_J%35a+4=)n#QB|O{xSc*#!AmQf~sgSzQLi3lFqMWRjUwe zf#z;*y=DQjnMvF7W)&^hU7rFHU8=@?toW7^HMzR={}<@V?#ByAj4MrpQfu=V9;ZgYxEK)4UWM; z(6G*IQCGH;DrH2IsCsdbrqw3Kc3(Z2vIb^w%hN)SeSS1<6%HT?KlZwkAf5?foYE zO{A{#q|lF8W8Vln3-UB-zrP)6q7UL!C!4}xXt^d(ANZENk9I__rb2S9 zBlwPbmmJljB15hrdfBK$zWDuv`=8r}y)SGwy&x9E{!_lImECPQ7?B{I(xv(`_}Z%C$( zk8|+F-tax$Yr;oleGn-eWADb(M3q_ztmxgJNly>~nzT*~y&KU2IS3&pM`l`eVO)g6Z&%_QX2FU;+dCjRqOORQx*w9YTbHd8Nsgn_IMxu)%o9it`MVX~sxu$7l&+y~f z!FWR<{!Ax2;i5ns6$R{UsPnqv05}Y0wXJK0UsH!Y*%d0NpWZ+29=BS*|uXt#=mxkjAhvD{i*AgnL_^;gQQ|N)}Vn{_^G}Z znn9f5k{c&Owgx2vT=LW*s(>+zli-Js+UJ(W>6nT`7Pa-q&U=9R}nW86gETzAz7c7gREi0bb^(@(52%m z>zc$zKESKa+vl8LkWEwO;M-LP>>Wf<5;44)%;fW=8Ms@0($X>WWeK|))aKqDl=$8G znk`Gm+^+gu;D=voAO7x`PiH?i+B)2Q+i#tqT#BN7ca_Y2&xK=baH-}^=*Ih`dIyNa zhITlQp_i4awAHTwW|u71Aid!0b5tm1`afiQP&R;>p*gS4l!|S5!KOE=!dGA=f|FFz zW=xSNMw?^A1Q1kfZ9L{eeMgcQA2V6kM=$Iwz% zkxq0AMUAS9Bp>|v6=P663v5bp%TlRJ4>t7qXJI!x9|aN$;yWbY17#K&egdQNxWL!d zJ=bU)i8G811=xP}B#$Q*QQR0fW7oQ508p5uDQu<*%;=Qo!e2BQ`XMr}wMb1<4;7uG z9;wg6L#COJ0O{V>`#WAJ(G8yO>zBX;kUV_&Te|wbEFX`Kerel%aDN&-k^fRD=-#2< z-#2}Qsj*zMu}{S`wjc3+cWpqNwROn|88?B|Ta_hXGeVreH10PyDx$>GW92REP6AVW z#Q?oq(B}@7>{n3;?`OvsFb&iB0&qqLd@ee?A;eydHGHQr^b3Ipgy1!rJp4>SdWt=x zNAgaG2pCno0!!f3tuVEIqteVqV|sp@YxHKZI1T)ISlRh{DrY)PR;dba5JXd~(f$LM zb!l+QM)1oBQi?32k&jqx3I&*VFs7-X9r!BtlVcjv_~Q50(iUMfe$`>A5K7`X7F_G+B!&8F$4~sc1rw&R+=LYbx>yTh+sWgfvoJ zI_D~0SXF+o>Qk80_mA{hj++O!-mSFv-L0;raa(I)^J&~b3hw=>5hG%#d2rY8=_?lg zzh8gZZ7Y@jR6G6?RgY%mB8yt)k_qiRGtb`Ya`W1)-hAZO7DbvkIKzgi$R6(E^b@DK zPy5`?r&{G3E^v>j>g|PRlZJUo_rNR+Yz_c6hSp{h>57GKm$!+CP~;ki0iZ-`75us9 zc_d4;w*&x#&m?3;-yV&!ORrG_48X^u^B9H`nqAjzPbnFVvnyIHcaKtD=wcp1(P4CU z-kUEkWd99+uXx(0fAWgV?U~KtyNE4P$+u)-u726J21S!>G(-9GptEivhe&3eDN=1` z57SR0ie}dS(D}P!>Pl*Cz$KEo?w(hFE1f9StBVt97b#l2rNFHP>j|iq;nLW+_f&b6kcWT+@cVXcpCjn>PxVX z{`i~a#ZB!IPv>`!{(ekDp-}rtA-t2K2tZ4?i{3T&VJr>RmYN?RRBWWdsFmSD!xjwD zE5RISl|T|z0wcom3~;*BQ&rK_9FEEt40}9HbOxDaKm%5B3g+!zPPA!&YX8gy(=h{{ z|Lf^|yplfmIF6FPjx+VzovuLJO1*bF&HOE1LCrbyNAuLuWr~d@VIXD&IZ)KuXw6A# zJ1iA2Q_C#u2a`ep%Zyqo{>Yr5pi2pDh>42w>w9s>_WT9UbDncPpU?aGe4f|)yiT$| zF~R->R$?)fqSz1mc>fDXH67{MphE(BjdsCgMU?9efS!V{{E~C==_29jbO%?e|4STk z_zhdc+4_$6osO)G_26Nk@xhzw^pIt+wjI#5Yng@_Z#?y?Wc`jLpm!5zK??OYz(SBA98D+jd*n0i6E}l zoO8czlT&vmi`)5qF=x#BGfyBvp1iVy@r~eTgID;$K-yAU6ZE0DFIwzvq`zieoFIIa zN1O=Q{-4Q}KsAr(n)5q@HY${!8XTf$*88+~6^!`Os-NH6)N+;I`oyrZ9G+XC1fMCU5QOb3H!eywjLW#R%Lm-OqzXxf%Ty zmk2LYU7t0F?{k^nby;<;Az=rn8szI@GsPJ>xFh`FsQOvtu>t>2khSEwVjH*2UWCJE zPc0WX3Se9L5{Dt4_ zwjQ%`+fonWoUO~*>zMCcQQx?&L}djO4<#KD|P6Qz%(^JM93?~~vUR!(p6 zHeg^w7pdr9F zX0VLfM9}5JON(Han1QZE$N~n!+?9QZ%V1?dPre0oPf#UmEMP?D4UC~cS`3Sq2{(pt zWdmpfH-n;km!_l{1yVGW5{G~>ZEy%r(12k?F6bx_*>kVGscfJupgqR0l9hlKdA?AO z1Dc5LVJ6gO(Mb+Fx|nx96N-!k##zR3zQ=l%$GBdmHp*0#xV@>i_7)D2=ET*Fd!$&~ zJy8drs;Q*pl}v$c=gNHt6Et7?MZZj|-QVpDdYJR7>E{cQz6xb;C&%V)=GG$!uPduy z0rT4G(9I(8A0Ofb?q_m_2hGsk6U4WAHwTvXA&X0#KHJa|xgEaoU|sn++x z#4!}!Wu9Y@MmiM?zC`UKy``XvMulft`TBo9ZSmurK z^VHRee&e0W#-BRGP9`PIq?CnHG@*EE>yj%+=dui8mmHJh^Px`9-x?AsWrVWJbzZ5? zzk(Wnx4dll2xF!5dbtIfz9*o*XRQx7Mej#W%cN|>haG9nc+*cXcVPANVyEmOc14Ky z9-L$hN-GsjF7Sx$B>72o>jBdIYUzoq0g*%LOh?h?OZS_eh1mIr!rO*LD!hw0`c)dP z*i{};*z1#ZSDPqYPOK}Oahgb@tfZ-nRAa@e)vx1yBIGvNbIZA9Z<#H7xuwlRA6Pag zId=yd!x@@q9E+Up()%?u%P&CA7_%J*Tus3t?ydXhQKddP6lwmXn&FIGV)Pm+jLfCKV8g)G zv|Tkf?)zXuKsQKc4Tj@eRA+j5$KWYP@2_Lu#QpkT&<}?TZn0qUxd9TlQ}s@4bw=rn zO8~NN>e*@?n=jYhmP-UU82kje5gp~hhHnPtsCwA6!-Y~?ViTFI-Z-!}OE*kkFwP=Pv*G$w)<1n^k4i#=U6_3=Y>{gN zd0Y await errorHandlerService.handleError(failure: failure), + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async {}, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); diff --git a/lib/features/smartwatch_health_data/health_provider.dart b/lib/features/smartwatch_health_data/health_provider.dart index fc9dacc5..0acb25bb 100644 --- a/lib/features/smartwatch_health_data/health_provider.dart +++ b/lib/features/smartwatch_health_data/health_provider.dart @@ -10,6 +10,15 @@ class HealthProvider with ChangeNotifier { String selectedTimeRange = '7D'; int selectedTabIndex = 0; + String selectedWatchType = 'apple'; + String selectedWatchURL = 'assets/images/png/smartwatches/apple-watch-5.jpg'; + + setSelectedWatchType(String type, String imageURL) { + selectedWatchType = type; + selectedWatchURL = imageURL; + notifyListeners(); + } + void onTabChanged(int index) { selectedTabIndex = index; notifyListeners(); diff --git a/lib/presentation/smartwatches/smartwatch_home_page.dart b/lib/presentation/smartwatches/smartwatch_home_page.dart new file mode 100644 index 00000000..8fd79098 --- /dev/null +++ b/lib/presentation/smartwatches/smartwatch_home_page.dart @@ -0,0 +1,180 @@ +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/smartwatches/widgets/supported_watches_list.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:provider/provider.dart'; + +class SmartwatchHomePage extends StatelessWidget { + const SmartwatchHomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.smartWatches.tr(), + bottomChild: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: CustomButton( + text: LocaleKeys.supportedSmartWatches.tr(context: context), + onPressed: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.supportedSmartWatches.tr(context: context), + context, + child: SupportedWatchesList(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + backgroundColor: AppColors.infoColor.withAlpha(40), + borderColor: AppColors.infoColor.withAlpha(0), + textColor: AppColors.infoColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 50.h, + icon: AppAssets.ask_doctor_icon, + iconColor: AppColors.infoColor, + iconSize: 18.h, + ).paddingSymmetrical(24.w, 30.h), + ), + child: SingleChildScrollView( + child: Column( + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), + child: GridView( + padding: EdgeInsets.zero, + shrinkWrap: true, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16.h, + mainAxisSpacing: 16.w, + mainAxisExtent: 240.h, + ), + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + children: [ + Image.asset("assets/images/png/smartwatches/apple-watch-5.jpg", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + "Apple Watch".needTranslation.toText16(isBold: true), + CustomButton( + text: LocaleKeys.select.tr(context: context), + onPressed: () { + context.read().setSelectedWatchType("apple", "assets/images/png/smartwatches/apple-watch-5.jpg"); + }, + backgroundColor: AppColors.primaryRedColor.withAlpha(40), + borderColor: AppColors.primaryRedColor.withAlpha(0), + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + ).paddingSymmetrical(16.w, 12.h), + ], + ), + ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + children: [ + Image.asset("assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", fit: BoxFit.contain, width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + "Samsung Watch".needTranslation.toText16(isBold: true), + CustomButton( + text: LocaleKeys.select.tr(context: context), + onPressed: () { + context.read().setSelectedWatchType("samsung", "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg"); + }, + backgroundColor: AppColors.primaryRedColor.withAlpha(40), + borderColor: AppColors.primaryRedColor.withAlpha(0), + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + ).paddingSymmetrical(16.w, 12.h), + ], + ), + ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + children: [ + Image.asset("assets/images/png/smartwatches/Huawei_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + "Huawei Watch".needTranslation.toText16(isBold: true), + CustomButton( + text: LocaleKeys.select.tr(context: context), + onPressed: () { + context.read().setSelectedWatchType("huawei", "assets/images/png/smartwatches/Huawei_Watch.png"); + }, + backgroundColor: AppColors.primaryRedColor.withAlpha(40), + borderColor: AppColors.primaryRedColor.withAlpha(0), + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + ).paddingSymmetrical(16.w, 12.h), + ], + ), + ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + children: [ + Image.asset("assets/images/png/smartwatches/Whoop_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + "Whoop Watch".needTranslation.toText16(isBold: true), + CustomButton( + text: LocaleKeys.select.tr(context: context), + onPressed: () { + context.read().setSelectedWatchType("whoop", "assets/images/png/smartwatches/Whoop_Watch.png"); + }, + backgroundColor: AppColors.primaryRedColor.withAlpha(40), + borderColor: AppColors.primaryRedColor.withAlpha(0), + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + ).paddingSymmetrical(16.w, 12.h), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/presentation/smartwatches/smartwatch_instructions_page.dart b/lib/presentation/smartwatches/smartwatch_instructions_page.dart index 8edbd242..48683d50 100644 --- a/lib/presentation/smartwatches/smartwatch_instructions_page.dart +++ b/lib/presentation/smartwatches/smartwatch_instructions_page.dart @@ -1,19 +1,12 @@ -import 'dart:io'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:health/health.dart'; -import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/smartwatches/health_dashboard/health_dashboard.dart'; -import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; -import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'package:url_launcher/url_launcher.dart'; class SmartwatchInstructionsPage extends StatelessWidget { const SmartwatchInstructionsPage({super.key}); @@ -22,445 +15,28 @@ class SmartwatchInstructionsPage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: LocaleKeys.smartWatches.tr(), - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: SingleChildScrollView( - child: Platform.isIOS ? getIOSInstructionsUI(context) : getAndroidInstructionsUI(context), - ), - ), - ), - ); - } - - Widget getAndroidInstructionsUI(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.supportedSmartWatches.tr().toText20(isBold: true), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_ultra.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Watch Ultra", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Watch 8 Classic", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], - ), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_8.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Watch 8", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_7_classic.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Watch 7 Classic", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], - ), - ), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_7.webp", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Watch 7", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/galaxy_fit_3.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Galaxy Fit3", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], - ), - ), - SizedBox(height: 12), - LocaleKeys.pleaseMakeSureSamsungWatchConnected.tr().toText14(isBold: true), - SizedBox(height: 8.h), - LocaleKeys.beforeSyncingDataFollowInstructions.tr().toText14(isBold: true), - SizedBox(height: 12), - InkWell( - onTap: () { - showInstructionsDialog(context); - }, - child: LocaleKeys.viewWatchInstructions.tr().toText12(isBold: true, color: AppColors.textColor, isUnderLine: true)), - SizedBox( - height: 130.h, - ), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: () async { - await Health().getHealthConnectSdkStatus().then((val) { - print('Health Connect SDK Status: $val'); - if (val == HealthConnectSdkStatus.sdkAvailable) { - Navigator.of(context).push( - CustomPageRoute( - page: HealthDashboard(), - ), - ); - } else { - getIt.get().showErrorBottomSheet( - message: LocaleKeys.healthConnectAppNotInstalled.tr(), - onOkPressed: () { - Navigator.pop(context); - Uri uri = Uri.parse("https://play.google.com/store/apps/details?id=com.google.android.apps.healthdata"); - launchUrl(uri, mode: LaunchMode.externalApplication); - }); - return; - } - }); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 10.r, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ), - // DefaultButton( - // LocaleKeys.confirm.tr(context: context), - // () async { - // await Health().getHealthConnectSdkStatus().then((val) { - // print('Health Connect SDK Status: $val'); - // if (val == HealthConnectSdkStatus.sdkAvailable) { - // Navigator.of(context).push( - // FadePage( - // page: HealthDashboard(), // Replace with the actual vital signs page - // // page: HealthApp(), // Replace with the actual vital signs page - // ), - // ); - // } else { - // Utils.showAppDialog(context, LocaleKeys.error.tr(context: context), LocaleKeys.healthConnectNotInstalled.tr(), () { - // Navigator.pop(context); - // Uri uri = Uri.parse("https://play.google.com/store/apps/details?id=com.google.android.apps.healthdata"); - // launchUrl(uri, mode: LaunchMode.externalApplication); - // }); - // return; - // } - // }); - // }, - // ) - ], - ); - } - - Widget getIOSInstructionsUI(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "Supported Smart Watches".needTranslation.toText20(isBold: true), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-1.jpeg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 5", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), + body: CollapsingListView( + title: "How does it work".needTranslation, + bottomChild: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-2.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 6", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], - ), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-3.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 7", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-4.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 8", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], - ), - ), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - children: [ - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-5.jpg", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 9", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - Expanded( - child: Container( - margin: EdgeInsets.only(top: 15.0), - child: Row( - children: [ - Image.asset("assets/images/png/smartwatches/Apple-Watch-6.png", width: 70.0, height: 70.0), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Container( - width: MediaQuery.of(context).size.width * 0.21, - child: Text("Apple Watch Series 10", overflow: TextOverflow.clip, style: TextStyle(fontSize: 12.0)), - ), - ) - ], - ), - ), - ), - ], + child: CustomButton( + text: LocaleKeys.getStarted.tr(context: context), + onPressed: () { + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 50.h, + ).paddingSymmetrical(24.w, 30.h), ), + child: SingleChildScrollView(), ), - SizedBox(height: 12), - "Please make sure that your Apple Watch is connected to your iPhone, is actively synced & updated.".toText14(isBold: true), - SizedBox(height: 12), - "Before syncing data, please make sure that you have followed the instructions properly.".toText14(isBold: true), - SizedBox(height: 12), - InkWell( - onTap: () { - showInstructionsDialog(context); - }, - child: "View watch instructions".toText12(isBold: true, color: AppColors.textColor, isUnderLine: true), - ), - SizedBox( - height: 130.h, - ), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: () async { - Navigator.of(context).push( - CustomPageRoute( - page: HealthDashboard(), - ), - ); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 10.r, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ), - ], ); } - - showInstructionsDialog(BuildContext context) { - showGeneralDialog( - barrierColor: Colors.black.withOpacity(0.5), - transitionBuilder: (context, a1, a2, widget) { - final curvedValue = Curves.easeInOutBack.transform(a1.value) - 1.0; - return Transform( - transform: Matrix4.translationValues(0.0, curvedValue * 200, 0.0), - child: Opacity( - opacity: a1.value, - child: Dialog( - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 350.0, - padding: EdgeInsets.all(21), - color: Colors.white, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - "SmartWatch Tracker".toText18(), - IconButton( - icon: Icon( - Icons.close, - color: Color(0xff2E303A), - ), - onPressed: () { - Navigator.pop(context); - }, - ), - ], - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (Platform.isIOS - ? "Make sure that you have installed 'Health' App & 'Watch' App from Apple Store." - : "Please make sure that your Samsung Watch is connected to your Phone, is actively synced & updated.") - .needTranslation - .toText14(), - SizedBox(height: 12), - ], - ) - ], - ), - ), - ], - ), - ), - ), - ); - }, - transitionDuration: Duration(milliseconds: 500), - barrierDismissible: true, - barrierLabel: '', - context: context, - pageBuilder: (context, animation1, animation2) { - return SizedBox(); - //Chanbged By Aamir - }); - } } diff --git a/lib/presentation/smartwatches/widgets/supported_watches_list.dart b/lib/presentation/smartwatches/widgets/supported_watches_list.dart new file mode 100644 index 00000000..839af802 --- /dev/null +++ b/lib/presentation/smartwatches/widgets/supported_watches_list.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class SupportedWatchesList extends StatelessWidget { + const SupportedWatchesList({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + ), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + "Apple Watches".needTranslation.toText16(isBold: true), + ], + ), + SizedBox(height: 4.h), + "• Apple Watch Ultra".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Apple Watch 11".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Apple Watch 10".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Apple Watch 9".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Apple Watch 8".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + SizedBox(height: 16.h), + Row( + children: [ + "Samsung Watches".needTranslation.toText16(isBold: true), + ], + ), + SizedBox(height: 4.h), + "• Samsung Watch Ultra".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Galaxy Watch 8".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Galaxy Watch 7".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Galaxy Watch 6".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Galaxy Watch FE".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Galaxy Watch Fit".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + SizedBox(height: 16.h), + Row( + children: [ + "Huawei Watches".needTranslation.toText16(isBold: true), + ], + ), + SizedBox(height: 4.h), + "• Huawei Watch Ultimate Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Huawei Watch Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Huawei Watch Fit Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Huawei Watch Bands".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + SizedBox(height: 16.h), + Row( + children: [ + "Whoop Watches".needTranslation.toText16(isBold: true), + ], + ), + SizedBox(height: 4.h), + "• Whoop 1".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Whoop 2".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + ], + ), + ), + ); + } +} diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 702b37e5..9cf0ed91 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -18,7 +18,7 @@ import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_procedures_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/huawei_health_example.dart'; -import 'package:hmg_patient_app_new/presentation/smartwatches/smartwatch_instructions_page.dart'; +import 'package:hmg_patient_app_new/presentation/smartwatches/smartwatch_home_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/organ_selector_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/possible_conditions_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/risk_factors_screen.dart'; @@ -110,7 +110,7 @@ class AppRoutes { bookAppointmentPage: (context) => BookAppointmentPage(), userInfoSelection: (context) => UserInfoSelectionPage(), userInfoFlowManager: (context) => UserInfoFlowManager(), - smartWatches: (context) => SmartwatchInstructionsPage(), + smartWatches: (context) => SmartwatchHomePage(), huaweiHealthExample: (context) => HuaweiHealthExample(), covid19Test: (context) => Covid19LandingPage(), waterConsumptionPage: (context) => WaterConsumptionPage(), From 8c7f4afe762ca99c80af8a9f96e325eb39829d84 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Tue, 27 Jan 2026 11:35:07 +0300 Subject: [PATCH 35/67] family file button fix --- assets/langs/ar-SA.json | 3 ++- assets/langs/en-US.json | 4 +++- .../authentication/authentication_view_model.dart | 9 +++++++++ lib/generated/locale_keys.g.dart | 1 + lib/presentation/my_family/my_family.dart | 2 ++ lib/presentation/my_family/widget/family_cards.dart | 5 +++-- 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 90103c09..7a9b34c2 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1524,7 +1524,8 @@ "medicalServices": "الخدمات الطبية", "insuranceAndPayments": "التأمين والمدفوعات", "trackerAndOthers": "المتتبع وأخرى", - "bmi": "مؤشر كتلة الجسم" + "bmi": "مؤشر كتلة الجسم", + "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 50d44816..afcb5987 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1515,7 +1515,9 @@ "medicalServices": "Medical Services", "insuranceAndPayments": "Insurance & Payments", "trackerAndOthers": "Tracker & Others", - "bmi": "BMI" + "bmi": "BMI", + "unableToSendOTP": "Unable to send Verification OTP" + } diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index f1182e05..82061607 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -432,6 +432,15 @@ class AuthenticationViewModel extends ChangeNotifier { } else { // TODO: Handle isSMSSent false // navigateToOTPScreen(otpTypeEnum: otpTypeEnum, phoneNumber: phoneNumber); + if (isFormFamilyFile) { + LoaderBottomSheet.hideLoader(); + await _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.unableToSendOTP.tr(), + label: LocaleKeys.notice.tr(), + onOkPressed: () { + _navigationService.pop(); + }); + } } } }, diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 41cb64fb..cccad9e8 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1512,5 +1512,6 @@ abstract class LocaleKeys { static const insuranceAndPayments = 'insuranceAndPayments'; static const trackerAndOthers = 'trackerAndOthers'; static const bmi = 'bmi'; + static const unableToSendOTP = 'unableToSendOTP'; } diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index b16c587a..ea19c677 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -42,6 +42,8 @@ class _FamilyMedicalScreenState extends State { medicalVM = context.read(); WidgetsBinding.instance.addPostFrameCallback((_) { medicalVM?.onFamilyFileTabChange(0); + medicalVM?.getAllPendingRecordsByResponseId(); + }); } diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index f76f3c12..175cfb18 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -321,7 +321,7 @@ class _FamilyCardsState extends State { : Expanded( child: CustomButton( height: 40.h, - text: LocaleKeys.confirm.tr(), + text: LocaleKeys.acceptLbl.tr(), onPressed: () { navigationService.pop(); widget.onSelect(profile); @@ -329,6 +329,7 @@ class _FamilyCardsState extends State { backgroundColor: AppColors.lightGreenButtonColor, borderColor: AppColors.lightGreenButtonColor, textColor: AppColors.textGreenColor, + borderWidth: 0, icon: null, ), ), @@ -336,7 +337,7 @@ class _FamilyCardsState extends State { Expanded( child: CustomButton( height: 40.h, - text: profile.status == FamilyFileEnum.active.toInt ? LocaleKeys.removeMember.tr() : LocaleKeys.cancel.tr(), + text: profile.status == FamilyFileEnum.active.toInt ? LocaleKeys.removeMember.tr() : LocaleKeys.rejectView.tr(), onPressed: () { navigationService.pop(); widget.onRemove(profile); From 2c2cb8bb99df91482b7c9ae0787cf92d5ec3b042 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Tue, 27 Jan 2026 11:39:32 +0300 Subject: [PATCH 36/67] family file button fix --- lib/presentation/my_family/my_family.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index ea19c677..8383ce7d 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -75,7 +75,7 @@ class _FamilyMedicalScreenState extends State { icon: AppAssets.add_icon, fontSize: 16.f, borderRadius: 12.r, - fontWeight: FontWeight.w500)) + fontWeight: FontWeight.w500)).paddingOnly(bottom: 20.h) : SizedBox(), child: Column( mainAxisSize: MainAxisSize.min, From b9350afead7d07edcc253413f3af454a3840cbe5 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 27 Jan 2026 14:59:42 +0300 Subject: [PATCH 37/67] ui improvements --- .../contact_us/feedback_page.dart | 26 +++++++++---------- lib/presentation/home/landing_page.dart | 2 ++ .../home/widgets/large_service_card.dart | 7 ++--- .../home/widgets/small_service_card.dart | 13 +++++++--- lib/widgets/input_widget.dart | 2 +- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/lib/presentation/contact_us/feedback_page.dart b/lib/presentation/contact_us/feedback_page.dart index 62ae1d36..8f10bc54 100644 --- a/lib/presentation/contact_us/feedback_page.dart +++ b/lib/presentation/contact_us/feedback_page.dart @@ -148,20 +148,18 @@ class FeedbackPage extends StatelessWidget { ), child: Padding( padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.ask_doctor_icon, width: 24.w, height: 24.h, iconColor: AppColors.greyTextColor), - SizedBox(width: 12.w), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.feedbackType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.ask_doctor_icon, width: 24.w, height: 24.h, iconColor: AppColors.greyTextColor), + SizedBox(width: 12.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.feedbackType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), (getIt.get().isArabic() ? contactUsViewModel.selectedFeedbackType.nameAR : contactUsViewModel.selectedFeedbackType.nameEN) .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 59babf8a..940fcd31 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -555,6 +555,7 @@ class _LandingPageState extends State { scrollDirection: Axis.horizontal, itemCount: LandingPageData.getLoggedInServiceCardsList.length, shrinkWrap: true, + controller: _horizontalScrollController, padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), itemBuilder: (context, index) { return AnimationConfiguration.staggeredList( @@ -608,6 +609,7 @@ class _LandingPageState extends State { scrollDirection: Axis.horizontal, itemCount: LandingPageData.getNotLoggedInServiceCardsList.length, shrinkWrap: true, + controller: _horizontalScrollController, padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), // padding: EdgeInsets.zero, itemBuilder: (context, index) { diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 2762a6ee..82226355 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -55,6 +55,7 @@ class LargeServiceCard extends StatelessWidget { right: 0.0, child: Container( height: 180.h, + padding: EdgeInsets.only(bottom: 16.h, top: 16.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, customBorder: BorderRadius.only( @@ -69,7 +70,7 @@ class LargeServiceCard extends StatelessWidget { children: [ Container( height: 48.h, - width: 48.w, + width: 48.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: serviceCardData.backgroundColor, borderRadius: 12.r, @@ -95,7 +96,7 @@ class LargeServiceCard extends StatelessWidget { ), ), ], - ).paddingSymmetrical(12.w, 24.h), + ).paddingSymmetrical(16.w, 0.h).expanded, CustomButton( text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr(context: context) : LocaleKeys.bookNow.tr(context: context), onPressed: () { @@ -206,7 +207,7 @@ class FadedLargeServiceCard extends StatelessWidget { children: [ Container( height: 32.h, - width: 32.w, + width: 32.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: serviceCardData.backgroundColor, borderRadius: 30.r, diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 008ff50f..cf49a263 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -53,8 +53,8 @@ class SmallServiceCard extends StatelessWidget { Widget build(BuildContext context) { return Container( height: 92.h, - width: 92.w, - padding: EdgeInsets.all(6.0), + width: 92.h, + padding: EdgeInsets.all(4.0), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: backgroundColor, borderRadius: 16, @@ -64,8 +64,13 @@ class SmallServiceCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), SizedBox(height: 6.h), - title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true), - subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true), + if (isFoldable || isTablet) ...[ + title.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + subtitle.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + ] else ...[ + title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + ] ], ), ).onPress(() { diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index ad2a5790..cf1b132f 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -125,7 +125,7 @@ class TextInputWidget extends StatelessWidget { children: [ Container( padding: padding, - height: isMultiline ? null : 64.h, + // height: isMultiline ? null : 64.h, alignment: Alignment.center, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: Colors.white, From 537d93915e50beee2fefadf6af57c4df546161a4 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Tue, 27 Jan 2026 23:10:27 +0300 Subject: [PATCH 38/67] Zoom SDK fixes --- lib/presentation/home/landing_page.dart | 1 + lib/services/zoom_service.dart | 33 +++++++++++++++++++++++++ lib/splashPage.dart | 15 +++++------ pubspec.yaml | 2 +- 4 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 lib/services/zoom_service.dart diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index ab0d247e..eca4eb70 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -52,6 +52,7 @@ import 'package:hmg_patient_app_new/presentation/todo_section/ancillary_procedur import 'package:hmg_patient_app_new/presentation/todo_section/widgets/ancillary_orders_list.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; +import 'package:hmg_patient_app_new/services/zoom_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; diff --git a/lib/services/zoom_service.dart b/lib/services/zoom_service.dart new file mode 100644 index 00000000..9af543dc --- /dev/null +++ b/lib/services/zoom_service.dart @@ -0,0 +1,33 @@ +// lib/services/zoom_service.dart +import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; + +class ZoomService { + static final ZoomService _instance = ZoomService._internal(); + factory ZoomService() => _instance; + ZoomService._internal(); + + ZoomVideoSdk? _zoom; + bool _isInitialized = false; + + Future initializeZoomSDK() async { + if (_isInitialized) return; + + try { + _zoom = ZoomVideoSdk(); + InitConfig initConfig = InitConfig( + domain: "zoom.us", + enableLog: true, // Enable for debugging + ); + + await _zoom!.initSdk(initConfig); + _isInitialized = true; + print("Zoom SDK initialized successfully"); + } catch (e) { + print("Error initializing Zoom SDK: $e"); + rethrow; + } + } + + ZoomVideoSdk? get zoom => _zoom; + bool get isInitialized => _isInitialized; +} \ No newline at end of file diff --git a/lib/splashPage.dart b/lib/splashPage.dart index b5366618..33d3d23d 100644 --- a/lib/splashPage.dart +++ b/lib/splashPage.dart @@ -19,6 +19,7 @@ import 'package:hmg_patient_app_new/presentation/tele_consultation/zoom/call_scr import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/services/notification_service.dart'; +import 'package:hmg_patient_app_new/services/zoom_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/transitions/fade_page.dart'; import 'package:lottie/lottie.dart'; @@ -55,7 +56,7 @@ class _SplashScreenState extends State { await notificationService.initialize(onNotificationClick: (payload) { // Handle notification click here }); - + await ZoomService().initializeZoomSDK(); if (isAppOpenedFromCall) { navigateToTeleConsult(); } else { @@ -68,12 +69,12 @@ class _SplashScreenState extends State { } } }); - var zoom = ZoomVideoSdk(); - InitConfig initConfig = InitConfig( - domain: "zoom.us", - enableLog: false, - ); - zoom.initSdk(initConfig); + // var zoom = ZoomVideoSdk(); + // InitConfig initConfig = InitConfig( + // domain: "zoom.us", + // enableLog: false, + // ); + // zoom.initSdk(initConfig); } navigateToTeleConsult() async { diff --git a/pubspec.yaml b/pubspec.yaml index 26903b65..491cf9af 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,7 +43,7 @@ dependencies: lottie: ^3.3.1 flutter_ios_voip_kit_karmm: ^0.8.0 image_picker: ^1.2.0 - file_picker: ^10.3.2 + file_picker: 10.3.8 local_auth: ^2.3.0 share_plus: ^11.1.0 device_calendar_plus: ^0.3.1 From 49542a91129b8c61e1fba3b55932391d96c83725 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Tue, 27 Jan 2026 23:26:21 +0300 Subject: [PATCH 39/67] updates & fixes --- lib/main.dart | 234 +++++++++--------- .../widgets/appointment_card.dart | 6 +- lib/presentation/home/landing_page.dart | 44 ++-- .../home/widgets/large_service_card.dart | 4 +- .../profile_settings/profile_settings.dart | 6 +- pubspec.yaml | 2 +- 6 files changed, 143 insertions(+), 153 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 82b758ec..6010a05d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:device_preview/device_preview.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; @@ -91,124 +90,121 @@ Future callInitializations() async { void main() async { await callInitializations(); runApp( - DevicePreview( - enabled: false, - builder: (context) => EasyLocalization( - supportedLocales: const [ - Locale('en', 'US'), - Locale('ar', 'SA'), - ], - path: 'assets/langs', - fallbackLocale: Locale('en', 'US'), - child: MultiProvider(providers: [ - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ), - ChangeNotifierProvider( - create: (_) => getIt.get(), - ) - ], child: MyApp()), - ), // Wrap your app - ), + EasyLocalization( + supportedLocales: const [ + Locale('en', 'US'), + Locale('ar', 'SA'), + ], + path: 'assets/langs', + fallbackLocale: Locale('en', 'US'), + child: MultiProvider(providers: [ + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ) + ], child: MyApp()), + ), // Wrap your app ); } diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index 6b0439f1..e1748c3a 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -175,15 +175,15 @@ class AppointmentCard extends StatelessWidget { AppCustomChipWidget( labelText: isLoading ? 'Cardiology' - : (patientAppointmentHistoryResponseModel.clinicName!.length > 15 - ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 12)}...' + : (patientAppointmentHistoryResponseModel.clinicName!.length > 20 + ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' : patientAppointmentHistoryResponseModel.clinicName!), ).toShimmer2(isShow: isLoading), AppCustomChipWidget( labelText: isLoading ? 'Olaya' : patientAppointmentHistoryResponseModel.projectName!.length > 15 - ? '${patientAppointmentHistoryResponseModel.projectName!.substring(0, 12)}...' + ? '${patientAppointmentHistoryResponseModel.projectName!.substring(0, 15)}...' : patientAppointmentHistoryResponseModel.projectName!) .toShimmer2(isShow: isLoading), AppCustomChipWidget( diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index d0d107bc..e0c15d0f 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -97,7 +97,6 @@ class _LandingPageState extends State { super.dispose(); } - @override void initState() { authVM = context.read(); @@ -207,20 +206,20 @@ class _LandingPageState extends State { children: [ Stack(children: [ if (appState.isAuthenticated) - Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 24.h, width: 24.h).onPress(() async { - if (appState.isAuthenticated) { - notificationsViewModel.setNotificationStatusID(2); - notificationsViewModel.getAllNotifications(); - Navigator.of(context).push( - CustomPageRoute( - page: NotificationsListPage(), - // page: LoginScreen(), - ), - ); - } else { - await authVM.onLoginPressed(); - } - }), + Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 24.h, width: 24.h).onPress(() async { + if (appState.isAuthenticated) { + notificationsViewModel.setNotificationStatusID(2); + notificationsViewModel.getAllNotifications(); + Navigator.of(context).push( + CustomPageRoute( + page: NotificationsListPage(), + // page: LoginScreen(), + ), + ); + } else { + await authVM.onLoginPressed(); + } + }), (appState.isAuthenticated && (int.parse(todoSectionVM.notificationsCount ?? "0") > 0)) ? Positioned( right: 0, @@ -245,7 +244,7 @@ class _LandingPageState extends State { ) : SizedBox.shrink(), ]), - Utils.buildSvgWithAssets(icon: AppAssets.indoor_nav_icon, height: 24.h, width: 24.h).onPress(() { + Utils.buildSvgWithAssets(icon: AppAssets.indoor_nav_icon, height: 24.h, width: 24.w).onPress(() { openIndoorNavigationBottomSheet(context); }), Utils.buildSvgWithAssets(icon: AppAssets.contact_icon, height: 24.h, width: 24.h).onPress(() { @@ -258,7 +257,7 @@ class _LandingPageState extends State { ); }), !appState.isAuthenticated - ? Utils.buildSvgWithAssets(icon: AppAssets.changeLanguageHomePageIcon, height: 18.h, width: 18.h).onPress(() { + ? Utils.buildSvgWithAssets(icon: AppAssets.changeLanguageHomePageIcon, height: 24.h, width: 24.h).onPress(() { context.setLocale(appState.isArabic() ? Locale('en', 'US') : Locale('ar', 'SA')); }) : SizedBox.shrink() @@ -322,7 +321,7 @@ class _LandingPageState extends State { LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(weight: FontWeight.w600), Row( children: [ - LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor,weight: FontWeight.w500), + LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), ], @@ -423,8 +422,7 @@ class _LandingPageState extends State { ) : Container( width: double.infinity, - decoration: RoundedRectangleBorder() - .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Padding( padding: EdgeInsets.all(16.h), child: Column( @@ -484,11 +482,7 @@ class _LandingPageState extends State { backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.10), textColor: AppColors.primaryRedColor, ), - Utils.buildSvgWithAssets( - icon: AppAssets.appointment_checkin_icon, - width: 24.h, - height: 24.h, - iconColor: AppColors.primaryRedColor), + Utils.buildSvgWithAssets(icon: AppAssets.appointment_checkin_icon, width: 24.h, height: 24.h, iconColor: AppColors.primaryRedColor), ], ), SizedBox(height: 8.h), diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 82226355..e25ed0b3 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -223,11 +223,11 @@ class FadedLargeServiceCard extends StatelessWidget { ), ), SizedBox(width: 12.w), - serviceCardData.title.toText18(weight: FontWeight.w500, color: AppColors.textColor).expanded, + serviceCardData.title.tr(context: context).toText18(weight: FontWeight.w500, color: AppColors.textColor).expanded, ], ), SizedBox(height: 10.h), - serviceCardData.subtitle.toText14(weight: FontWeight.w500, color: AppColors.blackBgColor, letterSpacing: 0), + serviceCardData.subtitle.tr(context: context).toText14(weight: FontWeight.w500, color: AppColors.blackBgColor, letterSpacing: 0), SizedBox(height: 12.h), CustomButton( text: serviceCardData.isBold ? "Visit Pharmacy Online".needTranslation : LocaleKeys.bookNow.tr(context: context), diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 88dfb13f..a3c2667b 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -71,7 +71,7 @@ class ProfileSettingsState extends State { } // Compute and clamp using sensible bounds (uses .h extension) - final double minH = 210.h; + final double minH = 215.h; final double maxH = 380.h; final double computed = (shorter * multiplier); @@ -420,7 +420,7 @@ class FamilyCardWidget extends StatelessWidget { ), ), ], - ).paddingOnly(top: 16.h, right: 16.w, left: 16.w, bottom: 12.h), + ).paddingOnly(top: 16.h, right: 16.w, left: 16.w, bottom: 0.h), 1.divider.paddingSymmetrical(16.w, 0.h), _buildActionButton(appState), ], @@ -451,7 +451,7 @@ class FamilyCardWidget extends StatelessWidget { borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, textColor: canSwitch ? AppColors.primaryRedColor : AppColors.whiteColor, iconColor: canSwitch ? AppColors.primaryRedColor : AppColors.whiteColor, - height: isFoldable ? 50.h : 40.h, + height: isFoldable ? 50.h : 45.h, fontSize: 14.f, ).paddingOnly(top: 12.h, right: 16.w, left: 16.w, bottom: 16.h); } diff --git a/pubspec.yaml b/pubspec.yaml index a8f62c87..02acec84 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -83,7 +83,7 @@ dependencies: open_filex: ^4.7.0 flutter_swiper_view: ^1.1.8 flutter_callkit_incoming: ^3.0.0 - device_preview: ^1.3.1 +# device_preview: ^1.3.1 location: ^8.0.1 gms_check: ^1.0.4 From cfd0c1673841046bd67d6c0ea78ff9eff7cc04bd Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 28 Jan 2026 14:03:20 +0300 Subject: [PATCH 40/67] updates & fixes --- ios/Podfile | 2 + lib/core/api/api_client.dart | 4 +- .../appointment_payment_page.dart | 14 +- .../widgets/appointment_card.dart | 173 ++++++++++-------- .../appointment_checkin_bottom_sheet.dart | 1 + .../widgets/appointment_doctor_card.dart | 4 +- .../book_appointment_page.dart | 4 +- .../immediate_livecare_payment_details.dart | 160 +++++++++++----- .../immediate_livecare_payment_page.dart | 2 + ...r_online_checkin_payment_details_page.dart | 9 +- .../er_online_checkin_payment_page.dart | 5 +- .../wallet_payment_confirm_page.dart | 2 + lib/presentation/home/landing_page.dart | 2 +- .../home/widgets/small_service_card.dart | 4 +- lib/services/livecare_permission_service.dart | 92 ++++++++++ 15 files changed, 335 insertions(+), 143 deletions(-) create mode 100644 lib/services/livecare_permission_service.dart diff --git a/ios/Podfile b/ios/Podfile index 9249e54d..4c8bed13 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -54,6 +54,8 @@ post_install do |installer| 'PERMISSION_EVENTS_FULL_ACCESS=1', ## dart: PermissionGroup.reminders 'PERMISSION_REMINDERS=1', + ## dart: PermissionGroup.notification + 'PERMISSION_NOTIFICATIONS=1', ] build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' build_configuration.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index ba8f627a..f87de290 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -208,10 +208,10 @@ class ApiClientImp implements ApiClient { // Handle body encoding based on isBodyPlainText flag final dynamic requestBody = isBodyPlainText ? body : json.encode(body); + debugPrint("uri: ${Uri.parse(url.trim())}"); + debugPrint("body: ${json.encode(body)}", wrapWidth: 2048); final response = await http.post(Uri.parse(url.trim()), body: requestBody, headers: headers); final int statusCode = response.statusCode; - log("uri: ${Uri.parse(url.trim())}"); - log("body: ${json.encode(body)}"); // log("response.body: ${response.body}"); if (statusCode < 200 || statusCode >= 400) { onFailure('Error While Fetching data', statusCode, failureType: StatusCodeFailure("Error While Fetching data")); diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart index f817a898..dc9213f7 100644 --- a/lib/presentation/appointments/appointment_payment_page.dart +++ b/lib/presentation/appointments/appointment_payment_page.dart @@ -459,7 +459,6 @@ class _AppointmentPaymentPageState extends State { await payfortViewModel.checkPaymentStatus( transactionID: transID, onSuccess: (apiResponse) async { - print(apiResponse.data); if (payfortViewModel.payfortCheckPaymentStatusResponseModel!.responseMessage!.toLowerCase() == "success") { await myAppointmentsViewModel.createAdvancePayment( paymentMethodName: selectedPaymentMethod, @@ -517,6 +516,7 @@ class _AppointmentPaymentPageState extends State { }); }); } else { + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), @@ -564,14 +564,7 @@ class _AppointmentPaymentPageState extends State { } startApplePay() async { - showCommonBottomSheet(context, - child: Utils.getLoadingWidget(), - callBackFunc: (str) {}, - title: "", - height: ResponsiveExtension.screenHeight * 0.3, - isCloseButtonVisible: false, - isDismissible: false, - isFullScreen: false); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); transID = Utils.getAppointmentTransID( widget.patientAppointmentHistoryResponseModel.projectID, widget.patientAppointmentHistoryResponseModel.clinicID, @@ -642,7 +635,7 @@ class _AppointmentPaymentPageState extends State { currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", onFailed: (failureResult) async { log("failureResult: ${failureResult.message.toString()}"); - Navigator.of(context).pop(); + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), @@ -652,6 +645,7 @@ class _AppointmentPaymentPageState extends State { ); }, onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); log("successResult: ${successResult.responseMessage.toString()}"); selectedPaymentMethod = successResult.paymentOption ?? "VISA"; checkPaymentStatus(); diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index e1748c3a..975308fc 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -224,83 +224,108 @@ class AppointmentCard extends StatelessWidget { } Widget _buildActionArea(BuildContext context, AppState appState) { - if (isFromMedicalReport) { - if (isForEyeMeasurements) { - return SizedBox.shrink(); - } else { - return CustomButton( - text: LocaleKeys.selectAppointment.tr(context: context), - onPressed: () { - if (isForFeedback) { - contactUsViewModel!.setPatientFeedbackSelectedAppointment(patientAppointmentHistoryResponseModel); - } else { - medicalFileViewModel!.setSelectedMedicalReportAppointment(patientAppointmentHistoryResponseModel); - } - Navigator.pop(context, false); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - // height: isTablet || isFoldable ? 46.h : 40.h, - height: 40.h, - icon: AppAssets.checkmark_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - ); + if ((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) && AppointmentType.isArrived(patientAppointmentHistoryResponseModel)) { + return CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), + ), + ) + .then((_) { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: isTablet || isFoldable ? 46.h : 40.h, + height: 40.h, + ); + } else { + if (isFromMedicalReport) { + if (isForEyeMeasurements) { + return SizedBox.shrink(); + } else { + return CustomButton( + text: LocaleKeys.selectAppointment.tr(context: context), + onPressed: () { + if (isForFeedback) { + contactUsViewModel!.setPatientFeedbackSelectedAppointment(patientAppointmentHistoryResponseModel); + } else { + medicalFileViewModel!.setSelectedMedicalReportAppointment(patientAppointmentHistoryResponseModel); + } + Navigator.pop(context, false); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: isTablet || isFoldable ? 46.h : 40.h, + height: 40.h, + icon: AppAssets.checkmark_icon, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, + ); + } } - } - return Row( - children: [ - Expanded( - flex: 6, - child: (AppointmentType.isArrived(patientAppointmentHistoryResponseModel) - ? _getArrivedButton(context) - : CustomButton( - text: AppointmentType.getNextActionText(patientAppointmentHistoryResponseModel.nextAction), - onPressed: () => _goToDetails(context), - backgroundColor: - AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.15), - borderColor: - AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), - textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppointmentType.getNextActionIcon(patientAppointmentHistoryResponseModel.nextAction), - iconColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - iconSize: 15.h, - )) - .toShimmer2(isShow: isLoading), - ), - SizedBox(width: 8.h), - Expanded( - flex: 1, - child: Container( - height: (isFoldable || isTablet) ? 50.h : 40.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.textColor, borderRadius: 10.h), - child: Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon, - iconColor: AppColors.whiteColor, - width: 24.w, - height: 24.h, - fit: BoxFit.contain, + return Row( + children: [ + Expanded( + flex: 6, + child: (AppointmentType.isArrived(patientAppointmentHistoryResponseModel) + ? _getArrivedButton(context) + : CustomButton( + text: AppointmentType.getNextActionText(patientAppointmentHistoryResponseModel.nextAction), + onPressed: () => _goToDetails(context), + backgroundColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.15), + borderColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), + textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppointmentType.getNextActionIcon(patientAppointmentHistoryResponseModel.nextAction), + iconColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), + iconSize: 15.h, + )) + .toShimmer2(isShow: isLoading), + ), + SizedBox(width: 8.h), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.textColor, borderRadius: 10.h), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon, + iconColor: AppColors.whiteColor, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + ), ), - ), - ).toShimmer2(isShow: isLoading).onPress(() { - _goToDetails(context); - }), - ), - ], - ); + ).toShimmer2(isShow: isLoading).onPress(() { + _goToDetails(context); + }), + ), + ], + ); + } } Widget _getArrivedButton(BuildContext context) { diff --git a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart index c5139f17..b87a0a36 100644 --- a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart +++ b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart @@ -36,6 +36,7 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { @override Widget build(BuildContext context) { + locationUtils = getIt.get(); appState = getIt.get(); FlutterNfcKit.nfcAvailability.then((value) { _supportsNFC = (value == NFCAvailability.available); diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index 0c4aec14..8583d9bb 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -89,8 +89,8 @@ class AppointmentDoctorCard extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: (patientAppointmentHistoryResponseModel.clinicName!.length > 15 - ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 12)}...' + labelText: (patientAppointmentHistoryResponseModel.clinicName!.length > 20 + ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' : patientAppointmentHistoryResponseModel.clinicName!), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index cf5eef34..fa239797 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -458,8 +458,8 @@ class _BookAppointmentPageState extends State { ), SizedBox(width: 16.w), CustomButton( - height: 40.h, - width: 40.w, + height: 42.h, + width: 42.w, text: "", onPressed: () => context.navigateWithName(AppRoutes.userInfoSelection), icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index 3e48f8bc..d522b454 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -18,6 +18,7 @@ import 'package:hmg_patient_app_new/presentation/book_appointment/livecare/immed import 'package:hmg_patient_app_new/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; +import 'package:hmg_patient_app_new/services/livecare_permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -208,7 +209,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { ? CustomButton( text: LocaleKeys.confirmLiveCare.tr(context: context), onPressed: () async { - await askVideoCallPermission().then((val) async { + await askVideoCallPermission(context).then((val) async { if (val) { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingLiveCareRequest.tr(context: context)); @@ -271,31 +272,32 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { : CustomButton( text: LocaleKeys.payNow.tr(context: context), onPressed: () async { - await askVideoCallPermission().then((val) { + await askVideoCallPermission(context).then((val) { if (val) { Navigator.of(context).push( CustomPageRoute( page: ImmediateLiveCarePaymentPage(), ), ); - } else { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: context), - context, - child: Utils.getWarningWidget( - loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), - isShowActionButtons: true, - onCancelTap: () { - Navigator.pop(context); - }, - onConfirmTap: () async { - openAppSettings(); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); } + // else { + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: context), + // context, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // Navigator.pop(context); + // }, + // onConfirmTap: () async { + // openAppSettings(); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + // } }); }, backgroundColor: AppColors.infoColor, @@ -318,35 +320,111 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { ); } - Future askVideoCallPermission() async { - bool hasPermission = false; - if (Platform.isIOS) { - Map statuses = await [Permission.camera, Permission.microphone].request(); + Future askVideoCallPermission(BuildContext context) async { + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + + // If service returned nothing (error), treat as not granted + if (statuses.isEmpty) return false; + + bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + bool notifGranted = statuses[Permission.notification]?.isGranted ?? false; - if (statuses[Permission.camera] == PermissionStatus.granted && statuses[Permission.microphone] == PermissionStatus.granted) { - // Camera permission granted - hasPermission = true; - } else { - hasPermission = false; - } - } else { - Map statuses = await [Permission.camera, Permission.microphone, Permission.notification].request(); + // If all required permissions are already granted + if (cameraGranted && micGranted && notifGranted) return true; - if (statuses[Permission.camera] == PermissionStatus.granted && statuses[Permission.microphone] == PermissionStatus.granted && statuses[Permission.notification] == PermissionStatus.granted) { - // Camera permission granted - hasPermission = true; - } else { - hasPermission = false; - } + // Collect only the missing permissions + final missing = []; + if (!cameraGranted) missing.add(Permission.camera); + if (!micGranted) missing.add(Permission.microphone); + if (!notifGranted) missing.add(Permission.notification); + + // If any of the missing permissions are permanently denied/restricted -> open settings (single dialog) + final permanent = missing.where((p) => (statuses[p]?.isPermanentlyDenied ?? false) || (statuses[p]?.isRestricted ?? false)).toList(); + if (permanent.isNotEmpty) { + final names = permanent.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); + final message = permanent.length == 1 ? '$names permission is permanently denied. Open app settings to allow it.' : '$names permissions are permanently denied. Open app settings to allow them.'; + await LiveCarePermissionService.instance.showOpenSettingsDialog( + context, + title: "Permissions Required", + message: message, + ); + return false; } - return hasPermission; + // Show one combined retry dialog for all missing permissions + final missingNames = missing.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); + final retry = await showDialog( + context: context, + builder: (c) => AlertDialog( + title: const Text('Permissions required'), + content: Text('$missingNames permission${missing.length > 1 ? 's are' : ' is'} required to start the video call. Retry now?'), + actions: [ + TextButton(onPressed: () => Navigator.of(c).pop(false), child: const Text('Cancel')), + TextButton(onPressed: () => Navigator.of(c).pop(true), child: const Text('Retry')), + ], + ), + ); + + if (retry != true) return false; - // if (!(await Permission.camera.request().isGranted) || !(await Permission.microphone.request().isGranted)) { - // return false; - // } + // Request only the missing permissions + final newStatuses = {}; + for (final p in missing) { + newStatuses[p] = await p.request(); + } + + // Update grant state (preserve previously granted ones) + cameraGranted = newStatuses[Permission.camera]?.isGranted ?? cameraGranted; + micGranted = newStatuses[Permission.microphone]?.isGranted ?? micGranted; + notifGranted = newStatuses[Permission.notification]?.isGranted ?? notifGranted; + + // If any requested permission is now permanently denied -> open settings + final newlyPermanent = missing.where((p) => (newStatuses[p]?.isPermanentlyDenied ?? false) || (newStatuses[p]?.isRestricted ?? false)).toList(); + if (newlyPermanent.isNotEmpty) { + final names = newlyPermanent.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); + final message = + newlyPermanent.length == 1 ? '$names permission is permanently denied. Open app settings to allow it.' : '$names permissions are permanently denied. Open app settings to allow them.'; + await LiveCarePermissionService.instance.showOpenSettingsDialog( + context, + title: "Permissions Required", + message: message, + ); + return false; + } + + return cameraGranted && micGranted && notifGranted; } + // Future askVideoCallPermission() async { + // bool hasPermission = false; + // if (Platform.isIOS) { + // Map statuses = await [Permission.camera, Permission.microphone].request(); + // + // if (statuses[Permission.camera] == PermissionStatus.granted && statuses[Permission.microphone] == PermissionStatus.granted) { + // // Camera permission granted + // hasPermission = true; + // } else { + // hasPermission = false; + // } + // } else { + // Map statuses = await [Permission.camera, Permission.microphone, Permission.notification].request(); + // + // if (statuses[Permission.camera] == PermissionStatus.granted && statuses[Permission.microphone] == PermissionStatus.granted && statuses[Permission.notification] == PermissionStatus.granted) { + // // Camera permission granted + // hasPermission = true; + // } else { + // hasPermission = false; + // } + // } + // + // return hasPermission; + // + // // if (!(await Permission.camera.request().isGranted) || !(await Permission.microphone.request().isGranted)) { + // // return false; + // // } + // } + String getLiveCareType(BuildContext context, int callType) { switch (callType) { case 1: diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart index 9ae7ee30..73da69f5 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart @@ -432,6 +432,7 @@ class _ImmediateLiveCarePaymentPageState extends State } startApplePay() async { - // showCommonBottomSheet(context, - // child: Utils.getLoadingWidget(), callBackFunc: (str) {}, title: "", height: ResponsiveExtension.screenHeight * 0.3, isCloseButtonVisible: false, isDismissible: false, isFullScreen: false); LoaderBottomSheet.showLoader(); transID = Utils.getAdvancePaymentTransID( emergencyServicesViewModel.selectedHospital!.iD, @@ -405,8 +403,8 @@ class _ErOnlineCheckinPaymentPageState extends State applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", onFailed: (failureResult) async { + LoaderBottomSheet.hideLoader(); log("failureResult: ${failureResult.message.toString()}"); - Navigator.of(context).pop(); showCommonBottomSheetWithoutHeight( context, child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), @@ -416,6 +414,7 @@ class _ErOnlineCheckinPaymentPageState extends State ); }, onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); log("successResult: ${successResult.responseMessage.toString()}"); selectedPaymentMethod = successResult.paymentOption ?? "VISA"; checkPaymentStatus(); diff --git a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart index 3dec5aa8..4585b7d0 100644 --- a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart +++ b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart @@ -316,6 +316,8 @@ class _WalletPaymentConfirmPageState extends State { context, child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), callBackFunc: () { + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); Navigator.of(context).pop(); Navigator.of(context).pop(); }, diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index e0c15d0f..a8a64fa6 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -652,7 +652,7 @@ class _LandingPageState extends State { ], ).paddingSymmetrical(24.w, 0.h), SizedBox( - height: 411.h, + height: 431.h, child: ListView.separated( scrollDirection: Axis.horizontal, itemCount: LandingPageData.getServiceCardsList.length, diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index cf49a263..4685e487 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -65,10 +65,10 @@ class SmallServiceCard extends StatelessWidget { Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), SizedBox(height: 6.h), if (isFoldable || isTablet) ...[ - title.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + title.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 2), subtitle.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), ] else ...[ - title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 2), subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), ] ], diff --git a/lib/services/livecare_permission_service.dart b/lib/services/livecare_permission_service.dart new file mode 100644 index 00000000..a9a5d294 --- /dev/null +++ b/lib/services/livecare_permission_service.dart @@ -0,0 +1,92 @@ +import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:permission_handler/permission_handler.dart'; + +class LiveCarePermissionService { + LiveCarePermissionService._(); + + static final LiveCarePermissionService instance = LiveCarePermissionService._(); + + // Guard to prevent concurrent permission requests + Completer>? _ongoingRequest; + + /// Requests camera, microphone and notification permissions together and + /// returns the final map of permission statuses. + /// This method does NOT show any dialogs — UI decisions must be done by caller. + Future> requestCameraMicAndNotification(BuildContext context) async { + if (_ongoingRequest != null) { + return _ongoingRequest!.future; + } + + _ongoingRequest = Completer>(); + final completer = _ongoingRequest!; + + final permissions = [ + Permission.camera, + Permission.microphone, + Permission.notification, + ]; + + try { + final statuses = await permissions.request(); + + // Ensure all requested keys exist in the returned map (some platforms may omit) + final result = {}; + for (final p in permissions) { + result[p] = statuses[p] ?? await p.status; + } + + if (!completer.isCompleted) completer.complete(result); + return completer.future; + } catch (e) { + if (!completer.isCompleted) completer.complete({}); + return completer.future; + } finally { + _ongoingRequest = null; + } + } + + /// Show an "open settings" dialog (kept as helper for the UI layer). + Future showOpenSettingsDialog(BuildContext context, {required String title, required String message}) async { + return showCommonBottomSheetWithoutHeight( + title: title, + context, + child: Utils.getWarningWidget( + loadingText: message, + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + openAppSettings(); + Navigator.of(context).pop(); + }), + isFullScreen: false, + isCloseButtonVisible: true, + callBackFunc: () {}, + ); + // return showDialog( + // context: context, + // builder: (c) => ConfirmDialog( + // title: '$title Permission', + // message: message, + // onTap: () { + // openAppSettings(); + // Navigator.of(c).pop(); + // }, + // okTitle: LocaleKeys.ok.tr(context: c), + // ), + // ); + } + + String friendlyName(Permission permission) { + if (permission == Permission.camera) return 'Camera'; + if (permission == Permission.microphone) return 'Microphone'; + if (permission == Permission.notification) return 'Notifications'; + return permission.toString(); + } +} From 70a6d90ce37f5b844990d24af4d5a275ba80b007 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 29 Jan 2026 14:14:52 +0300 Subject: [PATCH 41/67] updates & fixes --- assets/langs/ar-SA.json | 4 +-- assets/langs/en-US.json | 5 +--- lib/core/api/api_client.dart | 2 +- lib/core/api_consts.dart | 2 +- lib/extensions/string_extensions.dart | 25 +++++++++++++++++++ lib/main.dart | 2 +- .../appointment_details_page.dart | 7 +++++- .../widgets/appointment_card.dart | 14 ++++++----- .../home/widgets/small_service_card.dart | 8 +++--- .../ancillary_procedures_details_page.dart | 3 ++- .../widgets/ancillary_orders_list.dart | 8 +++--- lib/splashPage.dart | 2 +- 12 files changed, 54 insertions(+), 28 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 178b4c05..d64b9b7c 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1526,8 +1526,6 @@ "trackerAndOthers": "المتتبع وأخرى", "bmi": "مؤشر كتلة الجسم", "yesPleaseINeedHelp": "نعم، من فضلك أريد المساعدة", - "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة" + "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة", "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة" - - } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index d6f52289..03b766d5 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1517,9 +1517,6 @@ "trackerAndOthers": "Tracker & Others", "bmi": "BMI", "yesPleaseINeedHelp": "Yes, Please I need help", - "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic" + "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic", "unableToSendOTP": "Unable to send Verification OTP" - - - } diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index f87de290..c063932f 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -182,7 +182,7 @@ class ApiClientImp implements ApiClient { } // body['TokenID'] = "@dm!n"; - // body['PatientID'] = 1018977; + // body['PatientID'] = 4769038; // body['PatientTypeID'] = 1; // // body['PatientOutSA'] = 0; diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 8319c9de..bec908bc 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 1df051ea..30b0f7e6 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -62,6 +62,31 @@ extension EmailValidator on String { decorationColor: color ?? AppColors.blackColor), ); + Widget toText9( + {Color? color, + FontWeight? weight, + bool isBold = false, + bool isUnderLine = false, + bool isCenter = false, + int? maxlines, + FontStyle? fontStyle, + TextOverflow? textOverflow, + double letterSpacing = 0}) => + Text( + this, + textAlign: isCenter ? TextAlign.center : null, + maxLines: maxlines, + overflow: textOverflow, + style: TextStyle( + fontSize: 9.f, + fontStyle: fontStyle ?? FontStyle.normal, + fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), + color: color ?? AppColors.blackColor, + letterSpacing: letterSpacing, + decoration: isUnderLine ? TextDecoration.underline : null, + decorationColor: color ?? AppColors.blackColor), + ); + Widget toText11( {Color? color, FontWeight? weight, diff --git a/lib/main.dart b/lib/main.dart index 6010a05d..1137261a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -224,7 +224,7 @@ class MyApp extends StatelessWidget { return MaterialApp( title: 'Dr. AlHabib', builder: (context, mchild) { - return MediaQuery(data: MediaQuery.of(context).copyWith(textScaler: TextScaler.linear(1.0)), child: mchild!); + return MediaQuery(data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), child: mchild!); }, showSemanticsDebugger: false, debugShowCheckedModeBanner: false, diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 3f98e6d4..46ed33e4 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -59,6 +59,8 @@ class _AppointmentDetailsPageState extends State { late LabViewModel labViewModel; late RadiologyViewModel radiologyViewModel; + String mapURL = ""; + @override void initState() { scheduleMicrotask(() async { @@ -212,8 +214,11 @@ class _AppointmentDetailsPageState extends State { borderRadius: BorderRadius.circular(24.r), // Todo: what is this???? Api Key??? 😲 child: Image.network( - "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=350x165&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", + "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x165&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", fit: BoxFit.contain, + // errorBuilder: (cxt, child, tr) { + // return SizedBox.shrink(); + // }, ), ), Positioned( diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index 975308fc..aa82b51f 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -151,7 +151,9 @@ class AppointmentCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h), SizedBox(height: 2.h), - "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), + (isFoldable || isTablet) + ? "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText9(isBold: true, color: AppColors.textColor) + : "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), ], ), ).circle(100).toShimmer2(isShow: isLoading), @@ -242,7 +244,7 @@ class AppointmentCard extends StatelessWidget { backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), @@ -267,7 +269,7 @@ class AppointmentCard extends StatelessWidget { backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), @@ -292,7 +294,7 @@ class AppointmentCard extends StatelessWidget { backgroundColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.15), borderColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), @@ -365,7 +367,7 @@ class AppointmentCard extends StatelessWidget { backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), @@ -383,7 +385,7 @@ class AppointmentCard extends StatelessWidget { backgroundColor: AppColors.greyColor, borderColor: AppColors.greyColor, textColor: AppColors.blackColor, - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 4685e487..84ef6fa2 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -65,11 +65,11 @@ class SmallServiceCard extends StatelessWidget { Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h), SizedBox(height: 6.h), if (isFoldable || isTablet) ...[ - title.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 2), - subtitle.tr(context: context).toText11(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + title.tr(context: context).toText10(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1), + subtitle.tr(context: context).toText10(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1), ] else ...[ - title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 2), - subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2), + title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1), + subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1), ] ], ), diff --git a/lib/presentation/todo_section/ancillary_procedures_details_page.dart b/lib/presentation/todo_section/ancillary_procedures_details_page.dart index f6046737..9e97509e 100644 --- a/lib/presentation/todo_section/ancillary_procedures_details_page.dart +++ b/lib/presentation/todo_section/ancillary_procedures_details_page.dart @@ -153,7 +153,7 @@ class _AncillaryOrderDetailsListState extends State { ), ), ), - if (orderData != null) _buildStickyPaymentButton(orderData), + if (orderData != null && !viewModel.isAncillaryDetailsProceduresLoading) _buildStickyPaymentButton(orderData), ], ); }), @@ -164,6 +164,7 @@ class _AncillaryOrderDetailsListState extends State { return ListView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, itemCount: 3, itemBuilder: (context, index) { return AncillaryOrderCard( diff --git a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart index 71d2cf03..05eb6c7c 100644 --- a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart @@ -215,9 +215,7 @@ class AncillaryOrderCard extends StatelessWidget { ).toShimmer2(isShow: isLoading), ], ), - - SizedBox(height: 12.h), - + SizedBox(height: 6.h), // Action Buttons Row( children: [ @@ -236,7 +234,7 @@ class AncillaryOrderCard extends StatelessWidget { backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), @@ -260,7 +258,7 @@ class AncillaryOrderCard extends StatelessWidget { backgroundColor: Color(0xffFEE9EA), borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), - fontSize: 14.f, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, fontWeight: FontWeight.w500, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), diff --git a/lib/splashPage.dart b/lib/splashPage.dart index 33d3d23d..49680a2a 100644 --- a/lib/splashPage.dart +++ b/lib/splashPage.dart @@ -56,7 +56,7 @@ class _SplashScreenState extends State { await notificationService.initialize(onNotificationClick: (payload) { // Handle notification click here }); - await ZoomService().initializeZoomSDK(); + ZoomService().initializeZoomSDK(); if (isAppOpenedFromCall) { navigateToTeleConsult(); } else { From 8472a455307e2e1cef0172e2812f46d85b7c149e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 29 Jan 2026 15:24:27 +0300 Subject: [PATCH 42/67] updates --- lib/core/api_consts.dart | 2 +- .../appointment_details_page.dart | 15 ++++---- .../widgets/appointment_card.dart | 36 ++++++++++++------- .../widgets/appointment_doctor_card.dart | 8 +++-- .../health_calculators_page.dart | 3 +- .../widgets/ancillary_orders_list.dart | 19 ++++------ 6 files changed, 46 insertions(+), 37 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index bec908bc..8319c9de 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 46ed33e4..daf5b616 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -15,6 +15,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; +import 'package:hmg_patient_app_new/features/contact_us/models/feedback_type.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; @@ -92,6 +93,7 @@ class _AppointmentDetailsPageState extends State { title: LocaleKeys.appointmentDetails.tr(context: context), report: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? () { + contactUsViewModel.setSelectedFeedbackType(FeedbackType(id: 1, nameEN: "Complaint for appointment", nameAR: 'شكوى على موعد')); contactUsViewModel.setPatientFeedbackSelectedAppointment(widget.patientAppointmentHistoryResponseModel); Navigator.of(context).push( CustomPageRoute( @@ -216,9 +218,6 @@ class _AppointmentDetailsPageState extends State { child: Image.network( "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x165&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", fit: BoxFit.contain, - // errorBuilder: (cxt, child, tr) { - // return SizedBox.shrink(); - // }, ), ), Positioned( @@ -756,9 +755,10 @@ class _AppointmentDetailsPageState extends State { ], ).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h), AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) - ? CustomButton( - text: LocaleKeys.rebookAppointment.tr(context: context), - onPressed: () { + ? !widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! + ? CustomButton( + text: LocaleKeys.rebookAppointment.tr(context: context), + onPressed: () { openDoctorScheduleCalendar(); }, backgroundColor: AppColors.successColor, @@ -772,7 +772,8 @@ class _AppointmentDetailsPageState extends State { icon: AppAssets.add_icon, iconColor: AppColors.whiteColor, iconSize: 18.h, - ).paddingSymmetrical(16.h, 24.h) + ).paddingSymmetrical(16.h, 24.h) + : SizedBox.shrink() : CustomButton( text: AppointmentType.getNextActionText(widget.patientAppointmentHistoryResponseModel.nextAction), onPressed: () { diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index aa82b51f..a8735d00 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -153,7 +153,7 @@ class AppointmentCard extends StatelessWidget { SizedBox(height: 2.h), (isFoldable || isTablet) ? "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText9(isBold: true, color: AppColors.textColor) - : "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), + : "${patientAppointmentHistoryResponseModel.decimalDoctorRate ?? "0.0"}".toText11(isBold: true, color: AppColors.textColor), ], ), ).circle(100).toShimmer2(isShow: isLoading), @@ -228,18 +228,27 @@ class AppointmentCard extends StatelessWidget { Widget _buildActionArea(BuildContext context, AppState appState) { if ((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) && AppointmentType.isArrived(patientAppointmentHistoryResponseModel)) { return CustomButton( - text: LocaleKeys.viewDetails.tr(context: context), + text: isFromMedicalReport ? LocaleKeys.selectAppointment.tr(context: context) : LocaleKeys.viewDetails.tr(context: context), onPressed: () { - Navigator.of(context) - .push( - CustomPageRoute( - page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), - ), - ) - .then((_) { - myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, false); - }); + if (isFromMedicalReport) { + if (isForFeedback) { + contactUsViewModel!.setPatientFeedbackSelectedAppointment(patientAppointmentHistoryResponseModel); + } else { + medicalFileViewModel!.setSelectedMedicalReportAppointment(patientAppointmentHistoryResponseModel); + } + Navigator.pop(context, false); + } else { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), + ), + ) + .then((_) { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + }); + } }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, @@ -250,6 +259,9 @@ class AppointmentCard extends StatelessWidget { padding: EdgeInsets.symmetric(horizontal: 10.w), // height: isTablet || isFoldable ? 46.h : 40.h, height: 40.h, + icon: isFromMedicalReport ? AppAssets.checkmark_icon : null, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, ); } else { if (isFromMedicalReport) { diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index 8583d9bb..6eaa379f 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -159,8 +159,9 @@ class AppointmentDoctorCard extends StatelessWidget { icon: AppAssets.ask_doctor_icon, iconColor: AppColors.primaryRedColor, ) - : CustomButton( - text: LocaleKeys.rebookSameDoctor.tr(), + : !patientAppointmentHistoryResponseModel.isLiveCareAppointment! + ? CustomButton( + text: LocaleKeys.rebookSameDoctor.tr(), onPressed: () { onRescheduleTap(); }, @@ -175,7 +176,8 @@ class AppointmentDoctorCard extends StatelessWidget { icon: AppAssets.rebook_appointment_icon, iconColor: AppColors.blackColor, iconSize: 14.h, - ); + ) + : SizedBox.shrink(); } else { return patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false ? CustomButton( diff --git a/lib/presentation/health_calculators_and_converts/health_calculators_page.dart b/lib/presentation/health_calculators_and_converts/health_calculators_page.dart index 95e9aec6..aae25b03 100644 --- a/lib/presentation/health_calculators_and_converts/health_calculators_page.dart +++ b/lib/presentation/health_calculators_and_converts/health_calculators_page.dart @@ -204,7 +204,7 @@ class _HealthCalculatorsPageState extends State { crossAxisCount: 3, // 4 icons per row crossAxisSpacing: 16.w, mainAxisSpacing: 16.w, - childAspectRatio: 0.80), + childAspectRatio: 0.85), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: type == HealthCalculatorEnum.general ? generalHealthServices.length : womenHealthServices.length, @@ -214,6 +214,7 @@ class _HealthCalculatorsPageState extends State { icon: type == HealthCalculatorEnum.general ? generalHealthServices[index].icon : womenHealthServices[index].icon, labelText: type == HealthCalculatorEnum.general ? generalHealthServices[index].title : womenHealthServices[index].title, onTap: () { + Navigator.pop(context); Navigator.of(context).push( CustomPageRoute( page: HealthCalculatorDetailedPage( diff --git a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart index 05eb6c7c..58ee6d46 100644 --- a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart @@ -71,19 +71,12 @@ class AncillaryOrdersList extends StatelessWidget { return Center( child: Padding( padding: EdgeInsets.symmetric(vertical: 40.h), - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.r, - hasShadow: false, - ), - child: Utils.getNoDataWidget( - context, - noDataText: LocaleKeys.youDontHaveAnyAncillaryOrdersYet.tr(context: context), - isSmallWidget: true, - width: 62.w, - height: 62.h, - ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.youDontHaveAnyAncillaryOrdersYet.tr(context: context), + isSmallWidget: true, + width: 62.w, + height: 62.h, ), ), ); From bafe835ebd759d3a0e3005e84e4459d5168bba0b Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 29 Jan 2026 16:12:19 +0300 Subject: [PATCH 43/67] Scheduled livecare appointment booking fixes --- .../book_appointments_view_model.dart | 12 +++- .../appointment_details_page.dart | 2 +- .../book_appointment/select_clinic_page.dart | 2 +- .../book_appointment/select_doctor_page.dart | 56 ++++++++++++++++++- 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index 664f2440..ac692b1a 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -340,6 +340,14 @@ class BookAppointmentsViewModel extends ChangeNotifier { notifyListeners(); } + setIsLiveCareDoctorsListLoading(bool value) { + if (value) { + liveCareDoctorsList.clear(); + } + isDoctorsListLoading = value; + notifyListeners(); + } + setIsClinicsListLoading(bool value) { if (value) { clinicsList.clear(); @@ -467,10 +475,10 @@ class BookAppointmentsViewModel extends ChangeNotifier { } Future getLiveCareDoctorsList({Function(dynamic)? onSuccess, Function(String)? onError}) async { - doctorsList.clear(); + liveCareDoctorsList.clear(); + notifyListeners(); final result = await bookAppointmentsRepo.getLiveCareDoctorsList(selectedLiveCareClinic.serviceID!, _appState.getAuthenticatedUser()!.age!, _appState.getAuthenticatedUser()!.gender!, onError: onError); - result.fold( (failure) async { onError!(LocaleKeys.noDoctorFound.tr()); diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index daf5b616..e93d6048 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -216,7 +216,7 @@ class _AppointmentDetailsPageState extends State { borderRadius: BorderRadius.circular(24.r), // Todo: what is this???? Api Key??? 😲 child: Image.network( - "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x165&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", + "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x${(MediaQuery.of(context).size.height * 0.35).toInt()}&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", fit: BoxFit.contain, ), ), diff --git a/lib/presentation/book_appointment/select_clinic_page.dart b/lib/presentation/book_appointment/select_clinic_page.dart index d96c9da9..ac40d693 100644 --- a/lib/presentation/book_appointment/select_clinic_page.dart +++ b/lib/presentation/book_appointment/select_clinic_page.dart @@ -941,7 +941,7 @@ class _SelectClinicPageState extends State { void onLiveCareClinicSelected(GetLiveCareClinicsResponseModel clinic) { bookAppointmentsViewModel.setLiveCareSelectedClinic(clinic); - bookAppointmentsViewModel.setIsDoctorsListLoading(true); + bookAppointmentsViewModel.setIsLiveCareDoctorsListLoading(true); Navigator.of(context).push( CustomPageRoute( page: SelectDoctorPage(), diff --git a/lib/presentation/book_appointment/select_doctor_page.dart b/lib/presentation/book_appointment/select_doctor_page.dart index 3723bee0..f8a0ad9d 100644 --- a/lib/presentation/book_appointment/select_doctor_page.dart +++ b/lib/presentation/book_appointment/select_doctor_page.dart @@ -95,9 +95,59 @@ class _SelectDoctorPageState extends State { child: Padding( padding: EdgeInsets.symmetric(horizontal: 24.h), child: Consumer(builder: (context, bookAppointmentsVM, child) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ + return bookAppointmentsViewModel.isLiveCareSchedule + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ListView.separated( + padding: EdgeInsets.only(top: 16.h), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: bookAppointmentsVM.isDoctorsListLoading ? 5 : (bookAppointmentsVM.liveCareDoctorsList.isNotEmpty ? bookAppointmentsVM.liveCareDoctorsList.length : 1), + itemBuilder: (context, index) { + // final isExpanded = bookAppointmentsVM.expandedGroupIndex == index; + final isExpanded = true; + return bookAppointmentsVM.isDoctorsListLoading + ? DoctorCard( + doctorsListResponseModel: DoctorsListResponseModel(), + isLoading: true, + bookAppointmentsViewModel: bookAppointmentsViewModel, + ) + : bookAppointmentsVM.liveCareDoctorsList.isEmpty + ? Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDoctorFound.tr()) + : AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + child: Padding( + padding: EdgeInsets.all(16.h), + child: DoctorCard( + isLoading: bookAppointmentsVM.isClinicsListLoading, + doctorsListResponseModel: bookAppointmentsVM.liveCareDoctorsList[index], + bookAppointmentsViewModel: bookAppointmentsViewModel, + ).onPress(() { + // onLiveCareClinicSelected(bookAppointmentsVM.liveCareClinicsList[index]); + }), + ), + ), + ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), + ), + SizedBox(height: 24.h), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ SizedBox(height: 16.h), Row( spacing: 8.h, From 5c684a6a0de1346b64b1fd6280c1d7412a69b07e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 2 Feb 2026 13:06:09 +0300 Subject: [PATCH 44/67] Doctor Rating details implemented --- assets/langs/ar-SA.json | 4 - assets/langs/en-US.json | 6 +- lib/core/api/api_client.dart | 1 - lib/core/api_consts.dart | 2 +- .../authentication_view_model.dart | 2 +- .../book_appointments_repo.dart | 48 +++++ .../book_appointments_view_model.dart | 44 ++++ .../doctor_rating_details_response_model.dart | 36 ++++ .../medical_file/medical_file_view_model.dart | 10 +- .../prescriptions_view_model.dart | 23 ++- .../todo_section/todo_section_view_model.dart | 23 ++- .../book_appointment/doctor_profile_page.dart | 36 +++- .../book_appointment/widgets/doctor_card.dart | 53 ++--- .../widgets/doctor_rating_details.dart | 195 ++++++++++++++++++ .../er_online_checkin_home.dart | 9 + .../patient_sickleaves_list_page.dart | 49 ++--- .../monthly_report/monthly_report.dart | 5 +- .../prescription_detail_page.dart | 11 +- .../prescriptions/prescription_item_view.dart | 81 ++------ .../prescriptions_list_page.dart | 33 +-- .../ancillary_procedures_details_page.dart | 1 + 21 files changed, 485 insertions(+), 187 deletions(-) create mode 100644 lib/features/book_appointments/models/resp_models/doctor_rating_details_response_model.dart create mode 100644 lib/presentation/book_appointment/widgets/doctor_rating_details.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index d64b9b7c..cb2b71ab 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1496,10 +1496,6 @@ "someRemarksAboutPrescription": "ستجدون هنا بعض الملاحظات حول الوصفة الطبية", "notifyMeBeforeConsumptionTime": "أبلغني قبل وقت الاستهلاك", "noMedicationsToday": "لا أدوية اليوم", - "route": "Route: {route}", - "frequency": "Frequency: {frequency}", - "instruction": "Instruction: {instruction}", - "duration": "Duration: {days}", "reminders": "تذكيرات", "reminderAddedToCalendar": "تمت إضافة تذكير إلى التقويم ✅", "errorWhileSettingCalendar": "حدث خطأ أثناء ضبط التقويم:{error}", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 03b766d5..e56d8611 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1487,10 +1487,8 @@ "someRemarksAboutPrescription": "some remarks about the prescription will be here", "notifyMeBeforeConsumptionTime": "Notify me before the consumption time", "noMedicationsToday": "No medications today", - "route": "Route: {route}", - "frequency": "Frequency: {frequency}", - "instruction": "Instruction: {instruction}", - "duration": "Duration: {days}", + "route": "Route", + "frequency": "Frequency", "reminders": "Reminders", "reminderAddedToCalendar": "Reminder added to calendar ✅", "errorWhileSettingCalendar": "Error while setting calendar: {error}", diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index c063932f..3eb8fa29 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -184,7 +184,6 @@ class ApiClientImp implements ApiClient { // body['TokenID'] = "@dm!n"; // body['PatientID'] = 4769038; // body['PatientTypeID'] = 1; - // // body['PatientOutSA'] = 0; // body['SessionID'] = "45786230487560q"; } diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 8319c9de..bec908bc 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 82061607..c49554fe 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -605,7 +605,7 @@ class AuthenticationViewModel extends ChangeNotifier { } // _appState.setUserBloodGroup = (activation.patientBlodType ?? ""); _appState.setAppAuthToken = activation.authenticationTokenId; - myAppointmentsVM.getActiveAppointmentsCount(); + // myAppointmentsVM.getActiveAppointmentsCount(); final request = RequestUtils.getAuthanticatedCommonRequest().toJson(); bool isUserAgreedBefore = await checkIfUserAgreedBefore(request: request); diff --git a/lib/features/book_appointments/book_appointments_repo.dart b/lib/features/book_appointments/book_appointments_repo.dart index cfd473ee..cab79ad7 100644 --- a/lib/features/book_appointments/book_appointments_repo.dart +++ b/lib/features/book_appointments/book_appointments_repo.dart @@ -30,6 +30,8 @@ abstract class BookAppointmentsRepo { Future>> getDoctorProfile(int clinicID, int projectID, int doctorId, {Function(dynamic)? onSuccess, Function(String)? onError}); + Future>> getDoctorRatingDetails(int doctorId, {Function(dynamic)? onSuccess, Function(String)? onError}); + Future>> getDoctorFreeSlots(int clinicID, int projectID, int doctorId, bool isBookingForLiveCare, {bool continueDentalPlan = false, Function(dynamic)? onSuccess, Function(String)? onError}); @@ -298,6 +300,52 @@ class BookAppointmentsRepoImp implements BookAppointmentsRepo { } } + @override + Future>> getDoctorRatingDetails(int doctorId, {Function(dynamic)? onSuccess, Function(String)? onError}) async { + Map mapDevice = { + "DoctorID": doctorId, + "PatientID": 0, + "License": true, + "IsRegistered": true, + "isDentalAllowedBackend": false, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + GET_DOCTOR_RATING_DETAILS, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + if (onError != null) { + onError(error); + } + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + if (onSuccess != null) { + onSuccess(response); + } + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + //TODO: Implement the logic for Dental & laser clinics @override Future>> getDoctorFreeSlots(int clinicID, int projectID, int doctorId, bool isBookingForLiveCare, diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index ac692b1a..34858b47 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/features/book_appointments/models/free_slot. import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/appointment_nearest_gate_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/dental_chief_complaints_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctor_profile_response_model.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctor_rating_details_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_clinic_list_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_patient_dental_plan_response_model.dart'; @@ -92,6 +93,9 @@ class BookAppointmentsViewModel extends ChangeNotifier { late DoctorsProfileResponseModel doctorsProfileResponseModel; + bool isDoctorRatingDetailsLoading = false; + List doctorDetailsList = []; + List slotsList = []; List docFreeSlots = []; List dayEvents = []; @@ -622,6 +626,46 @@ class BookAppointmentsViewModel extends ChangeNotifier { ); } + Future getDoctorRatingDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async { + isDoctorRatingDetailsLoading = true; + doctorDetailsList.clear(); + notifyListeners(); + + final result = await bookAppointmentsRepo.getDoctorRatingDetails(selectedDoctor.doctorID ?? 0, onSuccess: onSuccess, onError: onError); + + result.fold( + (failure) async { + if (onError != null) { + onError("Failed to load doctor rating details"); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error occurred"); + } + isDoctorRatingDetailsLoading = false; + } else if (apiResponse.messageStatus == 1) { + try { + apiResponse.data['DoctorRatingDetailsList'].forEach((v) { + doctorDetailsList.add(DoctorRateDetails.fromJson(v)); + }); + isDoctorRatingDetailsLoading = false; + // doctorRatingDetails = DoctorRateDetails.fromJson(apiResponse.data); + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data); + } + } catch (e) { + if (onError != null) { + onError("Failed to parse rating details: ${e.toString()}"); + } + } + } + }, + ); + } + Future getDoctorFreeSlots({bool isBookingForLiveCare = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { docFreeSlots.clear(); DateTime date; diff --git a/lib/features/book_appointments/models/resp_models/doctor_rating_details_response_model.dart b/lib/features/book_appointments/models/resp_models/doctor_rating_details_response_model.dart new file mode 100644 index 00000000..58668856 --- /dev/null +++ b/lib/features/book_appointments/models/resp_models/doctor_rating_details_response_model.dart @@ -0,0 +1,36 @@ +class DoctorRateDetails { + dynamic doctorID; + dynamic projectID; + dynamic clinicID; + dynamic rate; + dynamic patientNumber; + dynamic ratio; + + DoctorRateDetails( + {this.doctorID, + this.projectID, + this.clinicID, + this.rate, + this.patientNumber, + this.ratio}); + + DoctorRateDetails.fromJson(Map json) { + doctorID = json['DoctorID']; + projectID = json['ProjectID']; + clinicID = json['ClinicID']; + rate = json['Rate']; + patientNumber = json['PatientNumber']; + ratio = json['Ratio']; + } + + Map toJson() { + final Map data = new Map(); + data['DoctorID'] = this.doctorID; + data['ProjectID'] = this.projectID; + data['ClinicID'] = this.clinicID; + data['Rate'] = this.rate; + data['PatientNumber'] = this.patientNumber; + data['Ratio'] = this.ratio; + return data; + } +} diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index 17cbb94e..b26a87a1 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -41,6 +41,7 @@ class MedicalFileViewModel extends ChangeNotifier { List patientSickLeavesViewList = []; bool isSickLeavesSortByClinic = true; + bool isSickLeavesDataNeedsReloading = true; List patientAllergiesList = []; @@ -163,15 +164,15 @@ class MedicalFileViewModel extends ChangeNotifier { } setIsPatientSickLeaveListLoading(bool val) { - if (val) { + if (val && isSickLeavesDataNeedsReloading) { patientSickLeaveList.clear(); patientSickLeavesByClinic.clear(); patientSickLeavesByHospital.clear(); patientSickLeavesViewList.clear(); patientSickLeavePDFBase64 = ""; isSickLeavesSortByClinic = true; + isPatientSickLeaveListLoading = val; } - isPatientSickLeaveListLoading = val; notifyListeners(); } @@ -267,6 +268,10 @@ class MedicalFileViewModel extends ChangeNotifier { } Future getPatientSickLeaveList({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isSickLeavesDataNeedsReloading) { + return; + } + patientSickLeaveList.clear(); final result = await medicalFileRepo.getPatientSickLeavesList(); @@ -309,6 +314,7 @@ class MedicalFileViewModel extends ChangeNotifier { } } patientSickLeavesViewList = patientSickLeavesByClinic; + isSickLeavesDataNeedsReloading = false; notifyListeners(); if (onSuccess != null) { diff --git a/lib/features/prescriptions/prescriptions_view_model.dart b/lib/features/prescriptions/prescriptions_view_model.dart index 3f9af346..a7cd42f6 100644 --- a/lib/features/prescriptions/prescriptions_view_model.dart +++ b/lib/features/prescriptions/prescriptions_view_model.dart @@ -47,20 +47,24 @@ class PrescriptionsViewModel extends ChangeNotifier { late GeocodeResponse locationGeocodeResponse; bool isPrescriptionsDeliveryOrdersLoading = false; + + bool isPrescriptionsDataNeedsReloading = true; List prescriptionsOrderList = []; PrescriptionsViewModel({required this.prescriptionsRepo, required this.errorHandlerService, required this.navServices}); initPrescriptionsViewModel() { - patientPrescriptionOrders.clear(); - patientPrescriptionOrdersByClinic.clear(); - patientPrescriptionOrdersByHospital.clear(); - patientPrescriptionOrdersViewList.clear(); - prescriptionsOrderList.clear(); - isPrescriptionsOrdersLoading = true; + if (isPrescriptionsDataNeedsReloading) { + patientPrescriptionOrders.clear(); + patientPrescriptionOrdersByClinic.clear(); + patientPrescriptionOrdersByHospital.clear(); + patientPrescriptionOrdersViewList.clear(); + prescriptionsOrderList.clear(); + isPrescriptionsOrdersLoading = true; + getPatientPrescriptionOrders(); + } isSortByClinic = true; isPrescriptionsDeliveryOrdersLoading = true; - getPatientPrescriptionOrders(); notifyListeners(); } @@ -98,6 +102,10 @@ class PrescriptionsViewModel extends ChangeNotifier { } Future getPatientPrescriptionOrders({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isPrescriptionsDataNeedsReloading) { + return; + } + final result = await prescriptionsRepo.getPatientPrescriptionOrders(patientId: "1231755"); result.fold( @@ -131,6 +139,7 @@ class PrescriptionsViewModel extends ChangeNotifier { } } patientPrescriptionOrdersViewList = patientPrescriptionOrdersByClinic; + isPrescriptionsDataNeedsReloading = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); diff --git a/lib/features/todo_section/todo_section_view_model.dart b/lib/features/todo_section/todo_section_view_model.dart index 92d893ad..0f6cc873 100644 --- a/lib/features/todo_section/todo_section_view_model.dart +++ b/lib/features/todo_section/todo_section_view_model.dart @@ -13,17 +13,20 @@ class TodoSectionViewModel extends ChangeNotifier { String? notificationsCount = "0"; initializeTodoSectionViewModel() async { - patientAncillaryOrdersList.clear(); - isAncillaryOrdersLoading = true; - isAncillaryDetailsProceduresLoading = true; - notificationsCount = "0"; - getPatientOnlineAncillaryOrderList(); + if (isAncillaryOrdersNeedReloading) { + patientAncillaryOrdersList.clear(); + isAncillaryOrdersLoading = true; + isAncillaryDetailsProceduresLoading = true; + notificationsCount = "0"; + getPatientOnlineAncillaryOrderList(); + } getPatientDashboard(); } bool isAncillaryOrdersLoading = false; bool isAncillaryDetailsProceduresLoading = false; bool isProcessingPayment = false; + bool isAncillaryOrdersNeedReloading = true; List patientAncillaryOrdersList = []; List patientAncillaryOrderProceduresList = []; @@ -32,6 +35,11 @@ class TodoSectionViewModel extends ChangeNotifier { notifyListeners(); } + void setIsAncillaryOrdersNeedReloading(bool value) { + isAncillaryOrdersNeedReloading = value; + notifyListeners(); + } + Future getPatientDashboard({Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await todoSectionRepo.getPatientDashboard(); @@ -55,6 +63,10 @@ class TodoSectionViewModel extends ChangeNotifier { } Future getPatientOnlineAncillaryOrderList({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isAncillaryOrdersNeedReloading) { + return; + } + patientAncillaryOrdersList.clear(); isAncillaryOrdersLoading = true; notifyListeners(); @@ -71,6 +83,7 @@ class TodoSectionViewModel extends ChangeNotifier { } else if (apiResponse.messageStatus == 1) { patientAncillaryOrdersList = apiResponse.data!; isAncillaryOrdersLoading = false; + isAncillaryOrdersNeedReloading = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); diff --git a/lib/presentation/book_appointment/doctor_profile_page.dart b/lib/presentation/book_appointment/doctor_profile_page.dart index 72f242d2..c62404ab 100644 --- a/lib/presentation/book_appointment/doctor_profile_page.dart +++ b/lib/presentation/book_appointment/doctor_profile_page.dart @@ -11,6 +11,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/doctor_rating_details.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -108,9 +109,21 @@ class DoctorProfilePage extends StatelessWidget { ), SizedBox(height: 16.h), "Ratings".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - bookAppointmentsViewModel.doctorsProfileResponseModel.decimalDoctorRate.toString().toText16(isBold: true, color: AppColors.textColor), + bookAppointmentsViewModel.doctorsProfileResponseModel.decimalDoctorRate + .toString() + .toText16(isBold: true, color: AppColors.textColor, isUnderLine: true, decorationColor: AppColors.textColor), ], - ), + ).onPress(() { + bookAppointmentsViewModel.getDoctorRatingDetails(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.doctorRating.tr(context: context), + context, + child: DoctorRatingDetails(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }), SizedBox(width: 36.w), Column( children: [ @@ -122,15 +135,28 @@ class DoctorProfilePage extends StatelessWidget { ), SizedBox(height: 16.h), "Reviews".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - bookAppointmentsViewModel.doctorsProfileResponseModel.noOfPatientsRate.toString().toText16(isBold: true, color: AppColors.textColor), + bookAppointmentsViewModel.doctorsProfileResponseModel.noOfPatientsRate + .toString() + .toText16(isBold: true, color: AppColors.textColor, isUnderLine: true, decorationColor: AppColors.textColor), ], - ), + ).onPress(() { + bookAppointmentsViewModel.getDoctorRatingDetails(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.doctorRating.tr(context: context), + context, + child: DoctorRatingDetails(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }), ], ), SizedBox(height: 16.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), SizedBox(height: 16.h), - "Biography".toText14(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.docInfo.tr(context: context).toText14(weight: FontWeight.w600, color: AppColors.textColor), + SizedBox(height: 6.h), bookAppointmentsViewModel.doctorsProfileResponseModel.doctorProfileInfo!.toText12(fontWeight: FontWeight.w600, color: AppColors.greyTextColor), ], ).paddingSymmetrical(24.h, 0.h), diff --git a/lib/presentation/book_appointment/widgets/doctor_card.dart b/lib/presentation/book_appointment/widgets/doctor_card.dart index 97a941dd..e2009bb6 100644 --- a/lib/presentation/book_appointment/widgets/doctor_card.dart +++ b/lib/presentation/book_appointment/widgets/doctor_card.dart @@ -90,7 +90,7 @@ class DoctorCard extends StatelessWidget { Row( children: [ SizedBox( - width: MediaQuery.of(context).size.width * 0.49, + width: MediaQuery.of(context).size.width * 0.55, child: (isLoading ? "Dr John Smith" : "${doctorsListResponseModel.doctorTitle} ${doctorsListResponseModel.name}") .toString() .toText16(isBold: true, maxlines: 1), @@ -99,14 +99,14 @@ class DoctorCard extends StatelessWidget { ), SizedBox(height: 2.h), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox( - width: MediaQuery.of(context).size.width * 0.45, child: (isLoading ? "Consultant Cardiologist" : doctorsListResponseModel.speciality!.isNotEmpty - ? doctorsListResponseModel.speciality!.first + ? (doctorsListResponseModel.speciality!.first.length > 32 + ? '${doctorsListResponseModel.speciality!.first.substring(0, 32)}...' + : doctorsListResponseModel.speciality!.first) : "") .toString() .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor, maxLine: 2) @@ -121,6 +121,29 @@ class DoctorCard extends StatelessWidget { ).toShimmer2(isShow: isLoading), ], ), + SizedBox(height: 6.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: "${isLoading ? "Cardiologist" : doctorsListResponseModel.clinicName}", + ).toShimmer2(isShow: isLoading), + AppCustomChipWidget( + labelText: "${isLoading ? "Olaya Hospital" : doctorsListResponseModel.projectName}", + ).toShimmer2(isShow: isLoading), + bookAppointmentsViewModel.isNearestAppointmentSelected + ? doctorsListResponseModel.nearestFreeSlot != null + ? AppCustomChipWidget( + labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), + backgroundColor: AppColors.successColor, + textColor: AppColors.whiteColor, + ).toShimmer2(isShow: isLoading) + : SizedBox.shrink() + : SizedBox.shrink(), + ], + ), ], ), ), @@ -131,28 +154,6 @@ class DoctorCard extends StatelessWidget { ), ], ), - Wrap( - direction: Axis.horizontal, - spacing: 3.h, - runSpacing: 4.h, - children: [ - AppCustomChipWidget( - labelText: "${isLoading ? "Cardiologist" : doctorsListResponseModel.clinicName}", - ).toShimmer2(isShow: isLoading), - AppCustomChipWidget( - labelText: "${isLoading ? "Olaya Hospital" : doctorsListResponseModel.projectName}", - ).toShimmer2(isShow: isLoading), - bookAppointmentsViewModel.isNearestAppointmentSelected - ? doctorsListResponseModel.nearestFreeSlot != null - ? AppCustomChipWidget( - labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), - backgroundColor: AppColors.successColor, - textColor: AppColors.whiteColor, - ).toShimmer2(isShow: isLoading) - : SizedBox.shrink() - : SizedBox.shrink(), - ], - ), SizedBox(height: 12.h), CustomButton( text: LocaleKeys.bookAppo.tr(context: context), diff --git a/lib/presentation/book_appointment/widgets/doctor_rating_details.dart b/lib/presentation/book_appointment/widgets/doctor_rating_details.dart new file mode 100644 index 00000000..0ed54862 --- /dev/null +++ b/lib/presentation/book_appointment/widgets/doctor_rating_details.dart @@ -0,0 +1,195 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_rating_bar/flutter_rating_bar.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:provider/provider.dart'; + +class DoctorRatingDetails extends StatelessWidget { + const DoctorRatingDetails({super.key}); + + @override + Widget build(BuildContext context) { + return Consumer(builder: (context, bookAppointmentsVM, child) { + return bookAppointmentsVM.isDoctorRatingDetailsLoading + ? Utils.getLoadingWidget() + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + bookAppointmentsVM.doctorsProfileResponseModel.actualDoctorRate!.ceilToDouble().toString().toText44(isBold: true), + SizedBox(height: 4.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "${bookAppointmentsVM.doctorsProfileResponseModel.noOfPatientsRate} ${LocaleKeys.reviews.tr(context: context)}" + .toText16(weight: FontWeight.w500, color: AppColors.greyInfoTextColor), + RatingBar( + initialRating: bookAppointmentsVM.doctorsProfileResponseModel.actualDoctorRate!.toDouble(), + direction: Axis.horizontal, + allowHalfRating: true, + itemCount: 5, + itemSize: 20.h, + ignoreGestures: true, + ratingWidget: RatingWidget( + full: Icon( + Icons.star, + color: AppColors.ratingColorYellow, + size: 24.h, + ), + half: Icon( + Icons.star_half, + color: AppColors.ratingColorYellow, + ), + empty: Icon( + Icons.star, + color: AppColors.ratingColorYellow, + ), + ), + tapOnlyMode: true, + unratedColor: Colors.grey[500], + itemPadding: EdgeInsets.symmetric(horizontal: 4.0), + onRatingUpdate: (rating) { + print(rating); + }, + ), + ], + ), + SizedBox(height: 8.h), + Container( + margin: EdgeInsets.only(top: 10.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), + child: Text(LocaleKeys.excellent.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))), + getRatingLine(bookAppointmentsVM.doctorDetailsList[0].ratio, Colors.green[700]!), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), + child: Text("${getRatingWidth(bookAppointmentsVM.doctorDetailsList[0].ratio).round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)), + ), + ], + ), + ), + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), + child: Text(LocaleKeys.vGood.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))), + getRatingLine(bookAppointmentsVM.doctorDetailsList[1].ratio, Color(0xffB7B723)), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), + child: Text("${bookAppointmentsVM.doctorDetailsList[1].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)), + ), + ], + ), + ), + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), + child: Text(LocaleKeys.good.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))), + getRatingLine(bookAppointmentsVM.doctorDetailsList[2].ratio, Color(0xffEBA727)), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), + child: Text("${bookAppointmentsVM.doctorDetailsList[2].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)), + ), + ], + ), + ), + Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), + child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))), + getRatingLine(bookAppointmentsVM.doctorDetailsList[3].ratio, Color(0xffEB7227)), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), + child: Text("${bookAppointmentsVM.doctorDetailsList[3].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)), + ), + ], + ), + ), + Container( + margin: EdgeInsets.only(bottom: 30.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Container( + width: 100.0, + margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), + child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))), + getRatingLine(bookAppointmentsVM.doctorDetailsList[4].ratio, Color(0xffE20C0C)), + ], + ), + Container( + margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), + child: Text("${bookAppointmentsVM.doctorDetailsList[4].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)), + ), + ], + ), + ), + ], + ); + }); + } + + double getRatingWidth(num patientNumber) { + var width = patientNumber; + return width.roundToDouble(); + } + + Widget getRatingLine(double patientNumber, Color color) { + return Container( + margin: EdgeInsets.only(top: 10.0), + child: Stack(children: [ + SizedBox( + width: 150.0, + height: 7.h, + child: Container( + color: Colors.grey[300], + ), + ), + SizedBox( + width: patientNumber * 1.55, + height: 7.h, + child: Container( + color: color, + ), + ), + ]), + ); + } +} diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart index 3850c1f4..999a43ee 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart @@ -159,6 +159,15 @@ class ErOnlineCheckinHome extends StatelessWidget { await vm.getPatientERPaymentInformation(onSuccess: (response) { LoaderBottomSheet.hideLoader(); vm.navigateToEROnlineCheckInPaymentPage(); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); }); }, onHospitalSearch: (value) { diff --git a/lib/presentation/medical_file/patient_sickleaves_list_page.dart b/lib/presentation/medical_file/patient_sickleaves_list_page.dart index fcdb12e4..93cf17ff 100644 --- a/lib/presentation/medical_file/patient_sickleaves_list_page.dart +++ b/lib/presentation/medical_file/patient_sickleaves_list_page.dart @@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; @@ -197,49 +198,23 @@ class _PatientSickleavesListPageState extends State { ], ), SizedBox(height: 8.h), - Row( + Wrap( + direction: Axis.horizontal, + spacing: 6.h, + runSpacing: 6.h, children: [ - CustomButton( - text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(sickLeave.appointmentDate), false), - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 24.h, + AppCustomChipWidget( + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(sickLeave.appointmentDate), false), ), - SizedBox(width: 8.h), - CustomButton( - text: model.isSickLeavesSortByClinic ? sickLeave.projectName! : sickLeave.clinicName!, - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 24.h, + AppCustomChipWidget( + labelText: model.isSickLeavesSortByClinic ? sickLeave.projectName! : sickLeave.clinicName!, ), - SizedBox(width: 8.h), - CustomButton( - text: "${sickLeave.sickLeaveDays} Days", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 24.h, + AppCustomChipWidget( + labelText: "${sickLeave.sickLeaveDays} Days", ), ], ), - SizedBox(height: 8.h), + SizedBox(height: 12.h), Row( children: [ Expanded( diff --git a/lib/presentation/monthly_report/monthly_report.dart b/lib/presentation/monthly_report/monthly_report.dart index 474863ba..43c7fc1d 100644 --- a/lib/presentation/monthly_report/monthly_report.dart +++ b/lib/presentation/monthly_report/monthly_report.dart @@ -80,7 +80,10 @@ class MonthlyReport extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "${appState.getAuthenticatedUser()!.emailAddress}".toText16(color: AppColors.textColor, weight: FontWeight.w500), + SizedBox( + width: MediaQuery.of(context).size.width * 0.7, + child: "${appState.getAuthenticatedUser()!.emailAddress}".toText16(color: AppColors.textColor, weight: FontWeight.w500, maxlines: 2), + ), ], ), ], diff --git a/lib/presentation/prescriptions/prescription_detail_page.dart b/lib/presentation/prescriptions/prescription_detail_page.dart index 9b1ae6df..796bfdd3 100644 --- a/lib/presentation/prescriptions/prescription_detail_page.dart +++ b/lib/presentation/prescriptions/prescription_detail_page.dart @@ -148,7 +148,7 @@ class _PrescriptionDetailPageState extends State { text: LocaleKeys.downloadPrescription.tr(context: context), onPressed: () async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionPDFPleaseWait.tr(context: context)); - await prescriptionVM.getPrescriptionPDFBase64(widget.prescriptionsResponseModel).then((val) async { + await prescriptionVM.getPrescriptionPDFBase64(widget.prescriptionsResponseModel, onSuccess: (value) async { LoaderBottomSheet.hideLoader(); if (prescriptionVM.prescriptionPDFBase64Data.isNotEmpty) { String path = await Utils.createFileFromString(prescriptionVM.prescriptionPDFBase64Data, "pdf"); @@ -164,6 +164,15 @@ class _PrescriptionDetailPageState extends State { ); } } + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); }); }, backgroundColor: AppColors.successColor.withValues(alpha: 0.15), diff --git a/lib/presentation/prescriptions/prescription_item_view.dart b/lib/presentation/prescriptions/prescription_item_view.dart index a2a3e7fb..a41b53ff 100644 --- a/lib/presentation/prescriptions/prescription_item_view.dart +++ b/lib/presentation/prescriptions/prescription_item_view.dart @@ -10,6 +10,7 @@ import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_mo import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; @@ -56,74 +57,18 @@ class PrescriptionItemView extends StatelessWidget { spacing: 6.h, runSpacing: 6.h, children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - CustomButton( - text: "${LocaleKeys.route.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].route}", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ).toShimmer2(isShow: isLoading), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - CustomButton( - text: "${LocaleKeys.frequency.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].frequency}", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ).toShimmer2(isShow: isLoading), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - CustomButton( - text: "${LocaleKeys.dailyDoses.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].doseDailyQuantity}", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ).toShimmer2(isShow: isLoading), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - CustomButton( - text: "${LocaleKeys.days.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].days}", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ).toShimmer2(isShow: isLoading), - ], - ), + AppCustomChipWidget( + labelText: "${LocaleKeys.route.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].route}", + ).toShimmer2(isShow: isLoading), + AppCustomChipWidget( + labelText: "${LocaleKeys.frequency.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].frequency}", + ).toShimmer2(isShow: isLoading), + AppCustomChipWidget( + labelText: "${LocaleKeys.dailyDoses.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].doseDailyQuantity}", + ).toShimmer2(isShow: isLoading), + AppCustomChipWidget( + labelText: "${LocaleKeys.days.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].days}", + ).toShimmer2(isShow: isLoading), ], ).paddingSymmetrical(16.h, 0.h), SizedBox(height: 8.h), diff --git a/lib/presentation/prescriptions/prescriptions_list_page.dart b/lib/presentation/prescriptions/prescriptions_list_page.dart index e2a862bb..c2d97f8e 100644 --- a/lib/presentation/prescriptions/prescriptions_list_page.dart +++ b/lib/presentation/prescriptions/prescriptions_list_page.dart @@ -19,6 +19,7 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_detail_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; @@ -207,32 +208,16 @@ class _PrescriptionsListPageState extends State { ], ), SizedBox(height: 8.h), - Row( + Wrap( + direction: Axis.horizontal, + spacing: 6.h, + runSpacing: 6.h, children: [ - CustomButton( - text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 24.h, + AppCustomChipWidget( + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), ), - SizedBox(width: 8.h), - CustomButton( - text: model.isSortByClinic ? prescription.name! : prescription.clinicDescription!, - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 24.h, + AppCustomChipWidget( + labelText: model.isSortByClinic ? prescription.name! : prescription.clinicDescription!, ), ], ), diff --git a/lib/presentation/todo_section/ancillary_procedures_details_page.dart b/lib/presentation/todo_section/ancillary_procedures_details_page.dart index 9e97509e..eba80cd4 100644 --- a/lib/presentation/todo_section/ancillary_procedures_details_page.dart +++ b/lib/presentation/todo_section/ancillary_procedures_details_page.dart @@ -658,6 +658,7 @@ class _AncillaryOrderDetailsListState extends State { text: LocaleKeys.proceedToPayment.tr(context: context), onPressed: () { // Navigate to payment page with selected procedures + todoSectionViewModel.setIsAncillaryOrdersNeedReloading(true); Navigator.of(context).push( CustomPageRoute( page: AncillaryOrderPaymentPage( From b309342cdca2991134465bb24bb487fe91e97390 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 2 Feb 2026 15:30:09 +0300 Subject: [PATCH 45/67] lab fixes --- lib/features/lab/lab_view_model.dart | 3 +++ .../hmg_services/services_page.dart | 18 +++++++++--------- lib/presentation/lab/alphabeticScroll.dart | 1 - 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/features/lab/lab_view_model.dart b/lib/features/lab/lab_view_model.dart index 118c54a0..1047dbc0 100644 --- a/lib/features/lab/lab_view_model.dart +++ b/lib/features/lab/lab_view_model.dart @@ -240,6 +240,9 @@ class LabViewModel extends ChangeNotifier { model: item)) }; uniqueTestsList = uniqueTests.toList(); + + uniqueTestsList = Utils.uniqueBy(uniqueTestsList, (p) => p.testCode); + uniqueTestsList.sort((a, b) { return a.description!.toLowerCase().compareTo(b.description!.toLowerCase()); }); diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 10b93423..ce2c5379 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -157,15 +157,15 @@ class ServicesPage extends StatelessWidget { true, route: AppRoutes.bloodDonationPage, ), - HmgServicesComponentModel( - 3, - "My Child Vaccine".needTranslation, - "".needTranslation, - AppAssets.my_child_vaccine_icon, - bgColor: AppColors.myChildVaccineCardColor, - true, - route: AppRoutes.myChildVaccine, - ), + // HmgServicesComponentModel( + // 3, + // "My Child Vaccine".needTranslation, + // "".needTranslation, + // AppAssets.my_child_vaccine_icon, + // bgColor: AppColors.myChildVaccineCardColor, + // true, + // route: AppRoutes.myChildVaccine, + // ), // HmgServicesComponentModel( // 11, // "Covid 19 Test".needTranslation, diff --git a/lib/presentation/lab/alphabeticScroll.dart b/lib/presentation/lab/alphabeticScroll.dart index 29ded695..95d9da45 100644 --- a/lib/presentation/lab/alphabeticScroll.dart +++ b/lib/presentation/lab/alphabeticScroll.dart @@ -203,7 +203,6 @@ class _AlphabetScrollPageState extends State { verticalOffset: 100.0, child: FadeInAnimation( child: LabOrderByTest( - appState: getIt(), onTap: () { if (items[itemIndex].model != null) { From 85ccf41d04daa68b28a994f203ff0f7322820135 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 3 Feb 2026 14:58:37 +0300 Subject: [PATCH 46/67] Updates & fixes for Habib Wallet, Insurance update, Immediate LiveCare --- lib/core/api/api_client.dart | 2 +- lib/core/api_consts.dart | 2 +- lib/core/utils/utils.dart | 1 + .../habib_wallet/habib_wallet_view_model.dart | 6 + lib/features/insurance/insurance_repo.dart | 57 ++ .../insurance/insurance_view_model.dart | 41 ++ .../upload_insurance_card_response_model.dart | 1 + .../blood_donation/blood_donation_page.dart | 11 +- .../immediate_livecare_payment_details.dart | 496 +++++++++--------- .../call_ambulance/call_ambulance_page.dart | 6 +- .../habib_wallet/recharge_wallet_page.dart | 33 +- .../widgets/select-medical_file.dart | 25 +- .../insurance_update_details_card.dart | 44 +- .../my_family/widget/family_cards.dart | 19 +- lib/services/dialog_service.dart | 7 +- 15 files changed, 475 insertions(+), 276 deletions(-) create mode 100644 lib/features/insurance/models/resp_models/upload_insurance_card_response_model.dart diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 3eb8fa29..4286618b 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -182,7 +182,7 @@ class ApiClientImp implements ApiClient { } // body['TokenID'] = "@dm!n"; - // body['PatientID'] = 4769038; + // body['PatientID'] = 4768663; // body['PatientTypeID'] = 1; // body['PatientOutSA'] = 0; // body['SessionID'] = "45786230487560q"; diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index bec908bc..8319c9de 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -680,7 +680,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 10d37675..4d8fec08 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -977,4 +977,5 @@ class Utils { return checkDate == today; } + } diff --git a/lib/features/habib_wallet/habib_wallet_view_model.dart b/lib/features/habib_wallet/habib_wallet_view_model.dart index 52916465..2f338957 100644 --- a/lib/features/habib_wallet/habib_wallet_view_model.dart +++ b/lib/features/habib_wallet/habib_wallet_view_model.dart @@ -9,6 +9,7 @@ class HabibWalletViewModel extends ChangeNotifier { bool isWalletAmountLoading = false; num habibWalletAmount = 0; num walletRechargeAmount = 0; + String notesText = ""; bool isBottomSheetContentLoading = false; @@ -60,6 +61,11 @@ class HabibWalletViewModel extends ChangeNotifier { notifyListeners(); } + setNotesText(String notes) { + notesText = notes; + notifyListeners(); + } + setDepositorDetails(String fileNum, String depositor, String mobile) { fileNumber = fileNum; depositorName = depositor; diff --git a/lib/features/insurance/insurance_repo.dart b/lib/features/insurance/insurance_repo.dart index 1aeb7696..2719035b 100644 --- a/lib/features/insurance/insurance_repo.dart +++ b/lib/features/insurance/insurance_repo.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patien import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_card_history.dart'; import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_details_response_model.dart'; import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_update_response_model.dart'; +import 'package:hmg_patient_app_new/features/insurance/models/resp_models/upload_insurance_card_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; abstract class InsuranceRepo { @@ -17,6 +18,14 @@ abstract class InsuranceRepo { Future>> getPatientInsuranceDetailsForUpdate({required String patientId, required String identificationNo}); Future>>> getPatientInsuranceApprovalsList(); + + Future>> updatePatientInsuranceCard({ + required int patientID, + required int patientType, + required String mobileNo, + required String patientIdentificationID, + required String insuranceCardImage, + }); } class InsuranceRepoImp implements InsuranceRepo { @@ -183,4 +192,52 @@ class InsuranceRepoImp implements InsuranceRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> updatePatientInsuranceCard({ + required int patientID, + required int patientType, + required String mobileNo, + required String patientIdentificationID, + required String insuranceCardImage, + }) async { + Map mapDevice = { + "PatientID": patientID, + "PatientType": patientType, + "MobileNo": mobileNo, + "PatientIdentificationID": patientIdentificationID, + "InsuranceCardImage": insuranceCardImage, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + UPLOAD_INSURANCE_CARD, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + // final uploadResponse = UploadInsuranceCardResponseModel.fromJson(response); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: apiResponse, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/insurance/insurance_view_model.dart b/lib/features/insurance/insurance_view_model.dart index 0bbdda20..261bda29 100644 --- a/lib/features/insurance/insurance_view_model.dart +++ b/lib/features/insurance/insurance_view_model.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patien import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_card_history.dart'; import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_details_response_model.dart'; import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_update_response_model.dart'; +import 'package:hmg_patient_app_new/features/insurance/models/resp_models/upload_insurance_card_response_model.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; class InsuranceViewModel extends ChangeNotifier { @@ -171,4 +172,44 @@ class InsuranceViewModel extends ChangeNotifier { }, ); } + + Future updatePatientInsuranceCard({ + required int patientID, + required int patientType, + required String mobileNo, + required String patientIdentificationID, + required String insuranceCardImage, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + final result = await insuranceRepo.updatePatientInsuranceCard( + patientID: patientID, + patientType: patientType, + mobileNo: mobileNo, + patientIdentificationID: patientIdentificationID, + insuranceCardImage: insuranceCardImage, + ); + + result.fold( + (failure) async { + notifyListeners(); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Error updating insurance card"); + } + } else if (apiResponse.messageStatus == 1) { + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } } diff --git a/lib/features/insurance/models/resp_models/upload_insurance_card_response_model.dart b/lib/features/insurance/models/resp_models/upload_insurance_card_response_model.dart new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lib/features/insurance/models/resp_models/upload_insurance_card_response_model.dart @@ -0,0 +1 @@ + diff --git a/lib/presentation/blood_donation/blood_donation_page.dart b/lib/presentation/blood_donation/blood_donation_page.dart index 26da5995..7c6c625f 100644 --- a/lib/presentation/blood_donation/blood_donation_page.dart +++ b/lib/presentation/blood_donation/blood_donation_page.dart @@ -263,13 +263,20 @@ class _BloodDonationPageState extends State { Row( children: [ Text( - LocaleKeys.iAcceptThe.tr(), + "${LocaleKeys.iAcceptThe.tr()} ", style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), ), GestureDetector( onTap: () { // Navigate to terms and conditions page - Navigator.of(context).pushNamed('/terms'); + // Navigator.of(context).pushNamed('/terms'); + appState.isArabic() + ? Utils.openWebView( + url: 'https://hmg.com/ar/Pages/Terms.aspx', + ) + : Utils.openWebView( + url: 'https://hmg.com/en/Pages/Terms.aspx', + ); }, child: Text( LocaleKeys.termsConditoins.tr(), diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index d522b454..6b2620b4 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -33,71 +33,30 @@ import 'package:smooth_corner/smooth_corner.dart'; class ImmediateLiveCarePaymentDetails extends StatelessWidget { ImmediateLiveCarePaymentDetails({super.key}); - late ImmediateLiveCareViewModel immediateLiveCareViewModel; + // late ImmediateLiveCareViewModel immediateLiveCareViewModel; late AppState appState; @override Widget build(BuildContext context) { - immediateLiveCareViewModel = Provider.of(context, listen: false); + // immediateLiveCareViewModel = Provider.of(context, listen: false); appState = getIt.get(); return Scaffold( backgroundColor: AppColors.scaffoldBgColor, - body: Column( - children: [ - Expanded( - child: CollapsingListView( - title: LocaleKeys.reviewLiveCareRequest.tr(context: context), - child: SingleChildScrollView( - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 24.h), - LocaleKeys.patientInfo.tr(context: context).toText16(isBold: true), - SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Image.asset( - appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, - width: 52.h, - height: 52.h, - ), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText16(isBold: true), - SizedBox(height: 8.h), - Wrap( - direction: Axis.horizontal, - spacing: 3.h, - runSpacing: 4.h, - children: [ - AppCustomChipWidget(labelText: "${appState.getAuthenticatedUser()!.age} ${LocaleKeys.yearsOld.tr(context: context)}"), - AppCustomChipWidget( - labelText: - "${LocaleKeys.clinic.tr()}: ${(appState.isArabic() ? immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceNameN : immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceName)!}"), - ], - ), - ], - ), - ], - ), - ), - ), - SizedBox(height: 24.h), - LocaleKeys.selectedLiveCareType.tr(context: context).toText16(isBold: true), - SizedBox(height: 16.h), - Consumer(builder: (context, bookAppointmentsVM, child) { - return Container( + body: Consumer(builder: (context, immediateLiveCareVM, child) { + return Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.reviewLiveCareRequest.tr(context: context), + child: SingleChildScrollView( + padding: EdgeInsets.symmetric(horizontal: 24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 24.h), + LocaleKeys.patientInfo.tr(context: context).toText16(isBold: true), + SizedBox(height: 16.h), + Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24.h, @@ -106,217 +65,262 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { child: Padding( padding: EdgeInsets.all(16.h), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( + Image.asset( + appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, + width: 52.h, + height: 52.h, + ), + SizedBox(width: 8.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.h, height: 32.h, fit: BoxFit.contain), - SizedBox(width: 8.h), - getLiveCareType(context, immediateLiveCareViewModel.liveCareSelectedCallType).toText16(isBold: true), + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText16(isBold: true), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget(labelText: "${appState.getAuthenticatedUser()!.age} ${LocaleKeys.yearsOld.tr(context: context)}"), + AppCustomChipWidget( + labelText: + "${LocaleKeys.clinic.tr()}: ${(appState.isArabic() ? immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceNameN : immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceName)!}"), + ], + ), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.edit_icon, width: 24.h, height: 24.h, fit: BoxFit.contain), ], ), ), - ).onPress(() { - showCommonBottomSheetWithoutHeight(context, child: SelectLiveCareCallType(immediateLiveCareViewModel: immediateLiveCareViewModel), callBackFunc: () async { - debugPrint("Selected Call Type: ${immediateLiveCareViewModel.liveCareSelectedCallType}"); - }, title: LocaleKeys.selectLiveCareCallType.tr(context: context), isCloseButtonVisible: true, isFullScreen: false); - }); - }), - SizedBox(height: 24.h) - ], + ), + SizedBox(height: 24.h), + LocaleKeys.selectedLiveCareType.tr(context: context).toText16(isBold: true), + SizedBox(height: 16.h), + Consumer(builder: (context, bookAppointmentsVM, child) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.h, height: 32.h, fit: BoxFit.contain), + SizedBox(width: 8.h), + getLiveCareType(context, immediateLiveCareVM.liveCareSelectedCallType).toText16(isBold: true), + ], + ), + Utils.buildSvgWithAssets(icon: AppAssets.edit_icon, width: 24.h, height: 24.h, fit: BoxFit.contain), + ], + ), + ), + ).onPress(() { + showCommonBottomSheetWithoutHeight(context, child: SelectLiveCareCallType(immediateLiveCareViewModel: immediateLiveCareVM), callBackFunc: () async { + debugPrint("Selected Call Type: ${immediateLiveCareVM.liveCareSelectedCallType}"); + }, title: LocaleKeys.selectLiveCareCallType.tr(context: context), isCloseButtonVisible: true, isFullScreen: false); + }); + }), + SizedBox(height: 24.h) + ], + ), ), ), ), - ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.isCash ?? true) - ? Container( - height: 50.h, - decoration: ShapeDecoration( - color: AppColors.secondaryLightRedBorderColor, - shape: SmoothRectangleBorder( - borderRadius: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), - smoothness: 1, + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.isCash ?? true) + ? Container( + height: 50.h, + decoration: ShapeDecoration( + color: AppColors.secondaryLightRedBorderColor, + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), + smoothness: 1, + ), ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), - CustomButton( - text: LocaleKeys.updateInsurance.tr(context: context), - onPressed: () { - Navigator.of(context).push( - CustomPageRoute( - page: InsuranceHomePage(), - ), - ); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.secondaryLightRedBorderColor, - textColor: AppColors.whiteColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(15, 0, 15, 0), - height: 30.h, - ).paddingSymmetrical(24.h, 0.h), - ], - ), - ) - : const SizedBox(), - SizedBox(height: 24.h), - LocaleKeys.totalAmountToPay.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), - SizedBox(height: 17.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), - Utils.getPaymentAmountWithSymbol(immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.amount!.toText16(isBold: true), AppColors.blackColor, 13, - isSaudiCurrency: immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), - ], - ).paddingSymmetrical(24.h, 0.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), - Utils.getPaymentAmountWithSymbol( - immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.tax!.toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, - isSaudiCurrency: immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), - ], - ).paddingSymmetrical(24.h, 0.h), - SizedBox(height: 17.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SizedBox(width: 150.h, child: Utils.getPaymentMethods()), - Utils.getPaymentAmountWithSymbol(immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total!.toText24(isBold: true), AppColors.blackColor, 17, - isSaudiCurrency: immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), - ], - ).paddingSymmetrical(24.h, 0.h), - (immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total == "0.0") - ? CustomButton( - text: LocaleKeys.confirmLiveCare.tr(context: context), - onPressed: () async { - await askVideoCallPermission(context).then((val) async { - if (val) { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingLiveCareRequest.tr(context: context)); - - await immediateLiveCareViewModel.addNewCallRequestForImmediateLiveCare("${appState.getAuthenticatedUser()!.patientId}${DateTime.now().millisecondsSinceEpoch}"); - await immediateLiveCareViewModel.getPatientLiveCareHistory(); - LoaderBottomSheet.hideLoader(); - if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { - Navigator.pushAndRemoveUntil( - context, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), + CustomButton( + text: LocaleKeys.updateInsurance.tr(context: context), + onPressed: () { + Navigator.of(context).push( CustomPageRoute( - page: LandingNavigation(), + page: InsuranceHomePage(), ), + ); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.secondaryLightRedBorderColor, + textColor: AppColors.whiteColor, + fontSize: 10, + fontWeight: FontWeight.w500, + borderRadius: 8, + padding: EdgeInsets.fromLTRB(15, 0, 15, 0), + height: 30.h, + ).paddingSymmetrical(24.h, 0.h), + ], + ), + ) + : const SizedBox(), + SizedBox(height: 24.h), + LocaleKeys.totalAmountToPay.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 17.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), + Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.amount!.toText16(isBold: true), AppColors.blackColor, 13, + isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + ], + ).paddingSymmetrical(24.h, 0.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), + Utils.getPaymentAmountWithSymbol( + immediateLiveCareVM.liveCareImmediateAppointmentFeesList.tax!.toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, + isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + ], + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 17.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox(width: 150.h, child: Utils.getPaymentMethods()), + Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total!.toText24(isBold: true), AppColors.blackColor, 17, + isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + ], + ).paddingSymmetrical(24.h, 0.h), + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") + ? CustomButton( + text: LocaleKeys.confirmLiveCare.tr(context: context), + onPressed: () async { + await askVideoCallPermission(context).then((val) async { + if (val) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingLiveCareRequest.tr(context: context)); + + await immediateLiveCareVM.addNewCallRequestForImmediateLiveCare("${appState.getAuthenticatedUser()!.patientId}${DateTime + .now() + .millisecondsSinceEpoch}"); + await immediateLiveCareVM.getPatientLiveCareHistory(); + LoaderBottomSheet.hideLoader(); + if (immediateLiveCareVM.patientHasPendingLiveCareRequest) { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), (r) => false); - Navigator.of(context).push( - CustomPageRoute( - page: ImmediateLiveCarePendingRequestPage(), - ), - ); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.unknownErrorOccurred.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } } else { showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.unknownErrorOccurred.tr(context: context)), + child: Utils.getWarningWidget( + loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + openAppSettings(); + }), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); } - } else { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: context), - context, - child: Utils.getWarningWidget( - loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), - isShowActionButtons: true, - onCancelTap: () { - Navigator.pop(context); - }, - onConfirmTap: () async { - openAppSettings(); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - } - }); - }, - backgroundColor: AppColors.successColor, - borderColor: AppColors.successColor, - textColor: AppColors.whiteColor, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - icon: AppAssets.livecare_book_icon, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ).paddingSymmetrical(24.h, 24.h) - : CustomButton( - text: LocaleKeys.payNow.tr(context: context), - onPressed: () async { - await askVideoCallPermission(context).then((val) { - if (val) { - Navigator.of(context).push( - CustomPageRoute( - page: ImmediateLiveCarePaymentPage(), - ), - ); - } - // else { - // showCommonBottomSheetWithoutHeight( - // title: LocaleKeys.notice.tr(context: context), - // context, - // child: Utils.getWarningWidget( - // loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), - // isShowActionButtons: true, - // onCancelTap: () { - // Navigator.pop(context); - // }, - // onConfirmTap: () async { - // openAppSettings(); - // }), - // callBackFunc: () {}, - // isFullScreen: false, - // isCloseButtonVisible: true, - // ); - // } - }); - }, - backgroundColor: AppColors.infoColor, - borderColor: AppColors.infoColor, - textColor: AppColors.whiteColor, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - icon: AppAssets.appointment_pay_icon, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ).paddingSymmetrical(24.h, 24.h), - ], + }); + }, + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + textColor: AppColors.whiteColor, + fontSize: 16, + fontWeight: FontWeight.w500, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.livecare_book_icon, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ).paddingSymmetrical(24.h, 24.h) + : CustomButton( + text: LocaleKeys.payNow.tr(context: context), + onPressed: () async { + await askVideoCallPermission(context).then((val) { + if (val) { + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePaymentPage(), + ), + ); + } + // else { + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: context), + // context, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.liveCarePermissionsMessage.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // Navigator.pop(context); + // }, + // onConfirmTap: () async { + // openAppSettings(); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + // } + }); + }, + backgroundColor: AppColors.infoColor, + borderColor: AppColors.infoColor, + textColor: AppColors.whiteColor, + fontSize: 16, + fontWeight: FontWeight.w500, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.appointment_pay_icon, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ).paddingSymmetrical(24.h, 24.h), + ], + ), ), - ), - ], - ), + ], + ); + }), ); } diff --git a/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart b/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart index e86104b2..5a368a3b 100644 --- a/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart +++ b/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart @@ -526,8 +526,8 @@ class CallAmbulancePage extends StatelessWidget { textPlaceInput(context) { return Consumer(builder: (_, vm, __) { - print("the data is ${vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description}"); - return SizedBox( + // print("the data is ${vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description}"); + return (vm.geocodeResponse != null && vm.geocodeResponse!.results.isNotEmpty) ? SizedBox( width: MediaQuery.sizeOf(context).width, child: TextInputWidget( labelText: LocaleKeys.enterPickupLocationManually.tr(context: context), @@ -549,7 +549,7 @@ class CallAmbulancePage extends StatelessWidget { ).onPress(() { openLocationInputBottomSheet(context); }), - ); + ) : SizedBox.shrink(); }); } diff --git a/lib/presentation/habib_wallet/recharge_wallet_page.dart b/lib/presentation/habib_wallet/recharge_wallet_page.dart index b8e2d01f..22e854a0 100644 --- a/lib/presentation/habib_wallet/recharge_wallet_page.dart +++ b/lib/presentation/habib_wallet/recharge_wallet_page.dart @@ -36,6 +36,7 @@ class _RechargeWalletPageState extends State { late HabibWalletViewModel habibWalletVM; late AppState appState; final TextEditingController amountTextController = TextEditingController(); + final TextEditingController notesTextController = TextEditingController(); @override void initState() { @@ -209,23 +210,20 @@ class _RechargeWalletPageState extends State { SizedBox(height: 16.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), SizedBox(height: 16.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.notes_icon, width: 40.h, height: 40.h), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.notes.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "Lorem Ipsum".toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), - ], - ), - ], - ), - ], + TextInputWidget( + labelText: LocaleKeys.notes.tr(context: context), + hintText: "", + controller: notesTextController, + keyboardType: TextInputType.text, + isEnable: true, + prefix: null, + autoFocus: true, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + leadingIcon: AppAssets.notes_icon, + errorMessage: LocaleKeys.enterValidIDorIqama.tr(context: context), + hasError: false, ), SizedBox(height: 8.h), ], @@ -271,6 +269,7 @@ class _RechargeWalletPageState extends State { ); } else { habibWalletVM.setWalletRechargeAmount(num.parse(amountTextController.text)); + habibWalletVM.setNotesText(notesTextController.text); // habibWalletVM.setDepositorDetails(appState.getAuthenticatedUser()!.patientId.toString(), "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", // appState.getAuthenticatedUser()!.mobileNumber!); Navigator.of(context).push( diff --git a/lib/presentation/habib_wallet/widgets/select-medical_file.dart b/lib/presentation/habib_wallet/widgets/select-medical_file.dart index aaa00367..6fed6522 100644 --- a/lib/presentation/habib_wallet/widgets/select-medical_file.dart +++ b/lib/presentation/habib_wallet/widgets/select-medical_file.dart @@ -28,6 +28,8 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; +import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -145,6 +147,10 @@ class _MultiPageBottomSheetState extends State { ], ).paddingAll(16.h), ).onPress(() { + habibWalletVM.setDepositorDetails(appState.getAuthenticatedUser()!.patientId!.toString(), + "${appState.getAuthenticatedUser()!.firstName.toString()} ${appState.getAuthenticatedUser()!.lastName.toString()}", appState.getAuthenticatedUser()!.mobileNumber!.toString()); + habibWalletVM.setCurrentIndex(0); + habibWalletVM.setSelectedRechargeType(1); Navigator.of(context).pop(); }), SizedBox(height: 16.h), @@ -167,7 +173,24 @@ class _MultiPageBottomSheetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h), ], ).paddingAll(16.h), - ), + ).onPress(() { + DialogService dialogService = getIt.get(); + dialogService.showFamilyBottomSheetWithoutH( + label: LocaleKeys.familyTitle.tr(context: context), + message: "", + isShowManageButton: false, + isForWalletRecharge: true, + onSwitchPress: (FamilyFileResponseModelLists profile) { + habibWalletVM.setDepositorDetails(profile.responseId.toString(), profile.patientName.toString(), profile.mobileNumber.toString()); + habibWalletVM.setCurrentIndex(0); + habibWalletVM.setSelectedRechargeType(2); + Navigator.of(context).pop(); + Navigator.of(context).pop(); + + // medicalFileViewModel.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); + }, + profiles: getIt.get().patientFamilyFiles); + }), SizedBox(height: 16.h), Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( diff --git a/lib/presentation/insurance/widgets/insurance_update_details_card.dart b/lib/presentation/insurance/widgets/insurance_update_details_card.dart index c737732a..35be7f9e 100644 --- a/lib/presentation/insurance/widgets/insurance_update_details_card.dart +++ b/lib/presentation/insurance/widgets/insurance_update_details_card.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -11,16 +13,20 @@ import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:provider/provider.dart'; class PatientInsuranceCardUpdateCard extends StatelessWidget { PatientInsuranceCardUpdateCard({super.key}); late InsuranceViewModel insuranceViewModel; + late AppState appState; @override Widget build(BuildContext context) { insuranceViewModel = Provider.of(context); + appState = getIt.get(); return Column( mainAxisSize: MainAxisSize.min, children: [ @@ -49,7 +55,7 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Haroon Amjad".toText16(weight: FontWeight.w600), + insuranceViewModel.patientInsuranceUpdateResponseModel!.memberName!.toText16(weight: FontWeight.w600), "Policy: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.policyNumber}".toText12(isBold: true, color: AppColors.lightGrayColor), SizedBox(height: 8.h), Row( @@ -99,7 +105,41 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { iconColor: AppColors.whiteColor, iconSize: 20.w, text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", - onPressed: () {}, + onPressed: () { + LoaderBottomSheet.showLoader(); + insuranceViewModel.updatePatientInsuranceCard( + patientID: appState.getAuthenticatedUser()!.patientId!, + patientType: appState.getAuthenticatedUser()!.patientType!, + patientIdentificationID: appState.getAuthenticatedUser()!.patientIdentificationNo!, + mobileNo: appState.getAuthenticatedUser()!.mobileNumber!, + insuranceCardImage: "", + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.success.tr(context: context), + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr(context: context)), + callBackFunc: () { + Navigator.pop(context); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () { + Navigator.pop(context); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, backgroundColor: insuranceViewModel.patientInsuranceUpdateResponseModel != null ? AppColors.successColor : AppColors.lightGrayBGColor, borderColor: AppColors.successColor.withOpacity(0.01), textColor: AppColors.whiteColor, diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index 175cfb18..ea305b0e 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -8,6 +8,7 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; @@ -25,6 +26,7 @@ class FamilyCards extends StatefulWidget { final bool isRequestDesign; final bool isLeftAligned; final bool isShowRemoveButton; + final bool isForWalletRecharge; const FamilyCards( {super.key, @@ -35,6 +37,7 @@ class FamilyCards extends StatefulWidget { this.isBottomSheet = false, this.isRequestDesign = false, this.isLeftAligned = false, + this.isForWalletRecharge = false, this.isShowRemoveButton = false}); @override @@ -206,7 +209,21 @@ class _FamilyCardsState extends State { height: 4.h, ), Spacer(), - CustomButton( + widget.isForWalletRecharge ? CustomButton( + height: 40.h, + onPressed: () { + widget.onSelect(profile); + // if (canSwitch) widget.onSelect(profile); + }, + text: LocaleKeys.select.tr(context: context), + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 13.h, + icon: AppAssets.activeCheck, + iconColor: isActive || !canSwitch ? (isActive ? null : AppColors.greyTextColor) : AppColors.primaryRedColor, + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), + ).paddingOnly(top: 0, bottom: 0) : CustomButton( height: 40.h, onPressed: () { if (canSwitch) widget.onSelect(profile); diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index b185d894..0b3a5217 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -32,7 +32,8 @@ abstract class DialogService { required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, required List profiles, - bool isShowManageButton = false}); + bool isShowManageButton = false, + bool isForWalletRecharge = false}); Future showFamilyBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); @@ -143,7 +144,8 @@ class DialogServiceImp implements DialogService { required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, required List profiles, - bool isShowManageButton = false}) async { + bool isShowManageButton = false, + bool isForWalletRecharge = false}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight(context, @@ -161,6 +163,7 @@ class DialogServiceImp implements DialogService { }, onRemove: (FamilyFileResponseModelLists profile) {}, isShowDetails: false, + isForWalletRecharge: isForWalletRecharge, ), SizedBox(height: isShowManageButton ? 15.h : 24.h), if (isShowManageButton) From 66ff6ed8b6b9c97f133028306f6fb598826bee7f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 3 Feb 2026 15:27:21 +0300 Subject: [PATCH 47/67] Prescription download changes --- lib/core/api_consts.dart | 1 + .../authentication_view_model.dart | 3 +- .../prescriptions/prescriptions_repo.dart | 43 +++++++++++++------ .../widgets/appointment_card.dart | 6 +-- .../prescription_detail_page.dart | 2 +- .../prescriptions_list_page.dart | 4 +- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 8319c9de..87ca2f8c 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -83,6 +83,7 @@ var PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList_Async'; var GET_PRESCRIPTIONS_ALL_ORDERS = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; var GET_PRESCRIPTION_REPORT = 'Services/Patients.svc/REST/INP_GetPrescriptionReport'; var SEND_PRESCRIPTION_EMAIL = 'Services/Notifications.svc/REST/SendPrescriptionEmail'; +var SEND_PRESCRIPTION_EMAIL_NEW = 'Services/Notifications.svc/REST/SendPrescriptionEmail_New'; var GET_PRESCRIPTION_REPORT_ENH = 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; ///Lab Order diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index c49554fe..b48912de 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -581,7 +581,8 @@ class AuthenticationViewModel extends ChangeNotifier { if (!_appState.getIsChildLoggedIn) { await medicalVm.getFamilyFiles(status: 0); // await medicalVm.getAllPendingRecordsByResponseId(); - _navigationService.replaceAllRoutesAndNavigateToLanding(); + // _navigationService.replaceAllRoutesAndNavigateToLanding(); + _navigationService.popUntilNamed(AppRoutes.landingScreen); } } else { if (activation.list != null && activation.list!.isNotEmpty) { diff --git a/lib/features/prescriptions/prescriptions_repo.dart b/lib/features/prescriptions/prescriptions_repo.dart index c6e7150b..2eb5d43e 100644 --- a/lib/features/prescriptions/prescriptions_repo.dart +++ b/lib/features/prescriptions/prescriptions_repo.dart @@ -167,29 +167,44 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { @override Future> getPrescriptionPDF( {required PatientPrescriptionsResponseModel prescriptionsResponseModel, required List prescriptionDetailsList}) async { + // Map mapDevice = { + // "AppointmentDate": prescriptionsResponseModel.appointmentDate, + // "ClinicName": prescriptionsResponseModel.clinicDescription, + // "DoctorName": prescriptionsResponseModel.doctorName, + // "ProjectID": prescriptionsResponseModel.projectID, + // "DoctorID": prescriptionsResponseModel.doctorID, + // "ClinicID": prescriptionsResponseModel.clinicID, + // "DateofBirth": Utils.appState.getAuthenticatedUser()!.dateofBirth, + // "ListPrescriptions": prescriptionDetailsList, + // "PatientIditificationNum": Utils.appState.getAuthenticatedUser()!.patientIdentificationNo, + // "PatientMobileNumber": Utils.appState.getAuthenticatedUser()!.mobileNumber, + // "PatientName": "${Utils.appState.getAuthenticatedUser()!.firstName!} ${Utils.appState.getAuthenticatedUser()!.lastName!}", + // "To": Utils.appState.getAuthenticatedUser()!.emailAddress, + // "SetupID": prescriptionsResponseModel.setupID, + // "IsDownload": true, + // "isDentalAllowedBackend": false, + // }; + Map mapDevice = { - "AppointmentDate": prescriptionsResponseModel.appointmentDate, - "ClinicName": prescriptionsResponseModel.clinicDescription, - "DoctorName": prescriptionsResponseModel.doctorName, - "ProjectID": prescriptionsResponseModel.projectID, - "DoctorID": prescriptionsResponseModel.doctorID, - "ClinicID": prescriptionsResponseModel.clinicID, - "DateofBirth": Utils.appState.getAuthenticatedUser()!.dateofBirth, - "ListPrescriptions": prescriptionDetailsList, - "PatientIditificationNum": Utils.appState.getAuthenticatedUser()!.patientIdentificationNo, - "PatientMobileNumber": Utils.appState.getAuthenticatedUser()!.mobileNumber, - "PatientName": "${Utils.appState.getAuthenticatedUser()!.firstName!} ${Utils.appState.getAuthenticatedUser()!.lastName!}", - "To": Utils.appState.getAuthenticatedUser()!.emailAddress, + "AppointmentNo": prescriptionsResponseModel.appointmentNo, "SetupID": prescriptionsResponseModel.setupID, + "EpisodeID": prescriptionsResponseModel.episodeID, + "ClinicID": prescriptionsResponseModel.clinicID, + "ProjectID": prescriptionsResponseModel.projectID, + "DischargeNo": prescriptionsResponseModel.dischargeNo, "IsDownload": true, - "isDentalAllowedBackend": false, + // "To": Utils.appState.getAuthenticatedUser()!.emailAddress, + "To": "amjad.haroon@cloudsolutions.com.sa", + "ClinicName": prescriptionsResponseModel.clinicDescription, + "DoctorName": prescriptionsResponseModel.doctorName, }; try { GenericApiModel? apiResponse; Failure? failure; await apiClient.post( - SEND_PRESCRIPTION_EMAIL, + // SEND_PRESCRIPTION_EMAIL, + SEND_PRESCRIPTION_EMAIL_NEW, body: mapDevice, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index a8735d00..ec06efce 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -184,9 +184,9 @@ class AppointmentCard extends StatelessWidget { AppCustomChipWidget( labelText: isLoading ? 'Olaya' - : patientAppointmentHistoryResponseModel.projectName!.length > 15 - ? '${patientAppointmentHistoryResponseModel.projectName!.substring(0, 15)}...' - : patientAppointmentHistoryResponseModel.projectName!) + : (patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").length > 15 + ? '${(patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").substring(0, 15)}...' + : patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital") .toShimmer2(isShow: isLoading), AppCustomChipWidget( labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), diff --git a/lib/presentation/prescriptions/prescription_detail_page.dart b/lib/presentation/prescriptions/prescription_detail_page.dart index 796bfdd3..5bb9cbd7 100644 --- a/lib/presentation/prescriptions/prescription_detail_page.dart +++ b/lib/presentation/prescriptions/prescription_detail_page.dart @@ -139,7 +139,7 @@ class _PrescriptionDetailPageState extends State { labelText: LocaleKeys.ratingValue.tr(namedArgs: {'rating': widget.prescriptionsResponseModel.decimalDoctorRate.toString()}, context: context), ), AppCustomChipWidget( - labelText: widget.prescriptionsResponseModel.name!, + labelText: widget.prescriptionsResponseModel.name ?? "", ), ], ), diff --git a/lib/presentation/prescriptions/prescriptions_list_page.dart b/lib/presentation/prescriptions/prescriptions_list_page.dart index c2d97f8e..cd507d41 100644 --- a/lib/presentation/prescriptions/prescriptions_list_page.dart +++ b/lib/presentation/prescriptions/prescriptions_list_page.dart @@ -165,7 +165,7 @@ class _PrescriptionsListPageState extends State { ], ), SizedBox(height: 8.h), - model.patientPrescriptionOrdersViewList[index].filterName!.toText16(isBold: true) + (model.patientPrescriptionOrdersViewList[index].filterName ?? "").toText16(isBold: true) ], ), ), @@ -217,7 +217,7 @@ class _PrescriptionsListPageState extends State { labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), ), AppCustomChipWidget( - labelText: model.isSortByClinic ? prescription.name! : prescription.clinicDescription!, + labelText: model.isSortByClinic ? prescription.name ?? "" : prescription.clinicDescription!, ), ], ), From 3af43dc6760242989ed1f9aea39b7c34fa8c2103 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 5 Feb 2026 13:35:41 +0300 Subject: [PATCH 48/67] JIRA bug fixes & updates --- assets/langs/en-US.json | 2 +- lib/core/utils/penguin_method_channel.dart | 4 +- lib/core/utils/utils.dart | 9 +++ .../hospital_selection_view_model.dart | 5 +- ...ient_appointment_share_response_model.dart | 12 ++-- .../my_appointments_view_model.dart | 18 +++++- .../appointment_details_page.dart | 16 +++-- .../appointment_payment_page.dart | 10 ++++ .../widgets/appointment_card.dart | 9 ++- .../appointment_checkin_bottom_sheet.dart | 23 ++++---- .../widgets/appointment_doctor_card.dart | 6 +- .../review_appointment_page.dart | 2 +- .../notification_details_page.dart | 58 ++++++++----------- .../notifications_list_page.dart | 2 +- 14 files changed, 109 insertions(+), 67 deletions(-) diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index e56d8611..d937f6bc 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -618,7 +618,7 @@ "general": "General", "profile": "ملفي", "notifications": "إشعارات", - "notificationDetails": "تفاصيل الاشعار", + "notificationDetails": "Notification Details", "notificationDetailsa": "تفاصيل الاشعار", "infoMyDoctorPoints": "", "infoMyDoctor": "This service allows you to see all the doctors you have visited in Al Habib Medical Group, and through this service:", diff --git a/lib/core/utils/penguin_method_channel.dart b/lib/core/utils/penguin_method_channel.dart index 1f190376..69ef4be7 100644 --- a/lib/core/utils/penguin_method_channel.dart +++ b/lib/core/utils/penguin_method_channel.dart @@ -7,7 +7,7 @@ class PenguinMethodChannel { return await rootBundle.load("assets/images/progress-loading-red-crop-1.gif").then((data) => data.buffer.asUint8List()); } - Future launch(String storyboardName, String languageCode, String username, {NavigationClinicDetails? details}) async { + Future launch(String storyboardName, String languageCode, String username, bool isClinicNavigation, {NavigationClinicDetails? details}) async { // Uint8List image = await loadGif(); try { await _channel.invokeMethod('launchPenguin', { @@ -31,7 +31,7 @@ class PenguinMethodChannel { "isEnableReportIssue": true, "languageCode": languageCode, "mapBoxKey": "pk.eyJ1IjoicndhaWQiLCJhIjoiY2x5cGo4aHNjMGNsbTJyc2djempobGQxaSJ9.RCaC6WrUt4A4YnZNfxnONQ", - "clinicID": details?.clinicId ?? "", + "clinicID": isClinicNavigation ? "${details?.projectId}-${details?.clinicId}" : details?.clinicId ?? "", // "clinicID": "108", // 46 ,49, 133 "patientID": details?.patientId ?? "", "projectID": int.parse(details?.projectId ?? "-1"), diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 4d8fec08..673ef738 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -978,4 +978,13 @@ class Utils { return checkDate == today; } + static bool isClinicAllowedForRebook(int clinicID) { + bool isAllowed = true; + + if (clinicID == 23 || clinicID == 47 || clinicID == 265 || clinicID == 253 || clinicID == 134) { + isAllowed = false; + } + + return isAllowed; + } } diff --git a/lib/features/hospital/hospital_selection_view_model.dart b/lib/features/hospital/hospital_selection_view_model.dart index c0cab2ad..57bd3601 100644 --- a/lib/features/hospital/hospital_selection_view_model.dart +++ b/lib/features/hospital/hospital_selection_view_model.dart @@ -97,10 +97,11 @@ class HospitalSelectionBottomSheetViewModel extends ChangeNotifier { initPenguinSDK(hospital.iD, clinicID: clinicID); } - initPenguinSDK(int projectID, {String clinicID = ""}) async { + initPenguinSDK(int projectID, {String clinicID = "1"}) async { NavigationClinicDetails data = NavigationClinicDetails(); data.projectId = projectID.toString(); data.clinicId = clinicID; + // data.clinicId = "1"; final bool permited = await AppPermission.askPenguinPermissions(); if (!permited) { Map statuses = await [ @@ -110,7 +111,7 @@ class HospitalSelectionBottomSheetViewModel extends ChangeNotifier { Permission.bluetoothScan, Permission.activityRecognition, ].request().whenComplete(() { - PenguinMethodChannel().launch("penguin", appState.isArabic() ? "ar" : "en", appState.getAuthenticatedUser()?.patientId?.toString()??"", details: data); + PenguinMethodChannel().launch("penguin", appState.isArabic() ? "ar" : "en", appState.getAuthenticatedUser()?.patientId?.toString() ?? "", false, details: data); }); } } diff --git a/lib/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart b/lib/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart index 1dc1cbe7..b412a2e4 100644 --- a/lib/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart +++ b/lib/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart @@ -5,14 +5,14 @@ class PatientAppointmentShareResponseModel { int? appointmentNo; dynamic cardNumber; dynamic cardType; - int? cashPrice; - int? cashPriceTax; - int? cashPriceWithTax; + num? cashPrice; + num? cashPriceTax; + num? cashPriceWithTax; int? clinicID; String? clinicName; int? companyId; String? companyName; - int? companyShareWithTax; + num? companyShareWithTax; int? doctorID; String? doctorImageURL; String? doctorNameObj; @@ -39,7 +39,7 @@ class PatientAppointmentShareResponseModel { int? patientStatusType; num? patientTaxAmount; String? patientType; - int? paymentAmount; + num? paymentAmount; String? paymentDate; dynamic paymentMethodName; dynamic paymentReferenceNumber; @@ -57,7 +57,7 @@ class PatientAppointmentShareResponseModel { int? statusCode; dynamic statusDesc; String? subPolicyNo; - int? tax; + num? tax; int? userID; PatientAppointmentShareResponseModel({ diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index f2878037..25e41ee3 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -220,9 +220,23 @@ class MyAppointmentsViewModel extends ChangeNotifier { } Future getPatientAppointments(bool isActiveAppointment, bool isArrivedAppointments, {Function(dynamic)? onSuccess, Function(String)? onError}) async { - isPatientHasQueueAppointment = false; + if (patientArrivedAppointmentsHistoryList.isNotEmpty) { + isPatientHasQueueAppointment = false; + notifyListeners(); + if (Utils.isDateToday(DateUtil.convertStringToDate(patientArrivedAppointmentsHistoryList.first.appointmentDate))) { + // getPatientAppointmentQueueDetails(appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, patientID: patientArrivedAppointmentsHistoryList.first.patientID); + getPatientAppointmentQueueDetails(); + } + } if (!isAppointmentDataToBeLoaded) return; + debugPrint('getPatientAppointments CALLED!!!'); + + patientAppointmentsByClinic.clear(); + patientAppointmentsByHospital.clear(); + patientAppointmentsViewList.clear(); + + patientTimelineAppointmentsList.clear(); filteredAppointmentList.clear(); patientAppointmentsHistoryList.clear(); patientUpcomingAppointmentsHistoryList.clear(); @@ -276,6 +290,8 @@ class MyAppointmentsViewModel extends ChangeNotifier { _groupAppointmentsByClinicAndHospital(); if (patientArrivedAppointmentsHistoryList.isNotEmpty) { + isPatientHasQueueAppointment = false; + notifyListeners(); if (Utils.isDateToday(DateUtil.convertStringToDate(patientArrivedAppointmentsHistoryList.first.appointmentDate))) { // getPatientAppointmentQueueDetails(appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, patientID: patientArrivedAppointmentsHistoryList.first.patientID); getPatientAppointmentQueueDetails(); diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index e93d6048..023bdee0 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -107,6 +107,9 @@ class _AppointmentDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppointmentDoctorCard( + renderWidgetForERDisplay: ((widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || + (widget.patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID)), patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onAskDoctorTap: () async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); @@ -755,12 +758,15 @@ class _AppointmentDetailsPageState extends State { ], ).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h), AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) - ? !widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! + ? + (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! || + widget.patientAppointmentHistoryResponseModel.isExecludeDoctor! || + Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID)) ? CustomButton( text: LocaleKeys.rebookAppointment.tr(context: context), onPressed: () { - openDoctorScheduleCalendar(); - }, + openDoctorScheduleCalendar(); + }, backgroundColor: AppColors.successColor, borderColor: AppColors.successColor, textColor: AppColors.whiteColor, @@ -777,7 +783,6 @@ class _AppointmentDetailsPageState extends State { : CustomButton( text: AppointmentType.getNextActionText(widget.patientAppointmentHistoryResponseModel.nextAction), onPressed: () { - myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); handleAppointmentNextAction(widget.patientAppointmentHistoryResponseModel.nextAction); }, backgroundColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction), @@ -855,6 +860,9 @@ class _AppointmentDetailsPageState extends State { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.getPatientAppointments(true, false); showCommonBottomSheet(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), callBackFunc: (str) { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); Navigator.of(context).pop(); }, title: "", diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart index dc9213f7..097efaf6 100644 --- a/lib/presentation/appointments/appointment_payment_page.dart +++ b/lib/presentation/appointments/appointment_payment_page.dart @@ -403,6 +403,9 @@ class _AppointmentPaymentPageState extends State { patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -421,6 +424,9 @@ class _AppointmentPaymentPageState extends State { isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -485,6 +491,8 @@ class _AppointmentPaymentPageState extends State { patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -503,6 +511,8 @@ class _AppointmentPaymentPageState extends State { isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index ec06efce..493d15b2 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -226,7 +226,10 @@ class AppointmentCard extends StatelessWidget { } Widget _buildActionArea(BuildContext context, AppState appState) { - if ((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) && AppointmentType.isArrived(patientAppointmentHistoryResponseModel)) { + if ((((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || + (patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(patientAppointmentHistoryResponseModel.clinicID ?? 0))) && + AppointmentType.isArrived(patientAppointmentHistoryResponseModel)) { return CustomButton( text: isFromMedicalReport ? LocaleKeys.selectAppointment.tr(context: context) : LocaleKeys.viewDetails.tr(context: context), onPressed: () { @@ -425,8 +428,8 @@ class AppointmentCard extends StatelessWidget { ), ) .then((_) { - myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, false); + // myAppointmentsViewModel.initAppointmentsViewModel(); + // myAppointmentsViewModel.getPatientAppointments(true, false); }); } } diff --git a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart index b87a0a36..d1abf2ff 100644 --- a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart +++ b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart @@ -58,17 +58,17 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { projectDetailListModel = Utils.getProjectDetailObj(appState, patientAppointmentHistoryResponseModel.projectID); double dist = Utils.distance(value.latitude, value.longitude, double.parse(projectDetailListModel.latitude!), double.parse(projectDetailListModel.longitude!)).ceilToDouble() * 1000; print(dist); - if (dist <= projectDetailListModel.geofenceRadius!) { + // if (dist <= projectDetailListModel.geofenceRadius!) { sendCheckInRequest(projectDetailListModel.checkInQrCode!, 3, context); - } else { - showCommonBottomSheetWithoutHeight(context, - title: LocaleKeys.error.tr(context: context), - child: Utils.getErrorWidget( - loadingText: LocaleKeys.ensureWithinHospitalLocation.tr(context: context), - ), callBackFunc: () { - Navigator.of(context).pop(); - }, isFullScreen: false); - } + // } else { + // showCommonBottomSheetWithoutHeight(context, + // title: LocaleKeys.error.tr(context: context), + // child: Utils.getErrorWidget( + // loadingText: LocaleKeys.ensureWithinHospitalLocation.tr(context: context), + // ), callBackFunc: () { + // Navigator.of(context).pop(); + // }, isFullScreen: false); + // } }); }), SizedBox(height: 16.h), @@ -150,6 +150,9 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { scannedCode: scannedCode, checkInType: checkInType, onSuccess: (apiResponse) { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), callBackFunc: () async { await myAppointmentsViewModel.getPatientAppointmentQueueDetails(); diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index 6eaa379f..0e3ade72 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -95,11 +95,11 @@ class AppointmentDoctorCard extends StatelessWidget { labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( - labelText: patientAppointmentHistoryResponseModel.projectName!, + labelText: patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), ), AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), icon: AppAssets.doctor_calendar_icon, labelText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang( DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), @@ -107,7 +107,7 @@ class AppointmentDoctorCard extends StatelessWidget { )}", ), AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), icon: !patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppAssets.walkin_appointment_icon : AppAssets.small_livecare_icon, diff --git a/lib/presentation/book_appointment/review_appointment_page.dart b/lib/presentation/book_appointment/review_appointment_page.dart index ebd9773a..b874e16b 100644 --- a/lib/presentation/book_appointment/review_appointment_page.dart +++ b/lib/presentation/book_appointment/review_appointment_page.dart @@ -178,7 +178,7 @@ class _ReviewAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - bookAppointmentsViewModel.selectedDoctor.projectName!.toText16(isBold: true), + (bookAppointmentsViewModel.selectedDoctor.projectName ?? "Habib Hospital").toText16(isBold: true), SizedBox(height: 8.h), bookAppointmentsViewModel.appointmentNearestGateResponseModel != null ? Wrap( diff --git a/lib/presentation/notifications/notification_details_page.dart b/lib/presentation/notifications/notification_details_page.dart index 949b8728..1607e8f5 100644 --- a/lib/presentation/notifications/notification_details_page.dart +++ b/lib/presentation/notifications/notification_details_page.dart @@ -20,26 +20,18 @@ class NotificationDetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { - // Debug logging - print('=== Notification Details ==='); - print('Message: ${notification.message}'); - print('MessageType: ${notification.messageType}'); - print('MessageTypeData: ${notification.messageTypeData}'); - print('VideoURL: ${notification.videoURL}'); - print('========================'); - return CollapsingListView( title: LocaleKeys.notificationDetails.tr(), - trailing: IconButton( - icon: Icon( - Icons.share_outlined, - size: 24.h, - color: AppColors.textColor, - ), - onPressed: () { - _shareNotification(); - }, - ), + // trailing: IconButton( + // icon: Icon( + // Icons.share_outlined, + // size: 24.h, + // color: AppColors.textColor, + // ), + // onPressed: () { + // _shareNotification(); + // }, + // ), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -230,21 +222,21 @@ class NotificationDetailsPage extends StatelessWidget { ), // Additional notification info - if (notification.notificationType != null && notification.notificationType!.isNotEmpty) - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.typeNotification.tr().toText14( - weight: FontWeight.w600, - color: AppColors.greyTextColor, - ), - SizedBox(height: 8.h), - notification.notificationType!.toText16( - weight: FontWeight.w400, - color: AppColors.textColor, - ), - ], - ), + // if (notification.notificationType != null && notification.notificationType!.isNotEmpty) + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // LocaleKeys.typeNotification.tr().toText14( + // weight: FontWeight.w600, + // color: AppColors.greyTextColor, + // ), + // SizedBox(height: 8.h), + // notification.notificationType!.toText16( + // weight: FontWeight.w400, + // color: AppColors.textColor, + // ), + // ], + // ), ], ), ); diff --git a/lib/presentation/notifications/notifications_list_page.dart b/lib/presentation/notifications/notifications_list_page.dart index c5f5d120..6c344b2e 100644 --- a/lib/presentation/notifications/notifications_list_page.dart +++ b/lib/presentation/notifications/notifications_list_page.dart @@ -23,7 +23,7 @@ class NotificationsListPage extends StatelessWidget { @override Widget build(BuildContext context) { return CollapsingListView( - title: LocaleKeys.notifications.tr(context: context), + title: LocaleKeys.notification.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, notificationsVM, child) { return Container( From 9ed016ad8b80593fb86f15371d60b5ab35a229c0 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 5 Feb 2026 16:43:04 +0300 Subject: [PATCH 49/67] updates & fixes --- lib/core/api/api_client.dart | 2 +- lib/core/api_consts.dart | 2 +- .../authentication_view_model.dart | 2 ++ .../book_appointments_view_model.dart | 1 + .../symptoms_checker_view_model.dart | 4 +++ .../appointment_details_page.dart | 20 +++++++++++--- .../review_appointment_page.dart | 14 +++++++++- .../cmc_selection_review_page.dart | 26 ++++++++++++++----- .../contact_us/widgets/find_us_item_card.dart | 18 ++++++++++--- .../hhc_selection_review_page.dart | 18 ++++++++++--- lib/presentation/parking/parking_slot.dart | 18 ++++++++++--- .../symptoms_checker/user_info_selection.dart | 1 + lib/widgets/map/location_map_widget.dart | 18 ++++++++++--- pubspec.yaml | 2 +- 14 files changed, 118 insertions(+), 28 deletions(-) diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 4286618b..0ec385eb 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -188,7 +188,7 @@ class ApiClientImp implements ApiClient { // body['SessionID'] = "45786230487560q"; } - // body['IsNewFlutterApp'] = true; + body['IsNewFlutterApp'] = true; body.removeWhere((key, value) => value == null); } diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 87ca2f8c..e833ea92 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -904,7 +904,7 @@ class ApiConsts { static String getPatientBloodAgreement = "Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation"; // ************ static values for Api **************** - static final double appVersionID = 50.3; + static final double appVersionID = 19.7; static final int appChannelId = 3; static final String appIpAddress = "10.20.10.20"; static final String appGeneralId = "Cs2020@2016\$2958"; diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index b48912de..689b0b48 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:get_it/get_it.dart'; import 'package:hijri_gregorian_calendar/hijri_gregorian_calendar.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/common_models/nationality_country_model.dart'; @@ -1045,6 +1046,7 @@ class AuthenticationViewModel extends ChangeNotifier { } Future getServicePrivilege() async { + ApiConsts.setBackendURLs(); final resultEither = await _authenticationRepo.getServicePrivilege(); List privilegeModelList = []; List vidaPlusProjectListModel = []; diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index 34858b47..8da3a2ff 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -806,6 +806,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { print(failure); + onError!(failure.message); }, (apiResponse) { if (apiResponse.messageStatus == 2) { diff --git a/lib/features/symptoms_checker/symptoms_checker_view_model.dart b/lib/features/symptoms_checker/symptoms_checker_view_model.dart index ed82451f..4180d363 100644 --- a/lib/features/symptoms_checker/symptoms_checker_view_model.dart +++ b/lib/features/symptoms_checker/symptoms_checker_view_model.dart @@ -104,6 +104,10 @@ class SymptomsCheckerViewModel extends ChangeNotifier { int? get selectedAge => _selectedAge; + setSelectedAge(int age) { + _selectedAge = age; + } + double? get selectedHeight => _selectedHeight; bool get isHeightCm => _isHeightCm; diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 023bdee0..953fd4ab 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -38,7 +39,7 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'package:maps_launcher/maps_launcher.dart'; +import 'package:map_launcher/map_launcher.dart'; import 'package:provider/provider.dart'; import '../medical_file/widgets/medical_file_card.dart'; @@ -228,9 +229,20 @@ class _AppointmentDetailsPageState extends State { child: SizedBox( width: MediaQuery.of(context).size.width * 0.785, child: CustomButton( - onPressed: () { - MapsLauncher.launchCoordinates(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), - double.parse(widget.patientAppointmentHistoryResponseModel.longitude!), widget.patientAppointmentHistoryResponseModel.projectName); + onPressed: () async { + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), + double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), + double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", + ); + }); }, text: LocaleKeys.getDirections.tr(context: context), backgroundColor: AppColors.textColor.withValues(alpha: 0.8), diff --git a/lib/presentation/book_appointment/review_appointment_page.dart b/lib/presentation/book_appointment/review_appointment_page.dart index b874e16b..f82295a5 100644 --- a/lib/presentation/book_appointment/review_appointment_page.dart +++ b/lib/presentation/book_appointment/review_appointment_page.dart @@ -286,8 +286,20 @@ class _ReviewAppointmentPageState extends State { } else { //TODO: Add patient Derma package check API Here await bookAppointmentsViewModel.insertSpecificAppointment(onError: (err) { - print(err.data["ErrorEndUserMessage"]); + // print(err.data["ErrorEndUserMessage"]); LoadingUtils.hideFullScreenLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + // Navigator.pop(context); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); }, onSuccess: (apiResp) async { LoadingUtils.hideFullScreenLoader(); await Future.delayed(Duration(milliseconds: 50)).then((value) async { diff --git a/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart b/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart index 9b78ecad..840d38cf 100644 --- a/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart +++ b/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart @@ -1,4 +1,5 @@ import 'dart:developer'; +import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -22,7 +23,7 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/map/location_map_widget.dart'; -import 'package:maps_launcher/maps_launcher.dart'; +import 'package:map_launcher/map_launcher.dart'; import 'package:provider/provider.dart'; class CmcSelectionReviewPage extends StatefulWidget { @@ -319,16 +320,27 @@ class _CmcSelectionReviewPageState extends State { CmcUiSelectionHelper.showHospitalSelectionBottomSheet(context: context, onHospitalSelected: (hospital) => context.pop()); } - void _launchDirections(HospitalsModel selectedHospital) { + void _launchDirections(HospitalsModel selectedHospital) async { final double lat = double.parse(selectedHospital.latitude ?? "0.0"); final double lng = double.parse(selectedHospital.longitude ?? "0.0"); if (lat != 0.0 && lng != 0.0) { - MapsLauncher.launchCoordinates( - lat, - lng, - selectedHospital.name ?? "Hospital", - ); + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(lat, lng), + title: selectedHospital.name ?? "Hospital", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(lat, lng), + title: selectedHospital.name ?? "Hospital", + ); + }); + // MapsLauncher.launchCoordinates( + // lat, + // lng, + // selectedHospital.name ?? "Hospital", + // ); } } diff --git a/lib/presentation/contact_us/widgets/find_us_item_card.dart b/lib/presentation/contact_us/widgets/find_us_item_card.dart index 6e295e08..1774404d 100644 --- a/lib/presentation/contact_us/widgets/find_us_item_card.dart +++ b/lib/presentation/contact_us/widgets/find_us_item_card.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -10,7 +12,7 @@ import 'package:hmg_patient_app_new/features/contact_us/models/resp_models/get_h import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; -import 'package:maps_launcher/maps_launcher.dart'; +import 'package:map_launcher/map_launcher.dart'; import 'package:url_launcher/url_launcher.dart'; class FindUsItemCard extends StatelessWidget { @@ -82,8 +84,18 @@ class FindUsItemCard extends StatelessWidget { iconColor: AppColors.whiteColor, backgroundColor: AppColors.textColor.withValues(alpha: 0.8), textColor: AppColors.whiteColor, - onChipTap: () { - MapsLauncher.launchCoordinates(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0"), getHMGLocationsModel.locationName!); + onChipTap: () async { + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0")), + title: getHMGLocationsModel.locationName ?? "Hospital", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0")), + title: getHMGLocationsModel.locationName ?? "Hospital", + ); + }); }, ), SizedBox(width: 4.w), diff --git a/lib/presentation/home_health_care/hhc_selection_review_page.dart b/lib/presentation/home_health_care/hhc_selection_review_page.dart index ae2430af..9a9342d7 100644 --- a/lib/presentation/home_health_care/hhc_selection_review_page.dart +++ b/lib/presentation/home_health_care/hhc_selection_review_page.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -19,7 +21,7 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/map/location_map_widget.dart'; -import 'package:maps_launcher/maps_launcher.dart'; +import 'package:map_launcher/map_launcher.dart'; import 'package:provider/provider.dart'; class HhcSelectionReviewPage extends StatefulWidget { @@ -142,9 +144,19 @@ class _HhcSelectionReviewPageState extends State { ); } - void _launchDirectionsToLocation(double lat, double lng, String locationName) { + void _launchDirectionsToLocation(double lat, double lng, String locationName) async { if (lat != 0.0 && lng != 0.0) { - MapsLauncher.launchCoordinates(lat, lng, locationName); + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(lat, lng), + title: locationName, + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(lat, lng), + title: locationName, + ); + }); } } diff --git a/lib/presentation/parking/parking_slot.dart b/lib/presentation/parking/parking_slot.dart index 52ab181d..e8c4f097 100644 --- a/lib/presentation/parking/parking_slot.dart +++ b/lib/presentation/parking/parking_slot.dart @@ -1,4 +1,4 @@ - +import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -7,12 +7,12 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/qr_parking/models/qr_parking_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:map_launcher/map_launcher.dart'; import '../../features/qr_parking/qr_parking_view_model.dart'; import '../../theme/colors.dart'; import '../../widgets/appbar/app_bar_widget.dart'; import '../../widgets/buttons/custom_button.dart'; import '../../widgets/chip/app_custom_chip_widget.dart'; -import 'package:maps_launcher/maps_launcher.dart'; import 'package:provider/provider.dart'; import '../../widgets/routes/custom_page_route.dart'; @@ -29,7 +29,7 @@ class ParkingSlot extends StatefulWidget { } class _ParkingSlotState extends State { - void _openDirection() { + void _openDirection() async { final lat = widget.model.latitude; final lng = widget.model.longitude; @@ -48,7 +48,17 @@ class _ParkingSlotState extends State { return; } - MapsLauncher.launchCoordinates(lat, lng); + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(lat, lng), + title: "Parking Location", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(lat, lng), + title: "Parking Location", + ); + }); } diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index c8d8cde9..c0b5f7ab 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -144,6 +144,7 @@ class _UserInfoSelectionPageState extends State { age--; } userAgeFromDOB = age; + getIt.get().setSelectedAge(userAgeFromDOB); } catch (e) { // If date parsing fails, ignore } diff --git a/lib/widgets/map/location_map_widget.dart b/lib/widgets/map/location_map_widget.dart index 2a1ea657..e3139a93 100644 --- a/lib/widgets/map/location_map_widget.dart +++ b/lib/widgets/map/location_map_widget.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; @@ -8,7 +10,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; -import 'package:maps_launcher/maps_launcher.dart'; +import 'package:map_launcher/map_launcher.dart'; /// A reusable location map widget that displays a static map with address and directions button /// Can be used in any review screen (HHC, CMC, etc.) @@ -56,9 +58,19 @@ class LocationMapWidget extends StatelessWidget { this.padding, }); - void _defaultLaunchDirections() { + void _defaultLaunchDirections() async { if (latitude != 0.0 && longitude != 0.0) { - MapsLauncher.launchCoordinates(latitude, longitude, address); + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(latitude, longitude), + title: address, + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(latitude, longitude), + title: address, + ); + }); } } diff --git a/pubspec.yaml b/pubspec.yaml index 02acec84..19acdf31 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -73,7 +73,7 @@ dependencies: web: any flutter_staggered_animations: ^1.1.1 smooth_corner: ^1.1.1 - maps_launcher: ^3.0.0+1 + map_launcher: ^4.4.3 amazon_payfort: ^1.1.4 network_info_plus: ^6.1.4 flutter_nfc_kit: ^3.6.0 From 2ab3e178a2c879be8ed5d6c8f2a99393a32a6d36 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Fri, 6 Feb 2026 11:13:47 +0300 Subject: [PATCH 50/67] Indoor navigation implemented --- android/app/libs/PenNavUI.aar | Bin 4725801 -> 4725676 bytes android/app/libs/PenguinRenderer.aar | Bin 259624 -> 259691 bytes .../com/ejada/hmg/penguin/PenguinView.kt | 1 + assets/langs/ar-SA.json | 7 +- assets/langs/en-US.json | 6 +- ios/Runner/Penguin/PenguinView.swift | 54 ++++----- lib/core/api_consts.dart | 2 +- .../hospital_selection_view_model.dart | 2 +- lib/generated/locale_keys.g.dart | 4 + .../appointment_details_page.dart | 110 ++++++++++++++++-- .../appointment_checkin_bottom_sheet.dart | 20 ++-- 11 files changed, 156 insertions(+), 50 deletions(-) diff --git a/android/app/libs/PenNavUI.aar b/android/app/libs/PenNavUI.aar index 7832df8cdcf1b096bef6b81f0367826343dbbb2b..a56586057cbc2f01e59c41a4680b4513e3e7b84f 100644 GIT binary patch delta 1003680 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

y$he#Cz$GQ@#47i{5M#OZ-? zSQsA$f)nL)-!aG_Lu2yB$96`H;ygCYf|LS9|Ds3`%GkgM>fpaqu34$3f~GILz@Bxx zD89ZpfL&MAC-jeTd;_wvH=J>`BNX4Bpr^ubU|QVp_4O=7%_|z?0Uk|Z?kcCfrl z&QXB~xaEUrT1}Mty2TRa25laJ#Kr&uew4PVkQJ1aguGPp;?tk=RX$j#K&+i)qim_7 zn0V?+66S*=f*Kc6erTybiZ~8L4;fgHD7>*<>$*{Qt4ked7MRC#7Qc@h02I0yqi!PAu8+tjOT%G$fy;-fE?87sN@Rp$ z+>X`iStEb#Do!$GOVf&XY27uqt4YYm3kCTs>Hb)ztq_%%p$>U>l*)8 zI|=3%4r7ar6%wv({q_R#e%K@EYwH(3^$O=vXSO>E^BJVwKrqgJ4fk;S3ZlWsJq&!= zQ&A8V5P@#2_ulh`Q~D9<_3kEP&uHE~`ow==V{sP~cb}C-LHqmyNb_6PD(&n(wo*7< zJJ{UIcNoo5C~Dh>+jHIiGEXne9*Z2x1FXM`81XQ%vQgm~mzWh^3!;@=l@8$leBaF> zw>-O36!@k@FUOu-Dr`N{G@t;4qN1%kQf^~-Z=aIFC8ay`*pA5)@k&(v9(;@Mhj)Kl zz5M(fa~lbEyuIw=`L_v`kCDkwjVG)UeV_LtxAOYweWW}_`7M&~Bdq!s zYQGmLOF%o+VhQ!w*Ku@BA@(v7E7l#@bB9RC=^+vQ&iUgc-4hZX;MX}od@r-?JNJYD z+&BfdxS6Ke(yF5#bOBsoOqvn)*;Ie5;CES;GEMiN+qHpfyJLQ$WOu$p?wHFxUjc$s zqr~zqnr$342sx`;_vpMfEmCYnrold6M$B-xS}ea&=IzQLT4cT$W+nP%M(~DZ>8^ zV;4Q?x-6y%eCZ6aAXaBMF!p~MHKKA=yB4gRHKy9ql1iH@nxdr*)~<|9Ke$IEiGA{; zec7-^9S%&Ep@+YJ{%Z&z;xl7#3m6D!3>*kZ;{Rg^z`)qR-r2;_iC)m!TExQ9#OQwq zAO-)=;{OfW)Tmm?qX?q%g3wAEAkjz-kV~wz{)LI8kAy^pm4zm4wm5$zXLc6H+_+)u z+9G09{7nRB`4}MBk7L^1SRD)#Q?y?6*v{~p?Pzne?fZTEfa@2g5uFc^gCoQ(+^Xi6v!9rMW#RK7-L}M;+;IF6rx^&yYwZ3O7_30>i^#9Ikg?ZO0VjF-VY1uPK6U zt2WWyH5$*OvNK&$gq|}GKy?kd%OdGBEKq?p5*Z@JOLGV@xQc(9FoL{=l$d!m}8nIYxJw4*Dzd{&FLw}!*w!arb)aJ(|H z$bz<>X^?r&nr#v3W`n%Qw}xWZ-%cY#Yin3(rp$Y5Fyeoz3U;-FoYQmS$rGI0R3XNS z^2)tq;VJld!_bD4$4V@FDUQbdG)(TymxJpv(idnE@;AL$n-tpfC9#lOpepL@Xe=g+ z?N>??pI6FT_#|xS5H!NTjIm>oJW^PChcETlM}wb*(-h}I^p)2h7Oq2Mmi^)>pf3A& zfp~>@X0dysJ%To*vu))Vf@R~6XbSTB>5h0+`1Hzx z@vl%~3AaQQ0z1!xMxPP&9qPXVbZhqknEwwzLtsEa>i-h}$=Defn>eajn7B#USsVY~ za7~HImYlL6s*W;r8SRN0T8F2oO_ZaEpsZ!IKem5_R8YRpzRf1{AmCiaX|{R1>n|DK+aKT9Oh8iSnF2Hw88-fD?Rf$z;mu`KLT|hfup~qUOJ{;Na1MIQZG?ZpWv$BMwh`v^&F8)tMvWq&x}4H>kHu3#-hs^XS~$U}>z1{X z*JK3m>d=7m8p0cHwkhTtaWQHr&bY7Yl@qrlNtfLhQ@zi zsk4mcm#XDAJV{%okBF2iZ!S_QdBt%+Ulaz;>5AiE1UG zw6wdcO6rOeN?kNdv+1!U`bqrkQ_^e>!+4u7~V8e_tIBcvzJJeM!ZFG$T$iue%(; z@i?RxnI;%DAs&*t^l$f%$=&83(LwBpmYi5#6DjW^^!ZTwF#3|n(fzu%0 zn69}i{F}844iqXAVgOF#OL)?hn#mbo@Ze&41Ly8Bvp>Uhp)_XV!x@n@y~uwzZNlCe zY(B6Oc|+k)tEe<~gG?ki=q)Gy7`WKWs}+4&;9S zE$A5?+`eJ-AArtafPhr~Cm>Rgm;CPp)u?H>p^BpZP(isesel55LK1-!XMhR^86X8o zpc{#WPNc&Pv@q!~Qv%LocUXTxh;Ir5FYOq^M4kqYn&#-nPTKR1UaqRfv~ng8rxBg{ z(|UEv_0AH?uF?XORdDs=_BfPs&$v}a(2OM_vW+ z!4J*UQoe#)W+}p{$8Lgo(NDaL%S8i1(MGHsL%op@k!q9eOcYcet_IH%8tj6dY>!wE zI^y84ZMbT=i{hA>M=+f03qnTAON-`N2BGRgq&Vqj%8v@4Y+Yv?)X>iqR8JTvRC&zSLtjqiC<=?gpd7?Kwu=H~Q-xGSR`Q?|)QP z6l*W5tV1K}gO22m%x%D=Jt86;F~;Ojd^;$DjRit9-LWjbMmT@DrW3)#k`KCD!Miwa z*fw8I@Je(N5={GI%64#DHJa!yKYZseIZ+m=lg+H^(~fe{idX5Irx)rR+T)D+G?elx zD6H(`k92W0DbXT4VQGJN8%1=FjY|r7al>N9#6(w9D!_3EK+t0yp9}A z&96QL)6r|GTbh5zN{b65jdGD0K*LS3;7Qak{$j^e9ht_)z5(GkGmPIOh62L(!cnOH z2GBvb33#lGaw9YHL>r+e;*KR4t~=uip+pH+U>KA~kx#qWgIdIj%P6u1JJ)!`LP`~t z#E;`_U<52`h;zyvqUQ93kc=0U4#~Rx z!&)jY-H}J;JRgh}fHjLqOO|@*OH=s9A45UUJ$8qdM`2CNrVNb%eXz7OI%SItY#CEW z&Nm_wL(M!M?=KK0DJ|Ps{F@=3Qfg?D(8MrOV4rE=m2y4xaZ1K4J&FQb^$`jocVn`i z%0nADNN0b3vbhnMwlMj6wE*m)&IHha!|;H?4~w%1t(jU^!f!5XR$VqAVpdmpJD6B< zR`R5o_r7#Vk|IA{ibR5*Q50~3(k=p!xrX5ft2`(CwRP57WEns~TXcV> zUudRZa85X-YBu!@0O?!Q{Rw6JiUoNC5q@Kq%9w+oEz^!#D^#sJijmMA&LYVI)ZyD5 zUB8(sj7Ny=cwoQM8N$MD)2`IOzIqX%dfv#<#YB2;0A@uj6Rjb-* zuBy@T_Nkj|dwco#@P3%>c%7Xg$ruJ&9lIUt+51jy@;UpOd+(jV$-{O3)9>xM7e!-C zeOEp%NLL^Q15s3pw0#(Nf#-uq$h&C;$okHT(NDvFt+W5wY_F>(D;GWVOpbr=nuo-> z7Y(-7^T-P1861YwtUHw-j*0Ih!(REoj{dg|1Ge!_;a{nr9eGbdlD%i}@<#00E{$(c z(uqFbe5!&98n`ZXu1u!s#-hL zjKZ(GTpiT$R1o179jUlOdhooMw%6Vp#FfU$j=6V}Q0KUD3#Fl@R#AU3WSfgTACyAq zbgf(xD$uMkA}**fpc#edf`Q{bb&F_rzVzH~XvY*lxLmMYFs_B>KShePksS^Xu$PHz z1hpp76WBgzPUa5&$Nzgsi{~j~eISZ9tKd+IS;&CQI(VPTF|~oc!sXm>?u}+P^$-3t z3mwfAM&*AW2gtM6=mhS=0ylisvYLbYnZ zJ46*mS-?xYL!5uu#ifuNI+PPpA2RrpDnf$HR6TAb9u}Anjh7Rw41Vee>PAwi$Q|xQ zM3~b8buNv3FOqyz@s|ws!_v^_0De$uuUuwP6f?%UC11BKz5lPwLy1V6LQ{ng2=!>! z1c$F7c-2$7ATR1;6M;0-#MwAN5h+wsVMsG>ck(YuR$70qSax(SwxO1FKN*_hFeaya zal#s7{pVzusVY4(K($_D1pTRDfyoA0KK5OGGU?rgw3&`f^#ZZR;Zrl)Sd`)s?j*6+ zN1BI9?r`L!U1$J9)f-BWOa@;N1)aZiObahso_Gj~ZL`o$3UC0Q!z)+)godVmV5!Co zIF$~yo`HXasm>|64H=ZamK#bRjGLT2TD`ZtZV7SSW6r$2vvuL?WJOLa5CRTFS zo&h`Svx4Oy+e*A}w7=;?bu$K{{W#q9Y#&o(V_NRG7PFD8%M%=i=B+bA{044dYkI9I zON*|Df7yt`XzLJxAGBPDV}ytpO&7lN>r6bK zstS3wMVkxP1QV;SXljzXj36;Yru0&|5?wr1uq)Ys3pdwwwjE zt3rmnP{_#p%sRoIE#}dKLBB5wMqlBMRabvJE3%q=qS>7_wGY1oDY>FY@1!^4hK8$j zkKM~2UL+gK*r^Uf`cyh=P%(Qz4)_X2CIA-!>YS@BK73X4fP-B!HS;JS=5X18K77VSV{-Sag}+^T*FS|_dz zv>0Jf6ZPJ)Q~iYZnLL>oWEP3Vk)82*r8AH>EpY;+WU9~I&zxuaoXD>i@83e580i-8 z6Re8}w^Ykwx>mgXX%rpzQ@bbp2_b(qBiwqj7fKsu$TU}?u}`pWl=&rN`sOxREt^C4 z{jE6cyE7Afhn$0ngky4ls;3h-tU~>;L-QN>U0BVXv=j}nM|q4o2Qhv92A_2Y?KjuRGEJyr|)XK zJbV_bLqbK&7m-tSTRB>3BVD$U`{0S_V}w;DJyFMZU2pUamh5K2K;7KVlq{xMv_i+M45HzPNixd zDWz|V04iMPV~vOm!)Q(QxpYFf^cB)88BKBSxBH_l}h>C_|M`wRsaj;3Y(RhSb7GOlnuKMxlE5U)jKMcdWDew7mZB0rx75<`c5 zjZHapf#z5!NsVO=MXP^mo+0(8v!9bDwlfebOy<7+9gETN_?b>q34~U?T(N}A5UP)3ce!^QrMZNy2su*oHv#zzKOCR|C(HUAFj~UY zf6mZ10)V!9A)SBD5Uzzqk0oTMF+}2VDGk;#0Lgp6LE*jjY+eEHI0SDJhH0@-6zfJ?Lax^6HwOJe$*-&-AYah5^;14_A5LS%t@}Bf+!td&+;r*lg-|<-*G{XYY5G&UZn}mN(i? z6M>^N{xW}=Kw7*OJVZuN4A!uuW_NF8+t;@M%T6W~2x}s&-bKeBE(6cqroWKcp!XGh zu`5g{g;+Qa8`ZPuV;pb`;353Gn}y*#cQ!JFlxzh%;5rfhf|Tz(90WB4A}^a(_1;vg z-|^23UArXq4+>^EUQwI9duUA+OlVqB&zQkbSm=M(tbjSED_Gc%JE35FCGRX(r;RFr zaS%(qNu>Y}b|!?J_7AjsW0ti=}!oJr$O$fvQMFs#$kk%0Mln4RSo zV;q#5%wruC13a6dUUIOt{lGirgD&mE^m)!TnJ9TB!N zl@hgQ1J`lxL~p*3eKr{TMIXkTzv#-#x1*A%O>aft{dsLxtUTB+_Com~EzG!YzW6;0roY@~W#ebR9+ReGi)ZL9ybe6nU$r;Tc9<4?AWDo31f19~9KhtFC@9X(?ElJ;d|2s0pTom2_;T zQ1(+BpNeQjH$kSVm%I?}G^zb1ptVj>`_auf)j-ji+q_8Jxo}^lQFOr}+xWSt%pB$n zLZcmNCXB2-J;Oe&PaUH>S&(MH)7x*?I-}y^m0i&I&%P|BC!EeylSqGI*~S~^SFK?w z%%|cO$IK%G*-XXs%~&H?ZjiaQ^2J8jsg9a_)Khh<=jx5)jstWR1ZYOU?EQR%B*4(h zZog;O9I7RJjC??PZQ=pJFKD*=bTLXn5r|Qh%BliWr^0A`msKwERIoG zFy~0Znb^vO`L{2If24o2&FQnMHBN&7J$XB%j+4Ck zy2z7pQy;hvX5go_4CWMCtB93B(8ysAz!E zt^@*_n`%r+x7?rEk{e>w*&W*~A(9ejJSVP*Vhct&)nGjk$MCO?Fg)jDTmYQ_|2=VrP?v^ZKnFh%Hu!RW+UYYiE?vzUJec_9yUOIz{Q_W7=czhzzx zO22?!js&~?!|t&C`UWBnZFnZTT^ZWO?*1tMAj*Wa9tIgtV>(f$FW?UX?w(;hTX64;E%2qJ&VN4vZI#AA0|Y(8&qNf25SG?9u-CW& z3AD4>k-)aRLVNKP2dN}2G}IIb`iJBXVP-MVY!vQS4CJ7qf&oHtiCY!>s&{KAVID4{ z12p(5fcv3p)th+-4Gq=owaK~dIK`U%pg#R<{eOQq#c}z@c&32+b}O|<>&(C2i=U0{ zaq!H;CfqsbvhvVk_y#GS%mNTTNe;`SSE_PU=~sizM|Qb*cgA%D(7CiQ$or#kwx(+5=mJ;T%T)5tX{iY=)12JM=}_1UG~23x4JgY)*Qya%d`$ z`lEjnb(*wWeZ8BeH?=hto%c+AYi4z-wO{IrXQC@t`-R}@uy<;(m97@@)s%?%FB+5xjamZEzeGM2syvutgEnrFhY~svN zIt)gy5WLC(iJil}jJ(1Hjhd4@DA8#{L0^9_Zs{@i4{eYq4NEf(T5e=ALJ4^%R1X?uR3bAWIIrU|inBAG2517c z>~D?J<2Yokf)&Y5XDZ=qU(2~c^N8YMwBlho5?pK7ANSDQmR&FNx}59{4V;D)hedy? zGIN4ozX09B+kZ8;i&jseE1pTahrj%X8W{Em38MU^ZM+W{Xkbt9es!m>^6x!ptpvZY zw~O?SkN4=`iMuC6-spXPGq>U%J9a$pPx#-lKmLoq|807=`Fpe42@C|Z4-Nz*`Tuu% zCu?9~`~RK{u#ra*MD%TK#-$C@N1}h~EmWfg<5cjbwX8QZUtAnbBqPIidRlGt+_AZd z#qNDiW657Y_yO`uc6iwYCcp*>Aj`?|ur<%hEt)Xd*TSyH>q4`iYm;h?rwzR&7{xsO zBt?UKpqZ+Shf6!tQT$aw_3bBpEzdO}6upZ!_{*#uMI7M(awa3ApJ;G0jK(Cx!7JgU z)*%hhJ{%e9EZ4oSIURzSc?XAC+#W>qk{XDD;Lk8vJmvSgB{7&KFm=m+B(_|?K(qA zqO0z>TD6il?|>D3Br;X!@+>?V#u`))2hpCWSkKuy_M{ky;PuMECS?@T;>kmeS;G8m zR3<>8nAwEh^UVQ@oi)Ft0MTV133GnUTWn}ORF}065w%HS5#sJL8kFxs65`@o%C$v% zx0lN9tmi@g9f7s_<~e_#1DOvX;7xzeaZhx%UOVjeDTgW^6y@PzWtQw&EE2^>N1uX0 z%}WGpkv`%KLsw}mJa|u86LWSzre?1P#((f9tFxr2G7vX z?;#EK!lT>)7lsWueKHFz%2Zu2tx-+Qn0pByp;P=0MnDie5%zyuT8Hj#;nXd2DT6xO zmyRQtSOTch1)n}VkToPeZMne`$efx<#iH}?v`Npf_kRBskO8Jc+HMdaAbm(6Af^8i zK>i;uma0}>D59voWpLIgZ9-9~TB6pJY?NuL9TlR*7*fO*;WpTysOiRG&dzRSH?!a$ z;$H+0^M^wae*S;_kzveBB%-ot0SH}Yr_L^OE zX3tLQ}(q{ z0;6m=0pVIoJXhJe7MGUASuA~|Xm3QO>wc1AN_wW46K)*tFZmlR%H<{#k8V1+{eq!J zF}z=u6dI=m`k2>-&DUxp#5M_yn4^Rcw;deT`BJ<@=~B0X(^&=K&WBiFukWGg4u`Z! zTRKKf+?##w2V%y5y+%_Ce20fV(M;LvQA{DqD3#$+sP>@^eJJ#y-ISfv{Py<+0XWIc zU0ueoKF5cce5M?|X@p6SU>k|4X9f6-Y;P!Zu{g;=zGweF!x3F;+?K{N}g-)XW63z>Mj7Ww+1k4Xs)xszvp-&r+ z)-q`WQr>fcTwBS~X0Xvd&p0mkv!fo{1x9|j{=$MBdqqJ|-e1gNL~?ou(BpZZ7=ou^ z#$G9Qspv+`)4#`0V9bnggiO)(G74fNW#?&J*7oZ?P*{p(i^ zjfjPtj4l;_Dx2CY?XK)VC(Tgcx2GAyLBK2>S32*DQ*f^}m=IhTX=|Tlc#5Mk;*jCH za;(Z+)-qClS7%fxXVjj0o!t4o@R@Ft2VAfWG!(Vo%ndz>X z2DoG}B=1?yr57-)ao4yX*l>uoxoH4gPSo9HcE;m>_0zQ_iD`uuqcxclj^*4O*dkFw z)E8xqIXb;eJk)PfR8{1H{NtUfsA6yo6*JwVUmUNe<-12J2B(M?q^TC*Zy2U~9fr$a zqL5qy-u=lVByhJ)D7qh{g@@gUV;wFSL7s9=`=^Noh)p{yQmd`K|L0h-60zj;u1j zVyUe_NWd?d1Mwe!>W)5bZncM9{kNYkgW@jp*WiGFS}A~l z#Q!I};{O=Lj3$IT?h4Y6xJ}8@Cf_j?dp**dbD}pJCM-G~RjN-b&4d~w+er0|+Tx~L z*Vs*Nw7-gwrwp(~yckuy0Pt`s43tA=63{ts{I1t6D3hJrt#j%NU1HH3!Q12RR@<$A ztQYg|G|%HYGdVt3eQGsOqykNWh#2K0WEC2(Ew<)YXn4h_m?6{(?&@+-LXf7nLJM(M zcL!f?l|>{qr4}ociMn~Gsoh`HFw0LWg;;2)KUgX8P_m4~SdtYV`R;&8dnHNHMNQ*= z74W1=TP-BUg7)O#cOUREMT#*!_h+oYxfsZr}`!s!^Ze^8n`mVtW990g52OhRUCR+VTI zliR$-m96CMe=9F4H!%Borqk*L#8}ahPfd)SXsBg6Mpzaph5Ti+RSgu&+3Jvg|Imyg zLrI(bhgA1-3(&0;Bw`!!=YZhDe|5(FEQ!HWLLL(_j1PqU)2T<^P^?UJ{UO1o1Y5&s zTIXv|?W0Y!VvSLKrK~-|ST`$;sS%r&jT<^cEMf=)2pz&i#c*7$eB)8RSpTkQ6|*`q`@#_tBwDQwRa5Cv}@J{3thJBDR$Xbmu=g& ztuA%hwr$&d3SG8s+n)E^b7D{I@63sqIcNXO759%jBC+zym3ig+;9SXn>2C$*WChLq zptY2id2&LFVlv7oR!x%M6ZL{bRWFgu zDtM7-pGuhM;{@vvyLEJWbOCNRiIce5aQcA{o{YMe6su>ClSJVXQwgTd#q;?J0%d$Z z(hF3mS=nE#_&F!y#M3Zrm~Ly-a%SDkZ*`fC38<0fR7;2Djdc5eO~ets!|& z1Q*E;$x)S#2)iF$a)&>P_BAio&9vONywJ}<41IQg(*5mikqKI#cRLJ2Y zW7MN3qCoXRHHNpS;x6qG(@f@sUEtMZ;Y_77683?x0^a)zrVNlS=V`0;r7fPISq|E+ z(W(-dU9h`;jvk?Zhe!MU$cTeq?#H4d4C75$AVgxsz$~xbi)xT-Gg-$BU(F@7Ej-Q#ani`|XV`m{BS-hL`jb8sjBQqbxV5QM5vkng^ zxCfrR#7kEc19UQ}Ut>-lKhph? z0K;;tj1Vd_U+R7H7fzZ%%QUzQ+x(Ayg}D6cG^1vXm3{d1ZH8MKnBJ6I+>eyHm0Iq9 z%h(I%C=+Xz$`S1!h|i5Xa>F#A+nL}F*8%GAG;;}> z71(lnFO5;XVS`M<8wnoUB4D0)eu=m4AA#Mj8g0JEeL-$B_kmI$aNj96O;O)FfN#i& zP)K^^_>BKa=bbbmBDVCu^FDe7CbkE;LADJwYy;{>U^c} zF_VO{ECue(J6i?y4emb(`x$dIB|=u6Lt_637GeEBP1k*bO(I)o748nvt+Z!l_Ds6e$5}y z$if^NiIq(V(|N787wxzbzkB-~AvU;j*&Vli?_>-wC0MBtV)|GL+0MBF)$oF*QI12x z60&1muz!nl5fzk}eOz6HXN#48BrypMp5}~V0hMFg8)V4O)3zewV<}8EGG>A*QPqMJ z_}MJdXKfo>uN9PXoW~1XcZ4mN<_5%=10WQtZLFM@x$fh!; zxp_|6GFT|Wb$E;IV^)%sDaBf-Lv5yME@h0qCf|yDj7R6Fj-1UGetIy@y!>`z1)o8j zzUsepSWW01Nu^MivLvZf!ZNeq$Pe#Pb>%g*JgCe?+?i7H@kBu)UNvC=A{ZZPBA~ug zLdbi)t7*V#z|Y%%Z`GR!Dc{H&+*^Cg7s?YN^T>&5W^*Ub$(_;*`n+`3NWbs^7sQC{ zN#I0PkYC_#2T9z(qc|hUhQp6zXs#i|Z0ch#Iu>}6KU|o_TloODXHQno1K7)`pf=H| zWopc}G&6J49n~u2_(CxzYW&T<@f}O<)YQ!wZiT%t^F}s*saJQyP0AwzU_nes$DXl9 zOU(gF)rzvN6M8d}8Ai^iwf~~cP-OZfj`&};tE;LwI7@;__aB-Pa5uWU)w8f6e4?%~$5T4Vdp+45JBjKysxPcrTCU#Q^+U{CF3_!>54k3~L8Hw#h7ysn`*XxuBF5sIhE?|1 zqVr5P1Vc{_K$wdIpk*1iKLHUiIdbT3zb%D(?PW90)6=ic8(o-3f+t`h#{sCARw%(A zl^L@yI>@R|EkOVrAMrNe%!JXHCg1uqv=WrOGHI`WUVz{=6Y7IK;L6FDZ^|}r!I^z+ zQKJ}be3jl7L7xYgeg&ID2gMuB4igPXWH8^f_MVU-qRi>6z1`rATRi`AREs%&@$O3| zTL}_YIR`i)5W3Y1=U?a2O$e}`KZ)JShU<@5O7r!lW(EWtzg1{cqc8@(pclf9dCaLE* zPC7D^x2$m{K8PCh#NaH1)CxB;8_^svc5fW9vjkG91fS!iEpHACZ8;;EEf5ZOBkg}F z^6(IFYQ46n`&Z&h&m;o)D-!m6Y>V*+_FT(Ziff+yiHI|VDcAwT+pk8&2}W5p&nP~bXyEFc`J7L zZYu7KCVGqkKH{Jds+K5y8#38!Ze|^d!3}JyPBEVGwKo6U#I1oj2Ya1#vtN< z31H2wq=QQWH7`RO*O0imusBH!LybysOW9mt-WOq^D5cHWB|SbY7w(*s8DX%nw{~rw zXUuylXBfn8xm(6^V|HstZl{T(+y`ViC0O}s#=X@s$tRj)#XTy;J>*hu8Y6$GQs+pp zVQn9olutR{M%PaUH@hyJeCP?DXJ?ClYWSnuI@k*1uC~}V1-Ez>x}CX*ahGSlbpvq(ApV)|-*24fv|T#HS} z7*Z92d@7!%dVe7asrIZ@?+KfK%^}=Fa3|MadKeyBcTp_~BL5=)q;TIfu<^NOANh5A zI{igND}=*qMHOrPbyp0nOxvjB4{CGOPA>1Cap^RzfGP_TZVabn(kY`pfwjS(AwPz> zEVd@Bv<))UD!S(8?2^?g=yVrp+q4pUCT+k9k_Mo~5KLsE40Q}{V&lMnj$+(MzDJGJ7mM@@-}S$68V zWgh!L#~M-p(oIWFRrw@;O`*^+&bM(Oz6fklZn?v9BS#Sf{!kED`LW)3Z8=4TX!O@q z?~B-#B(a{lpvFVMOkYFaXAP-xav8Q6y+C)g=#FC8n|!W)ycud_+>-$Wnt`}n#ydDdha-}ZUZXwa zV-Gi~3|&5vC*JnqxI#W*mp;r#jG`OVeGk!HJreno1r)NQdSsZiXraiz9U-Ddb${iC zXWr>$K`M14!fN-$Shoi0a42BRy@D@(@FvnY_K>fxze_$(A{3R9=VvEcaK!t{|-8XqA1Egnb znwx>whc>5H+crNN+IzLOsKSmfYW;3q+DdJ9ukOC^(bwvIHfvZVO=N>e+`j7ay!P6@ z{f>F=?!K;{e+FwyS`<|bae_d>z$i0WDbuzbVV@Ic4J{RaQzmy8gZI_owkZm2D}DUo z?8Ca;L{e?ed&Q_?$3_cWA66i+zEWn4G~9Z83#&Qg0WP@xis8#()nR~zI8-eQsW51X z;4Cw2<1saFqHPTsOf8Nzd8kTZX%ZAC9CH|VW@E~Kcha$qwIyYKLw1KtC=Bu5K2D<- zwsq2}K*m;oXG}G$&ti2=*u4?7Or8!G$0C0XrPNFyv0r-mu8F>uZNDrpjE6#$6{pt5oU!d;lH68lRchr7i95{Jw8-_ zbby_oWbCO`Cjp;o92@|rS|x%OFK3XpAby#ZS_dhAt1E;GaJhg79<4N83_}DnhN&B} zEm4M*TZqBIz}+gyCsI8#HqBY}YD@yu_^Y3eqkMt;>0hAh_ZFl0M;qtQ*@Jzk0}0Ll zYH01Zd?5xjX%GVtl|Bsa7cd5l!P%+XB!-4o2I~xPgaIl-ZK0iRQ<5;RG(wDSZIu`j zVfSQzZ7Tg{7^#MEukEC4K%Kqbd56Xy;uOz#B%;pa5kY?yvLpmv?1m0uTguyn_Ot_1 z@-yzHaJP){c1v)F5Syqh)a%jY$ySve49kdoyxp&6@p*;emj;DEl4jU3(1vMRQ}t=T zE8_a-A=E1+U?0_{3|NGNRg@`Lij6p);>fRmOk|Df0aV1W5=g=$o){tI{arxz`Hk=b zTrbgxYvUCx=^U(e4++``)Y<4y>YNa8_(r9U#3!G6X3er9qlUJK7AO&PxaA!!2zm8e z_y?9MxLJDR($Q!1xsuB^FPHfPg5@W~d-%gip>#dl-)A$(pq9mCvvQmB0D724)}&N_ z?{#yR2(}16d~jGL>bakwnNz_q`2u1wCuT9@X#NSl&_GytjOBe~V6dSi8Q|f!3Zlqi z$==WBYXWqXEa>UAaBYc4cv^^-2wJ;59Y3Lm@`KKylS?+*X{;VIt4ny4l?{p*B=z7> zJb+Xc;7GYcmQ%FgR}=}XnCeEDdBXC4k23Ifcu^HA4P54E*5w-1ZIw=+CVzI;3&1tA{V0P3)V8prMgh#}OT=x?*FWjhBy8PSZb6Gk&tyCCezeo@idhUnIxj!K`M zoW|r~26-JS43Dg8P%Ww@Vp5wSaVV`LQOOgHy6ONnd! zdwJKRC_vCe>BX3e7s?nEY)$QhkpK;B!~1^9#{f?Z3Wo&Lp_Vmx8eZRjDMpv<(jL)J zH6Ee}X*RjaUxBgl_BNH9yDA!>eOZYx78FaMe) zKE=_J9+vQuM&2fIp(<&AzEQUSjwX_Rc0wF_JW|4cTe2KKZ}}xWU(~kBrJC_mTd6=I zkvZN?Tje36$ndsC$LtTcmne2TL!z4$$Ggi2@^!z-ATE2Ec*hcrree=56cB!PF(KJMXYSTH{f zbS;@`>vGPc$Fq96gTBGoP>;l9>dNb_p$e!>z!Ui+_5?JGT0I>#Xr5W=z$&2NVF&`% zWYfD-KT=lOR__>p6kxzQvT;bACT*-OC$1^|C&?iaz_-zbbBLRR z1^U@MN5$a5Yf{^m%l4c?^Ur{tC6zrw#SgS^r5k&U?|#33a!JDHG{fkX(6*E$x@!l2R626ArFm#<5Hb1y?NWx#@K{OYWYOM6Re5UpQEP3?Z~A|N4cg>;e8Tyh z6_h=C2~}BZ`cf@FFf!UPQQGY#$6@MHSQHSm1Qs1dEH%9H9)Fz06n+u3-&a29iZApr zzv)Twq#84ge&S5BzVO_*dV|LmLcEZVzG6nxl$95Mh9bY&CQ0XWpanYpuAwAqGNqG+ z9z9fY0=I=ygG|VjxT8+!)soV`Vxf`HN0GoHG4ulT2pcyuI`dCLPgaZ-nK_^A2j1%v z=jX%*LDOAh@Q=+kRj#JT4GZ>nDvC*gwk5d7P#Jo08vN#5TF^=lvdJ`EN^y+)s>I4GMRzY35s5ciY(S# z_dbPaT)P43p@_Bs23iosG>d%ueEgZv7n}KrJ0c!5rSc6TOuX_BN1E9eeESIEOK$os zefUW4J?MqrR?x@S@PTqfb8u@S5Z+eAo7nGvNW`81+Hi)v@nkiwIG~a|pz1ooPE!Ll zH?l_VWB15BH{38=$NQ}<1lIL)M>3ycp{9u~r!nWa;NCv&a2T22mDyCw?i$3~`3F(jsra^eh^H;o`r3mx}~_C=fP*ROvH$WONWpi_9i zHrXunfRAM+7giGl&=|){V5l|1mgL1}b%sp_ym;nkgeUbR9~D}dEQ+XOlp8gFY9eGt z4v+jBsRnR$7*_lr$maUve`B2apUhVNpYJT~%q8qyo&J}=ty+2eUu`sBDVQ}2iG&c5 z5GV^3O&0PHhoHs*Y(=RHQgIJHr*xMYo!v)v+GDxJx8i$&x2ybPzr2!gjAgxd5;D_2 z-Q12cS62!7dws#{0<&q!;~L_BTA0GALTqcgD3iAO!bQ%j4kODLhRU6(yIW?ac9E@7 z)mRHK-*UpROLC;i9^pbh#C)*(B@uB-H7_AMbhIyRe zrH$tZF^k1rPyBs{rm@p9hlp!5|E_BcxQ4v;7BH_+D0vQhdmjBRacgBIZx1$=^7KdI z_9TT|yT};cU~EzYz&`r@BKugjslvSj6r?@$<8|8#aAnklfD zsv~J{*xyNHJR-}S$3y{t5YJM*5IW(VYlE+Xwm@S&eojz@>>0{i0-)6&O=+pVEu7`c z6`bjWMeQmdXAf>su2_W@PhR;%r+SKu=;|3{L235eRkm*VN)g#aWauKAAwu(i!-&qQ zc1nepo!$S!tPiGuFaGwW68UmZq~$Tyz~lG>k2Y6$J~0z1ayPGk(&v31UXsshk509b zuNvBPyGm*A3rds9Kk)XaGPnK)KUiJ^0LH=aNBcT4O*DbCNK%bT4Z*XmE!Jm)jMR?+ z=^0wkXjZ#83)e)RSqp^hjSg5SBLlba%qq;(WS3ZLGBbcVS_ zVGN&IQi}GHMjn)escj$on`Mq+^y5m7a*amY1nZdHw*|X;oac0sssGUgsE^Jv&oW~( zJOcUZl@dmOYQAP(eOd#Zx?CHWHM60BR*Yy$Ww3D1fD;Cth9GQB_Auh|Sr7 zQ-)cLBn4oIx=PKVJ%X)G$Y7DRNFKr2vDDa$%%9RxrM`=OiLdsOaw%W6Kbg8_V3E}o z(?Be@iI>ARI-`To+hn1Bv|iizejuAg1^f@#=AUSP*fkZMK!dObghHJH7?+AR6b{A94m7(~KF&sk0WCsOGoRq0Hh?zzM!}xi z26>%-i`%Z^;=GN2a=puY)Z8f{=TB#P(KPh1<*+)7<6=#ik=Wqbj5>_g%9R-WpiJ}L zlxdL34nzpK#rfduf1pc8y|lq2PmHqJ*c?85q$8wEMIN{2YZyg!7W`?OvMAF0tc1(U zR2_+Xd0QsFrV2D^_lfdMtr5sGw95pc${4$UZ7EM)W{FENyGER7MKqb{X59+FPsKp` z$Q$&dwOfoKR`Eg;o_eLy2>Kb;rUx4tHqirTSyujymu52PO1Yl!8Lo`TJURbUG zX^#j3NKIf?IDX^;EyPOe9)^UT%O>1St0sQZ)qb*EyUt5`4YV^x;*N=nM36xnqJ7tCS>JPgw|P-WW5jzn@4Pwgr-G4o1_W6fC9eQHD|&d3iB&r#V5 zkEGR@q-b%|q>RUX>YTpB!5G_1)~b(xb}|M=jrphV6JkmJ^JovPAr_AmwS3!RJV{x* zlEpx_HR+klG7KFfzaJS5!)e8xIl?;jwQHX(baiPJ+A>bu{+D5@*SYt0^lVSSCn727 zh#gDwDeROY9K!giJiYze8!G@ZD9PX9M)PawRg+b1zq)VnDZR7NN{>~}AQ?O^+rX&Vf zwVhx%1$g6H&6w{{0lo8CT7;tmyFf{8ZS7;o8h!sEpN5MkDZR-gbv9egImz_j?X=^t zJy;g}*I_3&C_*$Z;ZIpwp>h>jr^eu<)!?8K0X3FoWCo8 z_b$aq;5V^T?=H4^^`ajBW<3)2@^e|xo9csp!C@3r0^$08kkWhj=5-fXgx6#pHN*%r zSOP!P^I)v&lcxIUEQZEOqoLk@MX7t!(A-qm=jN_BWq%L0oZsT`%Exv~^}uw=O-rAh z25*{Rp>TacBFudW?_3;z5p^`eRfkhmeIQuBbIBR{6!^j}+eUx*5B9Ld>(4sQshjwv zzVX=nlw(IV$-F*30?FGmr`a0R?qR6*z+Fx-BT?JK?~?AI3)|!Ek{4U;E#b<5&G_Ms zjQT>f$qyS6fHjlda`H#DKIZD8KYY;ACL%Ya;fj`hd6&V4H`-Qzxh-(8vvTlMpz9Q! zS$Tye_}xS9FqoVna{yeG>n$}bSLllt5gK)+>I;`3oo-b&fzV--%EP(DQ+0mokX!Ed z-j&TyF%Mj_|xG@XB|n zP!2igH>S;)g}qyUmJR7;tj{bMLb5Uc+@YYpdZ`%PkN9<;cR^WE@b^jGr0{9r+ZLV~ zF^>F4@L&fO&yzHU(6~-eL}-&;46C}A#LM(fWE~^7us7M%j(oNbh)z1f7ddF}W|x7a z=s@!gS54E270;RCmCQRd3cmwqu=4UMGZ4(*?{net_Vsacwq!P zGA-iw$bsXMA;#57g+->I!{)_ik8XkV3L_9KY$GLq&7peuUFNE1NZSIF2&h*9bMla1 z^wii&Oi?Hy<#v$XV8zvIqVx3H#MbF=di@XHhSC!8nI*Pwt=K}NDpV1QT{Sxi5lmhE zapy2vAxxi|YxO=`g>hMVO|mm~UBRswQI#H0sQ|N%6*RZ*GfUCZtFr=1+Whwc3;VNS zUs*F`FpTi<|};0+km~8%^!0i{dpAf z@nZ~!#WF>tO0aX(k)(LnvD%D;=y9;+ndZ{^o zxY#APS&w-}Vy9ps0F`3vWXw+_wlI8$n3mecD+9uceEUvmr{D`m-Po-WglZ+Rz;3Gg z88=L$MQHUlnLPINGY$|uuW3=E@5>>@u143MmdsOr#XMoLlTT2@I_}YK`!R z^7!b|T4p^Pq|HG*B#HTYiFx?tVdTw!u<%Aw#oL!e_7TJ!_(N*z%MGN5I9^f=_g-kz z+<>cST13!Hk~g|F?}AL1wQf^i7d!%V`6d2lC^x7OBde9m%=k8<+r@b%ITYCF3#nQ* z8Q%5(WL8!w+G?{8qU13s5o2yq1T6ezFQ^cZuA?PJnayp-FjDIp$1Tyk&zMSo0^yE_ zeh^}U>4qOeRY|{P&2-2u94jpIJ#>0DK+aBQF&-Xvl4u@~_Tlz2OBHk87#~SaM}_Mi znuRG(&qGh-`3H6wMEFA?tVj$Nj^c{lk}L*eMKegSA0f_LEqRcIwx>-raEf!c3j9GW z%LL7ec68oAEx)V@xOJ*ztfF+yQLj=i_u5J}T9eU`*}CA_)#=VY+YVWYX$DlNU|%RPbu6L>PBd z=+W8aKh_x53!$S&>MPKcg>B1w^ooCafzJ=l1u{)tDf$U*ZW7Bs9)FX6!h&~}8C($l z*Rb`T^BDFM6a<9!A1G`3-xjw1rxO`VXBShu|3nIkyz)RsWFI*qOJV8pfFCU2v>qlW zL9oz8cSIQV#EE#86@xKGrAl8o;QW6GgWD7$g4XOb?s$9WH@iFUM~>II|FB#@-2BKP zNgNMwnZvF=YNs|y9$Qv_BIC3)H{B0QDjZCrS{+ULJ37n2AFH}s#-nu`rF<@-3^0&3 zU{rP{V;Q1;W?+fH>x{}#7@p3Z(E7-Eg(0 zfn}h+bEm&VJJUVewV+s1MRs*>u)pO4>W`U0@&eVe%Yu~V%F~3qvo7>^35eLSy&{~; zB$BuW?7Q~NhHWmHP)M?h*XyWL;Pyy0=N)Q+{OIqk;JEqp% zi^FS9$xTE>LDIH=-Lh_>jBTsoosEiL%DqYAGf%>~zE`nl^DJ=Ttp??f!bcNXyv|cz z^v-f$Z|~3iAUfh{f>2y^MK&&mguu2+D>>aCs*OLo6!%?6_A}H?b|m-Y%Cy3JhM6hv zh6}Qi@*SFCm+!R}hFeXst14#hr7S}#SL4Bux)da@%l9jPe$El4`aivPL^R)v{3ey; z%KQ)-m^Ph>ZVHZy{;UJkG_l6jyDnoH3P(^(uHSQak?kR*n~J^WKm(pOll&K2vELeH z;pLoWp%2AU<_=!P*%5bs0wvwCdZnZ=J!Kj3tWQ_!JAdY!i74av{4&|CizX3MEtmaa zd|DOMrG@5yAA<*UXvb8=kU~jT4~7vu=Q+CVz}&UYSpgNaSYxS+U3nM=XAl8SfA#M!IdE3@EOm?q^$mkiX|>A}@7QsCn1h@W90NnC zAw|7^7;}HaM+HF@&m-Ig(ippy(a;!G8NM`wosuOZBAeg>@t~mumf>&M?|@{3ENw$< za_L~dUZLIgXaJli?)I)%$X07b)GqYv4eEM;q>qu!uTCuR;cZQHx`|cF-Ox+l8#73? zB+u^oCi){l$M7-vwT{s*MU8!gt3j=|DJi^vHm!<2s*%SI2GO+jSY}LG+BJ;1+M$6AnYM3qA3^$xBvwMP*vp1qvzbc zr$mhp<^ulBDP3TZp+J ze>y&FV6Hf86dvc~o1=AyJlPxd&7fssv$|NIt~c)7d`P}YTtWE0CA+xq5LKJUmpszvcZt7T&4>92v=I=)$@#PgP_=1i%5yL=N%_e$tIX6iD_>xiw8@&yEYvX5*16i~VCkc-fJE^UIVxDRxBS-=_>8YeRF6 zpg};$ut7ki|GVPX{~!v}fN@7##`wx1<7vS*t|uo~kUB?Qg;mtR>4QYoh7>Pn9EL0{ zisViie(JLj14P5io%R&ry4cTu^XkqwHIbo5`Lh?x&NrR*lz6=h|Ni~f4UlX(tPc$2 zeB{jGaNhQDf4%Cy?kPR~@;amf;l8WHK zVNaRA3onSrc58~yvTF|xA~j)EC#=U8W_XA_Q%S7yR(D~A$Cc~9Y=#T5UP<{QAt^ep z!b(g%qmjV4Rot0ji20-7)Oal|g|Z_gT>=-PRkxv5p&qsJ$C;Dly3=D~jev5;fdes# zBxdrv@>T%bzqpSM##FR_NlnjEnq;IIA|fXnDNQjhQL2V)VVBA^VpE~3sI)Ic#X<_! z>mxn=p@mf(FIqIlvuZ?dlx$RPm@yc{Sv1X|WvutzW@R;jB}YVr1a22ueN!u0dnM=) z(0L8AZMuRoqHtOeT;MZfRyFJ<8k&I%McLla)O9QL68Obb^Z7dH9#GSI8&2SvS(_SB;ZZS0czG*$sGTV4L+rb&aM1V;coV zG%YYy1{q0Ba*Jrv9L?ypgPX8!Wh>#jVB=uyqBwmMhsUd3UqX(gl5E&&?V|7mh)8dOo?kV`2}c_W+3Lj+hYES zJQdcw0X{3WdD=rh5->Kf5yHK?NC7Lfq6%zMDnvzt!?M)v8UoU_Wa} z{9|@hC1`%-6+l5j*rfx}GW2IQfyG?e4wVna zWogC-%!T17^MB96?Osjda~L-i{k!imEc?#*$}4vWW@z8eJV5yK_7;DQAtXUwyF-hy zizAsv090uDY5X0a#EfLgOIPzW8E{fuJhQ5B31HhNG}kkGV~ znOb6m&7ZZ^4L`xuIKL`HO4VkhQ4x8k*MyB_QIzEkh{o69q*%jk5N2lj=yB^##&0Bl+}1ry70K@u1vp|L?ML$^EJ`4) zJ4LQfAET(PB}@hCinlV7&s&+cS(p|rhkqII+2g?PD0RWutKDF>Pj@9_Fe2Hz&Z)X( zwx$weSjgFraZn1qZz2ngle}a-bs=IUQkg1OeSd|+;XZD z4WQ*``_z2?@(DzxfRrjbM5XB#m&23c2dXy2)0)#}pc64EjZ3fWT#S7E2(29WI%a04EfOl)h7y>jeHn@u_s#KtEd)et`3rFm>!*u%H*zCCQyf%vk)=tD zJU$M`keRutGe&A@52C)}t*Uo)xv6$Tu6#NLW1R%0{4?jF^=C%}#SMa%y|$$Ialq+s zXV9hh;|i6X_OoGH)Us<1G1^HwF4_%VRa=i|FlG}5Q#KEjIa+rCmdM{>sXy!55?U^Q z3ZgAjl;oK>inv2RkLrnS%~_oVoZ(+}i9!om8|FnT0b#uLeC;w6@-QJyTkLg_Kq;wWC&=z$Nl4 z-?j^VoeaO)d){w{3_O#S9o}<)7hRCbIz%<;1y~^H2Hh2nxXaD)Ae@&OlaQ)Dayk-h zKXM&F=!pDHWEPuZ9I>$eAjZ+UZVNlC&SWrZ*1@SP={-J-^SSns1*WDJJn zOy16r>dj*IM7+$F+>qJusXP7#n0)s}-q;mq*yhBqe=cH>EblSbc!X39sb;8<_=yib z-}ux-&vlpHfLo;uFD}Pnn1I#X>KA+o$MD~kejve+$vg8U8L_34lA3EVJ7By|9BGrUiF%wqR#bU@H@P~0pz`thPs>8w*|B<9 zHsW>Gf!em=cZM$!_+E;lKIh>+?@@9wM#$}L1uL(F&i`VhTQR49{*}`||56{i58&C~ zZOdBj%iYmDdn*ruX8ZQ9%#)=Gd}R$a4*>Z92p^h1xW)L2rEc>%?&dV5Mwr|*U(z9}TQR^h~ z#Gy4)QC!T=#6eXV<}Ms#GWdC|=!rb0sSwj=@pyE!wvbb3vxKxEJn--9DENEfLxSHA zZsn7z(yRb8=j8kKb4f>|MG5rrR~(?AUDdwvPhqluO?3Fv2$h1h%Z1?klx5pH88w%{ zbv8Mm@KZXA$x#}lZB=T6s>$CAnA+-0sEu8GK{RPns_KyUgfe}XC_^ieMC<~otQUKx zI%eS~S#{3_lCcU3T}d){=p342Dmg1rmGNT@!jn$UXKmH$3f*<`1?XZU>G{%l_eN`+ zbO+gg!LQkP>jvXa_*>ykR~#etj48U$;|fB^gz2^r(hr1Db#l{o4>p!B`wsE*8(EYIZAX4%Re1YBj3};xxC9=M_t0 zy@W-;ysPdDP;~QxOEcjbYX%4W7*;05%5 z!B25x1gH@8qz)TPZq)m4b@}~(!RM^nQ#>mjv z`hS#96#C_WjPS1P8m&w#AVfhwTJd*;V({FIl9AEsh{!LmTFfRT(2|Pqw}<_ab_$U# zQNT&tP^emLczexzms^jqKz;>of>^;{j zCZ$yI`@7S>C8#ikGQUI+nw_~SJBXwJh9Ag%IDuPWa0jT}Q>0o77ua|w*C*xoS%znz zNsKG}Jz~k&bf|jJT6gJ4fwQ9%Xq$1;u1=AVEKVl0fzcXNDCIRcWVyL<6mEqOe3AHF54ENM=InVhqYK^LN;W1f%wr};a9T0Zh~`es+q z2W*|s!ghErlH$KXsMTb>Pg}Ki9N3Iy!mnx1KKM8afqm-LIIQCbe(!}3Q>txTF5XrB z00Qa}7z> z?SXlJYy~m9tU;42{59xNgbKDxHuH5?u2?&z!^5{fM9Gz+$^XSrb34(Zz_`euvhH#; zF>&g=OfNCaGJ z`HRHAO{@|!sS(|-Iuo$wwbZp7B+eUa$0~$4%jDpC{Vu1-tgfY$Z}v6t`+n63$zIAH z5SAAXp;!>M#Nn`=5S~i!e_m|@rZubax}FyYgVM@mj89M~aAz4s_-m*&tyC(24dfig z8^0bn__YvQI0{?GWsD^8s(fu|%aBX*T*Hta$i@d5u~Razx5tX}rPh;x0zQxqx_XIy zGMsMpTAVZU#N7S_XMJQYQS&=AE^V3=em?+4D-fAVaBurlWFj9w#Aii+VaQd!Ee|m9aGBdCmTKXuRS7_ZYx$ki_H(J2{vchb7AWH! zGx-AZe!=^C!ON-XfA^vnT4xX}^d)i$phtB%1*6l_o{Pm&)c$Zu99 z=79^bEP2x;nY$Nw!TPVhh)QdkyZ%o|z5T}@<^Owp@n6;F|0Ii2UbmYUK;~U1uRrgw zl*mUP>-LlgRGFtBh@dVClMbem5cJ$$lWrK=igx1=?7AhBf4G5?&>_gNO{J5##BZ97vh%>Y&s7*|d)+^6Z z36ybRN$-j*e|8mu5vJo!km?W)IefC?7r;L!z#*c?Fqy_&AQeu7J&*cQ5Q2B~GQ7Wj z0#NH_!-hO+P&@KW$p?7?<(Y*t>g7C^j>Ry)02)*&eK$smbWKl4*fd~fR zt9f>z4Z5f0rh#a2(;J)JFQ)3f_LioQ8wr$!$+qT!J;Y6~Twl;73v`a$Dze||v!vaE zOGKw&FkH{Qfv&y-?^?q;Rdx~65mHgV1f%hMKwiRz>; z+4ctfe|7962vQ#`Jl^dB7rAKfE5p%%TlR8TyOh&bht7vH*2Qkra^upXEX=~=e|u}n z&Gh+ug9-xj%>3W+ME;+4^q)K_-YTjc-#ty4GW2v|e~?AOGr-_?sK=nCQMFh>Nr|9S zE+!{roeY`XvrxmjQ=8AVW}2(78fmE0>+-_1e_dP`H(kB--F-eUX?lEo#^3#px7u0K zWsLe>d}9gIy{@SA?T@qGpK_lFNehZUa0xLK^2J2CFqC2DB?UW|3E4blTLBSfY8>w!Vs*1&f9{+}1HfePWr(qe{ANinQROf-n>iIxT&dy#;ZPO4b3?7j37w581Fr)w#FwljDeR7Ee=8do zUsNentd?_SB?OsQx(>wooPawD>?eVSbN9VT%fL7wC%3@)V6K! zKDBMzw(aiPwrz9Qwr$&PciZ!xlD~n!R8@sXK ztf{g3h>V*R$oXjvsVtSrm{{dnfAVPwQCdG?=g1W(XQ<)l{&k|8Px4NfG6%K+5l1oy zmn8l0B6}BIfH|pxQaP4G)+12uh<&qjmR$YTlf&M;Gntj6P{GDmw62w9kflZ5@U(>^ z+vi`lY9xS~*(dP!MOfFt*Uc$i7zW~s8}X2|cD1TpT!J}f{b&=^7Re>`NgGZ<+D zXti)AlQV;}o_-jSZuH!q5Yy31O8oR*{%6IyS+Fd|g<~<|JxFr^cJwRj7*oZS5}B?K z{mfQXgCoO{8yhYY{%hK84k;E>El$E$SyqkBVMQ2Fvs5~7ma}0AxA=rS1c4io6~Un{ zplN{P9j#I2X{a=ul9HPn}5wypuYWukug7U&Lb^U_Y|m;LvAGh7_7@&M56{}uEAPQet2MZ z={7nM$}tM@0WxR*^4`G$few_+`4~#4kVIRb!{#*he-#^OBuxxe=8K8atvKvr z9rlmez=mC3IY?DlcDxwPp#7iWa&Zf3d+c+c6k+q} zs3Vvrm;5IP)Qpa#elIS^196v6rXO$=yd2;P+lB$iiMdPX)Lt9+F(dW(oVbY*A^3(s z@+^`!j0MU<^#N*_#eY4VZojet@GkrHrT z;hV*QY}&|+;id^q>Sdr(f@l3(%PB>*=trL}AF$W%EZ&pQEmPI|Y=8!hm=t9) z72t5C$M@meAne*U!*yMG3z`mS)~@erGRB;mUf zew~dIXWyX=c?*=9px8cqvZvq0^|@T?lRtli+OfA{QTvHQ*>S6(B=vr%`sxHfXGhh| zI7GX7S25{o+EeUV$2{gIkz z(I=%+Uj^*SSwG=|mo+doH^6-A5_5Nd(H9|}3Fmw#e#2^`mbA5|BS&Z_9&N+(FJc>` zs9EnU&u#9`?OHv#1HZZ*nyF8 z63(;c>_U8l-1XXeopwEAeQZ%mP#&G0t5 z+<)0_T>Wa*GXd*Dg_5~TvSS)!fBX$4NB(5i;3o>yo{7e6D`X>3{ZoLzU$xP=?TUx0z`7ImciEw6GVjB0HGfyX6BAt4=K0o*k0NLYRNTu=wYu$kOKb7V z&gH62B%()0URda(07Q?R8Cf5SMHlLE^$eIn*fQ44F7|e!y4M%rOG55tb@Zt$WKjZ9 ze_8sD`z6J9_Xut}7+CRUYgfa&?59axcB;16+HS>#f@CM*}dS35=ZC{Tc@lh=xfw zvsj2yT7wn=Ijg^@%zWynk7RRab{U5k6-LV!?9W+Qn|RJ=7PcF$I36kVI0+(M$a0x~ z;_t)ivr|i-HJggte$7`eU&Qv!8-E*g_%=&tG^G3)l$z;_1i|Y?wjuf}*{PRzb}!3y`my*;eZ@p5-YkQph>h%~Xwzgds^IK?Kz}nZbf-Km!xY!y1Y(W#2u~sn zvB7D#ge+Tgh<;SJLtIwJiCl#|xR-m#jqm~Lc6<4-5vsQFl~r$?W(7j~Dy9%eW1*=6 zsBfpT*Uj|tk5`(lcbwFTcVFO} z_w(t-{W=`TcgWpbqSyG@AKTmuej)@uvQnbmb`p);L4}=g4x!K_s#X?thcGAsPoue- zo8o*WRg6VTajiXO*(Q9Vs!xz6dNWsHutak((&4PQKhz=^S-vzP$$ylMlYJSr^lhh( zA;v6cz$C|aC6aY)#F1(_M=XL8nn+JNcy5&Lmogjx>m6VF4KI}%2E#faHHR5W5(GhzoZ+Cgv;*Vyyqfz0{=ZD5x; z&KWx`5M_98N4_ZK3I5K4`15Q=?+8dp!XDOrzu~%Df`?j?P66?1+H3--dMax&|CgZ7 z895Fh)DH3SMk@81Ct=sXz?bLF87F@<4+v}ZEA}W5*C;I9$BQkS2;v<6MyD?BM$$&k zO=)puoWFmBQ+8PZp)ar5mWF$oKLFLDso~{%n=OP{l3}&z9?-u8xw}($3QB_YCx5+{ zBQKQN8U9i!r^-+mgF%`P>(zbhg4Qi;kDBiRzpnV>(V>#y>3E{fH{It&{4SS`&lv~- zahI0Q87qGpS(s8zA7V*0eKQ69Awn}~j|=c;oi296y2Q|eMQ2}7(~{oo`|fCtn3+@( zsGBDeQ7j(9F0kt321k zCYsi^Gz0a^8(~gWo3<9a_)>51Nl5gK8Hqv>%92bh*Rn5?+Y$r95UN!CijFK{^3ACv z0~mJ&>;dzgQZLjMf%s62yfQkWMf3H|^=1bPao~gxx|N)d@er|oU8DzJ?Im61qVt%4 zq5H{~jL;bzfBf~7zUgBWkn5Pm2$-9+b9NB0{1Je>$75nlr6(kn4O59LqoU7;J7)vW zV5O=J=h_fFWA4>~z;V+YiBfp09CgC7BUxeu{R7noc0XzGhBQy)>l?5G{$Y=w|JsVM z;6C@I3pU9wF(22O|6`8b7)!y$btzok37~N0lIRS=e^^Y>Y}8CljmgIDNbh1IF@6kq zO6Rnw6n^U0`>>7t#<{gGJtGXb$kTg@?h|x{KXRZabHFEa;w^R%#;Ei}peeDj za0b>F$T{*}*>X}fxK~7k)@pDjUVrJf!&63y$Z$UjYrqt;8AV4 zXZN8`rz$b)iLDFEl_TQc?c)TyIpu{kU6IWdddIoDAj`^XFvz0ZK?k`hj_iJ#0?ln~ zaf>f2eLK@(^@D~vz4x&cvcuHTz};$QosOVlXo4-l%gvcZ$nCpLf@YB?j^l+7_N0i5 ztJlf)3IV$1ua>@PsGoOu?t3ylg0URs(rI*_+TWV3s{|TZjqvgHblkvKmPK~pHEXYrI-~0OW0#H685j$U&?U&Ud3ZIR03DaG(it8B zdza7B85{xYm+aCR8V5rXbQ2l^hnEf086E*jmn_p6CV!h7x$b77&^<%^mgSp-zx>Jo zn|}yV8I;OaIucIu!F7A?+;C9Ts%=W5IA{&lQ*Dc$|N_S1gJ z=%}j9-t}ZilT*Vh)C6id@Wp0JXfNaVnKg0HMx8bR@4#(H*F}`%2i_iKL7BKisGC3C)q#tUjMG{?N{b|@BiLfTYnAr7&3tb0og9?Zq#|+t#6Z&%kVpB%O>s$Bf-+!OGyFVc9sLG%!`AWj*;_Oyf9AsB69y%J- z9e)}hB3guqac8yA?(-}*;Yr=C8E6Q?vSo(YI|QL6{cDcCLWo&FW_$uJ1{6JU3ysK} zQN<{bK_N*lv~Byy=6asA0v0Nm-xwAeV-3(z*j~O*X3=-$MP+Ep8U$o6^2IizNOnFl z(2RKFw^0f75-|3Ct=;K-mgYR69|mVqA%8d*Se?Gf6t41w%+piRyyPXGu05 z?!fFQPS0h7EuOSAm{W)glb>6UGKI}Iz)|I`raV<2a)V~MJ~YozLQf;DeqO^gioZ56 zr%_rF7mpCBOx9bW)59}E*~bxkoqyO%EDMmbLfAXX-_H=LTpO>bcGt~-Es={ZeNHye z(5scrIbGf!o+mb?r*YCq)?ujnw2S3!?ELld*3QNCTWnZ2s(Y=hAc{2T#)dulRCq%U zcCq9xz4h?rvXq(!S#1h1siUgqbs#d)z^bN%?5YgLeDx%)sjq1zj*#Mx4}bc!7Z9o! zONGE<(~C_EcpPI!?aV-~bQb*;ULZe696NYM$v^8A|L;Jts!(bsBFY;rD}7%{g?-rH zBiYcH2`6%TT4)XmX_aY=Im9sZ#M%V^*`RIBKA7b)Wh18lQV|^|HIRG4u{U}n$b|tD zT@?iJfEXUpnJ36NxlLVC&VNc0oOpIvLDY<<0XQ0tHYu+1(#}=EE8zqkZPv}5{cLAh z7V8~r!vY%JKj)Br2u_6s-vq4`%g1L%=Cqy(u!PE9ExHj~KLg5A31@GGH} zXJlVO`$AXHMshnNTD~(^g0`gPE`FY=-w~w@OHDtpY1fTs-^E-^Tz}idDB<`%aIC>M zILs7f_=JR#pC^`*jc5EGEw|LDLu-G*Te?6Y-V3mp#CQ;D;9~c_?!Y^FpUvhd+Aoq< z2-t%-AH&2JTKx(b&%I|EwOnVlQk^|3NUk2P@{k?8#IxU%4OQhs2U<Z2fvV$*oF zjZst=X59l=c`_SR#5UnZS;>}=+Xs3N+An-mwwn8CV#jfMKREwk~=%8zrk|K{kU( z%u(ZXd)dX90-`=cIL#tMNF zDjBEkFQkoOjtFIin`eHJUdW&Qqq}~YQ-4@(Zq)_nt~=u|Vb7OKLp5dPE7FJ8r16Pm zOs>Z9iKvrUSXJUIg0~R<>3^T28O|kk65H)xiJH^WHfQ=_N!97IU9_OPO4aY1uxv&{ z;E*e-Ir4gBYfZ(wN*}oa8%vq9(EUSGEr#D=gg?EaZE-CGcc4)h@JJVn=Rk2-S==b5pXNs9@2ETR7UfVpGT z9{ox_B>h&OZ$^v_ZbQnxNv+2nImB@?>=$hBY&7_k;=a7_p`6eeYEAeH(6i*Q9_zt>}ewZgMT}v z|5fDVT>tqP{~tVKLH_T%Yy4-AgR8TpotgcApzME!lK%<+7s1B=p>k5!c1Kl3`=P&#g102fsUR*R(8HNE|Z-B4u7k6=hqtrtta4n*H5_$ z22S8})c3{mY2?9$Rtu>5WIr8Bg!-xDfAFmF^exK^` z6Ry&RUX!gbhktZC4$2l=oXU{4$-!;a&}<+XhO4=-GS_N*CUFDcSjf0q6IN~1HxFl} zTvdnhrcA?OTsco2?5_9447ZF8goTJpjR=61pX=y1=^tc+|IWW?Ao(j}7Rd4Y!RS=# zB}6GPSg%lP(QUd6oNT2!%DuOkU6d!Ko@xc^mPx6ZIDhlA%+zLOk!-c$C+|M6GP}IR z(CJJieh_hyhvrKRIwH|E#^>fFm_(j*V!P0emb^lLZO6ns7UT-!Cs$OdY{h`j?%aIYNQcVq8{Z=IeUq&%H&kzQ6;5Rk5fOq?&(2n(|E<3oTX=20}2wam6TlFRyXrc z29a$` z^AVK0n>Gvi~b$_MC93Ex`n+0x6xRrpkd(t2fs2fC# zjtD2Gy-o8AmId%=mMjc)2EbHpk0V~!Ez=1#t4RAzpz273H3#JbiCF1DH?|l2{d7o^ z3vFfpQifRJ0V~fsMUN!6Kit#697H!!ZFi3lnax#wpt--bkOjtj{1a|@p7;5Q}WNX4+7i1i*2e!WPp!IEn>kW9GZBB?a!V5#k0*K!<(}#{jnwxiX zI&K@pD0RcHdCtt`GSl(tFqm~XE07`KH(+y@WfcKU*|yawg$rv8)^^WcL0qA{J2>r5 zUoT_zj#R`=OlxhoeK=fJX8j*XaK=z8sVJieQ)sDMET&|ymZeppP*jL>6_13~M9H$p z%iwRC>9SU^T188{N&%Na-Weo+z<1k=VH-Vp6;8D7ESBwGt}6tP;YhaIbj#vq%URmh zW8u1PPCj!;J9V9=cq@_4AxegADXg}U+Wm+T7Ogubzjt*H$;`QRxUG)PW#&S;N*w*j zPS;AQ1(%}ca~L)Dy{h^e#W_G5{5D^7X6L1QQ0=_2ZpH2hcGT|zBN6X^ksB1bIpM2} zf1oI(|Gf}= zP}q03nx81oU&mq*$dA^y>-Lu+TlMoR-?PY}h?fm*W76n>=SW|~i!LFgcV0TtM83Of znL(IiH~*|*GSOw1u%_#OQ#Ql)m}-30S*SbY8ot-4R*b)T38iqbVRb)1pu*1eIX8ZSu-$H@z#Eabm~-uV|7Dbiiw z7cX%&Vn}o`=kaQSAaLWAqI~p7JoTXIDPckbh^7|f_C0@Fq*C~Q3x$)h;H%FV+VNoU zg{^qJ@u-n82C(aoG>%FtB)UY@c0_gsNNdoSu9;SMhzXPw=ZH?FaSYWND5HW;nZY<$ zxHRE1R~PIQr+q803Fe&Y*~HJOf2@=hAP$O#x!7V6D6WJw7FTe!+LSz%)kLrf%mzgI zPdcbDnEnnOuhiy$9IHW!q4d$vo+Wx}VzlFrsudCcsjzRLnrFTn<{YZZ-bIJgAIJ^y zx}c?+h=XQ-l^kWv@4lodfPd@$!MV9FNoWfHTqwsPlT5oi@>ai-i4Rt_NZCD6v?+D7 zhGVl4&h(n=UUIlN8+E)&)FJa7Thz%;KREzD&n9A67}|z^8YrN8+`$1qJqU3VUv=`G-)JTm|6A7qb8dpxBm%o zG*n-``r5nqNx0R{iF7+-NyvR4xuzjCpsff}H<41e@2V)Y)YKi=b|iymuU^nC+~pH3 ze|9RJw|LusY*H@@hUpJSwc7(|LB2J=Q*DpgsQukjdXJku=&td=`M)EeV*f+8C@2WX z|MZwL`@fBV|I6Bcnaow-{SPTe+9uk%FCilOQ(_z#qrMS*I0h(WrE0lfI~;J(q!{1# zZ@PneE5hRpgMctLjWl`Op|Icm{P=zY55PSOQ$V?Y!%@btRbc!oJ?2QtqEc5hI${yN zwmAa5SwB)c4=GG|I!>P?<`Q406Lk@mIaW*P*czmm04`YwQNdZ%9jS>~kF&(t(?;h6 zq{^QA#sbB)pWuGu=uAUAN$k=L(nmJ?mgeLJJQ!T9zx?V<#*kka1K{JBRo>eb{|N~7 zw`MherGL22ehS1kw{8&t1tpJouKc1NlslI9q#?Sd*q0C$MoQ~x7eCji3t52-SGm1m+Bw)|e2 z{k7r{40wx z>?kwsI?L${8DrICrX}-LYt}0Ev|D?>A@9F3w}%oJS_X_(h(#+Jt&-V_&;$wHB-iMR2)(hAf3QJ9=eVZlvSC8G=cgbS zOk?V(xNs8BF+|x?QRS{v8W4ZUL)9d7`$$)rSU6S1m>3+~*8M~p@FPh4raEMQ$1{?! zBUJ@-+1$ufeGHT=)4)6)$S%*zgbKLOq{3zUKOD&$UWZ4oIwluHrPn$4{GM)6T1VD7 z*N|fxG8uvphGK3%Pl-1;+YT_^m|&X+wvqgX6deeUR>U(uvpg6}H&YF1s2a+_R%PW_ z=_+cN!e})CAN)-nd4eYFzZ6C>oSNj2Y1mrAg&ku6Fb`R80w5OB%X+XhvFoVxYFlr> zy>nro3YzZLVMI-H$}B(s)t3q785{w(mnP*IB?5w&mrdmvM;ltI^BEW;+JuO5Ha=u& zVk=Rpb7!r%N+D{2?w7CS85Vy9{B2P`&XBxxn?h0T@}8rT1)deE8aj&AtUR;`FV*gK zw$=;eW50;_)@`5(n=8XgsLjzF<`bG{+9uHI=jb!M0JgE1*=GA|TA=?+HB}TI_ z&9_8XbQ)oOq)=78&-jV)yXqLKRO$-RryS-RY+xn1q{KX!<}(^K z8yt+{_LaCkyIy#3E)EKV@FQ~SKV}<@o?iUPsLh7zPgs6Zm#jaRc<31*e_-<$U>YTA zpN3R2-nMVyC(Lz-d&XA2d5{A?|HYqAH}!Au#(zNn_CMvX)c+s6_&(6EB&dpzZvquOJ_`4NRAbh(Hl0vrznPI_&KVT0HcGBXDDPR{+R~AX0E7bkNh8j1 z0AZ#?B5Cj0_na+nzt_K=f499oH=rJo8PFFBjKpL`pfLc?LFx)qySk|1l`8V?YBd?x z>E%`FtruQZEDQOLgN&EVq7m1EQi*AMhZ{_po)njA6897kYgORToW^nu>?;-q6lB`M zsQ@#E80r8D2}>q1E7{CU0f4od>YaX(lY_-evtT>&u6&7y23@(re^W*3(;I<@rc7F9 zTZu*nqMfJ+U2$Sj$j*+ThWRg78d-!^+jx738|1iSRB4Si;Q3cDHHo!kag4PQU$}NH+`G zyx`;y-4}7v15}a|u#~B!TwaVH5^LaIhofp3vl(1=mkXSHVx9u}cA}jU`dEZU|1g

t(C@%~nR^pHKhDdRXXA;velkZ8Sl3Hv=5${s@>-ncHW=w<~gaij13@jQA zK|CJC)34`Ze^A;k1MgiDeInbaGE*o_;SPD|Zde1T{!r32(R${9u6B&<&KCOIO>Qh6 z9??65{x9V`%eg@daVQ4TP`#&wt5IPdVy=j^vG}P2{8Y)6Bzz=7l08zfJJdK4yeGcW zHr#|Zl3au!HVz zKGs&<9;5#69fQ1H+H|(B>%dro#s9pSL7U#w8j%$qo@5x3H3l^0Rl6!u z>1tg9lH&iiUk-}(flOtLInhI%hu@|7Y`-jMf5@^(P8cZU!FeTF6Icdi{;HNS%UsIg z-F14f*--GP$Uz7_YXn!874gAS+?@pduL=vf4 ze<3k?OtY$Xj|wW-WXsMWr}LAD+%aVgr>-K029TdPhP^kLGh>HVpguXp9>Q%Sxw{%q zSk8$kaAY!MR##fUjrT=(P+p=^-?f9h56)Hka7MmkvCy1mrG^%LW3+XLy|SO!A{+B; z;?v9mn``M3=!+tR+POCKft65^*Jf72e>@1{4ehmjU4z?5%5)i0;G_*ID$M=8v?wDo z`QtCzQm3v44t66YXK%;WOpo(rHjm zhR-DibkL=?M)6hY`&&Q!Ff*hV11GnG&5uIf3Uf5bV` zQK()FisYm-RyvumlR(x8m1rt7ZsgN_?@h?i<*yoCJ%SgJ&#t4qEMRgN{JgLilRJr- zSL_!oxsq1bHQ5$yLtjD)ON~^ld2GZsQSZOQoq}VUg#>cPmlRf6wh|HI4O_2Kg3$m~ zazm5c0ucU5g4P!F2hdLemV&yIf3XJsbA<4b52C^2CdOa&E`n^d=XAj z$41(e`qqr+$X%$H>iB7COWBKv9bqWba9tpD$5o6pl>{ExM30vtbxCuT%A25tT2&27j}_fZej4L3&|6$O4xT@EIF_Iy5j)?St|7Gj_|Dz2dr{UW;}n zaTbvi+$Igx_CIL(=)d- z51y5!UmIki&@oDS*Fu8Yn30Ko~uyj zVzlRW!3eOE(gPC7!42`6q7W_u(cc8YEG}4o^W@arnwyN9qC$I+P3$=+)WF1wLLuN@ z!KbM)BGa_bBRRnb4R874D!?n8AT$wRIDIFZh@2^Dp)&@~McF|n3&VQuUK-G=UncJQ z5i0oW2}{LlZM|N-PajqCg}A|nT{%Jm+IR6WzF0Y-{AUd2&S4;p|D*WVT52GhC6!a!&cF`S^E^kWsfc5zn`f0nJxmKH)-~fsd{y z>*K`2`a8Dwz?9kfrEIc^A*~YiFJujVjx$X!gnE>(K)v=g6LA%#Ne&B|_Ar&@gaCL5 zmk{z98-MUGp?}YCGM|@X?XGDkL(A{63>7PilXZX(_HO7TXm}`)Ox8+pYRjLM{N4Fm zLqLU}^@A5Q>bXO#HFPH!^VyPH)yGGsia6!J0HfrvZwdc}^I6Dl5yqm2-=QscRy2^e zc7hw(DiPR9vAqksE+1WjKl%PFvdW558B98&V*^q&Uze@&86kgAu^}>V<0Kz#L$^On z!{XFVggFWAVJ9qJDc@C#){xzDKf(HhF#XU1r5DU$(T8J_WWmMS=@~{vjb+I8Fy{=I zSUO{(YO&;$P^n=CIO=J=#WmJYQq^LJmpX;c75xPB`4FQ%eE}|@+n34WVP8##4qS19 zj&XV|peojq%BFw3pqR>a_Ad_PamyVOdsYQrv2a~pHHn3^^vC(IgH?-?-1zYZe^O@- zx1-3tZM}=h31Fop*YV^>2VkLe`BN##M6eaG}v1T}rT23OTcx7+Qs9HcQfRoLgWA$9e zzFwZ~HCu6%sKX2_fe%Ymtlt@sJNam!TCS2~)gmvo3}OT`dkO($Wb;7In`rhRYqUlb zpdcyTQtf{OPce6+2x>498LOA3FFhu8BEhe%>Mtk%t8%&s;LAy4rswuk5YJ^8Lo5Ar zGr(?qzEj*Qe4LDLhGxS)czrK%n#&Y^gamG=mDNOF}jETa;txST<(D6#PvzV^Op&<)~V8I%Q=CF zPoxZ5Sx*Z)O(N9yY3;W^#AsL8_md~XAyA2$l)TBx=>u*AG@s@a*4aX~J#ta)b>(3D z%2odTz(PGfDKZF{#NVoT6bruaKwX?bg@7*HQl(E0z4IDQO#G%;j@2;=%_>Zon<3DST85o<%KdI2h_HkO>n3+gIudU|jOd>c?a@S_m@c0|ww)?yP~qFal$Zq2|lt z`wcmc*92nQ(^FUQS3yG;rmrD&M<02L9f$Vt6DQFqr*=H}FN|`EAYYvT`@95A9tJsR zJf*`a1=~ARoD8?)ra@O_ACz{ADQnG>@CTsJ^A~3ANQ;X*c*Rk zxe|UcK=W|d1@DL0t4^K89A?5V4@_qmbhwUm*_&GnV}E%ElSdk`JMO?h`$XPwZJcCk!J&ye_H6+ z|Cr}@wKHaL@oPIVDfT99A#YFR*UEp^QAX4xXGk+%=3N8Vw#oqC%^sFq@mB1?l4P5P zU2`DK^5d(Z!TgktDjGSnz_UDbwZQ`vKKnaNGIv_(6B<3qwqA?7oJ4E=w^GT*K~VcT z_R*67_cQJXgwv_HL3hbgFHYsr^6kD;LGk%#(_qAiqFR~Zwjvz$V45)cLjZr_%DZ0h zZPI_rS&l9|RSR5}jC>5B)R%X^d4P0FX2MgA_ZLdmjj_nGPz=DV^V zG4f6-@g=u-#CL2j>>b%7w7IiuT+PlYA->EPzaqqh1Z8F7T`{<~|5t!9{W_Kb(3z|) z^Iq?_cvbXMogyNJdbKq=Lg0U8P8COXORKZ?Wu8C_-v-}a^{1yIzpL8Nl!tduDIk9k)U z(=w`L?%cETj23;-Sj6lqQpd28LD7BxKZPkESP_l`z46c*T%5T zOE`va2rq+PwZyS56UX5p6`YAsiBd^n;?VlUem_>caLrDO)%axwaOUL!=2DVwGolqj zNim{j)dmfol5Ec3%=C<<++W|%=N2mON))$y#|VUR0j$gTay%6IAS0+wwPzVKI3>7# zZ%CGr=PcEoB`b=gd__^%w}XP}PuXE24s8=Hg$aM9clS^BRt7sK#iMa9 zmz8~8@lH7HD3=HnZ>5X5cGZrajeb_{96`mv71h9JBwe0XW=o1jN>A(jJK|@OMX*(0 zcu$*hH`d#=RDrq=lI#0obeEb9zwo9o!&p3A(Vtj{bMKEvyRSlHlCftAi{DeULkX@T zt)oFsR$NPpqZWS$s0^!p6^KA2mz&hAI7!@X#A~#~QpJE@MNwqe!r!eocInNouuZ`9 zu}nit6ohHM7cGv)-=0gvd4-snE=%jX3x^?4<|yzlZhwOH(%SU@!eNwK!?pp<7qhCf z8O^=zXtx=zuJ}PGzUo)Y*JF6mi;qH@sSF$H)}&sJG}wP}>=aQW=atIJ$t`T^JEBjl zyv-_HmH%=<>$8|*8Oam+y|IN{17EG|7w>4(5cvO!>&ro1I7brvsrrjx zDPzDoi1vRiZUHf}%Sx@z3{S9W`pCi+4G7g$m+ zX)n#wqr7lh^v1p+KfaBl8M+0b!uks1{f z=9bKgD4Tw8sVz{oTu#|gD?YQUlRMoaQp;wfWngM{-0J>REmq<#g}?E=T}C84x|ZT<|PJoRw7hAq`3 zWue#YqWP2>j#oxTt{HbhNr@K|0ru48)6RcqPVEjcKDN!RygBmtbKkymr@vZzDQ-OY z|GsF825{-c`>Xc7N)A2LNow4K=gJNKK3qNImbs#B4}0oD&%Tw)8{mn8tqAN5OEsK6 zqI{=zjlXB}CuD_~prBE3ru-zxf1nSmI3TEe!Y`bF-2GyUr4mkZQW%ZLbDR35>Q{eR z@DBR`ZruWpP45{9gXI_ChI}Z9AU;85gL*xh6t4u1_koXaWVGBt6}LhXwnF$2SFS+c zgY-!~WS>$O2zOIL{W>QTkdaZKe1p^cxOl%=p8sBrj^L~M5AdU5Sbkvs&c)sp=|8|< z0w(J03CjPgdiLNE)yK~ad33hu%ejBK3hwR>PIUFL!~T62Pz@FHmym}>Z1=h+lq+of zbaL)5=m(M?2EyEb(jeC^_Dq-4{sCc^^4>877Fn5ws_~1^rlGH(%}gsa)gcX_5%Y){ zKMXm=&+LdFFXR=p{)+FivW+J+6qYp%<=BzdPDOvWii9jLETt0Od`Zyr2!MZuV=)2K z1kWpPp^G&G%WDpA6KJpthR#+C`nPORQ-HlB6Ln5!RqT2OpYO_X(mdC(B&E9~hJ2Cl zw;_=x6k%65?ZPVdGOxBFk2zOHTs=F_K^}x2@H@En0P`))V8&>J`qogGE^UGC8~q1| z2HuSetTRXdXqO6fyLPDX-hO``LE-+gS+I;8SW`{q7c5t5lq2OLcm9vNO1&&9eEv05 zV#-uTnD8fTgoZlJ>R%zfVS-hMTZjs~XYiKVnktcIcm+l)e&P082f(I_M%bRv#!i=M zQy~{t-CR{;XQOqR9>l>&q*E!*9RS&Y@8OLWj=jPbMi2Z6{3-9d_(v)E&8oKk`SuIx zpJW1o+2Tke#8%2NDq%iu+m`e#mkiIX-BjXlw^ZbT|Jdvrt(b(^Hf8Po7jlib&{I$>=xqc@1W6-NH zs0l|lK=7)Uy~0aL04D7oTtGj~tV@U{79BV9^_*BV`jdYEt9PE|h1vdWOuUxr5|~J2 zHMWUy7@T&H$=t#+TPci9$7;GTYRuqjix;EZsmUvNE2jwaV2cJpndT?2>L$ubjV9?>^S>0bcGKXQ3k(^%2e zd)m9nXs(ifG+LRqS^r?;zt!<5?z%%~FDZWFc8NmwoA8V6>l5Vd#~g-*d1_r}26^lV zjofDZ%{+o01pjzGyg@aV_$xs)TjG3C#+9EVe<&`#qsyW-hfr8SXc1d#B@7~Aqqd-j zCL>8?l|Huf6z>1KFG*=f)vxrlnZd7*;BVSD%>5ge%HB+HMD5JN!#Y?t^%+F+3mbx( z9PO|2)yp`FWKR56sx$VY1k(@ZZk-}^x7?#4A=REGwMJ`@t9emLbGrWW1X?|74t-vP zL2b(VCQJDqduH9^(SiCt_pS)RL!M@M%QW$m_jiSc>IFBO%JYrt+Yfb(cfMXJ9< zWrn~+*wpi1-G3_N6~LG40U8<+WY^z)q|f7|{b8sM=D{kTKbIB)8Y6$OLw8bZ=Ni9j zXf!O@S-KrP15G=G@11Ita4*3zYLvp0Rt;@_=~z?Fq0@N2G??^+b(qKF9!qLy2XA?@ z#O!bIkXF~IYaEX8z>}MNxYqqdNjd!rD zWJh+QSE!M+K(ADT*AlH{$F4D2t`wD4uc5X`DPK`(mQuCG(ISYBTP-b8EqyB1sBTnq z;}}HlQ|nV*q1{Tnqmw!0g;=>g#_p-iCmOUTEG~T#4){i7CVKPXaNa`0hcAk?3W!y!${|$;}Ab*5COcxf@q>^m3j1p?43HvvH z&m=6!*#@@q5qXCSdY4m!x#z&n2O-xA4zbVsf3WtB!I?e#yLU2~_>OJcb|$uM+qNdS zW81cE+nLzr#Lj<&&-~6l|MS$|ug`=Y^cCRWw>$#M?d|hxl+I0Cu*>a7bT$~k+b5ih9Wi$ND^ zzQCcga~FO-82?91ry+Y{T`wI+gP>-TP%v*i_={#vLOR=TtoZ`Xa`k9#wd@;etKC}J z)pg#@UWyuII4bZczKsLiJA}zX;VR(VTVdiUsUK{XP|m&*)^uyl8Q*d1 z-gfRO7x;hEEWZm)QkSBr1?(Mc48kvi0XR1KaP0bI_~XhhgSXs&oe_J~s4a}UMtblX zqdap+Nc~WaZGGhg>3Tm0ua~>p{{s$JnN5H!qJr@W|z1H(BUsM=pe}*Q} zkK|#j&k0cKG23@k(|ZDu-)<}wy9f)!9U(J$vH5=*U1%OZek$E0Qli?=8c)H8GVwHd zX6%^BFrm$qXOVWL&&IC4ts7liXEoQtTu2{judc2@WS+t0?dqz?Ue64&&h)d!z+1sO z5tl(^gzy>^whxFc802$-TbRKsTZ6r=IIpV86!7)=LE{b=-?XMK$b@Z(tDh*&?<&j- zyfuG|vXhN{T1UFhIZ;!$+Q>{Shc-LI-x~+95pj#yrd7|oR7w>J+16JrrdUYdYD4WR zH!n!+JGQ%Vqgl{2tG;MdFS%J)yQR3bYM@B&NI{d(K`YOT>*z4znxP8}roz!4uyMssX^%rL`nQeC%{ zVgT$ON=Q zPLEvKc9Fr>H?z1_g*qnKOv6W31G;~p)it8lL6ze5 z31j$s^a%Euf}y!IRB4FwxX|oAjYxdW_yj!hVL6h=4l-o_Un5+!Nb!`=SnJ8*mMVJA zmD?=aCvttzmySXfmjZDv_J(T%;5haNc)tEMyF@hE*PvSPO4)_K36>&hq#JG=(8IK zdzUMaB2oF_d#*}Vo>jit0XDyh#-C?Xmc!@@I(*W=z0J0!&P(%w6}#r)I=*%=#=gmA z)zFD)Z)Q{;$yT}oKH-R`EoFax1TEeKGhP=n*-B=QMBZS)ux&nq>IqS-hq?ulVhD>> z7Xwxbb>Zi!a)U7<#Jgs$;a(D#6tqX{*4|MsQMz@>oQmXOB;ArP&HTH*O`r{k| zD%}C0spSEUbD>84oaFU5`QTJcn5*#|!mzj0nTB{*>d46b!b?YhcbR{7o4qj}!YOH% zO(o#%w*=>Q0EOv|@0B$gp7MgrsCaK|Ziu0h7NPA}+Xa!&}Et_d(8! zf1>3$$BCMLcJ)1>g%sT;u}z0G2ke93T7%<)g{3{vB5-9wTUIRLzc}xmv@45r<11$ab_P<(A7D)Izo?c_(%TVp~hth?Xdm^ z0#XM4{}6BZe+4z;|3tXz+9M01@(r#GG=NtnTP?kYz^HT%L;ChT2sX9AEQR&IaMFU& z>bi~jEvkPhC02j@f+X<05y!fwEz&4NAeR`JO6OrY$>MQ$>-l=QL+b% zDgkEcxY#KM@XAJxLXG*Egf}j{eHhX0b~C93tjY83JAEzL+XB76ZwM0w#?WnFN|jP{ zDcMF6p#f}rMRqlv6}w#VEKOKXAsQGlVMzSOWJ6KzBd>oXG(gMwn{;_r&B9V?vH?zG z)|8l>L8ibh(LV-bniS5lo_$!`^t9tj2dJ)mk!V>93aoV%PJZ{fE~l(~dlK83p|0FL zun@~hHfm3AF_#f37tnC2nD`(4p+63DPN~=%@%l?H@p;i|ZafIP=XsamJrG|3)pz?> zV#R}T7IA-kKwitR4~I>(ZR>4U%7)D(ba(E}#w8DQnKB$Ha&+~Mb+zo7da}U$i|#{w zf=B@m()f5go+jEo6upAO>LB#oDV@1Z_}1(>lB!nIQ%$2$HI#Gzr8Sl3oOz#ptr$}I zpz?yBaHIio$pTwGR#Hlb@jysvnsXN{+Rj)xIb90QH=occ!c73WxrKK?nXtELW#*VyKKv? zsO5hKVsQKHo1NU-QnYjNtlZ4yWW{44<2#IohbY>g8^0!)see(1QeTP0<6bHCiYYP4 z_|u?n$e5nq$Sf+Q=l*-oKGtXQzxms<*C77Oa>e|=yrnkf`eZh% zgd?d+BZ*l`VC5gu@E;Wiydz;@8!nhF%(@Gde7Un31fG#N>=aF{vO*gT;F9j3RB$NV z^!v!dcbp8s9^iuy@ODZPWDUU)*+ze96phSxsM1lLvC1{plfP3E6{bO`PPpVK?9t3u zx($b#2Z`M@eIs+Td9kZ|we$)zXifGJ6WMy8c6aOD^L>ddi^d!Uxa}pQ5MYJC% z1ohI0J~#&LjcRoNsuoiEC7|>r-bI>er`gr87)~x<%wB0FG|}ZU(NbirBAkE1eXPRA zD*rM)(uoFK?YMb2QWzU*Na{K1>_U3=5?0)dJmAN-(3rbLjKwU8k+S8YYbOD)>`Ef} zWTyI_T`>a|dCY(CT#NHi${=o>2JBFW4ONY)bV=C*7BV+g-2^ec1x3W@D!Dcjz28 z=rw!BDDsq1G@_I#dSVxqHjBR3e^NCSHF8y}b}slkitz zQ6X8fQI6PtXqr@g?4kObuG+3EP9y7+VkwgYg$9?nNB*;}(kav313ftD zKv3BURZd~RqW!wnQj2W$GXn37*`vA|YUZP*9C{FS7-#%EmooYYl(9_b*(iDEu#AQN80H=B+=eEuzlIJDtssx1DFRc)WW*RzF~N z+3^wb5k4T4$mcN)G^!^{wvazdK3}@F4(WKDE~5kN*+XiDv>D>$X<&5yh1X4MrqP&b zw1vtlXtwF3Yl#9kc?Sd5od!2mgV^g&~;9friXeco2V8It)$vFK8<}4=AxH=Z7P5cM`Vbb~N72KID4k2PMnqDAA8nHbBk%c^qEraABlRTE0Ml7VpEovx z4XMhK+vS`1a=ZG`&&reR;iMiHfE>e-NnH+fGZ_wpXJ4jJcmQ+M*cFbL*WokuR*8W& z$V)+ck6s~$H|LJaz;+|g|E%orhS~F zo`0^>V4#1bt}&)y-DSU@uspAGTkf00hYuuXy@@k?%AK(`2#0xbSGST1XECEZAZ&&( z)9k=YT#~|=I3N2E*zWfF4wkcj6w)9?1=T~KP)|4UDxg?drUDly8oiY9 zV!MA1&-jmunOnac>oW_=yze3~ev%(#Z;4eDFqLFp%w(r~&+<86U3}bKE|`NvdT>VZ zKWJmt#Sah;YU#3Nr`&K%kDgqT+jGUcuz%}WL+ydbYZTzGrcC+-I!$b*Rhp=^1kb5b zZP!r#1KPL2yzK-aZ_D$r*`ubDZN-VHsM6AG~U z--pg(9*XshPG>PH205b?VX<(G$C#@gBFKW8hd+SkRnVzb0^`6!A#*ZKI#bDaXdH1y zNs+)Y^RgrF5=Faw6^ET0c6VMmi&+w(O3%O|o(N;~m<`UKiGZ~oPbNTd4mW5+nhuNkT*$tBga!YmWR5rw5UTS0Xp}bfMd_Rwh!=!-Z*HsfJK%pP z%Z;1bNvJ9NOWEjr*6BZ#Wx~WW$G(4el%D=W8BVIKYn8%j*`rgk;b}P3qm<6_RD%-t zBB(uC&)z8^`g~gq4m!H+<`5n5>|;Q>x4I?dV1$<{(Eg@Ftsj0+qS5=Q`K`qzFyZ@n zH;i+Q(uQK?;*r`fP(}I=s+(as>GvJ8guCndkRA8Q&3kI4NF@mN=3pMn-;sarwo_Pi zm#Vp5;%f(nltQr2STkP>o^-UzpkG%~cvOxfniHHNzCTTwOECVSOrpy#=C7K)S;%0V z@CTs%81RyB2mV3}l3jZfd}BC& zpCSs(JI$*Z!F~uNa~QL8E}4J$jYJe39Q9clH9#geJ|;ybqVgZg(owxRA8D@FFc;-~ zxbvuVqPpn~b4Eaa^T5{((S$-X-1dmUY>9<$7pI9hA>MBef+aa#@ccVvvCChvkAErK z|8G;q_CJ)_{-q4juVoHD2~0{5QD33nLR$}BAF(-1Y6*mEPNOP(r{#ZANWP|ZdaD^| z|4D{26pZi*a$wIqv(2V(L^kq}(3zc`?RlJ@-u>tH{Dvn$wChy#yDoNzs|b>@2E$~A zBF0S2D`%JHfoq{5)&~7fIrQi=pqMbzYp^lP*7C3&c}0R&CFCYD<)w-GGQvR_7QobN z^RFn~rkwU_b)12VYiVA0BH^JN*`PVb{6kn*NM)zNs zU|}KS4Af5i;~6vldPbyI)3<3OOj!cgHp!X)Y=p*>F4=aPe>@}pzdR$;!_vC@j|~Q?Nh$!M9uFKdYzGSVi8 zvA>RS?(YLy_{LH{U~+k-f*~6c|MrYH88d$WkA0-j2#wSKAh!44MvVR65kt2?m;i02 z4!dR$-Kf9~+?Pfht^jo|sE-KWNpbs`cz${0Ry%+44`KSq|FVpn-YWvCjQ>X1lkpo( zz_|xw@V|siFlEnCxFt*BJI*o6jay`>+y&P;(vC&A0L>`n73REzGS1n!rOX`a8N`YWnpG?KAk2oiMkYX}p%;U}<(~;p?8R<_K@7GXYn%3* zd18M=B*%_R@EkpZQ-);qP{s%*SWg^C1p|%WXwneYiIB285}`T?#Aj@HO2rpo3cF=4{k6>XTPE+s84p(3hSv7S=s^^LYJ5A%*NQdz`|1@_GQUe3cBt zf+h@sKdvz_Zu28l%CGSf!OZiK{S8X>1|EO&oq&oX)dHnN*+4w!Zh@+yYBr>9M%u78 z8k|l2qj>WtyrY12Yk(a?~jKKJl9a}4%=yg4&>J43VO0#3!$VBVgzlrf2^rSZtau#(W|-lTsi zupce|L1}*O-IuC)9tlBNn=NH{3Ae^@d%zWk!y$3+!fvuVkFGWNfSh+csP-P1@{0$! zr}lj1{mgg9SqwUlQyfu~r0uA2$y|9JMydYn>~l+x`sJPmeDAdXGrNHO{LxV=%7%~$ z?7zg79pYi9&(K<*1eJ}>m`z5W7~p>cmitev4ES2@?#NoA7msktB0*Xb*ZFMA7$&@) z;mJLiOK9aa$1dv}?NiiEU}z9ntb{f`Ob5mn204?)ma0)2!AKOzIQiuq0)&r!bJ#Hy ze)sWT^`TP}^z$1PHADyXnagyohj9EwY#5Y%1+AbCr67Qrx|3)^pl3EIMumTTh_-qN zA&7j)JnJR<+2)&7DLdXAfSyb(l}Yv-L>3oP9eJ8^uXx#6C11O2zB4XP0)=T-m$m>n z{vRceER%XyLog5!zyEfHp5uS^ZCyH}h+=-x**eR5HRT&1sR#gUmFm>>D~r@*L6qA{ z3>c&Qj1p}!i&Ho5-5AC=zQ}*fZ%kiy#eZE+~x`374*e-1U0kn?HQm zew_%H?<-vriY?KfB}J~(_3b`*uENsZP~{eBjOUa#t&BCPOsqJL^lM`LlWBy4@Df)# zeBZ)@AhKcsT+{H$9n*hcRb7<{3^1&}D76DEWizo`nh;##Wn1CGIC1<5gGWI$h;XFd z`{YQhPZ9hJ`g`>q@wTIalOuE_;2sjTpAn177E>-2L0aKYjN!R|-IqJ0`ucYbb-sSa zlSu{EL_zT(cRKW6_o}Iow)oOK1XL84Tt+vsQNoth6AGKiCAEKEt)5em17T^1F_pK% zgLMji%N)WmPd31$A2>>p1V)9Zbc3DV+Pv6~3{5J??!$1F6el^87Q^T{Fiw0I5D}}_ zW`{Z*1*b_oT4|)OW{HL!R85veovKw-rcL3VNq>H~<65+?+@=S?VdNgb0wdqvs0Q=b zQF3M>v++xzdIofFkJKSHkRf1(=UH>!DYPO=+`HwB)8Z#AjN_< zu}QFS2{nb`3()dTla;HK3*+l-fZ7H$O~7Dg&>2A^OfFG+>m-$DlKIdm8i(mpTn9n1 z?3=$ct{dh2gq$&-ACKSP*l~E>M(F~74{W{GoC-&EP7$lCq^zUf3OqMnm7c9jt&4bu zy82*^p!;p`@|#J^G(uHDY- z!|I4*{t5B#IKu@ei@W?)On31AGR~a;UctoBlA2VaZld%fG+Jt*jMR@Wf`~2#W`MIM z_aJQK1MJ*0w=9!6z7imqZu<##W0|+9&^-EH=4F4~u12S_yxnHD{ye^o%7e__u!bW= zks~%Dj$-ab<1}5yJZPKUh}P0^yQ!~v=UX%v*OF|IddQaIQ28^|(G0Y)xt+f${RSow zaD1z!8hocVl)0{?>>VhZsWX_QiXurDm>Bp@J8&o3r{x*neYujnb7wNFd<7{ks`bij zA~%1VT>F4+*rZ@X8b6})4GT7vQFav*U3x&ogn21vO>B&3z#jP1%CCX1nPN+LCGp8j zJyKVmyMkgR1pSD#VT_E?dXKpV@wc#YfuB?eVlC&!BekKqMMPGRxns?~*0&Y9%|2ek z+b?}t3AaEAj^LH#V4Z$0L_S0BKu_CidQ0uV>@}zdoY9X@_Wqb~&mN#z{0?1Ei{P#gER(PNm6C8Ur7VQqnd? z9&@1@z^&MMjs8ME^5{{UQplz0#G}o`RA>MH_(z%mGKLK#IJ z^9#?8#;_dersOwgqr+JLt51ksMl))~KqWX+?g_>I zxx}P&2Q>}LN8?)`p!pyd39s3`iZImD`B3Czs zXr+X^3PzqIF_Vo++W%S+i(e{`6Yh=~tq(VxE#yQwL6@(rs~AhPn{SkQDgzS)~*ErEhVj*G$$Qu=@gupSM8k8X>PXzXkhhBTh;|)jYNm2o*U+7k|hv0*C4g{Gjy&XUv(58?L2=8 z4{h-3uuVd4>K;y8F&%%yEmsyudz9S7ZL7VW>;dz}8ti&8x&U}nuUoc%kRH99se$Rz(XOtZqCWD6c=&HF~ry z^i|aF#60m7UZ1{1SPxU#`@YU5;_6anLI1G>f%V(ll4V-=7fmQ$eSkCwg`<>kYQ^VO zapjL>%GL8-dU*$NT9q&6$DS+!5iFi+5@6d77mQ(1m(;ad+QZrDC>BslRih<$VJ7YY z3u{7Xiy97_smy;EYA^|+$TUEXd!*DfhPpk4w`1y_*T%`IoWU_&MT9j=*K43C$sbsp z0gq-~lI!LS6cvEO5yccc`nJk%PbTIdH%h5z1V!#Nq;W_)So24W5lzmCC%H5QC5Kh% zkgDIPR0Woplz!I~4#QRFoB3*c!FS;RtMY|?XyqbQ#6o{M66^#3+r6$h_a1$LtRZBa zfGOPc8WWyn6iSC%OoydWdx7?JQZ(uTZ(JkqDDlw^|GNGJxUx8eNh`H<@+OfCe>Lw8 zs+Lq;sc8~Xj~l#FD`8y0qL8K52tfMbm>Jp-fyy{IeZtQ`^@@xSS?H*?dN44*nRdmgVdFg&B%5TF?jrPgqHvHDJAeE7zAoWIg>LJd?6OGK3 zidSOSSfkEqm#VT2xlta0w{onRyP~Q8^BL>~gus95MPiiAXKJn~jT4xhib9Ng|4s_c zKayC}R7$nMJZ$feZmumj#<9B+v4ETCM4TFpS`XL3-j1s&=U~B2qt<$s>CTS;iiC%wqzl`_XN*KvYTx4bcDH?Iw?m%jtU zh|CL~dFqu53$Ig40M2U*;3}BJnyCGLMiwinPqz`mJUjQur80U_=ZKzZUKby>tZmR* zXN%rxxBGkB+hUa`lEPd;T>D4RDH#5JK8}CHg4qIY%uHT?s^=9x1neRnu6f(fn2_j> zZ)~A6nh%?T_RxzHv=DxyV{}~_+>!Ua#Ew_&O4aT}0by$%R$U; z*h{oPTiO`J^WsT8f_04_+^bj*4WK#(!V-;!GL4OGBVxBGou_+^g9z@Rx#wvEtb%_^ zK!RIpJrWJQQq@=MCyo|NC^lAG+niB57^sx8O%gX(($Vnr0P$&Gq9jGANby2s^b210 zI@lb~tyIc1hS5y?6YVykS!V1j`vYD3VkC9g&FlEV++F2YKS3Jp)9RsIRu|J3WPNp& zeH@=qg1SHY|B-d!F-pDsx8)290-}HW-xQ+%|A>g8i{bzFUGhwFV1fW#3Wro&qJ3}` z)VVq`1Sp|YhzN;%b_@!grdIFuEm;4;T~J<_z2b1nQ-?jQXz`Yl`|}U5KD=WxvEY*t z_Y#cO$?4ntgKa?d8pO8iz7ngZg8Yx6W!r8|hZ5=HO7-|AyQAtSHIob7)nLu7JL z7~cGK^;H|WdQbDD$$=WPnT6?$Jw2Kz70CobBnZ`L14p^$cK1>Phl)lOzA|JpP>=p0 zgi|Rqk{TK@io}MWJgS0o{_&BlJ5(^H#!2hqX$G%BXl4;;4Xp#7OdtQ@U4;$z#+Uzk z*TBE(uKC}5q5rEb>h|}d|CxW2?)+2s`Alii@zyI=`z|OjOic#`{@ou0S%NO9NNHaX z?6#lQluEqD{m^Sz{fm?;95EVb{zZ9k(E=0kYEs*toxNsn)|0-~?f3C?3mZU@wlX(j zkg_TDD!^&V#ra-0fH2QS(|vyHB+BW>Mh6$nRi;X3z9MVhmQ^#ixQTxepPld9UDuU0%WQL~9cQUl0)rDart)jk$nQ+n&DqxRQS>Q9r`@P8 zjwWBG$H1)ksNyI55N4BzBU5iY8&*WEwvdcC?h4xwz-1qTiE^!m1d}_l{GI>Dp=G9W z&%jd;rKAmqoz*GRT%>>Y&@FD9s}<_t<3yngLh3)gkiADZ)JbXct!wMxBV_C&}0%dntITTc`2g=shfZ+ z5X(LEbt%3Tw_dB#2G%~?e#4~xvyW$qnEkd(d*3bIJ7sE%6w!ahLv*ZJnibQCA*A=@ zs>(5zvFFBw=rc!DNFHiELS&F*T|viw)TwP6k*T_2@FPRq`lm^Sgt=FZ2?s~T`-a<0 zbJ41&QEjH(G)*{}bPCsvdMnd-C}mAVMXqyY55(Q{2ZIt|B;o){KHJU{`N25_7R3d> z^Xwc==QKVSBfx*8hzgF%xcklzg;?Z?6bO||Y#UeP^T1s|;BX1JeJ)}GEUeZn&j()* zL#?CwMHDstc4YU7s9|9Yw|@iwiW4jRIY2p*6n)1W)sv{uVGC7efIR_ba3pJ!k|d^(ytws=WkY|XAl|nLvz(u{+kqM5#x~A>ddg7W2dG#wY*eKfX?U1ut(rF-D6^^(1_RAZSouAkmM~sGi9DcRE89dbA%1*{QyS#CWx3gH!D^{vF%BY)iOe${Q>dy?aP9Ube_ zcJ2qFkvF{{NGNj^@!(k~))wkN@cGH_zqk6NbFH4(`%C^U%+ zCY2#-5>b@fqeZw#L6o^jY`n%10&rmmZK0&~(53QT06K{!(im|>c5=b+wF9{yo5 zI3Itx0#WS{i4^O>ZS;!u#3YgxLV#vQhzZ)K zP}**bv~lf^W0n~S>^*v6(VxS0LP9KA5^~5T;?YsI5k6Or8vR)#l^-MRJ?}>ai2g%e8LHC%<#a^=lEZ_8?%`(1{(VP}^2aG_5IJfWNsAfSbqugohi!{>v)8@(88rl}w(*SiL1o3*J99~A zpjY}^$JMjx;o>F6ZW1jz<~^-B%vo?YSyq25s>5*fMRRYG?(sOV&^5xZOfh0j5KUSx z`f5ZrognSr>Vw~^B+oQ{;`kBof!fVgLjXTi24;6pPyq#iTTv=h(pBZrro$oly8=6? zySz}+_XMP9nTLN)*Fo7>i5E1ER;|JCdmNwe8Fknn44gDOJ0^F7X%Qnm>#LlihOu9(Mg58AyJ}>BsqVwzx`N)u&n1w?#3f)g7DH9 ztZu;I38J|YMz$%8l#uegZkO$jhpSgI#l6RXtQXXquwplX4Xkr|@gRijg7;t9BS7BX zB`ft@WnAcjS0e7GX8Trk!a>#rZlAf3{ktPLnS!erb(XwfuNfQ7`r1M8k$zyvQrL~< z;NG9~9b9~#9J$OC{bNWg|f^6JPp=HnPu8Q+j zVBl+4I0CAqvq>D0J~xF&Up`DU;aA5O!HlpeJsn3_(>z{XFe#xGGA!rdA{a!oDCJUF zA8|N0dZXkUB~8P{hKImB>jsH#ttKR z#l3@c9qqM)3yi9$*0yw~CFw;`b}~kk&o{I;B+BUsRBR+$FVdC6_tkQZa87jYQV)xOeQKlT5cte#;VN=VMMPw&3K;a74}3)*-8NiM*l} zE}AG9t{H~HqQh`YN;9g2hBU}7!JBTF>{-_G!V`^{$S=BolIB7Mo;DJ^lcQ5A`9MM! zc`(&4+n<(xHoUNBbj(@d#C~zFZx$UuI-;ps@Fa-F_+4rjnyf%wXme} z_EEL)9a9XvCF>hG)j~}fET$X;7U>(gF6q&0=`I}q00)a4kvyIOtUjk#-Hj+hwYWi9 zC%VS1@jBwuN3uedGzDyxi09pam>&rq4EBL?tK$09Dw59JC1v~s2`+!yjgp(fT~~2! zDDLUfOv1k5bQg1@$6Gd&xO%Cjb%h4f68^Ne{3&|&8XMc&9bWV(uh1x7Acns_4fs7J z7Jnqau!!kyYV0g;Z+3XGgZUFVwtlP8P}^CY@AAR|^QXEs1b?WuHF&{=_>|f&1kl=8 z*#71O67{CMv_-CP;roAl%U!%}Mb6#FCeB6Q5E{>Ub;ygJm)BpAiWuo{!wMg7Ri%t! zP|oxP#mgP=&@5zy!GD(ahGc)XdoZ3)Usm=+xMzcE z_wZx*{Zn5MV)zq{u7-14A+{>3V!m+Y?(X?sAU22sW|z)55ur5Fublh;Lk1QmB+%li`yWCgGUKUH0buc+RO4uF^$JEUr1~9xN7Mj4@FV4}@&dy3RBo~X6D(wS z9}(uZYb`a5mN={|!Kf=OKtV(^6bYUXHygnjer!NL2emWe z-DPxBYnc_skW*`FF+@E=)2M~UeR{pN0I`pvL5w#c$`#8|i~io`r(>~|dpQk~^N^12 zRH9LjhQNQg3_hf`GG41(Sj0GYDR2ptg57(l-YA~_caa8dOd&{{Ja-boI?v$+`}Cg} zaY@-x>3Wq#lBm-NEERE%Co#(MqQ|SD&4>-9={WQJw|Ub-R9Pde+$6Gh)TZ(7wKdJR2=_ zNNsFewUg0mZ^ZJx=OX6D8%5tJwnafqOQXt)jhzxz6HQHEP|%RS}o6Mb#`@E3Z>q-fFDmTRrFr7!T~znVB2 ze`tS}>t+oo9y>!V+>LZ+5iP7FM=S*EV`MA2Kt~X}$4x%AOO4@g+kC#5$Hqg&SVwtwYc$>UaTpxvlJ~!DJFw%|A zTic`<=m?WQI)XbNG3*Oxe}T7ro3>wB+li&LFB2j3#_I z?&pjQG0ylMkRaF=r&TGZeLko{LLSuz&14iOW41h0pl>rjY(~{mH<5~fptZfM#3a~! z+m93Ok%DS|9U3-Di6lMLzR#n_9NL;c;L>9M+TrS-})S8N%Kg21CLNyHZ&<-C} z(ZTq{mywV}e^#LCA8bWNOu=0&`;mw-MSA-PN6@HLWEO+F9$KVsZQf@p=?wExm^~gI z^hCw%BO1aRlG!26nlRJoNOaW|p zG2vUJ!|rX{58n^0jq^=2m#92L+C(F?hi#z>EzwR6Y41})JhK>Dr1IHG#YU#zq%E-w z>f3}Pc!qUNH1z=0!syP@?YzE*V{04cf$q|`V7J0=Q0>X9?(m4Chq#1yY_WgCMgkE8 zj{Ge1TuE0dkc?i|B3m%C^J5eN3HW@U6JvBasAfM)>Hsd?H9((>XGW7Z?d$uP-qqQi;W~0n)UffZ( zm3wW)a%erBk*b1h{s^J^el&mZ-4+xUxm(caYiMr+iIJ~{>AYs|BiCTo(4T?F&uRs$ zw6<`yZ9?Kf?3=A0e|dpxdXie-iWO4L7|puiHs8beDt|})*p{orIAMom36NgT(ICti?VpLYF{Z|N z+`7`C+M>s+7h~0}KI^LLRXO)^b&)0u)EJ-v=i%8f0IuYNSoMugPibCGZ5s`r`catP}sA7n>WX(-Q zJvNm!aTH2p<5(E|LAfpFNdZ0bS5*kApxdQ*jocq5IlW%5x|%|Uz2yn@f1VayZ|NP; z&#vHqaT~+IcQVRC{dwaC`~1CWlIO)fkmajNV_8_(Z z**v|}i1>P+KYkC1=GpyX5Jc4(H(JV$p90AxCxh>#nlTO}&Awmzq7K4%YO6sbtolky z;nSrNy77gvgb6W@D1_dY4a=ys@==Lb+yBL@RbC@m9z7>UEaUjjj(HVp!`ekRVa7Tj zFX~8)d=T`T|9O9<@QRM!I!>~$YYMT}E?k6tU0r!o*`@4fh1QQUvBblkQMp-L)nv|U za#vFYUa1u^<(cwi>D&BORq|~LHdRK0EY$1pXUiw{P^v68;Jc%foo=NN=jFmogNyCA zBa}hOkO4h>?xuJ1&V&3ns%;8QY>Vlsojhx0%CgIY38;S%l^CB6w_xXf&r>i4DWwL& z4tBaP{C7~hjB_oxfeWw^;Y4PPg{Im2lbctuaYOyS}uF=;tmn(q9W-ip>LXu*Hls&(+!+G0lddbo(Ksh`z8)2($R zHVwP1EU#Fs)^e$b&P79+u4E86U+Ur&aF~rMtsCd~_5d`^oq@JYR!|q_xAk=hN)0GN zzq(zBgktE@ZAUAeMz{ z9l(Ep)Qcn^2cM(Tg3fjnu_uJut61@;nzA*mI}YM*E&xnGv%iEVj|99_4_4Vmtut)N z>qJ^w@LG-19mI6_yW=XZIQDl=IH^8_PyvdyB3N{RzTs`5%>OTtyy`aMUbKl{&B)_eNKLqDI&9!IZO1zM?@r=JT`NkZAf8 zvo+djb&?kTe~tl@dNjjq}R&o!P`h&`taXnkF_LSWjP7EH}5sQPvAIe3+NoVJpK zH~FDART~Y;T@WgOGw$1ChiqRny{Fsi9V(?~3CQd<WBe(&cD_L8B>TDtWx>w0NfRAv-%J6tFZ)!eGbMi3 z3G+6#b{pG1*M;j_?J(=tEY)Z4+wJ>*^~~|to($0a?~PvT-~Hn~+5=vC<6e5h zUV77BdTpRSa|sf@PSC#G{dvD)&F{ZV$OmKpp8N6l++>eG*tcJB`(H5oUsC&D6+|!o zh7zCpyAqTBBF3TOiC-f&pU-LU1a@FKlO`UquT!&iSUynjD@cPYD1#h`gBvY`5qaJ3cP(*I zZE-1F#EHOGDKN~p8X7=NDHHQcTnr0Yn>_9&oo06mMl($~@u&crGb6mi~`eY@;`D^%hf1md#<+(UB*jF#MZP(Wk$nWhi!4S?#zliBY;Le{at=^hMibj_9C3;s$aLCcDVT~DNW>(KGMngxf;Xb;7CaImZ0YVXdO zx_tDot37e@G8_f*V~2II!d^5D@`7|QMyKQrFfV#ctjo`ov4ELv5Ili@-#uBtW2np5 zpMdR7!y00^?yIGCe<|6zsm{l)!Rf<6?Y~~l)1D^`4c*YqdFG=K?oCR-4-hv1@WL$Y zIdbCXGxc67SV7`Ov2d>=czEo2FTp7;4ac4sKBvKp1DS+HYH6PI4 zcX~-}1K)Nm0JbgBTYqNc=zH+f2`>U8A#P%_Uxb4p9Wq&#+;*Qpab*T!uLm1>SjF*r zV!n;?_uxtRJsZHs(1#qHtT{YTy$D-+-1^S_f3&@0bY@?-=owdkY}>YN+qP}9q9?X( z+qP||f+rO_6(^PS|J*+3cE4|b>Dzto*k9J#dw2wzby4i)@aQNJb-hEpK~0Ac6vq1WowG= zc%v13w(UnPG@pG(pP{d$;6}2CLqRz^rZzxD)W$254b9#>$>JJclFr@TBZTfJR zN->P|A$j~CaojM9!&QqBD~E7r;WaLxyWtZfq26Hpp?UQdcRCxa+?e7$h#3Lm2w^o~ z5CM%VephY2QDwWVy4e*-uyI|q@=>G{KM4&77JsT>yQ$E~HCO>X@HQCMQFqv>%_p!~ zTzjbPstC}3&3M~mqFGG!W!2ZqM@Lh+-6JxSQCHUgEbGk((Xf~ao6D|Otc15#!CJe3QOzK~IUL$aKelLr`Lr&eE8KbwfPE)Gza{`T{pESTl?PM@jnAlr$6x}G_CnC!t6~9ZGe%R1)tBuS zl=X49^bHmD11XR)AV0rpnw)oyk3T2M2y`Cz=tOe^xFL3S)wzxz=8f^qVh;QO)&e z!Cr&1P49iv)55m(h=8OF6pVAGkInRwZ2e;R`hu?LWz}fCgpxo6W*nzdA0IUOu^a>0 znhpiOn$9`;RO>EUWs*Bd$-l^Dd1zOQ9{7-duZ|l)m6Pa3AYDB)UH{EL3t6q7SXv*N zM17To)dyd1;oG0Z(Z$ijIVSoVA`(k1F^{wXq-y{y^uzT8L$_g)C8iycdW9&wJZxLa zwsM{mwR>=HJoKY$W`O3#{i{K?^FCS1F6fgtRqc3BA^0r-`wN6~<&S>v563~!GC)^< zX)!i>R0lQa$?B^l-*ul#uL1`2^2N8sJyX-q+7-~5F+QL{@p~z571rg`D~dmqJFG@z z_bb=mh|=|M;Wa1%I-Y2Z(j4kklQM(bzB>0WqMcVah9j)C#5t#V&nE|V^5bURB!{-| zlOg5AA0vvxjdWOISrH2i^zgj}lMZKp@S67!j$R1j_rb43Qfh*rO;D7zI+j$|K+oeY zbpC-1)cw;_0U8%3p^iTb#s-XAc zxN_p!|6=Lcmh4Fp{7Z=a<7Ccn|Nf)@g+Phv`*oTN6u;1kT3cijwIlg|Fx4?WDxyk( zvQ52Hz>Hjym)>m^8*VVd6%vCM{S}5Ux|VQ#*|#%~2pkaT)WA_p1&tvEzv3K^Qjavo z?l#&Uo79*t8@{7j6^62bKf+2D2M!AscD?uV=P-<=dZGddBe0v}(s~$1$VU03IJX2= z8AeO4Ekg~*fv9fEQH`O0UqKql5%x?fY7u)^Sr!oGWtci=H!$7)YGe z#PHaZgdQzxtawb7IE%tqO66eBt!nIHkn>CT^jRuWIC5+@&oztCVe z{vkrJlBby9lD&u@%{hLvPTA%>&Vm}7jkB=H`3KsI`6rCQ@M4||Yx}&pCrN3cibP7` z>QguLsqE;D`Dl1}$W=81t!GIZi3O6ZJPNSLlv}@Sj4a$X-g36{ZpyiX%lMb$AR#1I z^=3>!Sl&!%Sl$qS&c+<4)_neAF@1WR8**2OO1fT?BrHDu?e7sJNixV}aS5Cs3KFRW_9ho1WsSw-)6! zMsq!#XV+Ea5&CrUip{K;!+2{Is!3pV^T1l)cjmi(83n|DLdshucQXWBbw*P=n(&wI zd(X!3DF*IqSZe|@opTL`*B6%&gG9$<4zKB+{)i&yucJm)fhZOk4cTB=F$-6wtE1wA zuh>{*;uO)AZP^ICXdcNhWjyk=o5V}t@?q>sYBLEz{|V!J>P%Wi{gs}#iZ3+(a9`ix zRM*fjO5mM;62hmEJ7U1&sCtr#u>lcKR?|R*c`c*}J$@2o!2v+gVlEb)ptkBjh5x8X z9?=XrGQj9jUv(cLGBL6ykw9usX3sn(9+&WBh33Lo3aI)^TA)B&L|iot5%K2X3f_Q? zRM53ClyMeviC2Ol7N1OSfCx;zGh5@~o%P zi;xgGk^wB?6x}qK4aJoAS(fbLsiG|>H8Ce z+ak_BV9}qEg8q*VM#0Ew7rP6+S9&9-x_MoH2ov)9tfJR3FoI~|A%e7MDS_$!&@+Hc zD-gdP?tt#KI;5fMmA7A|cU#_;^3t?If(EB$+Gr4iGR z9r4foQ74*L2aJKx{bS{{BeM&|*Vs9KlU997bkCo~!Nz+Jk;bndv|k`WlbOz&ZVW5< zx{b~zX@|DxG&O+654l$}jGz!93*t<9FHtJkmE63h90>yRLQ{V^kc8E*y@j_)V32BKpKSWMhA|B&_64pzlVd+9QAXH z9W9g3?_jB3x`x+!TLzuooa5-!QC zuEc-(tJfpH-15?l*}Z^eGcp(7q3o?(0(6IiDKu!ilX`Y+s?}+PHLj{DsY?8(IH{Hz zBk44BC2HROWIA4OZafo;jN}sYH}_^5R-JcFHknEnHB}c9EAjr1SRWwkHKKnsL#0YQZ;HhxaLv@ zY)MGBCUY)5!8&L*=^XS7xF3%=jc2mUd;dfVX7sJlpFhrzZLe0B+If|pQ<%`Vr>{XY z8>lPwO~bYR@iMSGbBbzzs*n^d1@UdrDp!_heHK>poN!qTLDUAeDn19>R@s`62=L1fbCatat|In#2k-E1jaW=V>WeYBqu=X-REf_l=+uCX zy-@V;Rot~#Uk>CgTog$|gb8JbH8ba~@&lOAh57yZWZYHM9S(SZI7CjvmGX;r-YX@` z^^GA8YESBEm<}|XUES>g99mGjn&W6mmf0puHbEaAG-uKyYufh(G}Sb0&~N6CRbi!7 zUb*WbQJI-YdEVz1yz`m|wPq)@?PbUyUOw9>cs7e{fgxJAlkD}$6tFoq(s}k1zJTur z*|u;M>$hg~(jPm2FV*lJtxw9#SsJ-?f}QYwsRKaeE>zr>rSa$uzRYqWMP03Y=P^pt z3y}P*s7Yt697Y+kIhj0*hHp;26wr?OrBoC(@AZS#^jz_d=0w;9mukxRArctBQgxZ^E6nIF-Lb!cZc zfxeq{HR68^ik<(+CL=N=oh9saJ5JXXXQuH8?_KmVW-h`J&wr)rR+{&nQZ-}{erLnbtQ!@qLHlF2?7PL=wS>#F; zMWXvf&;Anb$etQe!vZWkrH zyi%-6X?0$o>qM=dIlJKFTe8ruVpwLfCrdF0ZZca`JcTzNmn^zo_r}AGES!HM<5iWf zufYm1Rxfx}x-;c9l>gzsXJol|OtY8OTJbymb)sKap}B%c`35TT5K5b6u8}fU{u-J2 zS}E&)wIa@;P|H|xz4i!mp4w1EY=dt+U4WV@RQK?9P%aUdjc>(=s>{pp)llxuP$F7z z6nT&9s~Dbd*c?YED_mq1{ay1&+Y%;f^c#3teSX)aEqzWGMlj=Q8{VJZGt1PKn$p^X zz0-&*2!a6}{f!)YMmBU%`gJ~?I_DuWv(Ed)8%qPUc^b2R7Vq?y~!ijVrpR)LRT-P)fw<&LEfQ% z)^KwrW<(3s=9tX~RDY~&PK%}h<=%T^s}+os5c*+-9Nqc@N*;Xl55Pi{cCJH?%@giNxcvf!AT;Vk%5^l`{| zM8=_CZ8tbyNBtXO7ku{Nu3u|86)tw}P@!T&MW-$w?5#7{d{;G30tr1W(sP3*Z}``+ieO5iCnSnUkd?tH`{BK}Aocf4EdkU?zf_=3tF$^`WILwpD5 z#5rOSMZ>PJQ!yVLOJcUx$cq@h+THL=Q(Yb?vTeak&EMvV=kwm}2{+q+zX&zz&_iC$ zuMwgQ-!iu6v>95SMd?(VfjkUe#mNO|wH9DKNu!{dwPj=dIY18_Lz@z!6rXEPGrnIG zZG6gwzs|v~!Kgn#6+3-VY}l`O{!l!lx$yd0-oe`aX;?VgZ+P%EgWFYb(o`^v%sVsTfK2s@ zGQ(jH#*bQ&taecMiXu-^Cs?<28JkXn5<|HOD8*fTpwX^uaT7Uifs98rvT}m$gqE%K zkERT#Zw=xkwj?ywCt&4%M)UuH#p!jUDlk$eK(^Uu3xu1INZz!6SFTEA6G+az2vAT? z_Nqt52P$Y z=6YjXF_E+Z9r~M_jD#+%k&@93C_kH<9X$=d`Zx=G`v4K3{#zVEXe#B)Cm?zID5&4_flk3IBcRA;Sd?5f}V{esfI8^h9PJ7;e^629`ttDerXmu`!k@jfu zP8&ebCiHJzd-XDXoLIm>K)xaVSAN8BbhI#Yw{dcmaCLQZWfJ?>y{L(s#s9N?Z(FK? zk{S#4#CLdK6T$dzi|Arf#a+P7WLgxPey1=oP9e@sf9_h#g^t`dYu_VX)`48_9r$Ze ztb-0d

>r|CCKZhTwo;!283WjTa)2eA3(@^zs&INNF;$#i-xJ{3fKHafKtG0x(KG zuaZmNgJDZWY~rfWm^h4M?W(HbbpuaW>Me{`w_X;@X4TCyi7Wy2bV~I70mq+~ggmq6 zNl41V!i$;gp@&h3ND>h-+$MElQn%asc$AsVQv#=dAvp{o=eBh@QYdaZsbKme{6piv z-4n>yER80}f?;v_R7or?m8``iMxlpouanml;hpASH^UZ|n8u&hzZH>&or_pVc%X?~Az@;O&i__a5? zIWTU24xJxlR+0JUYR~xVNwS}-j^zommhV=Pc?UdAsdMH)lm%G6H@_s)@)`qZ_||HB zy+@&^k9ZLroX?;GNzA1inTMnjZzt6-nh0(*8=n{Gah=W+w{7iXsFSwm{qmK6O5G5m zv$GwE3_*zib>l^pZohX$Gd(iKLyMXGF{uj1GbyV( z16N~U;dM;rC3T(N?mFf(;x^31S9|)J!&s{e)ta!6t(< zea|`Vi7Xqv=i{RoX$H6WhMV+FR{zFDaZ(90_iA)6{+w~->ke5{M$)r+PNt<-H~I6? zPhl@LFG}~g*K7mQ=x5E2)(}2_xt*!|H}42?#Fi?8tvEZJYCWJ$zR)VV?P`m^L6jAF ze6wTeyw|d^no1P5FXS^92L{t`$mg{WJSJ$&pXnXsd0=kHAJhe4$lyH`j9Q~x_xZA7R{PO^ymfh%U-t!5 zxjOw~Aall7?O@la5XV7+>NxoV0)Qow1QLq^aNj$aHNisK7#^v+IGcP^FzSs>hONO& z>4I|vmZ!ifER3qa!2(foubu7VBVrmNW5cvPo>}p>Vxm751B;59V(+fh;!u1ctofHh z3x0*}j}QaP$Y+HASA#NtXM{6>3}g!`P3a7bCedr|oJB~QnoBfG7H%FkQJ25$f$-a6 z2LFiqscd=yq;0c!Il?a-`-z#(qJ#2LI{k=l&LxWONiWC-7<`+HLHXV*(M`xmlO0C14{@WDkZGDWK^k*-7I^v7h%3ccSSLt&so(9DIctT@HHO$)@KeX zqSb*WYXPS|nOP>FgPwVVxp;#1J?B@byZrdsDvZ6HvPeEH2CF(l8+?Tbxrr4ATOAKn z0^M*Sm(wCb)+f<_S-J1Y>MlU5K>sr}cFT3NjZ0bp2aF)4o6G6cl3j{US;v)nQPFG9 z(EoR!v~RYSYgg~C`TI6Jmkcc!kkWxv!SYt#b_`a}z^9&Iu70h>egFF-CT&`Ac~b9p zm>9GnSvqcSDj**}XQWq6rsuc02W`}Ev6u1>-a(9*=-bqP8{ZV(Q>-Maqt;;@Hja%o z14tvavG*M}aUNZ&A(U=%@W-F<%Nd5at8jO4gH8#Wy4}WA8pM^Vo$Sxn=u&WhWwv)V zf{1`pMor@TjZThC+l@$Yt9<&JBc$md10As)ljtvd<9wxm8K1;JQ9~gLX?#_eGgNMt z*=yn-_ozyL_c&UG2A};lo1*8RmijgD^@#{{Bo^M!Hfi6jnHz8RMTU=^kRy;uZV}NS z!OzB#1?(A%CSG*XMd$?K0%_Ipvun6ll@Rl;`XWN&{V70(70K1djr_Q4MCd zlwiTsCKG3%t8#{qO9KN?Ed$X!YGb_`L$N3)tFZNde`7Ns2oE#>-!Kgg#A;;cBvZV` zVTHm>g~W=euQVZoYT%ePA$gS{2q}yU9*uQIMf=2ypSX@2PIo@Ot46g=YbtF|gnJFY zBNZ7gB{wxUyp(nOrR*lsIncLs<>K1p#3v%19K3uaI1ET%L5Pyq5-JDag2O_Rglw>t ziT~bzM&A9Y&`2aK*&mxolUBFgYS9$E{Vci&%wg))Kk~JMq>ohcuT#3u+7FCp@~$f%^;juf_pIzzQ813It>h5d=ixzsETIU(>YfwCuFdw9tQXL4dn3 zgQBbW%W;HB`G>}thQCKbilbVWC2-3?Vdu?%9+;z+KL2(6jx*qJU#qVVd=LvttvTJr zp#%+`(Z!6(;(N*G@hb>e5U_e!h!Oe%V~#Z%hAyNDD-5x`Lguc^hTK_(OF;FRq33C@ z&WSIo*R`N(D#pU(pkldMP@41!CdhDC^OA%_9Hs2tcyo|qD{Ctea7_+ygI^t{t^*r? z(ZhR(vykFK)gqW!ce9X^v%3`ZY(|nW{vGFEs!!FkDI(!8_w>u#=9R$0@cZv~a#1Elh_-;=`d= zxI?8<)CPgK+gSJD$|`^6hv9BkAe`xcIY!2?h<3TdT8!)q@$A^N9TEzL;#Jeq-DO-E zZyC`<6oG+1q!LU$RH`KxuPJZmDY0M&MrDfjvKF1qtRBs$0G1Uq)!$vU)AfN)ct}WP zibv|AMs+;Y3S`KIJ}eEvexGa&PG{=_WH_+s&OO-baJ95%GhA+EH|oTt&1#l^rjlZe zvpmva4;Bhf#>f(*$T?74`R~ur$?RQ*g{W~eAiEoQaWcal)()Np2@3b!IOw*mnbO3v zaW72yh!paqC!h0%#E|sX5l6{^T{9gnx2LgJ?7>8#?~o267(a-|0cD|YsXL=tf^!f` znJVM6SLVR38C{qZdzO`|(scTNM8Fcd(#g>W$Pyg}!;;N=oPW!BYYlPeV{J}(Oj0r9 z>Jgx8(5;7(i#6*uy7h_H#^Pp3s@B%%H__fNFrD6+*!)j4} zA}mcSj%RKCZ7Tt0WT)2bV&JwPX33OS8#(*#1B`m!vEKT~6m zN(#m76KBmTS2S`UCifRE0i@LV>W{OT=BWBrCL8nvByyh$RpA#*=&x1s7z$t9GN1N+ zlv|@vZ_;b`ZosjBJ(kYRSO8D5rZ)(9VhO4IgZWaY&LViD{5J_I9Fol-b{(N)^o>F< z_AQaNm^IsEpzAuBNPMTIp!6j8VNx8b4x7H6@bDI)x!z!eJHPQ5_&l+65IQR;k-nHW z+XKmipEl`)0UuGHk&h*!gMwg0^90#)YjDJW3^|acOX|pS+=9|C#LjwW z_85E0L*JF>RQFwfSTLh;f#S;LP$gVaWU5-AGgxEHOmYP;>)skNVG_;lBjt|!UB365 zrud$=n-@{t<;)2`Cl={5de6Ht`c(~nENEnrEw>9VvR`|oix%Jm^wQ6dM$%+aL{iDG z1WGz^>%=^NK#WanSmuiV2(TigT(6LRL3uo4g{q=NB8e0KZ|d1{V}(4n)s61-qOwB~QUFXS zvtK>r57W8*?OfTi(3IjNps^c3szd~Sm5k>eoNS+eiE2`cNPZD2e$UfSJYY24A#P4^ z?H1J@*>E;(jf9d&!+cgO@v1pCv6N1$zW%}U-1vK;siwSNvt*gVjaEjTu_)zHQ1(X< zh!#1;n8%fhDX9nqZx76!UDX=bt7iT(<$Ky4LExa^GW|~?8=;_LgOZPde>FX49mP|{ z|M<^;SCIcpeu=xQlfAu#s~eN0y_1Q%%|Gu;{^vsMe?C-mH*xoH`>!z>4oWM^=z%xe zb$Zw4iV#@`aEe>PmDI1O(7~}L(v;K|a+pGyax^8Sb}}3HTLt7~D8);6TSON89W{}~ zfv$4vD{k{{^M7(bmK*j313~Z57cfS#4RZ{C)%H7f0p6XTg;Ot2?RB@Wy-TgTg=H~6 z&%1(edE$>d9tkFnf)!rV&dS`=*}(`~^=OzUae>mz)O43+)hdRT%(UNm){4v&9HkH` zlI(a+8MHM_>(eu&E;6B%s8tub0TCwc&h_2D z?=cG^NA0l~v#(`%*-QJu0i?8)M^FbchUE6zk_ zrbD7Q3;^At%@_(Y7a{E5$sGzcYg$cz26lD7cAGyH`j3@M?|-a~|C*{=X{xq`=~ zqD_)NeD~ao6`BKgrr!u-yM?zkM(jSy+e~9fq`si?P)#u_&gJ2kU&IXYQMK@YiF2ZB zDeWn#9I;7&=uF13cM=bhQ_%(6BJbe!xuhTY`~VkU%Hdq`SA0rjxO+Bp3H7<=do=jm z5E%a}tWR)XTLW}T770zPUig$-h*U-XVDT24W>g&uf74g&k%;fJ(u1N*(yP>HlWa;K z@$U(fDS1hZ4ia3M2>f{V%vX4S%?#ee*zVn6)72va-IbU>6fAOX9x+_Sz$zv6oIVDE zqj{9lMVvG-DVV&T`$ZL{L?O}lyIL#G+Ki-fk9m|4?56|?)`G*S~ z|51ybf9|RO_o{{4|BNW9$vL61Ab;&rZn?MEh`|;0(m+Uutd=<+Ag{`Qtwzg|FxWcT*k4&+BWQi0q9P3i6AdPa#&U%}CYov6oC@s63gjCN1bsr>;m={vn{0_O3KK#C z980ARwJVFrqLn25@yl89$^E%er?VGvNbBs2kF?1t@kg`uWbQvsMg2}{ubI)Wve?_G z!gh7Y-Djjw=mo*=!}G8MbzGRy-&kE5!xsAY$_UPDzb2=?sfU#b&Zs#es`DsehTPr7 zn{-)v>zOpntE>d4a0%1hLea_?3$=`ZUYcaNgn-@90UPV;d`mP9`)uUoNc z8^Q!u{*vY2B{gm-&%6VBiv6m*IxnbnpGTt5iG~T2uHfy58(AhM4u~$jc7dTUG%;O@tss)@qX@-oHt3E(%tV>D*`S=?{9<2b z;i-H&JU@D*vgN3`ghB%(-uO7NEhhs{{G&k@7z;DLi!z$R{n#EEOnG(}mhHR~ZECzD zeJyn)$U<{9OK*|>6*_P%(o*NHq%{! zh&}oo&c+O_ltUeO>7KQ`WD#)%|9WA>dXE}#_v5uB)+&QG-~fdy%S~vXr^RZ%VP7Z^ z%sYAgoLtOEOY^pi+GI^+YXo;42JSjl8C#lHJVF`3Eqr*=f~O|&N2M>jJ{ zAB(V(@Mo1@HmK7LrT@VjN=#AfIe*MMFojgz)&b?otnU3wdJ-IK^6w`Cg3K9R7v#j@bf# zQ+BSgtJH={SeULWTUn8~68-u2-;TIgjN);Bw118`k^ddMvHcfs22Lx?=mLg4L2+$>v;^fFc(6F%XbdA<3;#z)qn69c0%TAZHga@QoI(~3eQRwR*cO}RhDmF$3 zb>i{20uvh(8~x74|KKTurfHBXCA>xlPas?pO~~kqLS1&WL1z?5HMx zsC?OX8kypJS94`XXF8O2>Z}~iHU=%A>=@UtiQt4xs0E)bkfEkh?B@u@ z`s<-WOxg&-h83g&Q2KxYGPAyVZ~D*P=+^ucTGm)!eAT1q83JjN{nk*p>R+mVgFU>E z$xdPY>MU^{;;ic6;2Z#nd`67svuN%uHJ0mT`|zU3i{y!>$U2Aa!i=*nmYU**%ICooTJw;~t`&lI z1bNni5ptD#OFlXHS6(Aq4swHSn}*)C1HL#-`( zQ`bW2CM)$wW|{d76pc%+ZF(Y^(q*rx%+$FSd^3By_YD8p6sTf&giK*}Ut2)ku|x@tK0v2$d{M z;BE4fJhYo3EKkn*F;%7w7bxu>K5a2w;fP`w&XgT;+Cvw!l*KcvX6=%O^de=>RT{ld zv3!%l<_<^nq6_}p^J!%2x(sFr^Oj14sy;1vHF~Ohgz$9Z@Pwz$jk&dwk_;En`Aff< z50`yBI#T&fYCKqf*U5zMn&%O8-G6SNW^XFuh$B*$FFQ4uv`FxJbJk1jq%INGkvL{w zX|$t9Al+J#amsAco59VKuz%jt^MpR;EKv%eb8VN1P_Uw&p6Q&tuV!)%?m)9krIKja zyZNy|pH6cl?Lecl!PymwK^%?Al7pJC&lG-n>S@PVHfFSc{PAfbz>@A%9!Jy{*XB)` z4l@j(EykD!N0I=U5b|mE^{wXI0;O z{E3Qpi))pSVuxa4N7>2x(6r~V2o{B!i(HM4Ft45v!o6y8@ zus;19mez@X$!Tq*QJ$`H#Kg8ArC{Y<8q+TCEt5cMI((!yaVx*R!&OUw*481o)alVx z;7P_3uufZ?G5KqR1{cnl(uDNE1Fonw*<7?tbb?Tydoh(~o4FBN%`n|bh{f~ZD!SwU zULRC~^~1SrvMeA>?u3uow@*22=LIc&p_?Ok=_fpYMyO(BgonU-8K6r7nNXVrBeOgc zRi=oQf4|cH!4z7{*F~CoL9x@`@?P{$CA@)or$x~eO|5_<=YwFjPW_JvloaDhW)v!Q zN*u(o)FcxIa|qr?>(+;`;a~Q^h`xA=!pY zV)_h!N4QJE(wZ$8N59k$d2u$5D8lqdT7AQgv-HAL+LBVZDmLkNsgKG!qhc`q+?w@b zK83nDI*1;C7T#T9dgi;)JKVFDOWOA9lw=S}6@Rld8lCTHdsWA;J42Omi4LR7Ic+RE z95bj){6ueiLrAuPohDCg4V35#bnv7)eVXHcm*VmIgFMYzY^{L|wOL2SzyXo*ykaaP z{0=r1X2O^zs44f~Lk8X{VI{2bhmMLcf9ko8_E!n7&bQa3&wNpgQT+U4Vmn~{=(8-5 z{E{|*?^yJTT`jJxoSczS@6#L^is(41DS}Rvr{6ISzsqOm;A*ka-FsC72ou6r-zzbH zRk$O3T!{7x;>r68&SbURh{esn#cN7YBwBbG zYwJ&}^Dx>}=~0S{%{+pz#kA!oHxumyBp8?_*PDJ*ne)d&_)Qe9m@7d2Y`lKd=b2Qp zjb+g?i*8|IA{;6~B}{RFC7RwvnwtN{H=9&c2#XD^TT<6TbOwb zvA!c07#HY9#YFt1z%jzy>k)=~VlgqAEJl;KAYu8-fn$WV5<{u*hfEG1Ip+-!>lB@r z8eX15N7FTN@sg>6Nw&bn=%v3`$o@AD}#Ol0v16O=EPKB9ZEySBDMJ00=uF7B-}YGm<= z5Ok{Ffb(P-Q;l8wu+_2=7}0Gx(D*K7@hR6T^X7?oZgbKixp=V*tJhk8xs93dSkvUl zM}h@sgz!SkqR`71%5%~*lWhh;6c#SDPT|u@a4Iruw6*^C*~8U>g%DBCBOIjaraY zd5$f&RI?OE;W-I2Xw${Rs_lU% z{G22>5f7fn3ZroGVy;o&w>%xuPz?@^qC`WUR z1lwM9IS7W+C%4z@x7yxY0)T7*W_{q*1A$z zB8|I29#i8Q`D69Nl0Th(GW#umSHSVovGSQP9W!ib(%vd#`zm>+q1pvEssZ9yD4KI` zhjBH7sVGsnsu7FwR?do+Ky=0>#(9G*UjKTIDMF)Sfw1U*t81I8op0D;OabtO|E5>9j?t1 z2Y^{Af`uo%x>x`iks$A=eXi)g7(LB?QWw{doNlfS|MnbqnuJk zjU|vywns95S%I3?Hn-o9N82iyO!aR=Oy>_iq-g8tr~UkfQ5T54NHvAaLe-x0(+N!j zx(R+WwEJ*>j;S#=`6t^~b?$I9vDX`Di>LpKVK z?W31d#%QsrQ99V>g*t@-ou5-XzLrF(mrl{Tnx@OAOu)K3-$zlowI3l9U!}NWb#g|3XJ%p_@hJn*jEaJ%c#aJYjXeEY!TJcSygzrS}O?jtDYk0+NKT{o2svvejm>~C)`m-Xq`gAKPp&zF=Lz!a7R=#OkfyX z3)RPN*ZrAH;o)pIDDQ@jvYL8>8@O0Ya=51*+cPz{!x+;g)M*=A^D$RY&2=hWHIrL^ z7_==SYgQha^9m|`)TY?rf_Y3RF_#wtaN z7zyT={92toTKE%iJI~sksar*0@$ZA|$;iLE#{b#jfr5bO{x|zn@-}Yn7LNZ_Z4{u$ zq6p4{oU1_mLqvM9v^)$dgP&NnTAC*0EUpd9;P;>Wbx%U6A#iVWQwGR?rKYhfTTga2 zqkWwxk{gm^}t+P%2}dQw%! zL64f}Ye|+ErO6r{Cflb&-i0W$Z-D!?awzPUR|fxl*1Yo~6}nJ>4b>O-gS(|E+yM>& zi-|K&)K(N4@JpwEGGh7ko>Xoi(FtV>BJdoT7S)YqE{oDn1#UX|J0ZFVI71`S?q@>E z*y2sPny5s&y~T22J*#28J~J2HkGO)MRXuqWTa?C7ZtkH~Hp1-q9r27GcRp1%10B~O zYBY1sRqsvD4vLK!P4@s@K%&2Pd3g$NUJlmXO0)3QeWf@nH$n1Le=06i1YwyEt~1LX zdBUpmNMXHOwq{cgvOBNTIL}baw;J?2PyshDS4A?M-w;ouXbkV_c(lVhY1o<3nsZzC z)Ejb$GKh+b9d0ezxYmouqu`3RBz&mfDDKxAo*vcJ`hXdd>kCrCzjDH?7SH(?3MD10y{m3yie^MX zBo4U@gpWWOe}f+BQB>v4=|hSKPB0gA@$=9~*wV*hJ2F4A!&B+ua5AVDqM68>Mi({E z@A7X5u;Rv3&Ht!NW=9*RKfxXss1d*6D(!J7_ZfT0RftwRUUtKNxR?L&N985ETFXK( z7E&YarvGcbDHJx_DH#X)o`^XZFMjv+C{eAqimZiRnSXGb$rh&RlcPoN-?rv9t5Dh zb3e$OiE)#!<2&bIh{D)agaoX!>TD+EjH`AhM{y*q#{-3bOVtc zwk97Be|h2nQwAb*UYm9$!>PmV*ZWZSpM#EDz8D@rYabKu)LVlVL*X@*q1^K=3E2YM z%&nMa5S`BC*)ODxLiz4ltrRG4qWCe-(J+Z1$N_oT`stK##COcf?27)6d_8 zl6VIs0)djS`fsQeRyNq_rfdwEY+Aq z$D*`wMYqd^)puM|oDyj|xd@ms5AO0JK*(*ckv#Y+*TL73b8MCI42%^Z*eum^GJFXp zblTVUlJPn6s3~q9l}i~U_g=9Mu5q`QHTG2YV*wAn3{o1P(^7(jP*j$`qe7F%f7ytg zr^`)K#?5SMVE+EM%Cp+`rg`%pARy`}ARsdTALJ=%WB-o;m7Q$d6iggVtp0E1@>&MY zcv=`=_4Gat7HE7;dE-SiMI3e4+`l->6dFY%OQ_>Q>G_iEDrpex&UN?9+iI@rbGeaq zr@w_9iYN}57{V7PQrAh`q232Ue@4`-wto&>^4j~C@}=d5pkx!nrv zcb)p5?)C%)o^lO9HsTGeBBNkWbxD+v=Y{xkpZG7)<5V9ROXF{I0kws?$GzoCGA(FZ38gB!G*Nx{NK5k079~Ca;f2iS(c-KX+ z&a%0#1$Q|9pdFRi%pjGL2?Srwl{}VRrcnYnepPS&zB}xwryLtY}>YN+jYyh zW!v^GTc5IR+cxJry*;zrf4|t+*qP|*h&LnN%zw|5=RAi=&2OsRGC4B$rv_)c?7-a? zb#)HUd7kadaPpTb5Bd?v1q?Hm+h?DvvvS`lp(Y?yE{%okX2czyaMp?PTHB?yxmjq{ z>0$mk2AcMa8{x&SU7np0G$XT2 z_+}>cD&B0tI-}r#pK+v+%Q$Rb2_6y379RV2w2u=HtVANVBu#0l0n&{(WJ{O*;20CE z1N%-~nv&Hwo%DK)e~ZR5-+T<1VK#m@;$F1h4Yq|9rso0+@k9EBk$ZnN*pHh(>Pr?@ z;Fhjz7AgV0B!rWQadog{s1j0-_VEa%O*ueO0wx@6-JGx0GbA0P^FyObpIBe@q%M$Q^AW3{b)!Q3YdP zL|ka?aZ|69O5!F^LdrZUiz+cJzy~2*xr62%mm;TV7c|HWdC;W|7_P6;%Fr2|t1>z2 z%l>P&o|!fdmH8pXTe_#hO)%mV$n*1qVn31ApKO&j7L)tEL{OegqcQ^LOb6PWN%BBr z9K(~VuDS(Ue_^7Y(yTe{?pI+Ho8qbUaF~6Pt1dpM)CY}EDb!KR@$hEbu6jReP~tNo ztz%7V84FP+uX8RdpGs3rUs!yQ4027yGzbhx;o&;V;L6-xF_W8by23_)$u^)hayT4q z2R|9>Llen^Q)wZ!<6>4}n3i-<<_hGI>f~C;W#*IVf7S?9a*Kc|-Uc}r9W$Js zQb^C$O2#WYcVAJGkXj?v4hZPj&WU8(FQGvUuc&tl{B4Nx$f`$K-|im=TTX#E41=Jej@|X6SEu7b>NhejZ-{-9+v53 z5+hxi>`jY@Dqfrch@iLtXv#>%HhZx>UYqlvde$3p_|!R=YM!b(hG&*{B493uFBwkK zg|f~&=7P6xKUBBhIGyi!NC5MenDEa#3dUI+RJs!QuE&xDUb9@?c{O8fSu-FfIS21YCdA ze~Q>!sr|YW0fd~qCexsn7~79uS77FN%GQLa-~T>=CdN2pLAwMb;gmTumFz?_Z3qnI zBVE#`^}Inkn@fh_1jZjcGY?YoW2zRgvRh@@8^sW4U@}45W`gXOCSrm%9OgJqw(eE1 z8d8B|<71`;Uj=(|+diAhz#B+e@%(Ukf1x(U#oKH6Bblhrn8`kPgw7+j9&!&5`GWzRtLkf1@SB ziu@+#sY!pROoy{{`>fO9;pcKnZgcDc6IlX!p!^ae9pCvEZt?YjpD!t-L6 z0jho}uJ;|j?r!%niT-{u$lDz)-Mx9?o?O=uJ5Jac-Sw_Z=KKiP0jEaB>M-px!=Y#3 z)I$(8_MlemeHhpu8+k?uG49Qhe{U60PWf&#YyME$+dFQpSD&7r1R?(k*!1DQhY_z?Kb>X zY4saRzzFx~RN>B;3i%a#qozq9YP>G1Ax(Qp;&R5xD&XelUmhEb*_Axu`-c``fc*b= zT>rmKxvYbcsiK0^f22nxe~NMn1A<67^wMw2f^!DDz`vd?;f4n-Bgn+8C3!t@&oon; zI!!$$;vRMpZzZrTWcGo(+sFK;x-vL!{QSEEfcnU@Ly(|6wNFX3lg2*_994F?Y0MtY z8EGZCaNh)J;OVp36Kz>j+ewowt;)(7NnJ2(WRup&QkN4*PzQ2%M6S=7-o zV9YL$7h%a({O)J0B`QhsI+T(4buy#NLEgG(6$AlmOh8MdYvUD%0PdPLUWZ!x5if9xnPu;52V8_|9=IkB-fm<~B<=9*h*LvK+3Txai>-aA75=x0S z>q&M&(Bwvp2i^A7f0{$*Qn)(YiC06Oy0&%K%J7>KtQW-HoA4Y-aJ1JP2tMG>{*A1O zYby}ce`U8m%C$ga%a5~Gu}6&%;_3Kbo(vy7OK*et$9)7x0|Jux&yd*vpk5z7XiM1s z3ie615Rz@|iWSB%Sr<_2!jghgMDA`b#B)T=>GJL~_F=N-f2kR3$xY7;)^>lJJ$(NA z0>{BbYWC2+dP@7|@bi7oU7Mn?Wk-Uen3>LIIpNuP@n3n!;n?v$as%?Y%Y&j(tSFF{ zV6z6pke+Oj&flqNO53e>B!#t^&OSfZ_Jh@UoPCAT=3>IzW7JtV&C zQks=C=3;Bsq6&f1ESVI=%B|AX52y888hQ&&N{ugoe?S)gO?}-s+OFa3m61r=?~2Wq zFdcYG^v}z33xaCd+rqJ5_=|soe5wl4kZOV!q7=)N&xs58YqZjeCV+5YPhv_xo1WVL z8=H)Ro>J~&t_eiEiM)rIe=qi$dovIp=X!B2`UR$GYfwK>a@>6?pV2DwB_-i`a z?w}kId*&%htlbNx)P^Nfd4zcGsY>s#>)gL-PP9{_h0rt5RX{KtI26=goQZ$JuO zh1*sZwka(#A>@Ly+HHGAc!oPFt4j8d{SHUW`rw@+jCr zYj_JLrHV9IrP?~Ve+d{{wnJ(;Qg1GWfAL|gh@dAHNXuG*pnLwY_$8i)T& z`Qia7XN{5ih{PRJAdd!7?sVCt5eJ5gvi*(ib___I*p5F&s>~V6Kc>G;aHmq?@9`Eg zZ>&Nk>Wd1eP9zloYM7f4x-8 zNG*!VLDklCxZFeI3S^(g)SP754VH7pFTC8jTQ7WrzBRF<9x~B%Un@6)cl%`-$&Pn~ zFjMLp3H&IsYO;S!IV*43!9?Yt9j!@Bf_bmvYgQY#J{9MIF8+-60jklX_^q0+9AL%G zR|FrYRZpW_P*0l;EUH5J#tVOEf1owv%{*)}$p|GGy21=j6usvUCabT)$je<}-?TFV zJe^KxfVpd;Wl|+8%wi^XRlM891irDwtq8urK%5kI+k?f##J4-c~#M9wqz59(6 zpKb8H$0{?ZyBwS&t$lC%$6si5%a6;nv#|!ETN4p|ui$b{XaCm{YZFheK3 zhbluaujs7tQ}6w;e|B89maFN2RFf+Wz=+Sr z$t+L!wl!Jy|BE`X0Su$%aD znYRhVmMs(Zsz&@5sRX*U6C9>fWY@0;8~VW?N8y93UG(X5e;P>ylw-CY<=Izyl$BdM zOxA6KEmgh6cGBuA)=O<=im#P52aSsG?~Y0 z-};BM5T%2|_O@SWREGdUfwW)QxcLz22 zn0JvAudd+Jm`__c#&IlzpG%r^Zv9W{~}X2q5cHdv=LF^6Vp^ce_dwzlUV#0sD!Focq%`wdl(8E&L@~F5A2-I@XC} z|3&+aVPD&a+hzR8$7(_@@z%?MCHzyaG<7d<=fL`}^AFn~kx_yF*~h{F0a^WTP>uh` z|9=lofBzD)wH5upkAxjuT^;QHEugoZFoCiKWDD zSxsyeImKIGRA|`{C}pJ(BSLNW1zd8Mku0WsHdnQJ3{bTZERw20jz?G()Ip&8gTVbW zzw-h;8(R(}n|BpUh7vut{dqpNU%Fq+%>zC@f6DTJy8^GEK;YIYw-_&4^jbs4)TaKL zP1!msa3<;;*Is$K1GX>+SU7w;tFPey&TP!P7eX0P1=R;ag<)5&tErTC^iXZv-z()m5#|X-otW ze{9q;RkL`#kQ6ol6oP^PD6^QMVgtHB9*rf6{R@QxF>RD>^noqy!z~}Hv&>LOpm?oO zlDLf{!kAMb$`tv4EQ{Ut+X}+}c)bGbo;A18^eO)`p>UI5!>!^R?lQ2H&19D(5w1v1 zVm6C@B~MHN_WjHZv@z337sa0AhNnRve=`Ur*oiv#)DpXf7lJa z2BvH~|APT*egiAm6Jb!J0WOk$?`oqNu?>J5w4N+HVz*?#TR7}UtasV$tmCtM-3U%k z?{1B(sDqF$9#cICuqTb1*W_E>pQ>G645vRD3!^G;aU~a`WL-{a;Op&;oGr=SiL;V= za%?oMQl4m_5)Og#(6%O8=$ctve`0BQdDfjuKEf6scb}+;>ROaN{$bJK5ZJeqSL>>( zOud@VotMhqR^Bmr^;g^#()u8LJaCk1+veLS;l%|d#yOj%B$NDc@k9si5?7BEkBO$IBOq<7ca1(BK*ZvkuiMAae*-kV1hy=% zoNHJPhN)Q=Lio7KbOWM0Z((#No zyv0HtD-g+6Kp-SZfWvp+J!I17zR%dc4@Q_{iveR!A10|?(6`wSQ?RT(_z0P0R(Beq z?22Y1qki5nMI=s-kbTmuf1R%v|MB2%g}eB!g2PRYMmRI*DE45@8fklE6PCbt*+)KB zIdC!X|FgFEno`%(?+V$Q2_?|q)q-kdtRViVp?lr)4V8p5>!DD8I~3Q3EoiW#)=NW+ zRZv7MURj%flk~V*N{2xehbXCJa4{XZoP%1!vpTrdv%ET=vY^e8f47Vyyj^$G*>y zDu9lW1gVWnx)7eMf1mK%zKzT{>;P|$R6SZ8h)h87v(fB(1ko1u4ejy@Q5zGNBB zgVEQ`2@5I-(Aswr5uQ|?en(Y-&~`g_Y-jqdBHt>ziot$HF0^BGfoSN8Cbz)@29EhR z6ULL+6rsu9w)JNOcyoi*!0YbAFvZu4O zFnm7N1WyV*e+k^5YSRlgLZ{4G74#wQl1)mn_6hgkJwWv*OMbTs)*9U93;B%rK4HWn z|4M}!)fKg{4wHgPf_K~0?RD?+h~k$F+R7RH!x@*!QG?IWsCIq;H2S=a=~be;5>yH?VRu_w(r&4mRh;u5$XQL)1%^OVfl7clK@(rekGTP_pWk zYV%a)o}Suw3LxRr_EJaUX=IF?IeGM)?h=39e~*gpD+?s~p~z}0L7ey}wuUiXi{N_& z-cawlNRd|C%aAM>2GM*#&Udnqv1aI79nDms20tZwRa2m#9_R4;OW+f3bMM(r9aH(m zd3{FfKT1q48_iFRP4LKy6#k=t-aHY2b0C3$a!`SQEdDD5^zX_-mVElzql$p*X~1mV7vg&b!1bM{(?$w7rK#jM>-@IQwb%D_`^oj!gMh#r=x@q9 zBUl`y1*Da^h!A1!3p5q4kul84WTO+^f06N$s4$0)R3*tNo}L@DZn1?&70Ted=xBw^ zKf?`2Z7`8VsdjH8=*C~5E>o7mjbRx0S^2bBh3%&6UT=*tM}|K`DBfcV}O-g+?dzJazfggK>Jjf8UsQ zHF6R>+-Tm%RU|5Kt*sZJ35TtyHu34P(QGkbe^k$D$kYDo?3FsG7@7-xs;tf9_PECs`WkeBhFEPa9&}pX;vIN`!@jd3Jx(l@f9Z`s{-r~| z5nhVDqwJo;mq+jY{7ZYANLSvx6Nmz>Et7NmI)*VC%!9bQlu^r%d}VoEti1LzqpL!q zcRo1fT{M}SsL`H2nVKU0PGAsmrz|yE1sL zaK#yO%bHNCPP3XK@MfugOTV6Mu)qSUxvU5K^$t1)Me|v(Ra(u{ZAqRfL z%wl*9CzLB#C;lM<>jjfOZsVNbFojCTeR>?HC!3`s%}s7$+ww_oxa<&ADl|Cb=N+#k zBUO0{d!FC^{g1r;xMNJ=*f+p%qf5-9WLQKQ!>imkYCbomm53!>jBVjGbY?2sB5gQE z8O*5lh{@B!Y#H0Bf5FUQ9wQr&hM$Uk(fr5XewN}YgXr4OPBgYl%%-2v90Z<+*2+bW zYtVYq9W#30clxw*Y^djJsU&OvY(oOhJi8%_O@i*uam9kdqRy81x*B@nVMLA^M**OL zuHRYrG|8Inif3@I1G8}2OzzkYZZN{Z>Z>x+dK)_sd;Z*de`#hhCTj+wNo7QbW$cxb zfNo>4V&fxDhK2+6k++iOlwIOXtp{K~==7zQ|KaIhTS|QEr4OTU_{HORQJEdhlIl>p zkzl!Sn}gBg?WZwv(SP~D{1F(ta+p~dw+7}?Zs?gic7M|izmK!6lKv@>x3vlER*vIe zTK~nO@XJ0je~Svozv6Z^AXxyuS9#UlN4@1O9(yBF3v{N7!gU;%Spwb}H`v$n4LY}L z9qjQsVwz*ia2t1)7!&QA|ZH0pEQ3rPU{&d$o~<^9xR*&M(S+^E#6@IG*)2_Opcs9TktSzc3DN5xU_2TubWUq1aWP?3 zSaA^fe{9~Q#eJk?qwNYAUAf%}-J5uFMIe!q?3RCfi}^(p#;|l3ys11eLKQO1CuTTcekT zL$-9xxOKq2)*nM1Erf;qhM6rEmOiOW0utFLe~w7M7FP+YS6^tKf284qOyp&24oZsl z!0FkB ze}-{ai@4XdOT{9J$%oalZT1NQ1hC=;G-#*^izDhO zf=t!^P({Dn&=tzCi6udyw{S={#<5;jS;lWGFU3QZySSAY)Jf(=6zc${(Vj9YQ^HVmUyrIquZsFJLgV)KEL8^AWs1se}_Lx zg&CWBCnJYHQe7GMdnaX^0|F=Szi#>Y1!sEyCF^ChW-?Fy4}F9C$Eh&-PiF}K#tlTx zY|SkGXW?dwBA)_)5s9z0xZtQtvYv@C4E&cQoNNS4g)(wNPzPhip`3qoWX9b}snbT?XH+{y!LU(`@R9 z9K(SvxTKm&*}+6zyGNM%WG$g+!$t8i;*J{9pJ4FFLj$ojngmI^rK5#%{}?Abx+=KiV8I=lJhyEjYK z%;dkyNc2DM|7XdOs^0%qe zV)VKxjN>N}g6;j^l9V?Lauuc45pGG{E;pNFTqn~bU(a6?8bB|O9FfS;6iAIoBUpfi zu;)v^g3JP?u7f+jPWr1feg|*ij6MWPyt6-Hb3JH6y#{IfG2P!Tf7u2`SS<9|hiTAV z+@_DtFb9$p@eT1|L-njsJCYprt!i?WrL;7)wq3R3eNg1SiS7n8R_fT|utVM`*s>Jy z&5kfCa2p~R6O1Eztqw{xMbf*)>cE_Q4E_wp)z|*avuW=_{ek2m$}*J4hkij77=PqB5v~PB`7*}4hpZG zzB45m6_xgmtNRZzBfB!{0k;;z7-T#ApLdgF!$p0T> z9n|dpK|Yc{22AL4NR+0*9eT6s5n7D{5sX@)l-Hc`S64T~)wo;h+Q#zhRIh0e+g6WllWcYMoz|-&v8b^R=dNFKmf2KCT$T`pCKL-q6n6`C-P~>4pQYg#E_2L z_HEYue-3k(Hs-i^4~uFsa^RA9RJj3z)ZKExeIq~L2&1hHb7qgwZYZdDo`NA*krNp& z*&fs6b-05W*4srTl^Pq`n-O60E2Biab3}$f5M41wkh0%LEy93#}tc$1f|70(kW_Q?)BFY20(QW-oZ)WP;@AQ{-=3&qlqY5F_36kg%fo|3-QD;cW=?*S^21v zAtNaxgMakt9(SLUa6~L@GjFi#&NqcaH-wh&fr?=_F?^zJAU;-?F)OS}QoCY_Mx*Oo ze|~0wP_4f0W(DmKuE9z7$#E*>xPM24DVo(aI1%5LGUB-!a)+3Ll^7kILx^68t?kTc zIwMJZ(M{$NVbA=y@8(c8k~nn*y>iM^i01Edbz11!;ZZytDmeaa{a}o%_Y9T`d{BYs ztZM1WF}8Bmz_P1ZFs?qPI+nAmzhLz&<(j)?+BFaG zohO67>uZFo1UBR~3+}>q?-_Kq4&TutNm17vh;kzkx)kTD++twwm*A=zH-8?*?TF56 z`1SaB)(4Ur+}p!vb#3**XY9-Z8S8D=kL>oBOp-~ML?jNWIHIU4b0n{=e$mdI(axHE z06uY8)*&ih$S0^co^`C$+hP-Jz=AxIUh3oLzg#o2PVt2aP#_>QsQ)w9?BAzZ)TrtF zTP}m5^LhBXl+6w=5otjg?gdr(eD*h&o2wccf6Z@7g7`KVnnYFIklj#7f7DhM+=&|6 za*(K_94?pXY?q#goVB%`@6T^apoelDEF(=DudVr1MLRyKo~EPC6^qty<{)qf?DOe{lB4<8P7;;upgug2QnFg|o{r$D1c^5f+dYvAAvQhjXuqu4LrvwHI-7cc;|-ko)wkIri==bkaA-i!98Ii0h? zxtoF2Ibdp*)1GRr9j4h!EChc>>xBO%O7S(>auVPEqeOz^i*UX4z<%eXV~0`QgcIAF z*n^jAtr{Kyx0i~o8XqW6tqgP`eBDXwV8bHQ2w~y#zK?H~N^o6Os?1aQGw}p_?FEl1 z$*Cuo(XAR20Z*6Ztr{)?E0+|m8bSdNmshSDCIN4key$oB0SlLyt{Ni{?;n_FNAwR* z{GEbG!dnD?m&>jiK^6b+0j>1ZZw2P7GHQGlDmW^jQFPCjA+H)80sogjuNqenfB)K} zMe?YQLQ^Fc)Xeocm!_{8BmujZ%dZ+z0cn>Wuo`y(J(rfS8YTg6m%XqW83AXP*RUE< zBl30lv*4OuH-BV24h_FDaK}}!anuEA|VTjiS~ou^$6Yxga7Rtrz3zEd0)d#794 zanJ{sDY3K{23pafFoH%QA7d{gkXjFQL<@Be{L#h(FuhK8K-SBqDNYmv{dT;Rj;vv;C|}I&4fSi#|TNIC87q^XsxZn;_;#@ zB+9W0lm5#Pn2u~fvZE=v%{B+9Glm(8>q83D(a=d>CyCT}a` z3dS{uk4jcdvJ+&Gnf4_~+A;3j7f19zM zBePJ-^No9kf$5GFrmtmjjZe@6GexL)7aa*TI7_daFBS!fQTHg5DFU&Exy7|1LUY2A zX8%nhLc-`86r8TVq`|xl#ltI zZaOhk8Jo&{a6nbJ3xB&{03Ku;nuCOH;@E_V)E4~tHf8iYPGu`du|Jn&&h<1EJ1*?8 z6q%uAfVHK;T=zb>Ik$39U%}avqe~+61;&%Gi?F~K&r9jDf8|j#jg%NM{TP^jy}|%H z%?%!MgrQBU4^p#84J@Cjrp*c=D|H)<@+Y$VRtRR=g0oz;?zw-;5jMO*2f3pm>^lwA zfce$vH3EhZ-I2!^&gd!m09uP%%Gsls%Qgg|6sFotOWDb7m`~p$R*wP7A#wJj{(>NKph8a%83Ym=8y2&(y4W(#KgrRZQ8C9(f?~8P4%_mx6dwZ z6M4ELJGcdQcMUOf9(ztUi>MzguOuf5*gU18;5&}5e_p5qRGS7wG4wGCC}_u=0Fn&{ z!iAAc=m&CBqyFN@F2CpRuR9&6yis*K^D~(5yceA3)awlpf}k5kuCp~vr6J#EtD?#u zzWV}cuCC8aF`v`Y=#`@4+VHv?H(Ho-rKolC@m7~ZsKrS`x~?t}KV8KxKcR_9f3 zoVxK&+-j*QjhNL!O`1Cn9+kx0YzsO7=~e=xe`)+K#4#CYK*iVlKKi%C-Y+ziDJYjY zyd|kmvix=EulXhrxjRXR)#>Y*{vFlV&ffuj0%PKhc%UWne%T@zopg3f)vKY%4~k@N zQB7fs{6{XuCwn_IpAvlmd*C6kWtAF#;HQ_4p?rMD;g*a5%-(Gw)>#exvOsM{+#rQf ze^GsSlVWX$bOfi0Q)Z>(hFoM;j(!Dx=RJ(bHqI>3ULb1iSx4}7l=&5!zw50BYGi4b z?zI;gqVat0jQHitI72~zb~7ySH(3_K26-YMq6h?>?CtrJkV# zF101MSf++|!mG@wCK9Um-8U-o)IIGnw}o0g!BzvjLzHV;Jv@q8(AWTbs)4<3e>9>N z3?968C4E3XnQ?sd?SZ|h8nCB*Y-p|4K`Jrj2i8eL&9PDQOc{aff^9;(;`~K4WHqiX zi>w3UwjuQ9E^w7E2rBf zan82sim{g4p!F~E_}~pKkP~!69{pnD@ILuVZrEW-oDJPAuhEE5i1nrdYmi?quFbGL znLAW!9CJf8)0GQVOh<|Nh@DP#QJAos;UCmWaWBT!B#f2VC6x4Z2Fl?7e;8u}Au%$2 z=_5h8tJM`M8UjI00c@ux$VisqOy7(Hz=R^|Dgc73Y^7fF{3_Geggm%uQ`iON8ok^k zFR6^1+AOU6(~1K=#Enhs1<#v|-x8er2x5w**Tz(`lpjw}WQZ1wK-9Q#6MPo6HDWx~ zs4$;eUY%brw@Qg1CdBo_f7dFz0v?W;WcDyk?oFvXuUlZ8z^$Z@%4bm)hF-7Kv^OX7 zQ#*Q+hJtar$PAgq{4vI{_zFAT03zY3&d@lMu1|iu6g`F+SM0bIt^wO6 zUh49^{TOWHThq59g~fXe;Mm1g^F>|Cs$O}gL%}nhsApa^eOL8me;K;Fe7|O{(6nuQ z2W48T7aEmsscAa`*xc2C)B!G}&cnzho^kvjLTe+gyMU9;Tk|Y>^mch}A$&d<${OC0 zrfbIDa{+(0?N_OL*7epEe{<}2s`|F}z3lpou&t;47XIrpQwuuP*{Q>g!0O(lIJ)7P zdH5QU{Q}Dy#6f&`f2J|qT+cS0B~2Zh1@0dYUWTK}t;{#A-7U6TquZ9ezI>#qo;GG) zx*v|L9$UBWPMRU(p57!E&uyOdS>Cr%f-dGJzm>3!&>fcv%Fi1`sBwo1a?__^9?lzP z^+&tq{OZc2@k=cN ztM6b^n}2EDTNW1H(L#6^`kHQ6o)&{mqVzz|vo)#=%s+4sv&4eCA~3a|SUM}@QU;`V zvPx!3@;--?YYbrusuA?$Km*J_MdidbXd09o+!MW5p86*mLk|u15VxX-{}0D|=>4Vg zpTUl1N8Oo(e>X(wmexzl&4qQhd>0EDSiRs69nVAm{d)Q~+M*X|6v?tVLgE5(H-4$? z-I~`@De`-!y}>8%p;fNS{Z`G>TSd@_WrLoj*9Am#)Xd5OB=df2KW; z1lbGPfi2yi6;LC_dmd+ykWv-yeZbdSo6i0MC&4jSf5M;Zc9Kr#>VmVXJ6b#~1pRzq z6Od03lLjB%6tP|_T9$BOQYs!O78LCxKUMt}~F5&=V zKIn8xbjF4a7FI$43pgtSvZ2^6G2^NyQuQiDW%3g-pKU;ef3rS54l@zf<}CcYQf%Zm zv0pY!mu)X4o)P1^%}Htx&fFAsk4t=2{Iw?Nf4$bjWW(qcX>AaMy2mPbArBcV>*!u0 zhbtOlB~pr9oU=qns{=nxSSa_`n$lu#oXtwvyjZT4PPvdy=Wy&_56)7e@^ z%B@VNnFvl6dc`yHi5&TFAbxhHq&@@#hIuF|S4U$=PJ6~i>9i+ed)pkq`e_J)iu0vq ze~dYw*~L7KXS7*Z$HWn{y%2lNMCt56wN7aZUtHR6v*Say2aeQ_b0=^7DvA{whP}yWuMcm&LcJs^s)~VS zzE~`2u7{=?{`t{*N$dRVoUKX4J$%c#f5V&2OrebDpt1T~O|=Gbtv^Y2iaiP+V&tkJ z8pV-Z!UV>o(-LvE)P;CFGJlNKj!WPz?jdETI9*$f=Tl zMseKphb#!0Cisv?YD+og2}bji012k>riZCijakq0&~m8w~#k z75P3inn10Hu5(eKK6d9{Z@6{)#rQ%$h9e4zc6d^nn0-1@}z zmwA2d{*Ti)|CtAlvp3+GhgQoi|F)2gPxQDhhY**;Zsg2EKWNp750P7Ze=h?BHfIBa z(1*hZ5KYNjg5=vCxs@{_(*VSf!!Mi@e=PCCFX@vv7*47imVC`^nIk^}q8}$vA>W8x z2E(3H{bK>((-9@bul6Fv(;4j0jJzbQj8c@*k_+n&`#_LY1hLs5M3uPum3`7zJuf6C z+;J;#0K725tyS=OU6lZ^e;Kvn=Q6G#B{EVn5ytug9@6GJfxkhJ+MUuTaE*8LIyj7f z91`!irX%t9Y`=3nmGSuaSDE2-PX{Wa2io!5g@jQ;zz`MPl&K-+twaw?K@L>6r18tf zgx=-RE9bYQ@vk&%CDT9XiKJ&#ll>!SEg}9BdGz`D=NmC#P1VRyUz2I|!bKH>Xd@6$27v)YU^eg#)g7K9$ol(+) zFb4>Q=_7QLG2^QX61J-eumXUfr}G0u?hiCDmTa>eHB?FGf1ebi%y8yGLBE?XP<0|4 zQj3T{t|j{{A|_|b;xVOy{n*MK(Y^MU2n3L73BmLk!}cN+z5ZaH3c z2DA}eZavU^f6~{~*y&$=!a%X|_qG_6R^n+gc8QDvJPDIr5q)34e0vY4!Fb&fH@RRu zR;zzj2|g-*?1{3Z`hHzq@04}?kae=)U)3;T){@F}=i+^d$AtvdhUA9!A_bU`4&||s z4*5i$zr>(Ye+%NYl7eTo<5GX`rgLVw6(pK3!~Ed?e^l%vtG%tdonfBfdR9AoMR{s?2dRyJ;du)!1`Ui-x_H#0IH6fS^hTy8 zzY!{7M1KLhyImaOVK$tYmlTp$sJ)9Ba&Dyw(fgRMlgn_#6&jLG6EKo$Pc%rEJvHLU z0qr?6&QlyRsw-4$eyTgM=oMh=AwiwqV4P?cDmSgW54Fo-I@KGjcI%@FJEQ3INT>Df zLLg`B&h{7kC-BEL+8*a{@#Kh7?H2KD?`MENe1DdJvfNQLC#_HBx_`oa-vzoWySuaD zn*r`fu=MdqisTIw`|~09ztMJ1(UnErwob+7j#05~S8UrA+jdp7W1AJ*wv!#(w(Sb< ze{}CT|I@j*o!i=ane%z9-sf0ztgl<{bG#g{?wFl#zx+{a^dee0#_2kvrM{rHJe9tn z>VJkgna-)RMFq2NbG6DGTRQel9j^MYt!Ig4u4yF z2b817|MAR^SD-OffS ztg6Zc#VNnLln+cTCr3hv`}19Dgv^UL|6s>Q09( zJoL}Z2yKeG4`nzouu9zjKE&?-;-26?C(~AG!FU2dn4g-&Q|J&lvn*-G5#(be<%F|^ z7_6Zvs9EHq=%N}PbXK=pRV(Wl)Nl$}gH{SzTiM15+~M=KAs9R4$X3mw-q%jv*NavP zTkD%0o9p=6zyCh?@qay=Z+)$GdfiJLfA9GE29}uw*Hqfy3OkITW)c`^M#F|dI8*QU zK3X1x>qfj*aMWl?=hyCbxuP&HWs?#Jm-$#}@1V|HAm}7Us8#@!$?X!5Y)snRn3*)L zK`j-o3LKqS#oRWs#AUEK21Hd@KnF;p$zi1h(qXzvKO8+;)_)W|@#In~7P>_iW~Njh z2KKC0TI%xXv%9GLF~8=L=gUJ*_tNcqcm>M1kd>;&#c9Q9*fmK`7rSLdr>7(9OrEa_ zoEfHW8RLj2i&hoeWu}|<6t7k>dLR`WxA!7WsMS((@H+RT;K|@-3{iq6Dyz=4n_n}6 zGvsxPa|DUx%YQVy;|TeSOGZ;Iqb!f?tMkC7u+j!-&9zv0YzNiB@0ouJn~a2Q4x%v! z=VK}LkmPQ$GdN385DmZ?jUxZ*i>@-60S^eNw3h&isn^yDM?zKip+iMV#=_(7532OF z=aQ^u*~P2z*-API8V<7t99EjbXYP*NAz7kY4#Gz`jeq>k&XB=XwFd@fW2a*Us5wG; z!wH*L^`F7!gWIgsKaG=V^u5R7vkXjFRU@>g9~xF-YJq5vOMz(I9LOd%IS1xE^!SjR zDgwRzah*c!=*4GQWlND!(i=;xQAHF#@RoO_(by4e&F7ncCe{PHaEOvB6yLk~C!E1ymBfnL>@n1Y&;D&@IIq4#BbV0WYwn z>hrY){57D{S5_GV>^HQ$CdTL4a+KfLpwZ*?}J z-#7mj3p5aKWcdEZV&YWkcI#cx~#EOyf2HKY}shvjS}Vvy^MblQ-er5l<`A&Lbi zd0L7y+S{gC?^hcK79=Ep_DN``$B#Kv^GbCt=|$?^RKn&kIMU@57=9GNDmy|!St@bd zWz1I%+T8MQVD;TY8T`gp(ZD8?Zb^{8gn!G%SJa!+uw%$OK4F(6c;7N8mw&tk4z8fG zehjq=1g64v0z9ZK+fT-08MpM9GqOAPa2h&4MG!4djxK%Mdg(lwj*r>*_)MocLcz7gXnL34cqC1&4HMx=s;IFOPpgiC^aUGnV3xC%) z6Yn?~t#p0M7WV8~=>ikM9YB1533}cQi!z80@3H%odJmx{=M2fDrkb2wpeNGRa0jVp zORtY3ihcxUKCj&PQf0HR!!`O84l85Z5BJt07pBFbq42tu(S_&T4>Vt)ouJlKx^?Qu z*bIv`CD4NVX6@f6eU0zmb-O#_2Yv{#Gj$d z^m&dMOJ0OR3HBRXcw*kSZYIcstgdBrUw`+4(oCwyXRB=_+DZN3TeAml;9~l;CH!P| z=A$x>7J^%U1`s^a@{`{%YyQD2d2Lk1Ti)Rp#P2(X6pUqRE#mN9@{#u!V1IVO#{65J zEuXY}6?1I28TNG4FeML=Kawu3)}F+;rSRnmtbz4S{!XbWfXuWA9iavJ(*vPa&rNbe z-9Wb4Uv)?Kr5Rs4M}AEd`f$qav0g+pB|7&U=s?&DYS{Yh}k9 zyic`G;kS70BRdo_ZsTHXy@YX1^~qTjaz(Sv=?>ufbj>;r^D2c5p@e^;DeGF9@=>x^ zb0ZxJhF*gns@%*|(T`c*gZ(F6+iq0f5gq+M2zrR6dkVJ~;eXMH^MQu&k?MG1`gv`k zc#33mE8KzM$IOp_Voc`ok|Qj~CPfBX!!pIiKmB9i8SmkbC60FAbl<}-p$5lZ))7_? z6)zYKf37-Pe1mxpF9A4?lq`VH2`*~(qWu{II4;DFYslp}kPVwai91tVZqim3_t=H0 zEG+M!W}J{TV1H3rK40~EZ-gVY!r+&Qt_H(6Rbj~P0*51u`kBzUY&`+{Sxt!m&W>9^ z3iAF6tU^|wi{uSyz6H|0nfPn67#Gq$N8cmFfaeG7mMgRa;V_@%jX}m5N7P%G8DvQq zH+$4u(4b`Gj*A!woEy6aRw6cy5D@RaAx`HHP)NzYaioC{?K-f^rRL|3n$8-+#>^U6Udd#88D{RrNaGP> z>t=B?g?5DS!$_*{P>vP&W`;yz*3(}jV5W@cRh40?@8=*r18L#>6HHGZ{0q7#`FAR? zPhaKcx_@w|nE53a@a{w7DU0Kq2zZB~;l_flP`UYjO9l6$gi|Tq_bVmPBc!h#@QzLM z@@C{H0sl$&N%?IWJ}6eE?-%F?`Hr8FqXE1>;4A4jN^qa3%1uwfRYz?U4c zTOIxr<&*B)ccdVP#NVJ@meBKG{Nc3X$}eL(qJMrZtO{jYg2!L~^(0qatXm%q0S49u z3kIh5KYx<@R~qsE9<*22_rMUx@u!sUkgvCcNRo+*g%?g#TWti?7HbgOQPf(A1}V2? zQkwAAu1>CI|K9ow^RV@Er-?}5$+HjTM$*gEf^#l*-bIXOlxNk;;_1UP$Kp8q@A>tQ zpMT)3NL(S1!}R2KQ6_I z6ZS$H{9O%Dc>BkhSmjCua1Y1T`Uu6tW$+TEw58TZdd)`!52xGqoyzOG-jX)p`pO@Q zbWCvQ0J>IkCc`32!!%jup8W7~h*n$nk$+*9so^gT{g!DRpfZh!DuB7uQh!#ohhvP< zX>flBKl+q_H-RrD*AC&SM`i?FpCLz2sRmbuJn%5__m`}%IGyj-a7U|S?m+(1Zm9C< z%@3hr8U1=E?Qz#;9%k;IBx?t{QkXog;|Lql>(y50v=NoIN{D;T>eJra=L+5myDOHw@h%fkc8XSeKjo7&9M7qay)uBEN(YZeB2P0XuS;OKop%{ z9mmOK#0|^#qvc^Eeq-D6Uf#m}uCWRi*MKHjU*gY7r60>7YY4nZM0YvFMx{EGH%$bE z5hu(OSbKsv)TcZ;1!EYK17|QQzkkHW9Nz_kxtDVY<^VSe=;kU({u=G2E|<@@273kmyvMZXM9km=4cRaB0?MK z&J5=*v?V5WR#zyW0Jon4!!n4m7Ka7Ya4EYygW}O2MJ5-iq31k+VX#pq34h$tIzfTS zh`y{%dTW)f8`r@B7jZp`Z>l`%0{#^f_8A-K@$KKmT;bO_{%|@h?kkg%BK%>~^C{>q z8X3s8+5I-K*7Y&CuUlg+4C-bZK zHN+gwS8N(C0&;4fSK!!~iGQ0KVi=F>8hezeM0Ed+UOvS!Xzsl6$603Du$nWwYU_xpCkIY3rHVXt_gFWf86_^hy7vH}H?q2Saro)FP^s}CK3vjO3gntbV+H? zn-u?8uOs~T+5i8yGVt#rpkb$quMY5Mlx~P)tihtSs!&tK2fu{Yslpo+skO64SLu!N zbvmkVlXmD>jeZM!A%A-(@pqLl8lHNYMfog^IlcmtSCv69m{L7|WF7My=lEQG93TGq z^{qAZIsr#SPE-#BMULYxS7O!}vZ)p_`K;S%2RUci+PR9}e2r_J%cyVk8bcSdyj?AQ zn^<>i-E*-JGQ@lZ*K=^w-k7;A_zX4BC1(Y;K=d43ry#D$xqr!&@~4KTdw^FW&U8lV z9Qv7Oz_s`x>e^*suh8D*8dn*1`3z@~x!8mN1CdJsawJYGzWG5Dx7u80qq-xe62Ehk zb7{>^He(|-Mt+P#j-@htNgt)~5TWHvs%FA&3t*3)*jfmyz&6Nw--K3wT_5wzGS0l} z>Bk{z6t}JblYg$6rkR9NqJEwcgK|SMAa3@U^5V2v_BAmx29SlPh-;n|CTAvdjaO#S zAXKE4RBAXNcr!(9NP8?^qIls*m*Yxi@fvaXqa;DD zCOfu*M#<}%n02E2Hi}g)DdcOROtWoVH;`Yba!xnkay*54?QJe`u!XP9d_Cs7%v`+< zNCyRRi+_-dHbx(gekjlPb^mtwGOI>;$_Wo?%p9?DB+ho+ga)`_({nDoF#%m>%!kTm_MH$?tld>M??D-m?^@ayuuPUE@@T5+Z89=ucR5RVMs-n9LpA zez0u#;rHdpkB=4aPZ2KSuBOOmz6Hqo+zpH-)qjW?AoyD0o<-HXD`Mq0<}%K{)A|K> zUP4yWP@ABxT@ZsdG|Eo_8q}6!A`}q3Oy0A_>?*ab$8d_G$wq%442U^C^pVyP6{q-@ z%lMzpV5{egD&~E{X8+h5&~jMM7kp!(SGo2n4_(l6--X3)U}A3b34Z?Um3#7-ARv9j zpMON!#Y$EUQ}qfbQk^Fk2pWIbERIi?B7$}nTG8oeHQLB~f|4NIsSYfH{H-WT$#si6 zO8o$hp0|`FqWVP_8QSW74t3<-Ao+5F%H{nsib^HUNe^sYm8y@-%;(xZ&da9p4PfG{ zxYr^3O?FU!sHX&t52*o_t5a0lPYDBesPrPt{ z6ZOE)iy+WwHRSkV;)}mTkyI8lKS4mdn=(`@J>}>8D@7uI8%uwOFFgL&KfzxXM}Owm z{v~mg3hMvuYm=RkmHqz)xc{p>$^Y}t|M?g2-?Ej9C;2it{ZNSx)nVfbRZ?@fA=O2s z(URv>Xi(!&VLVLGu|c|*_9{;MOeB~j+&2&}%3-&Z)&(la1od+<$40-lSBR$nE$uci zn*NCSk3_#PI!(XL^!HZK+(RX^F@HNM=t`;WJNPWV6h=t3o2xo;*9b~dV>9by_(xg6 zL3oG9tm+nNVSYFKcx-wu2L#X?8P{}vglA-c#MWRKjfSwDNnSTSCk3ghGnN5UVs7O3 zyia*lL^IrdvNcsC6n(L>Yi+QZhz~Rz#!~Q-YUG+9O+oQOJr$|6=ht=#dw&rqX}Zz= z6QVl@L|a{`?CiLhv($m>jHWTr{mYp}&QmvCnnaB+SZv^$_10Jxx9tZ3!PrhR_ris? z{okA!LNsa{#Vk18^kA+Asgh20D!{Yp!gB`Pr*|ML|t>lz*b0G_Ke|sTF)u>LK#IOnX?CE3@_$PVWcwX-WKYn*mX8h`7>O{qHC3u@5<2}^6^%}?F7-YajlEsOr!nMT?vP$V3?FxQiO z-TPnN=Ux1N_sC+utx&ta#D&;G@z9!+Xc}glhZHoU2?9>)s?snP5yx4YNcgTGk@0o~ zH{sYRL79iGLRVM=tXWmykrf$Tm!0dg3~g((C_HY9gcH=UZGQ&{wpqSL&ZJj3=DAx= z`4S!*v!bum(W`Qzm@BR_?177ff72qtp+aaQl;}~<>R`apHqZ8dq;PWQii10m&EPM- zLWfz>_d*zvl|OU4FUP3hi zwSIq=NWjeRO-ZcA1*J$%oCgcx;NAm045+<5x z&R<>q-rr6MAr0>okCd7FcAb%fDsg~|cffmy^?HjAt)PCz|FE4h7 zTH~&9z$(FH;?7UCM;YNAXSgy;5K+LM0iHdl_hU{Tk?OXalK0yZ4Z4&ID_eR&2l)Q; zI9sRKP|*n>&8B$PfCUMhe#eZK5hN&*Xtc6ONT#_=FwhKHU!fJk*eMfGoR2R6PLaM# zfqyaAZ}hAt!W8Y#I|A2B`$3O^#PuY3wgB3;I75Bp8u4Kwp0NB zq$-wXZ5D>yzc?K#m}aX10nVYGelt=VZmMpGpy!QuS7JTrWi*2fXUVl9R5!4?SQPCQlF<-$a@R77;OtMd#ZBec4 z#9$zwBfb_L<8n1pswSJIH@=V=E$qkVrLE7hXti9{O2nmP-dHv44=!Hfcw*{0@uitP zA=F_{On5-qsnIt{Yu{G|KK|3d-x+FslVK)p_Gr%6QRef43(KHp56P2EnUY_h$bZ6g zm=#Ja;M~^}0pV+@PA$u-DzF7^K@moWp;DaM12kNqbsh8Sh`-g>-5hIopG~_J;(;*n zeWW(&clwgD!e~tlZnxx+&#hp&8Z`zvHakAcU0H>|p9BgPltp<1!RdwSgi2Gp6SzVC zhuIgWlHN7)BW3K{Qp8YP6{ARVD}TSJ9m3W~wD;e=bE6odjy1XhTLpVTFLA$lWwwxd zI3`u^HnZ!~i1`C!sb5MXd~R6+&aAFo(Y{l4^`?}cHdGU|XlDFH^A#DQx~1W&xn3}q zA0`pF0LEmMcU>jCsq_C7Aj5a|nx2)(Hls?s!q=6|;#7KObq z+P6aBTo+)a0KPVr61fXF`mcnEmx{=<@ztdgK9xpHJ6aYND(2OVh7D&?I&;N@_`1fH zc@lt1OQTM`$IMJh^|2m`CaugcP<)ObwS5)(j@5m?fmGq&8r=X1a5>0i=C1g~yNE3Q z!p&n$@E1HtERD|DC{#D(nSWQQG!8k%+?#!Czr=?$Z#lqI02^i;84}Y0$~}pxiEzo1 zW^1%Hv~R$OlC~3VoJE)mVLt*s!JpL{-9>xrdQ~qQ9CGq~9+13>LEe0JY!hfZxW2JQ zooPNllx{`e!|wQg4zS|NoJ~69m+=SvDSe^wm-rN8+wbylvwrnlWq;1wIR+m$;7p`> zfr6@*?q8x%Wkxgq%M{r#zIC|q1Y$20T?O2=RpQs`<) zN*sN6O1PUtaHdLfy?;%NxZzOB*xgb&sHdxspkzB&#c|ro37;0vTjD3Y4AmqJU|QF; zWE*)LAz?~7b?kQ2X`BW6A(vw$Z*U#RTx6#i=P71OCV$1T7pPTyj5RjI=9h~$ z!bV@-m*w6LN04!$!E--mL^-XqNT>q;+(!;|EO$-g#+vR}mz@%OBu^cbRw?4yb{}#& zpTs|L>*e>ckVh&?Au1*_tjlY3rv0|W4%B5e;_gk2()vBcxn!Ox>eqZ|z}Jj^_#QWF zVWq$?Gk7-Nlz&OWF`OUv{bA044flJ?T^fdSV-5s^j_E>B8T!oIu(;hnY$)`+eNcLL zb<;#Rp+4TGRvubbmDOk&Z#d|w@r<9xWNEkBZ`viGIaX@-sOxphxDHjqdjvP#;VFAiEZXP-h+f$0;n>%s((Ulo!;wp_-Ew&QhL&93Lk zc4#kzCY-aGA$q3!Ob<=TPZr9V=QX$itv~19=zl&QM`t-2S$`jwY3^0`Z{K)G(_w%0 z{s^DzDg7Zk19Ri>s(#WO@TC;$b>PDvxL|%?*i-BdDZ`uiD0V?VTG+3jVw&$M*ZK_p zDO-`Q@1J7&90+n&&`3CpBr;hv*@z){{dO02n}GH*$KycUj!$9H)4@2(!!*h>y+6^F zT7R2D-GJy)pUB#IFsd9Upnz;`^+vijn$YNtTKWmYQquWkG%+sG&hF;QuB+mxlsH!^ zW?hvefvHW(7Y^Zqs-2)7lXh6gEA3d%iuUW0`RK(4sC=eqD193NsX-*_R`Kf*qV)Ed zyw)D)_(eL$g{c3?$aa5AncdwSv%56LP=6Af&&ydCyvqLvhLqtmGjC~2Dp1zT4O}zI zZNTKLl4>@<&K31I(fUzK%3V8LqQ3C*p(*IXi0Wx(TR|_3nK4lQCW=smyv$upr#4QY zd6PbWfyOyxj}RPJq>bIi+?VHRRt0)TgLEKM=Rzk2nB-vu@eT#9^A)f%MW1Vi>BsO|6& zZUdBHDl46m@DXU372RcOm1=@%RDTPt8K>`oHlq{4z(Fo-hbq`dVu*=_pgtj-l9rj2 zc?_SRz~EabOj5xRagsV0Wntuj)@$p=N7Ne>>SXXYdxanRgzV7kIrn$>cZLbsop3U( z;Sbw0XCD9+?+4k73b-O+o@ZR|GN@5ofe4xv_PZ;+5Yz6uqzYc)tUqfZ-G8WOK24sb zq)GvyF_BMb+O!IpkGj=UDfsHrx_FJt$Is#pR*Cz_U0}}DPEU`TY(Dm)!k*sZ5J}JmvK}J1B zuPzRp?7NV>N;e*tmW%!kMZ4ycP1WGm9v4h55IOVIHe61+kI)9N$fV#mnlSU-R zoX))x9k?-}@ErA0WJ5gDlyIso*Iw94RwC0>k-Mydph7QF^Dzl^^WjnCy?D?{%-lcI zU7t*~#>W1!Hbwvg`}zN;sroM?B^sBy7?P-83=ULIn8J|TO1ZRfrJ7K7cJvxsGS-kX z;8jgk`Uz0TOdb#Q!hiEU<%i0RA2XookAhd%BWH495kIey(9Ma9iFbcKz7ChK_qXM3 zFu?%_7WTYVkw`JRHOT6N_rR{QE)F98CUvFErwCeWpFp6QYQfHx%L!PBeSC7aH+hkgK?)!`w; z_UQU_7C%c-Gq`*JR_VH5#kAFdXfzJANjfA`i1e*`p(gpn- z0qdvFZYUJIY6h~yju2c7Q8H1xDZMKoNHlJdwiOk7=}?Y85wjt08~udgOmTn{ft?*1 zS#dk9h^HBJMT!(2x}P#pE;8+ryvIIX;_7OQc>1uHFMyte*4S{FsV%RF#BPgHte1$W zrI#`p-5=X-akqmdW5(>)@p(P7K;-SB4u|13^=)f#tNOxP%vI z6i8@~XL&{-BbT~T(r}crL`gQOz6#yM`g?gV>ZRa^JvMKBXj%g^Q{8U|D0|PeDl98UqQ^ai~oqtOvyO78BfU?SB`8Jv4vR)|K284L|?=6;B#*pFdh- z=EuhpG&RYg<)#G71`J+2`!6}!G|HxuFrx)8Xg{=HwD;h8@{T`2De!U4w!(0T1YtdK z<;-DdyIEpH?J5zKlWFy`d)b}^Z;i_W+VUDN_VE0c zIDa=}MEZfbnXJ;-in(O+W&)bDl_$g%8fhMyYtu9y+EB>j@%2NMd4%zd zUHTUfmaKK+6O$2=4`}Iq_6EQ8n-RLOA0lrh?873L()AZW*)MNe4eDM5lcqiprTA;| zXA3;K5V#-8?1&LhXYMMIKa`E9CyeBF?md)3x0r)G?;E-wN7)wzp{&$d#-no1*^U3^sVn<15R(7)r+C)#TU7gTvWFRe$B$u#-qJ z+dHY1$M&t4!?y0_&oBPJ5WP_EX+ki(9ImG;A@)G!@v1cS-K52V-E&L>4$W4k32ARY zVJp`$R>;pPBfmk9!&*IgCDJ(7 zksi(srtZN(d)m=AMIliUw0{Q{*W$Sl1M)gu(H>+79~}GU0Qe&9JI^-KtX{4~F=g+5 zcs)gUj+7}^{w<}2BfWDu0!hWiWPbxeR7A2iiy(6tY8xN7ivi;J6!Biix_Gd0H}E}{ zl7%<_IQiqNJ2!h^K;xv!i54xLxu6;iI#IguO3gkLL9VOwIJ$a$bASApK#k%0K5E5x z4OprGBZ4_cEf5-k8TTx55WAmC|F&Z#{#l~%vj`O)lgqE@T^Z~3u$IR^jEG7!SA;@T zPZi$Wc_xqrjiTMK@Egchq0lDxoK%$|$sGXVGKw2?6}&lKR-A%BTL=R^mQ=kKR)NtO z$;@JR6-=Qj~T0dyWiCb+0``VX28!Z*Fj$`ZM3a=6|x$h6+(P~3=^x4bfWi>VB zPNyRlf|WaNQ|2SF+A}QdHV_>tDp7nieTV`vo$-=(YB%}O>t67Ft8k&TaVS3S{-c-6 zmfMl2E(>CksefVBl+-keIdy;<<)^CTeeoWnl8O4BGMj4!v1mQ{$b<1mni|pqPIh6} zR$tv{+-CfaMu(v3{g_OAEdLOzvq7>wJ`$#W3)TBf@yb&(T5jpxx0a-kOX8Wq>|@%pBP*uyzIKG8<;4QhXl+G;X z#T%YhcG&b!h-;G|8SKSt(~ij8pIjdWh9z4gS1S+O?#3SIc`#I(XAa&4P-Q#2(+wR) zm%sdq3FEI71oU%}a0YwBzLlk`AEiG;c5Psi_ z3E(4t5R&)J-}m!1++lk}u+wZR{2PM)t^(?4wc4TlShXOO^i<`1_S?02NvQ_%ja2}z zabs+mWHz-ihFP4~gf(e-`xew=w^Z5BdfB~CGJow0UGY5=&5us14xUVhi2}_0L*38O zynls!x{wQsPH&Qfx2Ik96Q|?#>$2mO)9m7z2b`SSb&3LA9=alDg|wmBC0y>&hQYC< zCEGeB9E$9s1W33|bK*Gohx>pau||K?5ALml$x(Mn%Nt{9{>1}iXN`5bBT@K(=G`LNZ_?OG zl<#b670yySuFDQdV-wC2zzrmD2;rBDlYg9vERc^2=QRx^{$VZjgig+(Vf!wEm|iK` zJvAf4y&;xXiIxD;QD6WRvi>bMB8yvnt>K;Jh zzG3>WCP2%?i0T6l1{U!TBT)W-Faei;$(sK^dB^`knYXgH_)iJ+RjU7n%bee=zkh5` zQb8-+gHdWi7z-5f{f!E1Y)t=Mx(V*K5Ajk7cmcDznecL?h%Oau$P2` z2v!kO0NiVFPpeM9WkeaDww#Y;!hZzWlSC2$ePtzbqDW_rwJO|{O%2Kp=ns-3oQTQV zE-A;B>9tNMeiqf~`84QQX#HAOH^T6v#ye@6iA5J}K85Z!#3@~C67cUOOii2`ej*A% z_W*h3o0zHSta8-JwQ{Q+giJvEkZ<|4GuxX!D3Jx{MPxHgT7m#rPd>|Zzj^KI~d zfcuKw>%$wQ<#V~Eg?~DRxPYX>1a<(i_|hY) z`ex1g#g8mHHEECg=&jHB3K5kB6c{+x)2rF5NuTZj?&TEgyv zSpuI>UlD->b2&+g2_moPC(*Ujz#+Mh)qYMb*_@B6H*1E;2q2ZiyIp6}eoL|jIO5b<=PVy~oHd0r^< zDN@cFq(PcK=dKd_`SC*pCq}#JZ}M1wdz)I0!%`~Vxkia9v1t(}GmILntjY$te zH0DY~X3H`;_|0)o@c|w}RnKH2uNio1{54Y6zd%R2n185@J=rnfd`SMN0M$*AiLGoX zPSmC->j^kKUIcG3%YftF&lj8rAz!pe=JHo}0?P2F6tW%0vsTC;BN4)Jp(H=1*H9H* zw62jA9(t=*XQ4&a60$T3ySek>S#L=(-R{Hzv(CJIyy}uG?dJh0S9-LELV0C@pUls6 zy%FH2O@FfD_ow;9MGmYJ7qse5oahu~$OY9)k)z)6KAjAK1opXw`;=SeI4CXecH`So z=$x$GhJqwCW#jFE2jKRno-p@_cvhLU&eXn=cxo;jKh!X_p83&|^of9^gWBG$5<*M}T7or1Oy1Km zGe3aPld_E&1=`Ba^K2-6#XUh!^8F2R`^=k={{8xRu_bz10Z`->c?X@+=OklgHFu3( z-+7~DE@DT>v9nHL4AVn#H18q!-xw5pqklV2k3s~eo}B#EFJC?F?j8lJ1^ba)%)hwT zLAn)h>l1yEF5CN@qTe~p94T2|5ZUp*$B*~SoZrz+?Q%`*u_RAl*WQA1$Ql;tbhP9* zT-^0ug?PZ9s94NzjRO1d1oL@hkuFRssgmG)Q(mUfk5At4|EqGu7KdkB{lg={pnv|y zm4o#^Oj7qBCW#{;%Cw%+l%&z-{Y~69vffkLw{#bZ!~lyKE%RjE)x#2|h0oMO=V9{u zK_r~Igr;Lanu)GIillS;fhepirLtsc5C{qu!yazK?Dw!-ozb0Tp$E$Y=YvGm==ldL#* z>KMH(^uA)I$D9|jwFX9%4=L$wo&83cAT(_ax?S`zFjI1Pjed%evMR z*i`OQ%@O@8&#tHlp6jh}vwzgj(9jP!2BnUOYm|U<#7LDZ;3LZ@P)9MDVZq4UWgSD~ zX2UWRU)uJyZ2 z7z@h@Un*bj?hAPc*Lp4$T|UL}Iq6AYQiWaP3}gsub!H7yU`~AX9{$NrQwapGFiEH) z=S2vrXUm39ahiU~Esela#~XUb=_3Y{D#$^t-tlLp+xwOUNn;#6e0K^y$rc;xnKk+K zPr*df8?=I_-@w37A%FkJ3;RD-em##^Ur=moLu0wXD ziSv!9T#F&^XditEwgx+uDo;=?eq&x)QEpL4>#tleRj}{*fcYQC8J&Y{?qOf5aB`!j zipC3h2}xEzs(%<`iKTXF>b-8MR+f~Vp1CMDW1}ec)&W)Jqi=aSlYf&?HnQ(b1ygsdHXZbYdrjZ{ zA)0>WK2Y$vge;SW5kjzQIb`MZt5-s#Ym7YA)EN*11eaG@WANG5x^V4^J}{HsVv=1n zrtM}-lC0jqT@It#0+BZOEw&8fK~)nUoT>Yjv{!rnK(*NkY8tZL>woGh24LI1fd5d- zaHRk7!hiY?$f<^|2ZlP}6S+|?kw}II)neM?>2s>( zIqS#g-@lq*`Y*$wUTHPCzyd4;9Ag?bj4^lmiGnl!gJP#%iEc2_xCP0 zekOXf@kIK(%!FmLK7_;>u*kSMb18s$AH-1L&u$nW2nO;)zYu!dGu=^br$mlOcT%0S z5`SE?WC5YGv#=+jLCeV(;&S@jCdS)f&J6UAWdIMmMd|4WoT2EruRtVL8bm1{JCNRc?aB}5>+4!2HSywNIwzqobw zYy>=aCVfmIZw}V3cVmI5aF_`Ok&)%ygK=rYWNae3%fXsW@Ip+hk1=L5w_f{)MW35RLw`68 z2UVlNq6W=FCxx>Uhp0BYH&i#uCj67j!$|M)L^!XbmLSeq_<{jTRf(8d;#sWY!>;lg z@IthhXfbRs6DI<%InC8|A*A#I3kF94$|3roIR!l|bpDIFEiGNeZj*f@Bl*%C!I%Id zEK$mpE@5*A#xKz?kMJ@^5n0`QOC0&nQ&q00lEVgQX12^mdXL9q&Lg(t;^t}!xcJ86S}M^BX+TJd=`uYaweeM#{# zID47gIWDIR%zCVj8ES$zq&!Jt*X-qZ6QXio`q z-G}Cm%~QKiJ4W+{cEB+C_J8!g!dhoYIOKW|q<1;Z)5zwjFCzqf7Vc7$nx3L;JtF{s zw4y7^r2^` zb5M#YlzpTrLZh|VksSwj?(vMIvM-7=dh1G1#N?FECBj$rh0~QM#D7<65VwAZ8>6Rq zb>-2%ink1{lrrWuE}SbCFKgp*@nvNC6NXxo+0`5=oysbFlUJ(P&BmNek)nKRH5YW=)0A_ z4Q2SS$Jr^rUsR2~)qmIVo2}e!X}iFQLGN zmqbEmPdkbX-diX^R|V3Th8NiH7=p^0N3YORyBPV;s(3I;_gv-xTjd$`hI=M@rtDrG z?}eRC7f)=**>sK_Ha&l5dZb3E87+R>zg$43TMmtPg#W7g9V_f{rvF$s!Tpb`KF5D_ z*#Gu7hypBma1o>qu~L;*9k~*IgnBt~1c02QlcRR=)w`jM93gYl)dS*nvL|n!`xDB- z8t~(#55@n6iD%#Q${dafX^MMbYNP8p$K{IWnCE!4FyKW3HPlrka*DkCl5 zg75AgelwwN=AVenZ%mOb?qTTJOC$3#O4S3=o1sjqXuqzSEN02v0)eT_5@Bx&eID{1 za;+&-2a3d;MSAs_o)kbQq#D}$122f-VHb`7xI&W=%YT1pjL}QrOmG_2z~ZB8x1aDa zYdh_t4c-;8Z0lTkUxsP|mQgVwMY)VeId^QKri*Qj7f^X)NDi^arWM9~`Qgj0*NZL6 zP5ICsg&?);DpP~g!CSE7&(H_X*4z!}5p2tv+mdG2y0XKSY#Za)g*CZr`$__4;Shfk zMZf2(Z&H8rW_m9l9+ujq`v0Qsoq}{}mv!wPJ=(Ty+Z=7%wr#unZQCAg+qP}nw)KBA z*2cf)KH3p;*I8CYon&NQl^IXvohE8B8*240EHwLHrptub92W=0uQZUFL=h>*Y&^Zu z7%7lJHn97z{(m4vg0ldjuW=Ga9BfWA&)*G^a{GVk#D8!%XKTZ01^bg(r7#@l_7k?{ z_~B1IB(N8$4){QwvwZ_#cDhR zt3mUKxywq+e!*mXg4X4_qxX@2UhgLo1ju>tE;ja?z2ZQqW(Ryj>$)Lv^+?Ura6rsMr=Olky z`J6*^1>@U0l^;N;5sSxsh2@Qz{WZfd-HHqb)3x1IUAX3!W^rl3PWwhK$lD9QRO?*p z?F3#x^v6_GFozFnjAc=&`@`m1>I#*$4P4UFdq!*T37v%($Q-mRJl{eOXbb&9IDQ#V zI;moq1KZ~9NAeq>hOP9Cd}Dsgorixr#8x+3w0VqG7J(v%07p?MjWOWrrNK2!?B){* zu0m_4RWEgPG@W&L&#ak^Lss=4g@f4ri*~8#4n-eVxC_pb-;2-x1N`5aHU*5>wfc`` z`cIpr^Pgp!fRVF>ovn!Lzux;Fc#~t49r%NgCDR)dEkNn<2gX(^Euq|R$1H?l?CUiaoGra=Hbrp3 zy{$z{D;3CriVM&@?`YAcNo#-N;ECVe>|-Geo@lVKxsHa67c}TA|+!7Y@%3>UWlO_Ddl*n!VRPojk|yQOyJED=_q3Z0kH`K0m=VIUHV^M z+~W4|R$f{<*#yyLYKucy1~Q0FfE8u?6(p{TDIrcm2w{03bxewxo{oQR2D#gP5YrL3 z)Lzi490vnoS=Y3xsimb=rB&4wxpld+UXv;Hk?pjTNt!5z5b@*vIobJf?bz(K{83H+ z<8|`@RQsp%Z@?dnJn$~Ug%g*T_o%09)prL0GMG92QV`gBgmLak|Bev|*E>1+8`x9c zYyUIWPXjkEmP_0F#b*=^{R03@Sb~oqqE>o7nNDPCPm9SI3{1Uot zl>)9bOrp^XXmIa620>8=i3;d@gF>(Zk|Z$rURLPU?iy)e8> z1_ZLWG&rWFKmjz#G>}BZdO^`tdg(&KC^|d}^~k0&q+&)rp>(o_&=qtE4!}xBejf)& z4yTY{T}Im~`lEkHitz$mk|aftWAG<~MBRWn+b78CZL{?yAyaIP+bRk%25j)w)K@V% zTfmA6!=?t(raeyo?O+OP?Ki=sL!iZlD)6Kv@um^jz%mx7T}*Hr13V%7`aw~bw`@?Gb?&X<`L?r^rKD0D|t&8x{n}4hJKTnr-z2>3TAUDm{Xbt1*6W2 zbLoRs2!VfHWw65LkwEsrbX4RE)Z{Lcyg%mPVH35*C?TTZ*7ddjh0Gvr?4>dU(AYQ8 zpR$heN72d}D)G%?5ja;MnsP+3oC5J zZb4@wnldF{^Oa-iKaYyjxTLh0B6r&)+oPGK9k_ow9z#dN7h#n`JQZjzD^=L5GW$Vb z5k#e_f`im0AQD5^`U*un#&bMaAWUgA6+(Bm+D)`)t0W#d>D?J8>PeuoK#Oj^Ghalv zE|_aBt)cC+&YYsw=o|t41!1W#c^cpZVaY$I<#h<@`tEYX$(p+)Y>)1B4j$Z{C}i4L zVrYLe){AJ8X#j~BHedZzKFTz2kO93s00zq@$$>sCRO+%D@13$OOC{hCyD9T`Y~LYd zyJI}H*=3K)3d`US6v7OJ`!9`yV$y(EK1b)D{t$b_u`=G6x5EOE?Cf4rB)X6Z1VFk# z@unllwl5#SSW2Rn`H}D*6r@@|nd=QoD-wSa*U+49jQ?zcDr_~`SHqm0{fAGs=*Tdf zBZqVZ}irWzEV4tY6g%x`o7q>hectqs8?rLf$%Dti^3> zF!`8Rf}G0KI%PA_Z&m1Pz%85wX@=z=f=~F+_}zpDJsT3 zjY?B!4h|JopvkKs;7ZVZW}sb~(5@CTUhB zY)O*5?t@Wqae>%0)547jVK-O}b4#W=zAx3DjC*8x()J)oaI%;J7}_M%@Ow`@d?nzD1o7REZqI+`71Y8fv`gQgk*t_GLQnD)wLpHU7Lx^I(2m4=lz^#g zu`kh=eDCEJoGK|jCZN6bZ|flh>>lf@cz^D$-)Q7)5)1u)uSEoY{4F{penV3XiIVz~ z($$MgW#ozdxYJina8H?oqs3iF#gn)gd$idA+G}XAUw;n*nG2Vy{ZoIp?f@4)g(DO_ ztiqA*egoD0uRSHm+`f}?kg{vCBV!Ytm!rawvckbHR*572#>6lrP*VbFZk9D~3jHe4 zQrD=br@Iu?WALGw^anH?A_s~I7osuVKB2C)yoStZ;%V?-x$XMQrc(KM9D>Ow{c{|m19eCv2ET^< z3pdJ`WP0+zDZ?7Is#Le|S(T$Sq{c&$Nn{5F75U&YlLhEa9J}cxi7FmrT(o7XOkffn zA^=LHvPQcNSxbdOiv#fh`_v@}r3%h`u~%o)V0vvEuprgfa@c>6$vEi9TMXFPBX7z` zV-|5<**fG%(iDA4LDj)V*_Qd({z_fN3Tv8Fj>HpFMKyo!O{7?(dRDzwwpk%Uh!gog zpG4)`hZeJ5>X`@RN^2b0ClXn)BgjhIaoss_^GUZ%13LrTE&&H;kt&-BZR*gQc;z}% z2sIUTo>bbc23p%NvGt0i14BmWS~zrli7eVwbqPvw zh`&t{VDuRBlLkVT)C&x%2Dy0FG*m-PsT|UTjaltr8Z(8DFv=0Yt+6gv1RuqDKvR(s z4K})pv&V|0tB1kDscYvP(`e$AJ4iioao2W3^}^!3Tpi?{D831q!`+&$&jKc*BL zbA6mGa!-E*@jJ8N(=p;Ogq4;KT};JTtVPs=pY-P6l&CT(A(Y^9nh!XUgv6`evyjpU zXo4Nh`ZxuQ??hs&UynN&`ZL;a*~K@*P7)dj4vxE;k&{UBLWaI3DwCWg)>d43^!7os zg8cXDWZ#SBIv~3BRU8*Yr}eZj#(lb-u^p z1(=^loOjNEvb~NA>wOaFWnUNXIYAj21FcAQ!qv1;b-JgdduGj6g=R!M<)06(-~Y`d z-7XC@<`FQF(4HV}5${B`i!?h4$SIYi!+~$JrXM@>3d}A}7{+bPD%uM{*KS3npTDJ( zT!Vk>N>kXOy~7io5^lm0h@sWG(+z)dK)~wPv+1Ps2Et#wB@Bl@V3TybLY8ca_SaV; zs4lCY38Rb+4=P_jEz7emTvbxMsTF;5VK>vTW!-qM8XXpM=m5k@cxUmOCwcEBlkn-a z4xcU-d_zbbN$f`z)g$C4wElL}_Kx%hWeC-m^cv$-x>b>ED;{4eoliInbLn) zqw|XUSq-3<`o!zrw+@Dzpy;x(d?euT)Fx+{oPsCm9@h}@C9=Dd7q){@R2)$L6yLX! z7PQUaa6gkH>7JH?t}L1|&OWTWj1m^GSLhNzebcr+96z89w{tpTB-^wzwbZ$-9?ZQH z8@A?CsGVmLd~_;DBcO*aI|Y@rH2{A%YwbyRwfclrnLk8u=IeL+%xFt#+G|1b8!3;| zQd?VZwJa(rVr$Fvi+dH5?IY9dusDCVRek@0Gzek+MD93lj2bDx!}`WFco*0*{(U6! z8P0|@-5-lsJUgh-{5F*z-jLs|(Z0h^jmV(=il}Iz9W~K#djrBD;V5GxRaAe{9i0Jd zLv5+nvZSWEwA?~lqcb4&O?jvH3Yl&s$D-Ilh?I|G5-vn`7N-R#en`_iith)=wR*J+ z|3QpPh$}quIPC;1<9A8`ug$>vz1opg%e;lEYuCs00|@Q;QNu$w_^eB0*!Iwb3z3 zn$t1LqL>?Yq96|n2S*UUrf8TrD~(O)ayKv=gCVHmeJ0K#1|C1qF-m_#j2S{nlx#u1 zg#Vy=qYbc77C$i3;79@ zt12Spbm~RYDOLuhDNXNk(7Alo4(DgMT66YqO&ATI8$%||XRX{%a88g$!q+m=h=;TV z6x=)`YynZu+~sV)c|Csz+ZPoQd+Q!|T~s69okJdTZ1qA_Qtt)ba0EdwChinz5TI!> z?|zA;=Ev>Z+@S~jjbL{OL_wut02pMuXo8rsCr)3)n}@Ae1#K~?e}>#2{|bdim7+qB z{jpm#c6g^WiD0EX9hlM&LWEPwDY~X8l~WIOQVS;$R#mR*9yotlPGr_Xgl)vmLzDXR zhI9N`#T74k<7#GFxFLpE@okwPcsWl^};TikG7OF)ZwXES{2D0;4jkfGG;ICZrl)| zIfc=b9?n&trkcW}nC51x!)bGS{UMwo(sJPK)0J{TUY?T+g-*mw$T@YZVF;qm_vJr3 zmap-_wmc`SQMwaI*tT*%K!{HfrC8;M;u$r7*&C1u8QA;9T5QsST>oBxS1e&@Q@4=ZbR+h$#7 zLe)nUed?KAHPlpV8RqbN%YT#2wdE+P#J>d4H{ZfCtg;Z~(WcWJ6nzzCwO~M@x2d%o-T4f44pS3KNJ98-iyHE~YzW3?*cdG)O z)7yb2V~YI|hs~Q78p12Q&z83mZpu6#w&VwQApd}(+v_6}u|MqDIl2Ugt|+z?i{@9} ztPy867yihw1KhSDnpCELHA8xsr1u-21a+In-Jt4ajnG$Ulg)s5WxKs%*S$nRUz& zV=~Xf@&2c2nX@b}$&?60^{C}hLuPk;_e?}V@4x3slg4dv9I;V!HZsCvQyj_OtP_c7 z7;1m#sf*$29>;Z)LLBVpalmugoWOmNaH!^ptsFxpiB?q0gmINCo7P5#FG{leP46}T zxOkD1;T}BSG|&N57Jdbh2ww-NUw>4Qi`%g;H-80-A(B9rQ`qG=Bu8KhY{Zk{@retu z(4%x*@MJ-h>cR55eQ<-qkNL`QAFf`4)69P*hNzxx*dK}}%Ms!@hNf&M>lT3XzAYmW zuws%1h4hAY1A*u!lBMlysr@x%Xd8)q#tW>lnzGKk+06N<&fn)>F0UU*5^;{m3YLFp9#)qUjxJSk3vd+4=1A|Q zD`+P1SB(wzl+AMm+qJLD!V;2SM8ri4ddd&T88DxQdbeT`PUJ{Vi2?9)~Q=a zUGfGN%{_nwx>!>_3qbx%(o9_jt$i~0H0ndRr9AcZ&!_V!GBm=YrN*ctkALV>8coZm zogm-=@f+}g)*EmtD8dux{TdbkA`?I;4uTw-{oSyOvp#@86Ih#Xn=T??_*;Kgz8z3r zliny(stSE30KhVl8CCYF5ElcK@+|}MD78eXHMo~#QDKT8|NQm$2ciYn95sx((XCLQ zlH^M|^uj9q7V4go+pH^G4}&Wd#W>p;jHervLNm-#V;L6Y)4F+(IW<^>cXkja&f9AeNyoZB3X1Zgl=mLsljZC zR)A3VYlJ!RC7VkL@@7LRW-2O_PUA*93V||AZEd49xpRuyVDAoio+5vevN`J2~ zmDKO8zKM2b1_EEHuB@@rn_YXdF$X_rLh7YY#j3Q+o?p8GyLw^=Cn)oI;FzzK*2g#! zYi%CfEgsc3`un=1FBE@{g4QGK$ME))`PQXS=d56kcd;oJFmAMIJ)ARycq3E8_S3$3owmPmi2?vq*qtfq?a>q7#+ zvk%FO7|iaa&&%~8i0`#&>(d7RvLVy&lGtHzcjobBrLZOgOylu`>+T&aDkOLQBa7_UbhwcXIB!;0Ww>ZUj^J` zA>86VZp#ouB)5NK>2H$+j)^!w*}fYeqRZd+*gcXC#ShkoAb#U@cR8lq#}*EqjFZtu zjTumCFk;0A3q_kuSQUgelqd8 zvVxwR{bJoLbiAH>LrFC2x70STYegoEI7{&DQm~(qu2+AFD5GnTqig;2z!IarO>yHz>_hMS_Bm=%z%TJT@qVUd1ecUl!(vJEkbc&3_v;qaA+^adT)3d zs1hT0NRkDlVliZ5Kgjxd4kOJ3YRR~A$FrqiPHe)cy19$+(){nj?Z>da$KSQRsyb{2 zSpsBHCWn8v4$EkP^ZGOEu?=o}+DMCm7&+oWDiY%(iFd$~`K}l!d-fCq+G*h)@{woyzdeI)quRQ0z&(zTczK*X&Bz8gU@5=_a%2gVqoO1tV=8HPN}G=}?#&+7fR z4#0Xzmoeljah%obp;n`?2WN~tLGqm~@H6`>&ls+=7d0<=v3e^SHSqBjw+$7i66+yQ z^}&Ax=vxesvE+;@F!F4b$_@WpRb}%aywE-tZn5^d@-`?{d zQi{DXGX7iG;E}l+>;6&@)04kj!|)k9Z~glpL}BQgxSw~A7(0hO+w!_Efm+9tETg1o zFmkdq>>_iDH;tdRy@4WV{aX@;wk_DN>M(z7>w4{iw7p2^Co)6^^mu{XR;w_4ZQ!?e z2^Y5twZ3f-jOBJc4<1%%?^CriTL7bOGb8?5D^vDMefn^ zQ)!?**p-qzcv@rLVD88Miqek1!SrMCab;}{kQ-Z!q6g6S_>Zi9yKroSXb{$}F;)(JVn6VHFzsfUTz;=U^im7uR|xv^7nwVc98O}iTirDW5v z<3GMNW8D$g$2S-nWUu;mQ=Uf|c-c?RAblc@lfvPFD!7xN=q=HQy7m`oMb5aj;J~Gf zFJwB>_6Do&H8Wu56GPg8f7xrg1;obj4r5L&y@ctB#j99UCVvWxiiJgz9lqX$oz*qf@_Rm|( z6~a7&_+qzJA66`nddrEO+T?$1wv=|;9a}Gj$1hfwZv5e^YV2FlC;7&Jx+7_P1It8CWxgX0%B z%_Y0jvVE2r?Q79T>4rtV#Z8O3DHboHs9OfqB@LK!=tT1t+ z->l7MU*9`HZX2K=$p*}PswWMzR*b@4M6AP5L4d3!VIW7Gzl;}L`fz34DX#se+#FHF z;_1{tcql~KN>llBw7M{3Tsgc&>2OeZ+n3Q26!Rh>9qpa5i1{U~&L_XtIh6v1kuf

4lB10t;@cIVvB!xlaVoZo~n*Q;*JIhMh#qOmuf!Ts+6WPMfnU2>NvBkxI5mw zBb@10t8BS7I%0-fDWahmgk5Hzs9GO#*wLYm3jIO9tW{WBlB2RVHdm+sOeOitgUIW@)TLgdgo7|>e#xbvOR2ui{R`4SD{_cRmnY7qn!>Z)^P1At3rn!q~1>yu2h(?cHPv&d3rKh@e3#8;yq*6Slt*YiL(P&=R zWz;k!EjJ<(5X#x=bY6qjVgF=F^+B5^v33g(2SbFmgI3-`%r&no*9pdx?I7~MK75ieInkWOlwBU+J8Akn0< zLLWdarDXI=N@ePPRNuE!##`a;whAR<`zxzNeEDn^FVV$mj>@PGKy|GDWDE0dIO{_G zUcXEl)1*sMAHG*YjzAO@-p?OvH4m~NaUaKGk*qWpb}`%+$3U0T?k7G;oke8@TlHaW zRW^Tw{XL%OA&Vh{WaYp~ss@Rwb4*txq8~k;O1Ob1nGrAeDhjjWOhb(6Kd*+_rVtBh5#Ne(M(6sHu$=tA zIS#f7T?J+WMov^lOrZ@oDC>&UrLrYh`h=w@iDIpk9q%$hEkT;R!g@d8U}KkEoTGoT zh6-Qy_<^NbIAyJ<@`(shrL0cMkUgk8vW}wED{nCJ6@#)#%xIwatiBwZRCm(9Eyy#R z!8XC2QdjjI;*1T4>k*XhIoH2gsHACcUG^4&2JThcIdX8qqd5I;mqCxICTVpfRXRCd zmi*-rCKIPkZEuNilk5(wQ&m6x*b;xU4w-Dry~=gob#%~p-gznv7&dynKC}+~0S3{^+5~GwAxzQgT{LqIjq?$~L`uTH2rWT4`V*Hd>h}g-oG-J(v`{%)D`2gnqsSltT zZrA;!kc&W4ILSkM3O(qUnw)>><#mT1curBz)d(ffV~mcdU+v@TJb~o{#K2GF=-M|J zkdfM|K($No5&ruyzJiE`^Yd_4BhHe zV5R*fw`T}=sjo0zUf+~(YyldWu-!1Zi5$aTO^R1ba8RD4IlbtDulaw2skbHpA{p6? z=1ybd{ax9>CfKU?b>-z}l~$z0L2JsJO_$0fDWpXyXDlIiD&DlgHB#O|k#}z;aYfm} z!=bl@y=~;#?H$bg9;j>YHsLqB9dAj7wv$_lBxcoROSmw|don|{v5Kmq$^m1)+<|ve zUw_r`EzWN&G_+ZfKKOr<+!^85#Cz~3yGM8|ur=0LMY_5+F+Z3g@vBX$+d)5IuTARJ zr}rSWS~I!oI4KVJ65nYp>ulGzRrM(BN>;U>$QQ3X&9PY*8Oi8#naQfT8uvPTa>P@5 zxYdygbv{ zB+0GeCR_uv0U%Cr5%*&|OImkagJmVBRL}lE7cnQld0ERbg_h&oLwj<7aiXZB2Bwep zHUEJ1*)VCP=6U5=qjS)d*~xa?^rhP|U?o$tb=LGas6>Cev{Jrx)ug;y?pn5@=uozv zKAyoWaDwYAw#+NjWoo%L9q|qrK!8V30qiWaNIIa$A9B9_R(QBqd?o%abXM7&d4;xk zr=B|sDBdWoC-BTd)b4C45A4EyDJ~HN4^B3q6cc3ctww>60fv_|C9eU)J z?i|0rYtiD?O*LxoYiRnM(Ytijf-VZ@uWW~&b%CCBq@Qu7pK*sD$@Pu;x9kI<_agNn2gXH2A(o8enI>rMojrMc^R|jWo=>!1-ac2&USvqmgPa0bafxnF;;ml%9M1l>dwiaW;e_Sy5Qbl!bIn6ByXZ!*E&|q?0@hNx)?T_aco#ML zEhFzjm-b-MX6J^QNcOax4&byWTvLo5NrVE z5vnw?X>ADYq)IiDF%}RE3xYfUlnt+pF~!-W>TK#LeoXc3(Vw1pvK+tm;qQOmv3qnj z#7$u@E{jeZoJ?nb-1E3yPhRKx{d|M_Z>+}X0|h||QUUB^41`)THKo*H-)diN6I&Xa z^OkV8&7mfoSj$QubULmua_pNjZd(o7*Y5)?$JCTz@64B~A(=TR?58&vH;n;-=rbIi zbP)_hQ2A7VJf=asTb=6kETn%*8-9d#v9S}FiQ8jLFr_m~6m*7sg5rImeVD|qJ!R`_ z&kEZDYWqm`-~onBgzbnU&&_$zpcKg$gM|fN^gaqCsA1*KK(&u$&f6z%0Y~R17h*dt zv^qxXic1GM6xTBKF=R_th`0uh^FqVKK=th`Yz>x^-K>UTm+` zd^Enyu<5uFs%n?{t+9Wa&@@__mK?(2&zm_$(K=**#vro?uG4tPC;s84(&@IympLXJ zKlDMx7dK*8c!ZH6hF#2G$)Sx7zy3DlJggc%si5k0d zbh@nSit`aaxJoE8YB6I-j*Ee@Wfz{~>kJ&j?7PXO@56MbJ?Gnc;8CR|&_T1_G}7h~ zfk=rB8|lTj8*=h|Aw^=T6^iTe;QULLz4~T&&>=-Y45_~s83gC*Xog`)=nH22)l*>{SAxM4P)LcQIh1F&@ZSQJ5j zhg!B#g{4yyz${dKGG^^cXJtV?1#FxKg?9f?AJO)R08yj3bdOhEq9`mulQc{P&bmPLGgzjA+e|78?j+Uj5FCJVPSk8*R<`4+vS zeeFN;`?swc%HwUp(*M}^|Bo2P^uHN~{13y5W!6Y^%pqh@Q7N$qd;(x8!_qXR7L>~^ z-V+cSyJguEoedhW-PlFC-`GDvy{o~kV(~wJ;rSwuaA!Jyq!5TtajvyFopkfeWOFxs zyhMNU{{Y)#VPlp7*Y30)HI>}QNo z_T3K)<#{D}uh+uZ0rL1+Rm1mT04RgXSt5T~2Kn4s^;0@_V^wY-ws-CJ7+@FuT8-MV zTJ8F?iblMv&Mq^e3{k;>h^TgZS2-?l-n@EoI65{%qiZQ5)-W4X9-GK-v{b71VF?1+ zdNfBVkwf0qS-EBuU)bF%Gx5ow-eN-??y-b*V^!sp&ocKhMoQUKWj};3Vna2 z5mK-Idzas;Gi%M1twVpU9U4eetYC=Cp6dD;p#yUVO+eL@wM8Nf-hwyc3CCS@T5TPv zWUh2CRKk9?Z$b)SuhC6$kfF#_vY6Sxedle&~yO zGz(OAW5Q?s9qAHOX~wJ#xx^n0beVrP`1$XYh*-Gw9m$e{(On}{x5GPZOD@3C9N;W= z9Bw5f@RE>+(>4RUaa5k~Z9Yl`Ly!{*Qmn65xNd0`K{nkktuP$jIy)2f8pCm00dUy0 z_>tAwmo3(4B-OvsSV6tH2fGIuiX>uf6>zBucO+W`6?)-lZ#9t_^QCTRok)Ll*l1Q) z00$Fw-6E{U&-E)5li%XHjxWQ#U7vsbvGZ7Ymd?rbNx~IiC@d+uwVwm;{+#^fi4?xR z>?@|rtLuLdebK?_kY+L)AIxwG@+-9Cjak}Np(ps>qQ@)My+Nr8yhiqe^|0p*Y0;nsN=QTLqQ_vsOJ)Ki6GW zl+6Mi%zCFJ)tUn@&IE;S;X315M!h7`-kqH_rlZyhsp1#`sd}Xfv*3n)a3fsr=^w_CN6j zt%M?m@O}J8HAW?jKCs4Ixa+sEhq*US1`yzIG5{(#crbYK3XY+^rQ>><==e_Pp1Bbz ztd5GGfS)Qkr;D4zpp410tvoaPEdA`Q{o^9%?IZVJ@WSmeju(gwP(=ox9k$MFQTpf9lrPKyHF-O@AL-s^+ z(@9W|3k@FFiU&g5!im&}Ucnb58?0TrGn5!+>!Xsynp%I56@tu1E*y5qo+@=m)y^uf zq;lOjFI(Gfa?l}*fcok^CdX&R?2gY9CX2-Zsss~Ek*0_iuPp>YI9TpHJMX5Q$oP~X zScG12vjJ3yvE_#GZQf5I>o1qp{_iX!jwE*hS?H#7Zp4A3%}k0&C@?;flWPz+*^qgy z^su6fFou7~hts9GuF=_q3HrtZCP%P)viDgzJXuctW_C%IICcwHiJ9Sft^Bnjb-H9w z_$D!R#z<-m7X5ULetRKzx3=KCY?#c7GM*gjW2ufhG?sA%WHpEAR*^@9oB?~%7Pr0a zE>`Yv_!WnNUK!*TdHvR;6iG>PXha*^WNZ6!4~Ks^aK~*uWZ?ngvtHZG)}UC6qWcR~ zoQWcgxc~=gj5HPp^js!w_n=iqoS5IC)OpP6xTOhNf+{sz$hfX7A|GsY4LU68Z{+wyvI(g*ee>)R)GV;j52MJ#~h7efmXH& zNTiFUCG6z~m%W*IMZ5FSntM<`>v1M8sEl29|@HUKu%A0{6ecmjXKG^Fsj z**KYm_0=^{y&HNzRAul1>rRkr|04JmEZZj$L5}^G!-@dUFqVwvV2dTA&BC5Bcb#>C z2LiOK;VM{*t2Q>(ZLfIj4hgS7;vHK2NplBeKX zf@sj>Gc1?#qgeiHO6~ucM03d4_9joCub8|6UYA_UZw4f4E{BO zCjCDi{TE+d%FM z6D1(}rKO&cjyp5G@i9T|ua%XIK}nOj>pbF{h%XmZAbS&~`_kxeskDEXuD*ca+9iS0 z#L8HA!gv10t`P!Afb4!xki?K-Hw`r4rO6~i(U$hoEP~9_C{c?zarrqeO zBpso99gUpa(czVt4P0?SG8mRvz3iiKb!ITx`kOdIFn;UUx!IPj=gh5c7XvYI0N<|Q%#f=0Ci}}(@H!hlS z8r`P0Q1>%?M%WW0!r_NY_+C?`qZ(EOgOFH@W!f8fDdjo)e+SFpj@LKTJKd)kuezQaHmLw3Qto z6JdftGjFg>!?m+m6{?{!4Zcb8sW%Tv4Y)O_|43zmPSk&!Y&tFo7U}e9UWws5ckcTr^NnHVwlXH@Z~{F78dRBBU#gcHDVJcI7lc z$GPGdrR#qbDh@-wIz8ls9rdOiHsU-dPE+-W2NGok2oN5dE1}&ssH`0`)q+VP$abpJ zVSF@FFFIIot2Tr*B36dV36oFl&WcHOl*c2=Qfb9xn^M(=0p#>1xg`PRUn>*Q#CvT}pZ|BGiR(PMv-(1gH-Fo@7masbpMS4v&Nt3kSpA2L&H6U%zkJK&hUU^p!DTiexapc1zUJtf>M}cXv%Q&!8QUrfkH_;?40A_=qG~-7GV}6-^?`4u;b!{t^XZD)e?(ov2(FG~9}X$a z%>5YD$BjUF25U&nhtEEAo)^NShCXSonil6)fdQrnku7Wu^no?1Iv%ZMBfBelR=)q5Zcb{^$-<9D(vr}>1ruu~dMLw6vFL<(-gout-K@;4T0 z(Yc9sP-({wTF+h78BSc3h%<|4LuEIZVID0COd8fcDv zjcfDJC+uDl_m@`|xk#g74 z%oHAwswQ~tchi&g^LgTJ_V&YX=i|F80#q`0!#gU}4PfLN&iA)3N4yui^!GD!>A;N` zCK4q;X^6t(#;e#yymiZ{J8xI^2`VQ?p@9wtt~&}gqQctTW8yLeDBq;DF{>)AmFLAV zIAqS*D32KZs%U3_Lt^yA0-j3)$Kqk~VI=IyuWy1lV9*@^!6l_2t+Z?jS~6f>q>PQ5 z!)57Ty8GiIHh2ni4>M<3cFNFx&DtQ^SZ&+A z+O}=mw(aiKwr$(CZQHiqwvG8lf6U$|PMi}H`?9Jo>L#Cmbmp@yh?#do+=MKJy*Mo) z8zaM`I7T8vCKH*Nx`EI9-J6bO(^wRs(GQO_PM%YGksb;N22du#xpfip2FGGC5eKJ+ z5+83lg^4Xqn=98WFeEW3H`rpya2mO(*fYgk<4nUd8-;GlBAD%KB%C+~PoTj8axb@9 z@13l00keyLj5y@=hv{JWQXH*@n3+7*oQBus<%Th~?=#^L&J619JQ4E>3DOF_#AeN4 zLO(!js~ZDkb}SjtrSvxYWY^(lJ?$afV#g@_oD(DGHfpr0}W~1H@fnjO; zA3XsEQ*M#iS{g~h&FF*wK4QZIkx4_9jp$AsFPE?3iw9TaFN!L$huodiE5 z%hd>k9g!`6VB7XtvWi~a06}2FsW&pht~GI*iBCUs3mGY;9at?qtZmS$vP9d&Pny?~ zF8}5g8b#LMIrPNhI1rZ!L`%;OG0}E^%rX^5XBm1ZYjtRj(QOM+Tw=0-8O|h_kq9$X zJvnE^ZaIcc4|iHhG!~f*xv|UOr&}X|j#Z^>mmJw`4{2tlhk( zKiew0B~Yay)BpO%Lfj(;t=)a*xU-O!jWkQ0*pqfSqSdTK20vEHax4d zp%tS?#{O`*8uA?->d(&6)njpgNT^_g=Y#w1$N?lom3*ln!0&@O!q6kn;#tbjSQ#Pl>gEp;D8to`PMO z#BEu~Rp72FGFtZ#>xN_m{5^NaxOF@vCgWvb%;AtQi7odlKJsCl10XS5m_udRa=F_C)*aQ|Lx_1usLEH4XUu%V z8T!KegO6yN+mN%TFEE^Om*P0_4eSBlyuLu4=_&h6VPI6zI3I&aC;`p0keS&Oo2-o+ zU*r*5e)D&8-4$37F)Z)cG46q_d6fin6rGC?+m*_|+jFpU#j_qBRe)MCd^!(H zOzc^?coXC+Y|aQ=q`aRXI_G04%K8DEm;XE>WCQuXR^6D`40j8*l&M8I5?uDDMQ`nO z^mCHR`En(4dQ~JUac{MO2Fey{moieCD$I97@pu0QR(NXiOBZO>rfbIQ>NI;j5QDh+7TFhEirSeW}UL8b7`zF5>0VCTnSBzOJPvC;APJ7e3xFH zsJNg(ju~jE8i`6L$FR^a}#0^XJri8gpa{Qth zp{)ty%7)_!mg}a_8JFM++E{-x308mm ztp`_sj=VN!!$EH%TYV?EiTI?4`*=QE%%Q?62(F0r+=!H!c z-6k)yIj^dL_k9C+&gXo&oKA{K{`T{eDSG_NQBiP*uq{V)c9-f(lB8VNEj#kLl{>PcxXa*9cVrWdR1^~}N3 z!f2x@y#mPT4j^HRi%Y7**}BS_4} z!fpmAuNM@}1VfZDo+d`jK+C*;Fi64dM#)!gJ_}`ASC#& z)$y*~)^;o-(xR*vq;FyX1|=1L)yBbAV<$~Cw=ZEAA>ixBd0(!4#Xh;YB^XfTK7sPB z-Pwr}WQaHhE?9PIN_aEho}`S)&Y*0l)p}bknhx;)yq9ug1_;BcXmM7GnNJ>!slnUT zFw<0JfT<}59+6qND9keHtpa?z)dzn8pPCp&6MZ3=IwM59BtiOXfUc*19_065R1|OR zi`@l)q-P|vsD8L{W@jR!=G3jzN7kihvO;_}!3uNTFNayU&^?C(s6!|?gq1$z$+ zHgEOS`X#I;MtBc@&)HFbD1r|zzmo;lFCX@sgnu3NYA007RZiHYRS!lwg_FANqA6wh zS}D>FnN(>2t$9%X;QAc@-!*=^;u&8&=griI-r0H{i#Tbq|M$;q6oeA3A z@S2?wcHqlfbe$n(r|d2HJgWbwcSfVP=|CpRbaiAv&((fVe- zcO$%ifKOkHXU$GOhsAEY|4?}{%1^%cXpo#N>d`!s-Idtn%8Mh-8Z0a`U`%O1nIDSK zsPoJ@m6y8bR*B4iD&mbT>bkHiBgu^+t20NrAnaT+h@fb~GCcv?tI}U|dnu|brTfR3 z>+82N2FOA<(lx!&%s$3S=GS20ZI=}N-C{dS@!o}?2Hv7({Y1PLjq83Pxm#h$@YQM6 zw7?ri^J%ZV%KTHy9d7OEn6yT{0=2yv#r=M*heZ^O+|K`h{lS32PI_091wx z2{u{;&)k5F2HUoTP=ib#&er2A808X4u}KY>-ifQg|sJ^tCD+$}H<7|GoZOB{YkycxJ{RHpnt@Q%lm zh%q<9FYr2l;g41oyuriD?{#VS_=NuDst-qlrZ$8*^1DUgZYt*P-U;oLe!~Pgz9=_# zvyzeO;U{6br|&oaevt2oJ7%%_Bhy%aS)2B=`VBV*w$>tObey~yGmO&~{qe;J#<88q zJxX|a%J=5>(>DPtTAd*?$*273fNs(;5>mCnaHr~j7ecZJMJcB^M|PwSEyH`n3p_bL zF^hfGrlKwknD>)^!9j1u32^)N2nX&r&fXxu?udCeBYh4#ek6C|jIsRW6n?LHdx_5{ z=IdezEIPqXtDb1Yeynt+s5+@y@|>shLr=0TjV-g2sIOcPzrjjyf9ZdS+mK`>8oKp* zJF;(oWEGGe8^cLuJ)yH$=xXkmP8e$U&r)cPtJYC;athu6wFHtk&$uJX_)Rnqkfo}l z^s1i~BnVmEUY3iO8YkCfmXmJ96JGviKt3)y^sqqzY%<Dp-FA4vD0G8NR7IYRnKO|)PLN!cf;{=;0a6wR1-&>e_|O^cfZ!$jiudphaI z8Kpd$c9(hjyrk3$&P6Q9y5aW1;uX9L>zG!2b)~3v?YT46QTC)e**y7xKLSFDx6m|y z!5fH@9NuBazj6u%UWMGOR7~y)rIj?AS#;r3efXUo28!F8J6E4kLdi)}GIs9xZ{>f}mz+=r-oHFnJFLrCCojT>JHDDRc& z&%hbR5rK$QlYJ<({77XEj-{3%BYH`ZGjVxrkfW5l-7^n<0}k(W;2=M4um>? zlzVVA<=suu6dEQ|O;gg@`J{q0@GFIC!i3^s(^Ga~w!E~X|BKR~Ano)0ZPXKTPvNd! z$=W&G^9xzeNMBgT8oJo{`xB^VoO6M#3?Pi6@b7^Qo0N@z}Rl@()TygSGaHJ>A&+2*rh=mhyLgM3H|>+`PBc<+}D4lZnah3 z5<~Qj1&WOkLZ1B3=TaaQw$N6DgtD@h0Rj$2dXcstyH7TGf-0#zjaS1<{3}cW&ENAA zXFug~|4fZ>i2h-c>EGCYz1qEcxY^s6`2Boe+5;gd!WMw4gPbqVhu8&pX?Epfq_oTh zky3+cE;Bb4KcQj2z&;xdu{lp7o$ImC4Cx|cLXyLqie8kG6kSgjOm;Sm<9GE`5{AbM z(C5jFt;wh=q-rC#BcFm|*MiMg9dOw}@;naE;&|>ReC8(1Ms`c}TBYd*{5TxjCIUY}@!Sv0NUEE`Qk%!St19X>;s{0t6Q2!j{U062^ z2PU_@vThsY7nliuVHO=^Ohj8?j@Sk?IGbdOD1};61!$L%$Pp@EluRXfC>&w)8L;=r zQtX-sb7S8;th#Fl7b{JbPS};QY#%j!lghXJq&C%uLKcE3+vZ$X+OS$vg;hYwuq&S} zvr{!YVhdjy(#OWJOxOPobk_;fsp}4n>C_Tx(qyhI1FKqpBRZ!e?DvL3XdtHFQ>F&y zD4RvxOf=^##9a0XG6i`?nt+h8*&0--vmU=5+4x=gvSU$JOgv4EZQt*+`>!`2 zX}dxz&Zg8>S#6}{Qzu#qvNaIg?o@%guoJhX#eU9cL}eYp;?dJBqz%aRiV%rL^{wB) z_f`+hZ5L}Esyt9%x`vxh8%C!dq?W2gkc4)W(5sMbEItTXJAOYzjaGdkpAe- zQSG$$KmTb7s&OJL%1)kUxa|$jNjc4Rfla-flzZ*ZZ|w$%A2iBxh#^c^S`OU*L(l7v zkv+j*@4y3$gQ&I(Z-L z@%H3@6*t&Rwq4EhrhGY_Kf3C9n|J6PTFWeosny`7dQs=1v-sipzz(o~c>2R@@9>DW%RQ=~jLkQyp`6JvYNGsc zhq)xnHWUnTxF=b~7p-7YlwNX<&Uo6eWM$y$7T8DTN(A6aa3o^F@d;@l_I3&kBOks( zBa5roLdjI{`2(_Da8KuhOAcjF31-v{+_2#9t``=LIQ)Th=x3z852qCU0`U@iryFH| zmdJ88FvucCF{G#^+vYEdZQyaWHsF%!Q5WU&z3Q-hO=+$j-Gx00!QdTTHit9!j{Wx# z}#k1JG2~_3wY{^7Xar{JRbe1Vs7g|JC~2|El!<9|H>it3;|SYriCb z=#zEY6%cx-IH|6!5}`n%b}~q)NQb0r%Zj2kfu5j$Sr(92 zVS^1VjzUastK-q7P_o^)J$Vb`y`)1-otqYWDC-vd_%N_rm&zy?XrEV*HlmyJ03O~l zo8noN*k&Sb#R&~luD8Cx5eAe13tMcB5CLb2pGCcHr3|SFzBRAyih)#S`4#9 zjWXHpWW52rfFoD9k^ryvIjw3aTV50M6bq?NC&3H#ajKA+D%)^I&=*zv0>ilV2 zPk3I5Gi~f?n;hV13Cv5rzPKI}1pvYne#CyyWaJRrqqd_&ZVng-594$%SlZKW_1)0Y zZ&3eLiZT{?B?m!(fV#o|U+voe|1L#L|Bq7p|4!WaQ%b8F8MREMj)tUW1Jme_u}ow& z4=xcU)?8<{E;n`P*0v#ky~6(Mk3hEj6Dqkd4Dr|JP8@5_MjPy7Upnh5gLCaRYboRL z^7ZvEkeUO10AwMw5!DBxIR&PiY#mG&RmcnutKJ%@a$S437E0?aU{T=!j@&_3Ut*>C z*;|}Gw7t*VbCYT1+VCLzc)N}$066p>ysbHZU+=V+;ur1}y7Y{h z1m?4Q;JKfjR#(djRDrR4zc`YRWa4iptz0qw^$kpr(qUDp?T0n&f=g+#0CX8zwjyIR zQfSRCUcnNU)q>g_m#`1kP`FVUc7Enxu{bL&+ggDb_;|s%dJq0ptYtwEc$4tcHl%3x#rY7t$f%Uh%A-H@?KT_x;}#VX|XT!Y&2uc*H$nhBUCpE zfyRIFFz2+CgALhsR?3B5^MtEE+d|IlIh(B+vv{fnoZ8&`x_r26dLy&4y7^MC79$){r_nYaW2Z~jj9rCKZpES zH_MC6zlPRBo_VHclZ?eENM*N~B!sXv$<~v}u`+HBzvp4{7A6&Xk4zhCpK8dI;t^ws z35OC7gSg8p{5^;AAz{m_511n~ZUNgg>lV_7MY0WlJ)Vg_rrn0Or97@j*CKOFTZO9R z4PB*Q(Ic)oLHMtTF(0Loo>mUJaBE-)HU*UO3!e=qF;aznK1l!KaMGPL#gAV&~}mYY&v`DHHS0j z=j-`@8^XVf;-wG<2~H7@(S@0(qTRKLFgsHVw^#WLu8DF+Hg4@=5XxKG*5(1P4KN`< zq0Dt^w56AHC_7OD&7C8ChSeEF3n+6=Ub#@&6vE{_UqM`3fXE?inEBUk={)(>+)Yab zteTS)3mXZGMBG$*06T>EuQHdqs`N5Tx_E1UFp4-p5KfqD_7HbypAccn6=%@+ye=YN zgk$riKA}Ob9Vyp0nu0+x6zK>RB7|^cz5%}Y5uk%x#8DTiXW(w?!r(dp{kZ{KY^$}1 z0NF$2E;(iz%`AdbD~~6Ky(+k+o~hDg6D4FOJhbwgL!hskbJnVRnz9C4GMhk5C1Q|& z3mXb7&1KY~Ne^?|F(^lD)PZJK=O|C*<;PrknpRtz1Xr3s8(}b2!*_&V7bW1XLI~gz z=e{dcJP9aglEEamJ8s@xa$(aZ6n|7`Il5;l74PV^ZGNZ2eazvGao1J6M>wy6>^tD< zg``A}Oz!)qx{8a>!YkF`i2KWb@&$8$_D0pAK3u4>pG1zsS5$c3`j-=J>$ybP+Es4| zFSJB%ry|y?U0y?{EGE-%v7QIX{iYQ5p)~V!kg)3-9o}TF@h*t;L)9|fSmO$o0{pw- z2-1G{w3psHdI@I_G?dyPBG~f`0Jtr*|67|NlcYvc;dZ!DL2t03Ymq0MciHTJrc82& zkJ235+|2+53fZFJo=eC(is+R_KpaIWGT4m9r3PHV`&8#Q)K3@s%FvmcvpKS^uH!wy zw_r$8jf{ZDPY@9oMpg2oB4vopPVo*4@C=u@PKRhIliY?CJVO-aTedr3o1icQ+{a4(7pdlfb75)b^705t9a{q(4`Mx&z# zCkudqCpdHYjWs+d z=NB{9%hPsiGbrqa%vrZS^|0-$YwW~BUX{w5#$gMph)V*_G0oDs!-QUig3Cr4n43(5-&-HYA+S!nR9-_f>Qq84&vjzQeBHi z8i_gneX&|EJM#5^*2|wr>Af_O@zei80-WG(DSI;ZnDC_}=B7<(3o76$ZuOQkKlITk zaGw>+L$fU9o6;2(gz0A=J@)2x^+9s>!zuFke{=PMglhJjb(QAqgeSnNML5RC-n4JL zG0rs{8Ba_^Ao50nVk#)|v=8X3v%Af(7;p%%e|49Y|6O)}ge(G4>^$^8(papovf*9y z52Mh^3@BiWy-e>XQ9U^J9uYva0m(^eC6m&Cqo5ob0x`}?LECy2V+<)q_R%uv&g|Rf za6mj%PG4}u)JK~yF9jrVcJ|khhB}XBPv;D~Y)&6jeFbIGN8kXDKK#m5D7Tb7jI zj8spy>7%rNSApa$&eFSIPE$z0>0`JXC7DnO;wR?1$PO{dQ?|xdvT#Om;!zd@jB2Nu ze5BMBU&>;#>l#-r%vlGhNydj+m*=ZyC(p-?a``fxOyixkxT)=lo*8l13;-Gmgo`RS zDj;yZC|tUz@J`sd%LjwTn5se~9;2@4qk)$CU}H6ZWacCFvoJQ=b-a~V{(Rfy~5kWZ*@4@C15nsbt zq#|sn+#Cm`P*!7x;kVvSjVf#oEzie9RIgS?z#KP#a)=e3WGML!X$+rHhWd7rfHuwQ zz-liy_g@Z5WQzhi({$!)yJL`l{%fnsHhF!2k&1%YL}fh=!fsx<%BSaNxTCT`yCZR1 zCu<^06B|ql^8P;gXa$wVa>E+++s+9zCH>PtD|l2a=IPg}6_j9$)1`;(eyepU?*#|W zaW-BGN>2Z5;mVo@loyU^DxBgd^p#!-(20|&M|5MANXP1Q8wpi2JV_<62;^}acw70#sZ=B?=4SufkJN4-qMHLTS_y*paW3?^s;=Nrp0pkF#7gPK9r?df z91dAdX?+htO*F$q8krVHM!|CZ6?M)wgMuA-72mJzptfRcJvOjj(1rE#+R<)W z`vX5}y~DIL&dVc>A;!&~PvY>KsCmA9ZMfM7&AA+dcfXK1JVLbIs9WHHYPz={pV`av z=`x)62P$6ycd$=naaRTLSFmuHb^vsyx;gbapBEA>*j0P*oOd`k%()8rDmXcRo8uoR z5kF+xE7Hvau(Ca*Ks5Q=e(N{Geq9LP;J-<2c@DL8wcVj>oLg>=Q$b!0UNv+3wz2qRkqkv2FJ3^ z$rDe&eKBb9=M_;ax&v3xrDhd>OXAS(&1Jq|O~szo;!&2eadrC?`neSS9Jou+@w{*i zp&GitX4SnwpG;r55;RU=+(Rhn#tCTIN(%D&gUn|OJPl?3_PJrcDe%_w;X&?c&mDiy z0vVS9xLWT#0g&27VlNc7?vY%c*p58HALf!i*v2;MWcMIlH_YzYBf5)!#@^i$lWF(3 zinEK*bxNOScWeoJgZB5-UkQ(|_tsw_Rds*VwkCUu-oSh%=i-Nbqg1XM-M74PZs!r^ zh{QgekBejAA8@kEUbx*qx`wMr5#kR1z46i(?EVONn?9Zt&ZI@L>5qE7Emh8>m6`(Z1Fir2-}+}Q@$Uc*VE^%=;r>Uxf&Y)u zha0+!`SSAZkJw&4aXb>C}!vb9&cJM^g z93vHpc6&=kXNC(ZT#zBYrht!2gDMgLO%lY*5k*PH1pYePZ;;-fc) zX=SoWSB}=qp|_3DPL<>^4g3u{P#BF8?4~fxioV7)N_S^N8)h)L57az;E(umUJ&G)1 z_=Aj^Z)(+~KG>OhbP-tj=+Jmfq1n?Lg$T883RO409zZbkQ34&ESvrdrBuGW=86kg$ z$p$_bhAhi}EiuO6CWV>M0MmsPs>VLGPn+4AgcM1MG9Y4nATH8yJ5YrzW_mSZ4cmkM zkA}I7v*>_%n=UhyR!XdCiB$EZHHR8t7nhA;^l8cksb_v?GP3~|`eRVO;U6sAY^0a% zoPD_4IY|Na=71Px+6{csX}8tDLcCW_eC;GTrl^H~lrf!UmOD7TRf?2b9ETt-VmyZV z(kkInpv6sOPGstO*nlC#MQ03>1k1}gMUzdC0t*p1Lq~Ho>@w0yOe^$E7)gmm{wJC@ z7*o|`A~oLNTzeCzukfLeLgTL-5vj2juEb@e$uJ@C^I>#Jxy~Q}EhC(=Gq*%EH0iqY zv|?_5SRoV{gE(=ToF%ACDukxZOyoWOI=F($Q>=l7v5t}VP{)kpKAHzITI`%c&dGc> zo3}(mDu8>N=v!|oU4f;?Bw@mUp#eGMBqBYdX?kj~#fs*bVWqTB(LZ3}y|(~&maieVHQ-&wxB}%L3+Uo@eQml8 z?GioHrpnSEwb}w=%$JtQ8><)+fm3S1+BMFaXARfq@0x8>Ov?egsN~?oNNyfoZtht= z&Q*CsSp&}1?W>5>o3AwF`;v+`Rlb6V4@`@jkR2g@R-~YICfdn1#zhH@4FgV7|!~-SlkFcLpI3c z=SWb(ZhX#@eh_nWBAHe6C_J{$5Vw60++Ki7kQrWjfjzqy~i8+I&JqI;-$69nQpg=phWs(`>Chp zAG^V*y7@5er}*~k%w4q=6?WcW822q#Tgcme-Nq;U1*aHi;9HcE_JGFgTEAWR!@w61 zO?HkHx9LE2AJaz`HzYsD;=nsrof5-6P~2*Q#Lh6{vzz_(+Fc8)#X--@-RvF<^vyLf--M;ZNAU0~j8s1>BFD9U%|sm(Z-=oaY~>ju1?0IB*8N_0uL;wM6RkhrHe|%>4Jvbh74YH54ci z5Yd04J+uEg-TuF>R6HC^MNFMdoh%J)EIt448eNadmJ*5}B5xCv4J3?z2qZf&n25}v zDH478fOMpE02-vJ63<({+#m^!o!ik3_=5iY-#hwvi0X#{gu5adFE+(vDm6tulTP!O zC%_GJ($CM)B|8waL`VTaK2doAa13k$ZSRb0k~S%C(jGEcT!G_iJ?t%#Faf&0y%3}< z)gX3e0b?}!RihqKaOuc@;g+f1LWnAD*9XyFYgOz)#CBI?{(8$alQ4}BpEr|?r50;5 z;UFRvlzmQ?s!_z~As`5(Dc4wobg;EZSX4#0EckT-m2`_PLx{ekwS>RKbO6=VP?32? zB-P0}!O*2hT(mB9>YRJo^P0PbZdauPz~nNzC>|m?nkUT&&Z3ilAk}P|rZk6ss$a_N zT(RwB#u_aMTY<+XBdl{XsOpe z$k=Y#jRD`%>R503rm*yZN|@-^d=y?N`F-AdM-Gm6e2{CX?c912frq@`-Bw|gYq$bn6iTXpR&~Kl;37Kzj7>Jc_>sOt5i!%m1?*z zBa5XHC&WC0D?Dcjf>N%q6leIQziehP;n{uX8KQmx5{%&nT}Z@O8_5kjMBY&2IEL02 z@HD9&+-7M%&qxm=&rxjf?8lR0?Dsdcv|6#TUEQ@j4Py*{*zW*i_R3>#k5~$Qc2Q7} z23x7)=4g$d@^PtN6Roz*q$?LX(>)5~u^F@3bP9R)f8X2?f7nyj%L==&t+eG*E*P!$jwJ=@_|Sq41QnfN>hy#d0sA9yPOveIzwFZ-eSNgZ z*U2YX@_mDU{}Gq{eA}qo2b56|g;~HtTxbzaMT_|#OQXE`6&- z{68T#;svFnv(oeX`Y+wYpdDBU88VT#yuaRL?N3Z7A~G@oqo5Ib42qdQ)DY|}ET&DB zYelQtb!n?(Rm;lqDlPVekoBicjBQ?>PhFJTo~=H+HAdI)^|$ZYZih1#I0)tM&%{`U z^DOUwSzFy%tiIRf8#BF1C_;JiM+n7zM$ zcWokzfmzlDxmP*H&TXuSml46nz%#ARmmr`prk6B%dwIbrfqOyBj;T22I258-&P;*6 zP|RE)j$?zH5*+yJf5}nPQa8jF$f6G1Tb>nQ7OnF^QvUqYJ``C9{~TedgrgZW5+XaY zeh%>j4F*IT<<-rp<2^KJ+U$1G&!g9WIT}+EiqpT21{GY48qnMfI8{3w;ewtSky2|< zm#57PF;TXbUeLlpL9x6K_Qnb%4=|UC>C^O5;&w1)yGv;dYAgZG8<{a^6E)=9xCof| zT07+8oZ)E1z(A@Vam%GIV?e?T?Is{a%~oogX1!N9)-ozYwRrdPqDF|w`}FF6wPxgf zd~tz3Ysfo*ec=H+CN9L)9qCqAVY6Vahsy?6&1OhCC znsBn3x=e7Mkk;Id)e}^*CwBlcUw9fmY?j3c~0w`%diM;4iVj zfx>gJgy(aC`f|+eU}dWg=v?yvvH5;JLDhJ@Mww;b4J@X4+O2Ya7^J6m$B+PuVfax> zEg>}ujw$U90F2f9}s~q_KtU@a-;I%`~ z!IWH);8`H|v*CH1TwN|S{YEzSw}#Ak8@t(*R@VEGy8<+NIQLC-c7t9!?s)-O_r8Og z04Hh)dBMdd*)wuxS+kdaQIG{QefBBBJtWVzk)o@E>G_)WnHU7jHv+z4OKXvGS&XSP z%8gC|{d(H@eR;SuwrQL@q=obAV7!u{yfRI!x>o@9iQKGXMZT3+5TPHz#Q@%&$pO%f z(~%wMYd9xHnP6iJNokxT*-@Dn&FAir{Oc3=>lIu*Cf2IYTRYBwE6&>=e23x{RAnP$ z^97rx{uv5e3F-{)J4#T5L&Dl&4qAvonxRP+B5dDPqiV6~{UvaGbe!?0=Rev+x&ih5 z-_-%)A|V;~;T}XdaR-jCE8yulWcCgrQxO{V@lL}<*h|s|q z))9b^5=z{g=N4B>$hZR-@ZRv>`7xA|5(1(teA)I0+ZTgv{L+kB7B3_&q`fQF=4h)?wX@ripb9zsIxO#}TziFvnnRv)}y@Khf zG?Z&1MZLaFwO?F3?*!gU{cU%)WEr%%4okra+Z@fYcx?2}G|jJ}Ew8Hfmnlv<|D=1_q!BXN^UX)PjwN`VOx-w(&D0rB!(>Y znVEmF-;jKNr(5xFVT0QuJ=M$7-rfBh!BKt5#2%dohfv5r6Lun~ad!}7QznsUZbiQq z`=^NFWY}D3Z@f+R*9Iqlkz;?jH7ew{=zgrTPliJBPMYMu<+cxBgJ+?RiVa<&=Eh9A zi4H%B4}yOGj<6e*zb6IoPl1h*(2*D2d*4{=-|w@3e$B-6;k-foNK*VAxng4QU zU+GDuC`E`FmMUM!?InGi`U>rPMnb)|<&-!nay=3d?bn7@wmbr;=D?A*NEK|dgm)ek zFYIl1NdPO6o3p83)m(kF=*>dMY>t;|x5Vs!4Y6%p!mwTyrOyJ$aXO|7nosG*QBP0V zQQ>Gy^A3aYsz~VtQAyOMuY+rUc&-0TF5y78E$+YzG`5jNRaz!wq2n|MrJ4T3W7e%ScoWxKM?bIH z>3n>H_fg#O1kIMM&^Y|Z!Wf0DvTAL}6`TqMt&ZQzs41RphO?|ku41c@Gty8a>)|BU zj?$-Jz-iGFkUN_KU`BXwt*~J?C9>R&ce=ZH zk#*0kFG;4QrCWU@0(~i4u#U_8JwT@d8U(dtnZ;NfNN(dhleo&4WCep>6xZT^iTD>5 zIzNZ8+1i@)OPazC1Qm_k+5`{u!DAMzDI4&O#oa$wHS5I zBZ2CGkXHvhQFiz)$a;dw*jMO(WE|dfA$FW6UrB3crCr|o(Tk#NsT!TD0&M^ryH9^U z0(51?P&35>uZ?F-7+>_-&J)t$m-6ax;U~Aoy}SRV_D8wkUzAg(t?5a|{nD=VW|GF! zT?L6f4DiCsm#CSh9n(c#Trpbr$G`>;!`qrD zhNa4A+nQpvEL)K|L{;*VcU}rgYQmiw!-|GdRW(F-ua)uNee!m@dh&8Kc%aXP)A7 zXpNEvY{6T^*c5dP5aG#uBL-f{(r%rDfL$>Ed zh5he1!M$Spj7+A-zJJqz-fGte484$_$9d@|U3MRNnww8yA~W58;xt-yoxWMi;M2y` zT?Dufr0;c;3cB?6Qv5{onjNwUe%5nyrBFGf0f&o-sn1@2)bc)t^E70r$Kmus8WTTI zbpVFAE8{bDkT2~Rk2g)j^uZ}R__x}iY{H`{QJ0W336dp=%kOSJKM9R~V14_+UpPTmHnhzHGJd#JYUEY}#AyFRLjHB>AqNyS{e=#5Nc zONz7tvIv&OX*2T}9XT^w7`I@b)93kK#%^kU`jG6$QT?%h>Qg@*g&4dHw&zWWVC%(t zKCg-N*<5hL?939(Q<@b_Scpuou2=9vTE6SDcVtqbnqCWq)73)iUCP%39J0z3G z+x;Z_S!F-pfmxeg<;_Esuv3;Pmt+TK3ykh4g2ma7%5XJ~ulvy?Iv` zwv!iQ6`VKIeobq1bea+T1UOz@1RHrX|G+Ee(DA*0Hm(eNQ_6Fw-g!PkHvF*AhjP|& z_?;2M8R=1hR7lsfQ3nG6^Y;b#)JV-DbgL7BnY@>|-7Z(d%d*kp)%XzUhFHQtF0l#6 z_rtd=;eS?|Dxi63bAQo@(}Bof%{7HBuvta5?ZHM3i*E2AVGR#3ft*EbaDH0NR^EyW zL^mdX6?Grm%!#n1q7IU8N#z|w9HF7ej@}Uwjib+m7mx>k5h7%%@$4;!IMQ=aVLw4X zq0ZvIRkW&&FaIg6AB!Ydua3corQ6lMDF@FfGC!+|j<{#XIfyZ&07F2$ze==L@OvEx zV`67^olVu5<5H43GO2CZ>v~E->@ZZXop!eJLaprNf39coS4-?q9z`ekYEpKXemk6( zVI7`vR8{`@*!+Q81*@j0Gn7disA#RZb=YDFPmHhgs@qd%YK)dfr$1q_vz1=(oH!)4 ziQFkY7vFA5pLfJIbMp-4Btnb&u~oS`epx6aD&e8l4j&!iCN*Jk^w*ao#Rj#xP+S<0EK7z_v>BeKE}N8CKw4p5<{3JDL$@0^HTcP1eR?T_C#> z&fO$#?1XMsn!iq7@d@jS?2Q+#R5#0ye-DC&TB&Y5E|d9XJM`i20U8|x0FXc zVs4o{Yiha=D*&(LiZ8hzIBL2NDhRg3nafXJQ3|`3%h@er4;~1(*p6dFfvr12wA0AG zKI%NKG`@rGDDpgT985E6CTjcGjdxYMXk(RiU_CN|K?{)mss~8@ki7rR60l;5e@k(C z^!A+Wo@bmpe#eUSK%X-&n?5U<#(?MKk5eZzWMWDVQ_mF&Ej3r~c!ezYM!dljkAG%~ zK4#$O%uc|am4S~+8seNd_;R`hlFAi(Cye39;-4a{a(;Y|f77K@J*1~p@Z^e6r5#Mti|*)jm0J=?vF5-t(hW3b zZ;<@V((%I@1F7l{Cz9I;kzI<{U`H6*F(+s!We(&+$Is-!Msj%^A3oRNk2H!|J>>TL z-WpbO1yH|T4x+4&>ARB8kAB&41nfMxV#biyui)D92EYYb>=2s6A0cx(e`BUiWDK2R z?RsNgzm!jLxnUZ5q4Eb(XQd}S6t!Cc-Qo|!apw-lh&xJ;AbGnZ{;MD7r;5uP9s_r{ z1>$=rfqysy;&X%1cnGPrQSf8BY5hPOIM$qH;>IUaPbRG2XdkQ+@?N#F{4{)gL9sWD^Z zoMj8OrIRs4?JRni&+Zt5!)n*u*nL*OFnYqNwQc2psr)OsOUfZ=bYwLN)hX~7;jC1^)$jor}n4CJy@-R8`6!Eskv)aZ} z4cHIeeEC{3V@j?(;a~K}NCzGG$D?6wzmZ$9I&!6qZ;6TNu@?SIahOXLGs=~ zI;E+$DlSWK6s#54uE*KM7OCq;*;V7(+%(*MI6>Jo6qd|Ms;pq#Rcg~~W7_6PuDKj{ z^Cb^isAJlbN7be-40&2-Q>rJrM|!_k^4-Sh1Y&n>bY)>Pmd+w3*Ez23S~3sA@zXRn zZyD!q8Jqb!e>3dWkp9?y-x655VnAd6u9C)L*6xAgc7rcns6ldjp5I)}ZwsCAXwf`kpe-(caiV@3De2cKRzUC*Li*^WF39GSvA=YF9hbGD-? z&L;r!fAI(Oy$J5lg36O66Vkk7A%nVvI!#pfJHgjy=c|5;T>XA?!c+6-JwxI&{}_>Xe?-hVM`z4WB=<)jwnf7F5QCt&uLuTj z4Ci;&+Ty+q;%=lUHSo<6hzEaNluw(YSA3sW44WU}PGOL1wK(MIwl|D(`}(=+>$8>B z-MTQVxKwVY<5^UDik#Cv_!kNkAwv?Izp}K-r)`=_<}I-km6Vf`4OE9=)ikWm*fn(; zf3x(hqhcX>gs|$JC|n14UY`}IsWBHH4J?~{LWb`tCeG;TO4=HNF?v;~yN0MN+t8oM zN0-+wSIg-$KkYDMnQ{<*{()ny(Vi9uP9Nz(N9l$ly`fg6^ab=+OIsi$6Bg(g-$1ZT zO55xYjkYtP} zG{gL~+X|}$G_}8LjnSpJOe;@E)2TkBAHTK7!^b`86|uRTHOS}ul5MwH8`NH_lfhRP z|4n0ca-N=+k!JsOOntUR2Q+MSTjx?s!zw;)sc-p|~kE#%5OvZJso12lY+*%r@qL z#sKe**lBKq&tnh#P})OO+%oNst>Zw!ZJ^*bXaJgL5*FI#3_0v(zx1T=GeS#N4KzKvle%e+xS$5WUMJ4_i(r;yV6p`;v9FF-&hX)tTSs3@UZrr#{7D zNTCz9>(sA3+QIpC#$?m;dCjAKlt!^h8(7i1cu)^B1KxVm9n|7L!(Z`c!F{R3OHW8s ze>BIbhLkf*7hwyFyw@0cVCoivhRQa1Te=^uVRKAZ=cc7rai;cwe@}4eRH~Spl|jF7|rkrPsQwF(P+15r=i!b zsm)>!w+KA>rO4V;hRJQ4#c4HP0s%Z}?`m@~(|1$5uH_@+pf7F|aUkCDZu98{}&*^Hz z${ru3JB220W^TL3T;-QAKlePml}Dvp+HapptM7!C@N%Rmg-t=&=0xEU0&$g5Us(@Ae6f4OV_rg zAd!jOn(rbhe{Hd$))7)fN7aNvYb3zXHht#tNA$d||8WAN$=fJi#uKj~Tx|YNQwaDY zHow1JVD3^#5GYSA^en<$led#eV6V=RiH9MTi?!rmM}8m61X~`z52_w6A;CF#L28!< zBYy!QMoMyO^VgyGhpv5Oh4 zH7R=v^gdV)qG74+UWfTL8N!SH#f7vZlM$d}XxzxQgMmgyTlD1oa(mz>Z zUK;{N4KvD;klL6Ti}EG?KXfK+m)Tt9kC{O6D;G)fXKDWYNtT_ZZ>7LUYumc)psBtg z^WWAuVE_7y>uD4)itrb_=}r+E(UlGJR5=*P&4Fm4PQwPVED#0E(I`>7T%Pv27X0&k0oBhmMDTVI`F*C6YnAMVBZaaFzASXhHyW$9CMq;ivE zUy9bvk>Adyot%9^3+hAR35GFVLEVna!ZnWIwJt_Wx3-u#MjKm!V98$PqtiX6@rY(| z(3Ku{(-7lNcyb867D{LW?H}sby%Lf~e;k{4sJ~^j9cj4HXc$3}gGYwCWufgvP`k1s zgV3OOA&)70#2tk6TvHjp(_D?UlmE8K{q29Q%8Ff2X0J zN*sY2az%K}yya5S%Hrr{S@`RjacM{0I}>A5+yAM&ti-Q4$b`}Z-&_D$ z%n%WT-ybXqB*H94qQWT0fZrtVe}KXojWyvFj140E9VfCTUPxm@|8}_D^Wy7ixJ#G^ z;sjqtO$HNJVl6h=85>^OTcF`Zor=GVXlp5sKv%)pn-oi$tRwgB#8BfyR02n{tI8#o zUR_REKm`!Mpk=@x=$PLOPHQC@#TYnN?=AJAOo_<2wv5kOa?nhCy$f8Nfj$gL;> z;(KE5PkndV>5@icHm)4`j>6P^f8N~VUvZS0m~+ZcueVC*<_>##^wpK#k<7{F%3%0+ zuJI>kmE(~R;R)#hDA)pt$>O2dgt*{VsV*T#g50|ObN>F@SrjncwfPG$5RfSt5D@ME z;#wP<89TZCi{kZvaKwfGe{=SK5fFMbE)@O;ZD+?yyI813ubW7N{RM{p>-UbZ z$B|leDnt~VAA~Z1&=IW5L92(UPFkb0UYQO(uvMiq%#zk?NnbO41c)|Ua91?ix`rFKVx+CGV|x$u zMAGv2Ryf&DFwMoVA~2g*9`SJ0vG6(e?N)T})vdIAz5xzSWAbN(1kn&wYsP$q{RI=b ziKCDVoyGReHM|7UeUySL9+{G11$ASeP`y{)16Z|7KX*?>e{f7u%@CqZgN?txkAn+V zQ=WRbGepXWKToi3Z_w(QQ!QUN60ZquWqnAj3=5Qkpfn>Q3MgsGc6q37?$2XeE>ITI z+~HG`+A2k2aE+8w41i^2d#h7?qP|HV0isp4sBF z{5rxUva<3v1r{lm1Z+XDNjW^?#0)+W%|GDYJLl^Ze=WvLHuiF=SxcB`>HT#1KEySB z!k^b5B90MS2@8_q7;QLW+=a^U;jH0C;asvL_X=^HJBRm@ddLURhH{GZCNL!wGy6Yg zjHl)e<9IA1CK!GZU7sF%IxEH{rjHg%Bzg(Cz<}C|eM-RkNU_MfP~&|f{VT%k;mh^u z|EXl!fB&G&>Hi4A{`chnocLFr`5I+;MKER*KS*;>(Eg;6D(IfIB4~w?P^p3Uusefw zZMt=P&P|a6!-qZOTS@G){8LZ|j*N_%tlpW`(UVQyKzKZ{a+oO!jx@*&Yb6PK7xl4@ zRO^aTZtNQ~5S5nt2NfTi#OUS+v-0SA(z%?9u*8gm z(6(9DOs}9^cGHR1P6{})vLeK=V~&DL#T96mF!tDkz!y&Du_;%|(Z9YTRbOs7g+rg-{_{d3YrOsgRkUj(_3oBzFmutRf1pFb z?Kj(;^*$LLP*Rf0OYcq|+beM{Y|gM?IT9hV`(4bYl%j^zR9$HxPw>{9Nk*gwSYVPq z{s)i1OPQ*Ne-kl8OT1Y%<;`D9`MLISEU6v0J!ubJm(v@;jP9{8&bV_N1=e$yKB`F(be6-Ue?BQ@!KfUE^L~7B8HLx%Z-nJjJ8`Z;sKHZCCj5f?Ae9}b*bs=;F z2%IdPP-+gJwkc7Fv&-UWupvb!FRF#Nt|?|Eq;aC-?X#;o@%B4O!<4t$!A)C=W9kA_W+lfEdjo!l_Nd%y2L?23^4O$h> zB+f(FnPe0%jW{I7#^y)P7#O2N7t;8PS-Eu0Eya1IXcgX=Dn} zJb+VHM75((N2rUyLLI(%7O+oPd!owGYBM38_ZDK-6ec=-e}fn;Ay+C&@T^g&R##78 z9vX{js{as)T1(df)MafthLtNYQ#`tZ=1)O1lV`SnSHh9G`4w~vF@1bvw3LwdLFAvPmoa;hh1s4QMF*<`uo!}}_adv0{B6}p<)h%m%!d)A^HzDyPq{EayVQS@ZxXe%ITAGyT$4(z1HfBgG{EK9OZ94H3&v%Nn!W=na_ zy=ejJIO^3xf%}0yN%7riBG4C&BJF}0@Y+CZc(<~Hy9i^SJ(_9_r>IDFFGAz9SH0&W zC7J}MY;K&m)9(3*UT*Uev`f_z=>n#$M7-EA7~Q`=Gt8pmEZGY|~vLP-xJ$SH9fB9QYyMmE0c*Rm|8Ny*4(>*zg#Z@|y zdFM;=b;XfAP%-73egw*!?mfTrq8nd@)5fMN_=Nj(w20_~f1!k1HwEZjJA# zUg&C2?B}Ps9`^T`&!9IoJljGgJBqH*vlCO07bg^%ncmoKd90MP1qU{%d5x&PEWmhmA@7MJ$@#XaO1E-@ORhzh2D=^82c zu*Y`sqYfRXG)^s-+H`g=#~E0&Y|EsIa(FXX3~45?*J@$@m4j0Y9J`6?E(klCk@(0# zu7UJH|6b*rRTWfP0Gi%HZ6GMcWshe3f2ltP;cxIzv_ z{n3La`o$YF|B(S`*zG39TN=XH17qp_IF#Op?*U5e9f1f*3}30?@VkUd)qc5}{*2fj zYe_p5jGiUI7KW-Ewn+=a=uve(VuQ0qGV;v~u};C#1L-q{hAz&gN%X@*2$(rPf0f~~ z+h%aLE1kUj&%dxjtM=r@a(DaKd{uj_G`WM$0!VVXMCKMQs%#F3n;k#v=KKwYE$_IY zFL~LRvB6*b5EtHCI@ywyKmc==OEp}Qe(DG;t_tq1XS-Ss{N(@igr3YN-`4htfJ!p zx*{2kHceLIe;yF^S6I$h$Yw%Xe2EMj9@MpyNn60rlS-MW>T^5+e=-Ip5ttt&~cj>e_*sQl_x+k>FF%AnJsCNx?Ad{KviFu}{4_@&@(2)=31J z=d!o%fM3rnl+Dy0e>O*+O(2XZn-r2u^1*24;OBF3RUovW(w%6m5IUI(b79u^jfJZx zq~?d7h9nSrYE8Xb!hZKkhS?9;Y(e<5T!^?%CTxhvcd=P}n&I!&(uk#i#%=5xLy=`X zf1v9KNdUt_YoAhs4Ed4iB}?Kp;txV*1OqqwT-x#;0Tt_5e-T&pOi6R!=gbZ?Zd~j{ z>p^9DXRCYT@?|#CPRv7nO{Ef%2X!4H>0;jrgxGn3vSYjmt!!}``qU$JV=N*hKhCqa zQ=CeTQ=Jr>Qy!piLM!7iJCFbe0pZr+={M$2mP$enh_=<^F8|4fPFWY9g^k)_whuZ< z&N;L&2emVbe@gd$${RQfJmz7Qw&StuH?G!FgiTN1=HyiBBh8A~^9L61paY=0Zu_OVgUqoqa(ef20ebpK~3PS~Wxne+8QWXzN&1^dsw=)Jj9+z+TC zKMuyN4xD2>8*F8M04_@+)Mf=aCTj;Brq>kOe}$CLy2u;Rg@g;{ZUehP-4S2zwyTP`10zB7Lza|lr#@~74D0~@+3HX z3cPObibz&wLSecN#~5B}Ztl8>>z8@xe^bz~*vdyDezA6EJi3^*_@7cI#bgvm7&?8J zjZ;HRj-;8N&ki2Te;8ZnE$gWItDR3FE_9bZZ^*p?e_!$(Oyyicf zIv!#0^h57aFShIDu-v(ZzI8B2aeKzAXfF(Ef7}M$u{)XfaIp)v%-IcF z;{TSFuDbh5F`)>{4|nfM40o)F%I69xgJOh3o3TN&G1Bui=572&I? z1<4-Dj7^wlGJH$pD(-i?4*v8eDZP1{K9|HNVc!Y9ahK97&y7@Oe@*mc{@AJ`+uf(?zOx02yJjSfS@2JmOyL+V7usw;Z#h;x z*|LQvt?gtEYuR{k7f<wWWzHC3Mx~+ZRxoF<5hN#ru0R8ate+I^MriRt8E-9W6 zhU@xw<^(=|=mKwCzXl@9ieJbu*?yYK;5bfnu}LW0{iz+K&hE#p?Yc6b2FX&6rRPHn zCET2Yi}4v)n~vNWtz1C~K}ynfCVTzB2=~(2)`x5O}>B$D#N03V``{D+~NFgw_h~tq?d);1&0eRQv_) zbqN9(J^*?;eQ{-d*=H*ro+t?2<%YKHwaB&e2s~S*#+h^XfByIby*}9dnPVLDCSDt6OFsYs0uB$(1D#7NI3s+ofnC<k@z+tlF7E z{<-aU+J9-VAcsj`V^%4`CX%#|PC7Pk$FQnuErK1IQ=$m-Ms6A&;`WdiUmwOBdw&Og znxraBu<}rQf7<1cvnzVB4DK_ei5^@3ebW95?p*#E#q}5F%bq1J4d7uobD*5Dugo1L zsSR&X0;;)c3-E+!@qMyeHeW5hGdwKD=U=io>pzK~epST&P+T|rHh#aE&xg;i(tDTj z1OM@zH|~`zua_a!odoNdatz+b61Rk0s~*l3OO}Yqe;Hd?*jwQI#{HL3lnAwG+C?Jk zu2{u*wks;{D*EHa1ohdHJb4&Q!&a@3lc_>DVkuL?34qTHk7NI%x1V)IU z%5qg@p%~9H*>$hn7$G*ZdvZ~YCsOB4O7+cIZ?Gn;s5}{2qT>fuLTc1c%6dJk7$uCp zg(oybf47It<|PLo7`hON+Alsz?`*EhU+s4MsL8P z2Q$SJOW~CT{rWr|Cwo99UI9zu89mu+QY_iI#-ms9lZMWvbQ0ydrsWB_=RG zs{HU|;-=^~>G^^80=stJ#V&i}pfa5cM<4|Lt)MMe(SnL9qjNM!@@ zCjc5rWE!nEy+e5$ySZXRNPB^#|yz}Vz^bE3Nwn{NDG9`F}p2?W_#-E zI!W%P5tJ=8Hw=4rShyZ2C*~e6HQFB9IzO5U^|NEFGLOag1r{>vJr4mX|4tX);+$|PB{K8Rp zhBig;i^-u$D3jRq8K=e-Ae-gJ7&^ zh>Vd6;gRoPl)XEJBkcR;r~Qj0`;+1Wx??ayQiD`-!|t2B2xi{LdtpdF)hdNJ;NgY) z`u-JwWk)am+h8Cd$Nx2F*#B1mviv`tVgK{rV<}c@D&&N?8hV|&E=p^lW+YWACe9>z z^K>u@2X0?@M5?=R{)8N|O8PRUY= z+6(t9W100#$J{}Zh-*W|bv50@LxOsK9YQ(Sw3i%mBqFF@ano>UURPE^$CA`ty0ldQ zpyX1TO31_(e^Y;sHsF8Lp8OSUhN->lE!)RQi1)-vBdYQsm~Aj>jai6dn^)?{Cx6=f%0b+$?iM6^FBn#_uBzA4 z59raZK5Cnwee(??UQ}2xbZRv4vv8X_02P(HT9@qAe*>;B^^ufR;Sew*eD!8$$!E6N zC#B-71dJz})U2;zDv$I3jQwbR+(qHZ?ssSNPYrQ9Zg(4 zHfhyke^DP)gV^q&NbWMB-2n7Rm2Hh{>roe+E`*kIvhYF3l64y>T=9!JBD24tk}(xa}$b{>FY&2A+mP_|XZK&4>8Op0Q!C zj>PrH&ih0c+`=;C9lT4PmbE`%|1e~_QV#R0e-svrutD>)gBzUs4VZjw_6}Sq^t(Q3 zVwUmWuhJWmZA7&>%{9R1dcJaOSkcJDs&XE)MJNL!(=E4nSfI0&W@FsuV3ISqkrX z4kMk@u;F;_KlBb=*+#qgcu_V|)F=37f1&UQ+iwH4LAVGZdMjYN73;l?t5TlgMkFDi z;31d}CK1Mak&?qNxFklWRZ&hMy!XC>*^Fvm&ZGi_6f9JMe zDAxE!uwzMV3|~_}Q9BX=wWMu%?(Wz{c9gk#RE<)7JYMV3Hn^bgK&oN=5lO7RXfmI> z;#K|n`u_L)M=WyzW%>+btHk1*L&WV^UC#;Vix?GHu;PcyxN>fh6lWWCA&o|M#G)a{ zV&{jLpSFg+A$Q}B1d9--9XDn$e`fAJH)0oKTbS(2*}+XC-y`;xE%HDS(13rGz5u6J z%|vulc2yi^{V{o)p*crtiDAG~0jE%HMRK``TCH8;hm}#RF*6VjySg!%M9Zy1MFiVR zbP;2B3+?an_%MLKn%^iLWYX;MQ0Ap7%D=};>K@e^o~&hYsnq9I>p0JVhP$9o1yUzyVU*(!$GLlTnc9U=utZx`l>EEQ z3bwDEP}n~(fI<83+tvLqfBh^?ZPy=?C|?o+D~+p0xKr3@B4+W^#6$ov5)@K9EfP~x zY|t6um4z`Kt*glG6mAhTm!uB?X(hzqde{P*VR-+sJSla55rYbu5=-}2A&+r} zA{rk{Z;RgRuTG!XzORo%MG)QFEG&X#X{t2kAQ|9udInr^2Q$$ZfA+bNj65`p4v}#M zIJEx+gDLqf ztH^-OC^z(t1*aj9f0zwkf_18`L!r`3&)KVTvzc9z6%nd*$p{rw_Mb-th zbhZbtnyuHmRmZC4A^M^%nwiv4z1u3NoeNB=p@yAaLE0j&f7rEXjdP*{oyxy*u|o^6 z71Wkl^}L#eMdh*I`nX*jGyNj`3J!_FyECg7n@$6lL(dL&7A*Z({l)3S96sA}r2((f8uB1tg z;M=7nAf!W$e@t_@t8|Uy%?hlqQ7MuM>SFyG&6B6U34l0@5$zds+a*lZceEwJY?9(? z7}y`TWc^BNgBEhr7RMBYHKBOpj83j(R3_`xrh=X2L*)b_m9;l2rlXtCzqo*>cIbU^ z-V6o=d|DykrwJ$t^HCuPJujlLgCr*06*_#mp4^F5e-<*ug~nNp*?QN=`}LuuEbq7I zgRLr4v1Hty-t^034g@)s1)a-eCS`!uqE70*BCkssu_7vg5KD5rlsh~%pnH;qDo4yc zpAzh2u0qoLPy7Ab`Pf#g)qaAKwofZFM;{-?E3PC`j{A0&gY zN5F_BbOhMaXf}oTALN}%N;xGS*Zj>63@OphQq7lEBiKH$N51>`A3 zJ=QlBmt^kO{B;p)ONe{v}>QID`+0!FSUx%Avdc2F;;;08&pa=6SPXk9|Y zF?Yq= zByYcY3s-O5)|uYJjxfb~PDl(=4{bG@ac=2* zJ;@PY`@`y-h=*=K#u?PTf6sbTKR>0Q?`D?-;|yJE~79q47zFmN@zD?YTkWjImaG(YVEle=V`d5AhNUx@<0N z$Ni*5Pf*YUzkGue+-8Z2H7_EC@X8))JR&?lqU?@n1QsIBlvp5?7(9I7_)j))XLa$ zTT~V^+9#XE0f@nO!?7NZLUpTF^6TdYJ~ZC*7MM`Xlaxyv>}1X&w;jhZv8XXCovOzY zf@KPP7wxxT<8orshIynHvF^baFcAryi9_L}f9j2o(F!1Ve_vj3A~B5mwOhvmx+3*=VMmB^`T|w zM9LWan2mB()pWlpA92aZ`pE-Rv|dLh^G&lhsmz zpk;x<_xRclar<14VEcWJ;lpk9cF}C9B0Zjfv;#cRYrkJmFHU`uUBtKbq&eB&ue zDxd33e@@3qHgBC^K)@%|ErOy;x+qCVaSZwbf~^CS8&cSPp~T%?JRuM1*=6_^E}VJu z56I^?E9&=?S={Hj39ukB6sMq)Wc_dLezmNUn!ddR)LdH+CnYwc! zfBoEB#+5cOEl?hJ@8glfP>F-Ef}6sF3-m6WmXX2NJx7xNWJ_6^0!ye(5j4`Q^colr zMP?dmyAMqjo@%LAk=gF#Al9tJbX)SnxIHnY6+I-anozBDJbhG^tFK&Z!bb2rqqI9y ztJNYMNVQ!bPn>h!am`xF<4812-*~kSf1z0n54kxjux3B^S!* zqam9{NR|&9K)Tb7CcqJlR#G%Se*PP0;lX#o6&Vx+Wa6Jo=f5c*{~3vU{B!qzf3O!s z{x^G}MyWwzkO`fyjjf;{IpPhq^ zt0AB$e0QRGFHO`~v!$CLo;fXxT^(dLRaBTNCZWH_?r73qb#^0Y0BaJycZ1Sd}FcDnSpx}m+4?Xdhoh2U~0_~-v zn4q-?jooe|^6E@DpbIV};8d)@)0AElTy&?YSSBD1otmn79*^AJ9R)Tnf6SdMP6$^& zgPv^dZGhlC7&fzo;JNUc@?XP%ehQdo#0LQpQv?B#{_hFHf3Es8AFLPp@%qgNxmn^g zbf{AZk+SO;9&E~gXe_uvU&bFM%Sl;v7v9!e>-kp#4*w=wR0)GS$%t%2WA)!pD zGc=$O)WH69|MLM7>D)vgn73uuj`CJY-P)IY~7*s{S66~N6mq-VEe{6YO`!EtDoe;zdg$ z;Umv<8TA?r3Q@f$Ttprn)Bw}b>twF<@(xxr>097bytC>s7vI8X)*TAVXQnk~1&h7k zszZwRBss9<9uX?Ne|5~P%mn5jpf-T+FmoSvu@Q_5TMo5|l8OZO@Y9u_3FBVNd=XXS zND~QcDlr(U^xX;eO(~E``sL&5s}V)IL>pPsCdOiL)jAXfscH#)M``Ya-T?`UB(%7F zl!*MB1eVnplRA7Z?Z*^L&(F^V1#=<95Md7jKWZ=MJviHje^73wG`nP?B^>&pSZiGW zocIK&s8ztb_c@b@069R$zeN5zl`$cg$Up*9UNje=e33UMQi!Wi)lgq7E*>>{yzLDU z7&Tc4TDME|>ux9v4YOZ4Gzwz=z*d}#fm!3`l#0PV_Lavkp*GR$0-GbeQt(^UC}{YWz7^wsIi;Z_u3)E}QK`nW_Bn-T zifD>ya>_aKZP+P0RE0_uuq#v0Paugow|vPdQd%@K!6;Qv(AddSQRP)MEBg?cGnn$8 zDy0QCiDE_tt28ehXndd{RUUYVI-=~Dat)sh9YS2F9|s|t;(x8lB*W1@C#~yRxLfyr z81EyerluiN9&8gje|24df(*m*!+>-jqMTf}nE3e1XiceL6__Q*ift1C6HyEn+r~>( zn^up5Glrez1Hx|tLX@%egPe_}LYpnvv<%fmj8d9Qo7iQ@YI$5$A*CKkfpz&{3A;ZI z#VwX$F-dDl)PJBXck*nLBZUHXdXJnubc+~&1({1uEh<#Qid8(9=?DYrM+_6Qu%fR= zkF&&3W)5PRtQN9=3Ok`*aLe*v46)i-l4z8UqFkZg ztM2Ks9kJf4;(ixe?U8cGp~Qv4Y9f^Jc~egC_{kW9!+%w8oTy7UB}%5=_BkR#XVF>? z921>1A=90C?-nO7GG5|Aq?wry(s24trBIgAT(~pBfX%38l;(QWiZ-)D5Y?U1@N+3I z8Uk0lao_`4HZqnISP73PHm%50{t*u=gN_wLq7$>G0O`P`UGJYKJzjtrAK8lRJ_{m4 zniHg+G=G}&s2*W)wkC!HyWzm&2sbH?1YqVG7g0I(m(!0HIttfUC@Rz^v`3s`hGi=e zQc%a>D)!gb(3{^Dp^)I!{ZeFWwSV!+*!JFKaqm${D$3e%s5GrxMEep* zlB8>mNu@qU@P7lF_NHOl+7tMM260d-elplQH#NaE*rT-$*1)VILBL#n%hSlRwdX{d zNbWa@oD77U{lqOkUU)YS59QrcU@1{bMmR4PrV+z8F5r+c$}C^O0s9m10C?#^^BC|W z%YTYB;%XeqXERrV1Ek$>+<9@hfFet+4Ik@UFewqRl$TBhZ_m{T%MIl26xHoc#IouY zGA?IbpjB6!ir)Vgy{(7(AmamzLz^NaWlgdW&mUG?6TOW1Lo4F!FRtjLM*t_mI~J!$ zmok0m4EwPU8~Uh#p)T2p@bFvpwi#+xihm1amV^#Bdmv8f9wAh9D|?K+8?m_Cj36)V z7OYz;(I&FUfZ1!$5J+fy8yTASyGo7xk>Evbxd@ue+cu?Sd2&^qjyTUrHqh8he&FJk zbwbOS0eH!`VQN>Gu{7KPo5UXOTSL%UzhToY*#&B7DOnQ24 z^Q*>7(9}fOsDs+;F4vF0DQ~f(-hW*~kKdph63+&;(ys)iUP=G{n#7{?7>RI-#{Kv# zO_zITywybfqSz1EyGcH^H|aHX6qTSo z;fo9_%E2*QcI%wSdkG7We&y7(99+lJU=Nd4;&I$oA}kc^_v3aJy2}aI6MtGWHb>w~ z84$EVV`YXnwqnZ1grR{{LZNl4f!IoY*S;mNkQL!hW{JsYLn|mrtY;`-5@R^GC|93{ zIVpUlGGN(r`o+x^tVOxbyfX1>b!Q{4CeM_LY zg#(r7{x5!&%7t)XIfU?4e?6Dn;4LcUo=C9e?iBa%Ts}8$!4~^Y(akEQpE7k4nVea1 zGy>qVUvAKhD3%p#!J#Nr*%Be;OcLX)e(IQV^L7tiVseNtn3}A8U4N}1Pc|_N|8cs+ zL~s)m6JZ#DiZtqj+Hv)GhlpfP5$gu?C_;*9ln}~FJ_8gs)=6}H{n+UWEpB$jsH~9W zaFtf8sVu8mt;05SvOic!snu#|k{fJ~RaKL+xY@(w3(N+O6X9w<=BYWB(~TpR8^7_I z?d}amp*IkLQ+<5)7k^!%&9&i!#j@5QxwZJfq;E{(^eQKVsVs)BwxIDisZW->;Zl=W zP+Eqi!$~Eca&(Myb8a`$My8MCrFzHx=Sf!$lcS~qS(K8mmU&h7DhTtlG(iR=**(hF zC6sgnFmMPM9m&;5mJkJCgB43!Z_HdZ)r|!Ca>&FSpZTj&+karKsjf;qFjiq43uqwX zOERa~8L;&6lO@*n(?m(<zbYc*2Y7#t1IF!1V z1Vber6F5i}CM$D{b<%J@F%gb`Cz0hwmr@Z|+7`a3F$)*4zIEDRZEjAqGyPbtkCrd| z`$RO(^_Qp^3x9^gurX9G0l7+uDCST$g|=Z!;ZK(E<_a$mcZ6J6zp3*GVjSW>pn0j0B06ZvQm@mf$=_B_LB){eG0rQoe9@a zEeKUdN`C|p?DxyYi__w4(cR*7VH%P#*U{vsqV2Q=QaQJ4S@dENd6pw%q!oMQ3|;R( zTY?HLl)=2wc)Sbl0t(x#EL0;NytXR#5m4<98w^F_P<{+zg|nS}l@;tGZMm!BkB2}Q z^e)}mxpFCCKDe3g)3?bEUZUC$Zz7j;{4Bo}*MF7<-@)nK5mhA+6}oR?!daLe;+>RL zik193vp=+kbSsW?74HGHBT4;Abd*`yysRRue(ux7PqXXF`K{HZ4djQ<4r65I@tqb6 zSq=0IeH$IwWg_fKy*v>NSq!Jzj2Is zzlC9OvzIuQhGHY@8n|(al~`7?SP}T!qQT=4;x%{FJ*-U2`kmx=rh=Sa(}T;>Y1MRqFxe18Kpm%SBI5*Z%yL1=%y;q z>uSf3OM!zyf`%ZqBvbq+i*ksywUR#g{-Hz%;-Weg4)ar^_%HWDku~C8Hwck6BIk@` zU#PocW2*D)rw);@3~AL-UCD~6zP+@!>RlSsD%4fuH>|9^sV}&g2hgnQ4%0^Duzw7) zyJ;_==BV;*^li+3ZdozCNiQgzrOvFKdz7exs-@nDjJ--mX|zrcIRoRtgDet&uO>0FbcdiGkS@vN>N;_Dv>vVWwBG%GiI?B$O& zSOnIlXdG11kzocXmGRe9aiE4~{tb{N(TybbflXiBGGnWC&%X8yreI-DAP)%}oSoV^ zP`?|=Zsr~=$lYNh-j3s~ZfEcDnA66LhU|ic&Pc|l7_JTt9$|K*e}v>@sJG;vd?b{8LIXzMj~bUw zMqv$9pe}LX-*a1?wk2R5!p+u;OQ%3w6v;(j9EPvJujc<_1P3of6v03(O~oo_s)^*LbAO-3C>lV;_G-%nrWmx{!{~=!HDjV?PAv0&G(V+LkM2CA zlVlN6u`5zJe`GK09n7VKc3-SPgh`>QW7WyOQx;g);O)3Z$aO zj6zjazYCNDEe$s~{pk7#ia!uixE79)w9UVjGBUj+22L1c7< zHs4mCXI#)q7immLntK?<kK@EZi3|Fa-Z9VH;RGUcr*Y=n<-Ssr23z!cpC&ZBoUEDui13EkwggQ12 zb_8=1che-Pn2Zxc7MD@56pZtnq3q!R)EV1nR(KKYCzf}|ue^xJ z%VMM^(r;{Z5Fx=@EH*{Ux5#wHfAe}cm8W)jM zGQSOq2T2FW10^7ct4SsL!kV%!EJ8PykGAcS0(nODNq@^Q0H^E*HcfhsT#VYBJz~y( zZT>2XHY^JWU^|e>n^r!ZG6pqNxnt8aL_4JWY`|__d6R$M8Xh@@8w!uda$Tdxw!)Y7 z5BpFQ?Ld@8afD?3>Y;GMmlweYQz<{>V0Ja>-W~_kRW$v{q@%#z>#p?35S3IKSJcJf zP9Kg1ntwg@%NC@s?N`Etl2$a!>86XOFG3-=hM)#;U*_LDna0;Zw-Hzha5=(*K*2e5 z>D$}ioq3kqrEm()r{N&p#a4CIS6E0EMrr6sk=sq7GC!2{^I6+=@^uF9N&sGP%f$W2s>JJ;Gqq{i%)6N; zButD6q4zXF{g2r%ZyT&~nPU)JeLS+szO(cv>yxlmq>d?vKSvy7FZS7&^{DNX^^xvZ z1%IgRLZb0rGI0nFLPv|+6r#sbjLY^V?L4F+8;7~Mfp}J2eF(Esj!|5xJ-NrVSVe7` z2!0X0dZ|WPXWk*bek8+gdfVfXKYwHSdT~twXiH0dyJMLqF2QJp#XgXrDW2MwCYY>A zWxGUglkG;se&SlXENmUTe9C6BdnkCVCZ^<(l~2FH1l25974r+o{fG zFh%9If3zk)@WID_cce10JTwyJ^ne~=U4hbVL1`TjjGaNs7o3D<4?Ngm5BHAT)<%3- z|5NU7NCY9BhXRnO5?AN0E#oD7<9~<^Xu~sLu_02Ja^fsrkv#D6gpAxCRW z#D?Y=8NZ~*^-KWuNE;eocn$nsDP&F(nzMrxUG~p9Bx9xpK~}U_7u+vN6BImCm=3Uo z6GB%^%;_y~IHiPa(Wcz$cp2ufbqTh45-kkQObaxD%;A%UU<+bs+lhr86GUt{xsvhI zCCoLbDBOsQ!b({4k-arLs(<6-J3Ec>S=DWY(OLHGy41Wu% z-kIW5ILQ!Nq`t#$2TAtc86J>9v*Epp>ipvC-w#dQ4zj|ca0XPL0)!2FVA!BoiOhN; zJKoHmedI-%(gpAgL4O^%tAc6sF>A==J7G8Wt%f~_6?Z_4hfj^VQGbQ{Fok};a#Tn3 zA^XkCbwR$&{v^8G-3xL-Xkhn{3L3_-0b3He*{oMY&g$4t^>x7YJVJsa3?&5hT-9Z6GnW;19YoK`B8I97;cJ^QBwe)K zD5Z_G#l59%T>ES1^?zKdHLUjMJXBA{K4|fQgG-jN=!2S$B)-O>2@RbiQZhuebFV+c zl6h?tAr2#vg>Vy2-fhtN!_6O7eN!T7(-3dV>^u}??SwL->_kP3Tha#IoC-)mow$H5 z`D;-mdC#_pkfM6>!M8*vft!W?iWsy0j8lKMW#|quVM-;~y?D%5zNK#KNx;I=MlVd7H(3aKxmNM3M= z=!Z8R0bWZ8hJPA0tSW94)m8rze9KX2Bv}G<&z&8_ViGjLECbPwz*Y8%;tVdcSg!FN0wpzW>16~X@7$hMoG;mAi9=ET;= z!zGWRZ+~mus+G;iP!~=J_JW}@oO9<>45+8=sB5Y>;hF!M^qQ%mogEo{B~ zu6Uy1n?!ttA^TJwBadOk^u3=``~;O@nZ0XaS!FZ*_M88mt;lyJk_V}Tv zOqgMPY)kndtcDC;`LI~O_)~x45+LMgKpq=#>x5#|0ph~w+feOBaN4kN@rAc7;ats; z3V*Jef+uj6i7shRrT_;NhQtgbQj-F^M671-@N!)!88kQx*pE(_PbH;j#xl~F3!;B>)+J;Zzz^SL1z8~ZWL(czbOZy`5;F2c)0Mg zB-r%0K(&c~`)!6Jh5cw25z2=BwFY|H28t+T{&*xqorbDO0fT;Rvy@gr^ca9& zlzOA|JGVVpZFW3*AMT-ngFdvjD40JwvD+o_CkM}fo*m!CZO#wQa7)aep^Z-~7VZkCe)32nBe5 zX+gXp!RY-_7(dm+5&9oTUN?Jckw~0B8Fru#ZYiL?(QN3+7q*??CZR`IG*e(-yx(3) zK(|b6a6xwwQSC$Uy0$@Gf)O4n?0>wKs^klj;M zirC=TvpPuyr}2{M0!4J}*!v#3sT@cLA@59v4|`6CzM|yk2YGFaa(N_zh~P)moo;kx zm)Efk`#}T8#|oV2&_a2(y~U@k)*b$Srt-qXRL$7;8JbF$*gT6qYx2V$LDEvvNomq! zir5fG{DO|ySA@NY>o@Vq27i0^6Q@?SKvSjSSUdxPG45##-4Xd?hAkcP70wltCAqS? zaIWy@q4U8xhq#BbN1jo8=uu6zE2fX>Ch$-C*cxL)rI`S6Lu&&S8nq<6s#zLSyNh_0 zZ>G-+z^M@&-99fw@&!+3_*k-vk%x-0j+&8Zq7`*QCY{C(nG^MIM1Sz0FDLhTo@D0O z6PG8m@(hxW#{^23rv+e_Wm2w81f4r%Xl-ms>4vaqvKD$=5TECHO~h+TM}o<|K*4^X zs#*9GyV459Sao?}5J~o>cJZDS8zGN(FRp$+PO&^}-@b8Q(6+j}3kH{BV03th*n3#T zi}>@^xA#_?9nzI{91{@Bk!y!ZcpXqN9MjV6qa5VTk~(B~t-&}I(4upC z9ypZAK#@vLW^(1%wL9s>z>uMRso>Pr93lMpr%ZvuGHNS9ZGT^=VPyMZ=MtJkZ5kV? zX%PC#mSf8kb4wY55)uS`uw{Q`1pW)8-9UJo@|G-xZ*4=e zOns8XIVSTP^DaTd4gpGBA7LtQzPIK3q^PB}L@+v*pE7 z4D-j3HPD<%uYW3#9*FR^BfBeDnyyc^gWj9pC76}lTV(Ra0Xf`xs)=2H^bM;Xu5WG< zv8(X@eyRxs_xg%`k+b_eU|`T~9o}1-ejv!Esnvq*(mw?CY=6m6*X9w)~ zkUiK4w}1T$FP{I|q{-F|8c^f$7Aa6lNuLwUAfwCNpyxkJR@p872b?)TcFL34b%h01 zY~C4yV<M*QmWMWV4+XqF4Y0rjL5;wqJp1#T&V z{Z>nNlU|E-ZeNSXtW!7+4@4+w)sc&Q9!nH=Qh(VmH^XQ(X|vld0rz>bDAyncZM=t9 zo;rw4vW`04JqgQ{~%C$xY>aNl}K(@hFX z^mu)aks%Ms5T)@9+jV1_@L{ZXgTlxYxhU#Li+q#0D5B4kdpfNImiY`=%=3i(bbu(S zyLc@F6ND*T5j}r91x?m#97kNrkYzg4X@5=@L;J4k@I`BJdB|_M&Ld4VHLB|)7E$fZ z7(3P3`(bnAJrcP&X(6nxDHsVI~c$Y)CwaN;RSZJX_ z$#(`QT8>FESR#{$7P%nCnFl42=5bUwm(3FD4K%f^mOfZL zN<+=bcZMBuKlCwR@nHL(8pqux1kOr~yjzD%IX3Oe*?as-$Qpb;haT27EBTmzwaP=m zAF|6xPxYa5;RMth9K%nNd!$~r8Gm<}0&){n2Ecefk04FBq?Q;~-ghGMJo zib;&jwtjSyUwaYst4naICEZ3Zs zSB)zcf{eOWy1qwV+9&jJyc|{6Qna<_CUEH3!!XM_K8$;t+I)f`<>&Ga){Q8Fe&P$u z=4Sgs{S>?X%Sfo~Bx~|ft$&nH47)ogn>d**{O;cLd&$q)OeDpca(n5nG4|yGE30&l zQt;hjX`CL)Ti=g9L8}2kc58cp@lh0YKx%@X@G++e`D|0-tCHe2%D7BKa%SkFKcinT zq4i6|kbFC5mp_KygvUVn{_&S1z}AcIFK!&lioVnbZ12-^WI3SLMt^ZTJ5n6Oq0z&i zpH?+|DPo6}+JQmoiQ!G6xY{*5GLt8P4d3=yI)r*KW3Ck2$b4hwY^CTbov#*EyBmig6<6cB35yHv8?FZayHAbF`dHj zQFxo{s`Cn_9l?Qq#(!S6iD;$ioJ3U@a*|O(n<|y0k28PS7eK*E%l<<}lC5@oKszh@ zd6P@(JG8_UpU8CBrCJ&h+gztmQ64Oy$Lx9aV~eN=;G9WC9@a7*Ar%?!4m|xL(I|8mKqkTktx`hMS*o*+hxB8|)!^+pW|L=jGa5fP4SYynQ@iUk_4N3yUea zDEnrI#s(^TQXunP^|U+0VBtgUh^9qSAMR~$JPFpKR#(Wp+5H=ec5RmkuYzd4$)_oB zhhiWCmcW|iL4TcTj)+gSe|^NJDA2{&tswAryo@{v_315E&wgrfbx`lNgOF$8Jo0bk}HN!QHL*p zg?#7!q0iF8xA5$d{>{?j{QTnV;!gh z@f{-%c@cCeU;`=)mYK|Ps}BZ^(lOHTb5Ga&q&CX`rqBudcqyK&cu z^lB9~Mvop*$1Y_qr++X8TLs}ipSwF}yS5V_l?GGGe^8ui(}bEpiB`gs=!Ni(G8T!} z?LPAggClfc54`qp?0#gIGkm1rdmlH(Y0hVKy!1Lx29LUu4~0{B)I< zf4)ewClmy43u?zkEExPbBtrQIJ|t1SzCtH;ndnk$xJD~$KVM%d%{=Kh3~gg+-fu^I2B;zR-Kr?wRC^*Y0mQ+?;U6+iMnMKO zc$*aB52RTbP1gT5)==@!Mi3n;y<+8{Dg`59^N5K>{o`?}&k>E%A<@wETh|=hBHaJ3 z&b=VpNE?GiIJqgw z^tY<29D5CF+kb~nCq2nG={I^5&LLU<@UZ;4CBnnaGm)UXaTs(?wcV|8Xih2^wYJrT zA5X}p$KOSZRV`GY!-$IwUdDdg94jMVMH8S@fgas7h~sax=D-&gOVz1>(yZw;G=hB| zrN<$un>f82?SKthyH{gsltv#cXK34sBHb#g*j?a}P zX5R8Bw1~YLwcaq8ZYd*FBsR*3Fp)6am$`egl6lc-)`$!X__!PF#e_BY|1OfIt_PbJ z6a*v*38|VUmkADmW|3AUdL%|YYR(&3|7jz7#Em=9j z1C^dPpgvRw$uS-dwKwp|qqi%BKwF5>xhD-4(DIrECs@@o=WVxsc~HE1DCv9OuK*$Y*kX z*MG3HE`4l+LYz!GN;;RvC?stS%OBj+T_^~J(_e6=TFiS_yP%qZEUaKfZ(E^4e3NHn%>Ky*cIC_Q@olC_HdjVdYi>*xF4=0i4$n7nzWbIGz_r2bxGgb^@^aDQ*M zETX5vTaNLMkr5b@^Sbv_Rr6}@rCVWdGJcP)heSa2LEI2`W z#L3>Z;2`_*uwHq`;XoY{5s_8qgPbLZT81}$97q+*Ec2}mHYh129&n?Lc(^0J22vc+VG$n9X~S}OIV zXT^)t-SOHAFrpr^zVL;EmSu(z>nbUCd;)(PaEsZRK>Kc0R9rvEv7B+mI>T#8Z!=wcFNRZ_Sg%hC~0}mDApnx z5*8#E6FePLjot4|RulDP)P1GCLJ1MXBLM98XPM;KjJM#|F({CXzke6~(=-}~|K}MR z8{vo}{N4}EN)t+p>~vbYpza`6b)TSw)^rd2u-qcQWZ?k$ANLs`J$vYyNjb7yF|0rN zvW7Lm1jO%!c$9Evl%307#zr3?rsfHxsXLO}+d0$IJz>oEFd#>jH@S?sp^Ro^@NQEa zdN21TA77oQfM5lB(SN4o6Nn{#@fi;BQSaq`G{e~UN>wAne?7Vat(nCF*>p!^iarZ# z=G^n%VE(%?U`!H_@t+dL3F;qT{~2Tdn=aK;J2YnGFFY*{>LVJ3t9L1_6DNIoap+`7 z;WF3v58M55*44P~WQDr$_sN$$p^ld1;U73h4CxE8|?#)~ zXdT3WReyB!c9%X)QwgATjJ~gC#&2``q0CL}m^i8SVon3^p#_xbT;n%~JSLkt2<%HB z&wQ$>snl4fGHU_D#pHs>Hr4@>3|61JZm}=2S(2*Wr#jwRhfz{i!oIm zcw4Pd&Ki(cQ2UDwhwk#u2)vJxfgxd$)cYKpR(~x{UZAu!M@N>Iv^M*qdnz{}1(-2_ zfxA<;l~BUdZZ&{3&yQA=hbya6y0J)A1!;pVPU?e!Y9f~JO7%#g=5UoMxqscON(=j? zAbXd^H9YhJ=YF+*H6Zn>jVTb1SDsVhoRV>%+NMgV_Ize99`&^nNYJkG1reOOj~JA z?amF~UH8t_j>qix9T|#oG76Q8@At3Qo~h1jhU0ASnf6}itL|&KSv-H_zV!`H0e=gs zg?;8dQD(yw037*+!wIba0PGVKsoEb#8~htW=rFIUWdBm_)p1uWHa}>Tm_?S(n*D7n#}>y z3}s?Kl00@DqaM1c6uyyJd{hVgo+*!#%Z2BMJd4kq5+sboY6v8zA+t7(p?~P5fL*#G zewm{SGP9@fW+y{qV7VBfa}`V74`~=>V>gvE*r5*6k~>U!_kmc{71cN?yLd%Vu&FB07@iee zF06~g05Cgb;Hg`PaRJk6%i28tRwm+TONMXfz$+%^X1H)xPR+%bVHnIl`?B%GoSKGd zjJFl6=il;(L1(_Wx@R_z_A&1sd>G9O8r*q0g+<{twNJhYy~Wc(3V)lGdeJEtf&H$C zc}y+a7HV1Ub3C5_8QG9iB6XumZNEmw^VXB{{e z^VdxvMG@@6C!_g7Is{XQ*Y>Ff6Gn^i*OLn$0ZgUpW-KCpC%g;LXkekgr|T`~RAd13 zw*{Y3@eftbQsvVhjDJH7MG7bOQct6S!Su_MCvwl3>(a%{+jlw!m8WdE3@c;ek~^p-ip;S+$DX8)}{ZKv?$) zs{@ES*N;s+1i9LoxP;5{V6HYKD97U1G=K-UUVp~W4I;+Qr>o~iBm_M~v-d3~xc%^EHn;1;sAl}e zSzw>}@WMP_Z%WTaz;z$5Yu997=WXtQGd)u@Mu)NYZ+``3IoNs>?pjUN#Kx&d%OVDZNR4YRhYA)dGBoq!@AlI?!xXTj6EfQ`U z8sYvS(|@w{a3rOn!>oNdI>Tx{h-ekh$ zg7_uR+v{}@H{@{;Qh*!{D7*A@b%n`_gO%_EWQCLiHX??tIHV3LEZH|NUeL=N-M<9J zGU9mr(8mdUlY^o_Rf2#(f_>FCohpRv39Mz2s=#jU*6u59Ci?7t=?Jjj%SsG5jAAYH zGJmDC9Do(KHH``H8n-_S`4!j; zyD;K8LZ{{XI2KDf+RHgTJ-bJPKZ}|g;|$G8&LUAr5@ty`D$KFIz?^}2N6L6ly3@(%cYn3B zl_3RBlLCF35(2nW1ORwsSu9v&iKpDV$F3KQSibNBR*truI2yn>o}sh=w?hc9(TZ)r zwBKjy-8s7>N|{m^JhH479e7bo(cWadGF+#BykVxvEGE|jp)6B{QjCO(F zm>QN7)d#B?8Prqk`G)U7;y(O-Ue6sC@i*^_HMsV9mC&sWGf0}tlFHL&p6;1^>l3Yk zjKbXZGTm+-55o^54EwlCSoa4Cx}^J2)(W@;wNkPN$ej(#;8~X(PnS8`x^8H<= z6?W->dEUPo)PMH9V%LS6u3o)Dg!xDvlQvT*Q(Q(-fEkALkvIW?thx6SWM7F=BwQCt zUlW71zjCpeJx{MY>$fYA_dJ*tdF-U*{zFUoi__t5^74wN6 z&lH+bRTB)BN*uw;h)FsN+JZKZTN%kcukiC}GV=))0)O%mCeP9J-F4HYg>_>mVXCq} zrcS`}8YF&9JkV<^|NRs#o5=CT(U*JOYNO#C$JS-6Y5h6OB~4k~OCfNXQhZCdqlBR_ z?8Gofz;v$kl(mZ$o746fdT~7_o3jEb25rdWPfma=*7f;XxA9`n&(V@tP3rS}PtdQ>6u`goj+{vc?e3LCcl__V< zzj&v9*awGz?9(2ool~!0`Wr@`&K!fD=`{;_bAJv;i1Dds4*|3szSUT-&W0z;vvh7% z*Xl82L#eHqfT#>Kb#YEL5>RO4jy~pzSVNxGZl?C;j6MYRaWK>0pUad5Ty_(ZbYbK3 z6f+aaIL91?WZCaxhCAt;)7d3XdI_+T0GYgtY!WqPIy2`6x_L5tw(B#e$1htq8*Ltv zbbl3gAD5Z9u=raRF*w*Og758NjT(M1Jc#It%k&f4U0Iw8`Dp+cuwh5w*rn7CEKGur z2EZ8vYb4gkug#3R_MCH+ocuSO$8-BEf;3oWo7V@Ce zU&iY_HD+3DQL1y48{^uxYY^k6HUVR;pMP7hnwy#9>J?gdq!P+g8UxzgFE`nd4eW6{ zTFLiWKzHD<@FdjmtauK0PJx7~q#-qHqBT)Nc;2m84n~7$)&5>wtdFRY&Zw|w5+tR| z)0kkbuu|jquXxqJ#Nqubu)7ZHxN{-b)E8sFEY+R`E5oF@B^ZFQFV*_BgqdJaTYsyI zFJg-rB{)mNbdS*x@9AlubeTe4uA#JAf?~vI!!V#2_*_BFT@l0UsqQ3I&#_pVQ!u^I zEcGj^dYYJyKqSYZYIeuoaS8qW2D)(*zT`qgP@X*V`$@vj>l)DsJ9}0tMq|8!V{>QL z(91*v+cy7gW-l2BKh-#{8nC`$B!5P7S=Bh=BqcxJ{3?)a0S7-lN0DM3btqse%%D+| z!+jCS?CrTSK9mN1TO4|{968x+<#-d(FU1|1A(f+`X=hQK85h8T95r6rY{p_)@BHdn z%3>tHet^zUG==VCLKV~zF+S$a^fGkJyeIdoL+J?3xHiGT3S#0$%Y znrccqK-%Ex2IRm;eP@G>oH?B^4BHL^W?`ZnFsv)@qiTcCFLqZj@A(TtWlVfcrzZY7 zzx^w!;tRzuFZ5I?wKnQ?-1cT6O+iHesMP>XK(fEOZD(+HVxusBqvJh)m7y0Y$?E)i za7k;{H{Fqu6LY@sgEuP#WajS`E)joWf$WH$@d~ksesQhP7fs5~A}Nx@ z5-AcH6yKc5b`DIXLVE{KB@`r3cS!dj-XQxs9fCn6hKR2BjA&#nzGDiyY-R5sNwLh* zTd|f(xz6x#Y&tr;ltHXe5VZ<{wgW0QBRV#QIgrVHtoTyg0a%Nz$zr|qq(XmD$ufFC zt@Tm=uu^%cP((}}kvw8L`2mL_4Y9K6d^fI5xPrnM^WK=_Zrys^1cLrZ1 zg5iC;n!7t^Rb9wOa4zdjomty-MSXR)-_AIE&&CH=QnQL|+l5wI#T5Bg3|;2w%^T~! zJWMd1OyD^hzoqNoJ5$hc+kAf^eI9(@KquQ}QvAxu^iq_^Xx>mhH6%MD{RS%L)3p#j zll?~cM6OWhlr{2=V-{4(#RP#cpTXb$HGHWjSUO+DR!({%33ucv=RUZ)#;MCQ+%vEP zAZ|N_HeY3|x&F_8H7n>SH2|MdniK4EwN5j4)-@jppDP9W575$M(!zh*8qdfaJNeV) zya6$rLt2jj9Vd9k6$dbHT)s!~x@)FDKrm~#Dj9B9N^VkF*@H>E08E~jQx0d)7cP_b zhMB}Rt-Mj97vdf}f?ff!t{&rMv(op`pvODDM*hUAse>|Pt7H2YmjH;#O+gfrkon@y z@JA$+gM5%)d7g-7ajt*Rk(dt8?{`*@6S0fL`8T`)F|e|OT8-aEAG zIvPYyCF0Rq*+};`6ds;y!mI&sEl8jKWtj}4S6#X)xRxbuM z#(RnN8Zo`)IFEk{pI0Q=+`@tOGNS2MabuA!y zYH&wZGDaK9r|u8ldg~W04^VG~d(5RC{(nXRdPmkG{w2LPkzU_Bu3X zHR=nyr-XCm*(Gy=?KQ!Fzo0&&q>JfJ9lZj-5b~<3Fa8`ZB*8-!Nr4q*4usz;-ok6S z*eunnkM@7RT1V!Nz%!h1@zfqxl`=(5${SX{{e2t7WS3?GN;Q9KS&})N zPTBraozMnMLVDjKazq@2pw{6Q&O%fs`n7pAy&oxWIBx#>+Rn$tpll_CsrXey^sU*_ z3;t@YGxq$q>#WA`=c5Dxb6zFd!eRPqLiyrwNBMuN(Byghq__IaE5$Fw(B27$Pxjb= z-LYRi<=lr^JZxgJ0MtURf!+a(wQJZ5Q#;ns$v2VQs-5hrOtr&_j{cP9Hn-R;(8J0r z%co@XyI|TG81*VoF5Iz!h9gDrEGIM13~4uAU4gxo+W`TY%l5S9uySQR3(nrIL#E4v zG|+#u35D5wB35!9)cPdriw#jcZ+@<Gd=Ntk9i&D1;k%JEjn8if+trNqIeZ*1L} zPK`6PSICpd!H0%^oXlzVAXF-CMHregbk)PjgD$dB&vEFPznO=tH4$$fml2U>%g#;Z z)s^~w*?Qy5@p^*^hTP(z`xzpM{>s_d-I;&WKCXHr?6ji}sao?zQUh8;8O5hs5xBMd zb0rw{@Yy+?EPRu`Wb@&xrYDbh7l)3}dLyp0cktb(WEF=A1@2724yPSS=@dwzx44Ql z#gK7Ce7*E(L~K7frRv&btJ`_y=7?3>qTt{=vRGW)InEGfY(u187x+d6^h}}Ve$#)> zMf-`Z2epOQyCQYULNl5d`H~-8s#@(><7GJC#~vTyt2ZvI}@AkM&IkIr(enZJpk}ELhbg;O0B+VhkV^i-X7$GH!5#uY1zUWTNQ(v>sO8({5scganpaiM=5Mu zcfdxT8Fyude4%Si3v$Z$zf^}Q6z}z}fB*r#LjeIf|9@T?HnMkdvA0#RFg0}%{wou% zmVe*>(<-sE@c;6~f0m8?R@<;c5yJX{u%L$2v1x98vWSvC15}sl8?w?TND7zNhrRp}s*?+zEd^fQO`1-sf7{clx zgCW6@qKzVjVrQanH6eslWC`85CJ}1WTQ1@0+ru2Srvh7bRqMn)23xla+ibL`E$5bI zy~7iC;m_^bNk6R5Kw8+7g*!aIaDri+6@{yMLG5h5@*0Hl(?R@ zE3~HP5WybCO54duwX$(3TN=G1W-E1njAkzW4i=Axe2Q^yG#VfpL7EpAaD<&$t38n< zm!M&LCJoa=*7IPuZXYqKRduqDs@p6mCwxH>7f$BwRg`_fzGRptkx?(r)-BY4%##H4`IfIznUg|2lp)Z^ev*& zy$Nxp-ni=`VYPN%L06s5@S}r2Ko&U`a8)|*;(w>YIP;EJ0LGOhn<56C&6(B^4s?kD zL>}AEsw`*sKuCYp5(E{m#3IZ430)>>MOxy7^;>jF`57iMHo8MJ`hT+?&dkg?llkYn z6^U`fJ!lfC5B6^C#T5&X^1h>MfW8dk|9L$=<-d7g$W4EGF%I6m|6{B(AKX1R#czs>X%6<3)Zz{PQ^LKDu9l0tNzt|2x)V{tu6{|IM?1u082i?35oA zM9Q8Vq!PX5fj}f*DC1c%v$a5iMnP#Mtz}#;rEXdu2LZ)LvpdHuUyMX zFgv;WJVJl(0}o~5hM8%v{F8avV7tuPtaTw*j=4=|-GJxPshK`v>phO-+(lL{3;(%BY($ayk*7)wvewq|WK`6h&h^$oeB# z&^cuL?D0}am18I*YX{ff%IIDQFgm}GS{ZL*L{)z(r3KCTI=Sz0A^6ye_A&t;TVHzn z5{FG)q(bWvO^XULPAkzHj6qH1GMAe8@)iy@8u)e}82tlco=38-Gl%-gl)}Q48lj*c z@}EO?di~)Y1o}5rFhD?#|7Sz?@4~3AXOAm}#%GMn>BHpKE>#t_c(C5gHOlK+d!+Vc8k zo8>vz>ty=!>vg5J7ql&?84pF$EWY6uVje_f#zba47Y^r1{7*)OWx%5zhr=JA025zV zo+w}wmNBh1AQ{6}jJKy;l1vdIou19cXFY!}%0zeraPF2EBZ-!Q&#@(%7UN<9_gp>r zW`xh*CCZ*!Y^IaNTP68U!MeWi$k4JqJwKc_H7f<@-nyMbO-kNQJyoT#by27$ei4M& zed2avK-9+;;aVv8;$B<7_f>Nww@gZSmR8RIpzO^UZ2(|t;L;R1;#lmwrfxn=pw)jQ z8c&j=6kS`b>g739kKnn7Ios>0l?a!%2*p|_Xf-k=;3IUp{W>6|KCYs>+vOiw%(9y4 zLmM`unrD%ft-{OFS$rl&ueD~a@W&M)ZjN%hBusHB>v~Fdh2`*u&7kfx1Md)wf_)`s zFK{K`AB~rZMhGfxfN6F8UDGc*o+f`6yI2u(4j2qOBY8vF<%`i-(=!h>tqt_miM$fq zlDC&jas4{OEVG7HNW=^u5p_OOI5F7P=sgg4T06ZzkFE6Hs~0`L_1tRlJaadr)bw`4 zd{55s)H1IO5H6$*XB|PCdu}w;noRFeuv`Z+A6v*P$G`PVr8)EnXuf56k}iK^=~>AS z<>pIkK-ON+jpklwIB59bs;Rf&F5*nde1_GH8iE{IcsWO+GAZ1?gDG02zSz_pZAWRUSBl7{GdXC}aA!4dAIJbEA!iQDnbBIfEoXaK9gv4k4cB_PKY+ zp?$;27;W^a7!d{NI4OwTt$lw*C-J}D6CTixl=r|z0oPp29N&Gze+E7nu)JgE24=A2 z2#mUDcbJ%c!Y{%i5G0ky_)5#Des6m06>A?2x*a8=$mw+y_3*`n9z%bAy-@fyr0B~5(6|Fa^Hx|0wB zLjVCiApij>{TCI%#z=q8)Y%zeZu)NnoIzIj|9va|@1OpM6>8Qvb4C+G`~HbQ(Rn7= zHgE*YBq-?*j4m2T1r3bRK%7`d1yj$mv1Xf|1I^M1jjVJFa`Qd_TRlHx6@va@_)1Oq zkyh2<&DWS^Gp0;3RGpc@umAnly~ES-Jk#s2q%ykCVQx18VU-amcknpKR4cb`R*wtA}wcd~d(2rO1ox}*d%3#@y zP^QuJ64Yrg@xi=0wtoW zi6PfyvnEXO)G~jaAA_sRr0fMfs?3@YF`*zuNjQ#2;Q-;P3rlyRsf4y_-dV#zjx+HLXe=*@jKo2wg#{_m%yUN(&m)?8vZIzAmI8&%zYkPk!VGUDZu@qB*h8vcJsU}r+ z(@8}Wm$XO;L0lpH6$HDJ&0qh7?-r@B{>CgxZ2(WL1AYLWbhs?}8n_KHV@ zA|&FQv_^kMsV63#LD_A&NjDNqfr_$jxGf8DiYbLcD)2|lbMQgYy8Lfj$ie0BF3qqf zW4z8gP7zrz+Ov}4-*w+L%yeoX=ivZEZg>~R%cZpiKFYFWs)?0$Oc)E)C&$ZC;81Xa zJ4tp3ll(^%%ZY7KI7r7aK|~4VD7wmD0|^*n1#*AnY!G7WgiX>^9ToV;r-MmKf!FmQ zY&fC%I_;g(QF2VoMyVAtQmNjHaloJwT*{myb=Oa+Ot*kY6kGR`ww98Jz;1JOC*(KJ zCToINXWk%l?9@a64JioM?o)e(#A|?yO8~O72B(fEt?isrToM-REne7ci21GGcAV}t zw_bnC#pHarYua$aawkJwuoGMYw5V38DYtxB z(>`ah7zTR&B$x~D1|An@N11dMf>6daN;`5sGwUKVK4J?_>T;W@3`<67hhb7+p%X(2 z)crElG}bMrx8gj<_d7}`H%wP@-Gd7qU4DOA=POZ31J6WV56Bu<4r7m&GSgHZ=RM~n zQ|t+;;l2vw$~<--G-do8(>=&Eu6x1(x$dudewjeVvTU@JLTf?cu)ayW+Ed{jMp7iU z?^?&MnsL2-?k%qTOYBSBwyF4@i}X1u$G+x;dFzbKSuU|*du|7-j&Rt>1OhdfIN*QZ zTcgRTy%hF}av2T^XZFQNC`$*q3R5T=JHFri7*^L&+{yLzUPdjkF z8hm}b=a6F;6Rv#>0&slbGyJz zg)F4?4gsmfYVg&qTyIj*D?fo-6>ut7SCu;SXP zjklpm^0(I`R+)a|6$4Er+)aNPRln<-Rey(MUcP1S0dXs7)1@r7p&oMlUXTu8EQ{$r zm`NM?V30aGFS2I51^u+0_MW1?WtHa57^D=|;ajlBzaC_It8ci1*-0a`-VK3G)puo| zm)ik&s|`z;yV|)WdJISPXVb!|M61#6QWkcbD4cFhpCCLx0=YncDZqc8pP!WSJmIxX zc*m?8vtUQaJEHcic1|ku-Aq54v3J<*!RTL)OuFORJdpmIG{pW*8chFN=NtLIHq#v7 zVybGdXm9z?$w0HxZ}|a1q}-Hwm_VXPf-cX#^wmO0`$VKHG_n8(wgu)?a@#Z)OoB0v z+w*?N+x+N8bW{YqpGki?8TQ9ny<0Q2&xk;6L9mDjV7#L=4;smo>W6LP4o9`c-^zxG zN_I{5_?E0>)lB*0fnzUwgFohruVKGA(r(5)n1~)S)n+2($B@b%%Pn~!#pMTWR5-fiJmlr}jBo+7y8`Bg@X}ea%lw3;=E15CVx?&AG4v!C@!F%s&Z^l_ ze1M)whbth&8H#^#0n;S24DBNA1EaUxl5F_CS?%*LE$QE9PEgtqfq<&X|LeQ%|4YIA z_Z&_O+8a;9M*u9k~b^4U_7K4$XgpSTWNHZT-=XnEZ1)Yi+PH zWr5r7^WDuV@3*8`)E-&0Ts9bmmF9mdj;fhJJW62Hv6w_TMW{it=E zod8GTj|1LJgSLoVfL_)p?moSoXu0K*Q->w_8{s^*ko-@*ho0MD{r3C}DL-|-5=%_e z@j0KFQJ;V0Y4G_|Yy?rDh2pOYP4X8#jewo1~LeZ1MAXo?s@q}m9DfIiIa~$*yQ-o`&i?>2ou7U-1seN@$jcq%Sg?G1!{W>sg zKkyEWjlc+fzEH&zMl_z7ZV)20jniY=6)#A6ssNj4(f7%{GdI;LLkWvD^O&PM5G$K6 z-DiA*4v0QtjO1w2Ah|R=BpCJ&EQ>Vel*fN6BN7sJZq^!tCf&agmeBuKDZkrW)0&OX1uONdm-L!$>Vf)2=7xY$&8$m1UD85VLcGRFf39VT>8Ed_bkJg4+$}mzKo<%Jdc5!Fhz1ZoE zd(gIBG&W>SU{xe|HpQlk$42&S8SLP=Hi!a%aQ+Gf~$yRt>ZP+JQ29^`-Ma2q*Z zzgC&gdZkyb#@(;7-k5^2$adhrlDALgt2>N)E54nDPH+Sw*w#U&l*f)DwP#oZm3d`~ zgwT;kgy;7gx{WH-VO630#qt9VlR-k^%uz$(P$cJ|6D1L{v1Y88$yi8Wsys;UgW@AQ zFi+zS)}00LUdgbR8=#gotE_(|pK84!qw;opDU}+4?jv)QN`Cc9!B9Y$jJTI3s{djt zt~30mYN=+D$wy{%r-W`lT0%UmaIVjVr1aWJliSzXrm|l~FKQ2|CpTmYcTIk_+?9QDE9|4 zk7oF(HssLQ0}X$4T%BBd#{~sPdne6Rm(AD?3rWjMStP8o*UCLb& zWLwKz)ve7o=0aDbrJ2FN)Y+6i-r?+vT=MF z%tuOKZN&?YK9Nm38R9jUW(AX9+|TIeBUfbgm(a-G5e_cl{d=1g4tuRw!Poky6jp|- zpkp?#Xdb?;=!<_e_N6GAFN_@{_SnibyLx&Xy@VM5ZMU{djP^fy5f|9N`pATSrTbnW z#QRvBr+G8LXSH=zRiuVSdK% zQTX`V4G7;ttEybt6a}A2OTWFNQP@B8Bh&5-x)Kw9k`;fGQ1QrPkh2k_uIfM8SY_a%vC(XqBp^rTL?xr*um6CH`c8>hcXIyrHm_6-Ax_(Pq~a zj-W5`;9W&PGvN;P>wYLkNn2ac!)A~7tTXAF7-`qeLpVnL;wFCv$qukAl+G$k0o6=} z8t8eNdts1WWz>K0QZ7V)0K3dv*7<;uCXwX~m#3pO z#?CL`y%MLVqKp?s7hO1@Py-$epV17xLt+ z-WGqX3xiK}2Jr(UR3o+X4~e~9`K8<>8bZw2WIxlEKI8t|?PfMrKQr5-)sw#+*~##q zBGWgnx(OkHt^lE``M4g_uFHe2c{+ktGG*+pQr2MEX zqNT?Z$eLrYpEve6YsQ~6f5&PzhP!{3WI4}79xLq%t&*H8AM%b>K|K7G}keU4a zC%itUbBO4jz*gI z&F+o0bdSi#3dM?A#CLhZjNPjZM8r3Y@r3P1bKa=b<59lYVpzpY{vEZD%!X;L{&263 z);>aq`UD+yd5r6A(vY85zV`J!)Pm}Rvs;-nGJQVYGNP-VpiWt(smf1;tQi1L@Aa*I z?ZHa?^E$b^nvA|q{_RanSwDaOaVKF+8#b<^|Icuu=%B=JHUh-FUiS^Dm3lm(%OY3b z$^rxe)8G2yntKGiLk4W3JX*{0zG_3r1u~L9xUEVs5@+5L?Gc)DMckpiN~aG-#6*Rw z^=5X}iNdzW3&e29Z4qVGqSPN#B%9lbmdwsL5{)~{vNT}0&O>;FI>~?D8Ly64ji2bm z{W(Ar^W`h}<48}CVCexSk#d|J;Ss6jc-QU-DkqGno;WN4&fyPJn-7cxBF^CgxSx9} zCkfn0P_}Tof(s*p2v5d}APPi%uKa_v1cnWo2m((g{oBM51HfN=Bk8=;SP=jQh_!nW z&S2!n1NO}Tr71&QE02F5N;9EJvMXYRzn5ZMGUdd1!lf=(o-Ij^`bc~fz>>gFzDAw? zN2|SHz7NdS)V9*DKcYc^MsU&uWre$c(U!VeQr(9B7piactzz|w_}K#6(uZRdtChxH ztF$iL`%8~T`~%B?nU96E=7r^l34*{o9>Fmppr=OcW1ow6z&?M@UHwh%t|NG~l#|St zK5U1oqc@}*d~^Coo-kzzcCI}QbhIQfWbZ^8yhl#2!QvXrc&|*7%NxY0 z)$0tNFXOoSi;_lcMdW(kFevy{=UiW}Ow|^oRwrUU;*1f>j3c!-0p%S4VJD99bJTrU z;?C2%YX}9Dm5x4tj|S(C{?0IhJQLX+I|)Yr4Y+^h=*m&2|CQnGsZRRJab|cz1aipXwJsS{t!TpOXd{q7Qp&y}XIp;bbrW;6YV4Z-?S zgQb5;ton`B+T283jUJcw${!Qr33f+3U<1=hpBURW5cb^*-KyRI>pMAW)v=95d-frn zFj>`~y8a4viUmGe5~u}?hp+%#f#4$H4k?3<+ULv zzgA|)3}OdR-!qx=>_u*AQ@L}q2IU7DR9wd`?~+r(3=F8!hWJm0g3oE01H{wr+suQ3{JX- zFnWk(36Z(YQ$`#VmdpM|d=NuPZw?N06&w`mnm}^I&+}%9w-HU(z6Kw>K-ni6{LF#S z_$j@8a2=WP@N@8>wb<;_#bbYV)t?FlE@Bv+s0q*RwA7;y6D@V_XweDI z5>CQVbWjP;n6o!XAEEH)wqqcifpetGyjNm*HHDbavtvboevrSJ+y;N6<Su5cdDSTFI2 z-HTQ^5l^SY<9WQm7x}H9s$@=lp>B@Mkf-}lFc?zn2 zy-bvRaIYj#qs}q^C zoD9#BtY&P&^fY*f5-*h}*;ncJ+?5=NYFN@QOiD&rqxB!--hc?J)98&BRELO=z*9p# z;j)^GMzKld0W5#+=<{wl*1}w3GgSkq@r5Ctf!l{D-?iH6 zcs6$<6)B?1g`RVDdWJEhC3k+qtOl!vRuYT>Uh4@>uG=OXS6QQcZ_klwtyl#HyYyAo z)rQ9_stz>1eH8MqSS=8yVw$cOFmzyF!E+I#-cEegt2ckB0xB!20R55v%$O2AC-snA zrEMYv-=Gta(ZUlajeOrHjZf^<3}JA9&=qCbrXGFAAIMH5_h64l%V_4CkIvtUM^9bl z)tyP34H#2`(IfdkCGOhkaC>L#3d{_~*Yw~$UXiR9*mI7HhJ6fPl)MKS7nA=ec}rLt zc_~Y86ElD5lg8kyx+??>AKa5h_n?|=gv42#@Wzak+2`}85`3Z4eL~F{SS$xd7nnTy zfwMgB5Gn&OFoD>tRNkFg?TjrtF-yls(Pj4qnm8(CqkQ_D7iU47&msy?*t3V`Nf5%od})rU zhX?@4hcdBM^bwW~5DFqd^rw+pO6ueggZ>PCY)(keByNWv34h@v?p5NSP687YK9xrl z=+A#Am3S6=TVG~+{I!=6n%OaFL7TZ>6tRxdjMqHrIHY4Tg;KwWlniP{_K9SJUrsqo zxbJ?!Ex*Xnr2uJ?IuIZrXo&y*8RtLRP^s?NqX;2=rGjYG zXb4qkHh+nOuRqEfc=x44%{3*oP*B~#+5rBnlD5M3yfI{G{-tK-OKD^+NYO|;Pm+J3 zeJ#V@t|y~?ZR$o~#}~*wx*85e(<%NjUN{rbi;D1(ugFJ>Mu_+_ODOeCwcj0}DE^KC zwf-(_y^Z?22WiB9@%VQt+Kt=bFWQ2A1d;W};vf7Z`y(J3l`ZF{h}dm#xW)u%<^eO@ z;-S(UMeM>6;d>Sd5m79o0v;7Vc&mT7+jfbg@CKhOrDEWk{K_(w|9~hVnw)G&Wt>qe zOFbk5%2n;EiQ?EG(|C1TOtv0Q{fP-HJdv!FaIuZmD&qE>E%SqT@&L&?aO0k<=x}SH zs{4kl7Ez~c_K?AcxPUN7dIBkHh5n-MQn)bKYWvcO_zlbwLRW*kaKvC_WO9Ek_>)>7 zk^IHo3fz!}i#Y1lRyapko2fe2$hdyn(84lOeMz17m`0dY-^tNz-+t$%{C4FDDSCu! zmM&exLIQ$lD?yAi6NG^Y`Ty} z^yu##k~3uSZ-VVqh`(VuN5S{|8z*$wf%%Q+xDYM3S?gtBHMV9R{|va$7mTBE$3Q@;B9b| zqy(=?edhTI_49J&F^VLB)jTsJzx@|Vg{_bi8b;+u5+_SG z;pg`O#iCiF(C8*h?KTwc4=|O~F(eHgX7Prz;~}8PcPF;J;+UZ|JfJ6Zd;_0R!y3+1 zCRo|u-Nvt4{-K}Y;)LESr@bcGe3F)MFN+T2zo+A} z?0f#|=Zt^AP7kPi;1URP`h7fnyhtvfwEBH6Ur~<|jqvFez#2a%G|=gjUlox}y1j!u za$95Z6kMlN$ZpqCb;uN`xS+aOlLAwwW2; zvg$9MoarWe4rni>)1h%djRZfysS1YbT-B9mjZuHE%1czYG#8E6eBGp3zEx=~^O$7S zQgv9UjHd@vfHd$mPe`~8sjQpVPMB-ptCnbvMsM4h=lb=g7*loN);g}CLXAXd>UmCY zq7K=1;>K0%PTAvhcoU}i9nH4*Ojon0djG(O&d1jAZFvl%ZeyyGshX(A832dAN(WWS z7npxi;wU>EBF$s0#sjXSv4VCMgNo?&B}YG(J;0W??}dM#a*;Vh;qrxEJ7${dQ z{3Xg5-Nje?_p)puxaMRYzPS``V2oRv>f!oZNbLEJN1)zjU{8+r5US(+pA1S=op`{0 zB`xPY%<2sB=B!9ob{?JbE~Svxou4CjonwDadCLmu5@kS=zJjhuP3MvA^vMw|Iazuq zJPJd!BdSK7&vrSygY}B1%G_7x?fMLxhN@Ty#C(wW_Kxm;B6r1+pC4fHkB$K~v}Kj- z41O-c+#yYtQ;MccGh1Tg37FnjAO0_V*1zH{G5zHe_J4p+w*TN$?=PQdd@Acd^e}(Q z!I9B>HEdx4KE(WnvPE-(HvM4LGYhU360IyI=Gq3IG86@KkbeFO6mMS9ZY@Pfp!{q$ z4Q|(?+s-pvJnaHs-tP#z$m+0Th7%&}f(Ra=;yTZTp!ps0RQ#6@K^8=XpTTbL!dj?Y z5}Q^~#_k%IfBpjM^H8*wy#JXR%R_$xy@Gw;LMitW?|*?Ry6sR^3W~PNLWk&q7mJ$L zQoT5_SX?h05e)E43>kFX&Ev-92buD0Lo!4V3vFJA)W*)T(72LXiV>qvy>c66eTXYg ze1aZSZJ*B;f_@;t0MT_a%=tUP1B5C$3QUX8vp}tzrLmd4e<--PoUp`7ClP<^Ea3Mu zYNSbD!oATabnREC^A>m5J+zIZo?VifFK?-aZbjVd?EDqk;H$G~ncUl+I+A>n#0C?FVFaR8T=-icQ-~QT9!~e}-$Z|uo|az%CujJ8%T)GM;#Kv->fuc+p>L0~D&EZkaFkhy zDYPiNC?J=45ElZ^lRC*0(|Id9K5m7dM@Us2o=~-K;4Fj-h-s3?{gPip=!sDh;~I|e zlFhm}1{B@#Lf4>61>CF*o16nXWRv8tOA5C=`y_)*O?l$J$h|w1yPtndU2$29qfq}h zqB$iy{acGLj)WQ=IX#XAT3+(c3FeD9;f>j*c%wt2lL>PIzPs; zn}i(TdYr|wGj(ZmJo6{ zK4`&mEMutKu&)9XF1r=w?-I0|R+mL&N6RE)Yp?la0u)E%$SF0AKQ{h&-l0dxanebB zrT?j+W}N9}`}0G03b_?=Ko0~zz%&JO0S8S*>f#ieD(}iaNtJ)%Oy0K~GuB3xrQU-9 zC0*;;BEV69wYKeYjQeB`SVXDPoEZaJ7gxJdO__A?%2( z&`Z9*(uIz!Z1Gn_GkH^|34$!2)v=#Sw0F!>hhW2rb@;G}@p)`KD>uf9q;dINR#L0^;bmI ze~Fy-`jg~n{1s8~v-pX1VolReB>f}UV}1(49|==|2_JtEm1I!|yVh+8WZD#W3`w~% z#18>ZN(7mhcCoM4ChbJM_t4uKx+a_@PpC5t6*te&o_@kN#vyN<1v8Ay{;YPCdu|RK z_0nx|OJLOb!sY=@XtBQF1IrEVz5h%o^SF->3NR25gslqE&ZHdfCs7|=gVoiV8nqa~|$#m2|;Y12YCp2+VrbDV_ zcd%Tir%&KO^I(guQbY>#sO#sK81S%t=wa8RtI)eX<$joKk>zGINS>+F7;&yWr9|Co zhCY#MaWE~5aT>OLOQ^$b@m$SCr_`m=4c@W4(?cMF1K9XRD72wC3#B(wTxnv0-oE$< zaZi7Z{0jLVyGNk(`QWs32>&@Un8%7x_3%JIB&7dM_1OQ~bnxGbs*Zks_oiG4UCgAJ zz#7{eh^!`h)A82<2h@`hYR`sfB-T6BNpzB0UM@{D^U&%r5fcXl(;}f{E>DXs1mTep zM|Qgw;1yX)<-^0vWxbQh)jrDCCbN!vu{3{%sW-X~DD|QoYYw7>aO=vqvF#FRu`rul3>Jz{jEjQB<6W{c zWBaUz$6$q`o>|cQ(DPNZ@8gHpwHd!LWr;nZ!%RAm6H?X0mHc$(T(TsOCd;oU6--j< zHzlzxF8Yy%4nymRE|ih+!)FR_8GnC48recHz7l;I%Bd>UiWmnc?^}miR}NMjOrr zR3l4hl3WxvPwbhoCs}#p=5@cZ_$B~1Btt4lxX}Hr!G^m(>%9PA(c=eAqeG8S%F#F65B;DlM>}Yk>plf!+;ELj4bMSu?5V)p_ z&#WxDY-o#CAz$?GOzIZJyfrJXShjOdx>|!u39Xo`)p7^?8gquB((8$&YbINaDfa26 zGgo09(HC83O6E&(x0! z0{!Yr53V611!n0>ycTd~vZL|%Zd7;}&=)k4w^A}8o8=BB9r3m#q8fi#QyWG%Wp)%H z{P~8umq@zNFkwh;2(;0Ck05P}3O31Qw>&lRLsa?YAic|UqvkXVfD*W^X^HR1K-f=r zDzQd;x(E{a16l@QiZxSOlU;W+n?}wn`TNNfa&p!meQ2XuVJ6GQocVi21DyIYnl$a~ z>82dGcL`$-^Rie8pZ9-L+H z1NzOgB9_2aB#aP z$sE9p)8go=C6s@ta&d97b5snK3UWOunM+eeGi8n?US zx6lIJp92vX!jXmG6!de68_n7?GA`m;s#@&s>|o!!9sf8QZ@3wUB{SJH{)tDn*9L|& z)Px|WJuv?Ky{ZAO!@w{;hLyL&@%zxmOIVC67F+5*Bk_O4_mciQjUB}w6keP_BbJ}&=xP*ueGwqH}&C>@M zKQfHW859}Cfr~iwFHx(P5@vmT^-cV~NEKmA;M5!g)fW}s8Ek`=M)HJkE_H5$o7R+Q zH05ENT=##Rq9{69FmU&L*pCdC00Byy*Jh3=D+Zd65Iidax1Quh8-2J=9ELpxHgB=L z+S`@w2wFKW_4x)CzRd;r(eTGuEEH84mc;aG&ySZnTT>P2Gz&xp^I&{TT$j>Yr=2%h z`*ZjM>z9sDdn#|0$g?Mn!6EBAV^8ME!Q0k5eE5GIwHJaO1x=OhE}KE~!`Nw*T0EEQ z>1$#F-(m*?&!~-j1N9f;uTb+H*>WMzVaOjVe-?PmfheJm({5W~{3x#-e8}%^l%7~)t^TdKGb!U94H_D253u0 zu~sOl%0xlq05d?$zxv@HZE7t$Kk~DjN#1C$Aays%w*FAgDVVgRHm~4XIuC&n)KuS= zigbluV4lmmsh6Rh3y(*SRF9-g)h86yFj%41W}sQYP`#Ei zgAI6pL}8<`O1wOZ=%UNwpk9~tw$I@?#b>cJUDcVKjBA@Y{yNf7-)k3} z`+FfVc5tO|@#4i$TpMV@XRsb>oi|N+jlkeR*P}GAjE(xR*i`v|5c^GH;;1ynIfGfK zkFp@wBvY7$enrtktBxQl_c|=f|-AW3zsKS=<1gWgSLhGCpb)NMF(w58eg9r#bOFOt^V+>PsslK>DV8a zR)Uu0N_mmKG;eFY`(#!k? z;~Pi;xq$a!*n%&DEO(KG|Ml+uB*NKoAIHIH)WUT~=ox!0L!l8rPPbWTbtk=SSVZZc ztkZb$H#n9Zf|9}^X-c#7n`S^H?9LwcaVM#)h*9*Fi|m}EwC6*+H{?MuLwkwF8%$s9 zCLY$W074{42%Ps<{ng{AO7MXyS{`nHi`DM8UnW*D(T(H2TkJ<$kkd}$vOS7!(-s&= z7_Kplth$9mcgmeg~{(dtQ2=soz)BI8#=(Re$!MN@~(P+QGaa-!M z%}|C)7`A`Djn(R^vE)Xy$_#dYJq4+lG4AJDWVPiCE0&v_0eCD#I&1!MEP+wV%$sBk z%e!#jkv{IoEoL+1!qEz&=!jyHBampI27PTESqk1XD3BTZBwtre804d zkzH1@-{W4ObI-eA$mGGok0pvMVAf}f={?Z3vLd1eU=I`JG%GzR{x2A72I-H$!6k_@I@)Lx{BQ>-gSrnC7C=vcif8HZZ6(+Rv+lc zBN$)yU?CT8?jULsr*rth+ZI&i)mllvZZ70rHS$*+(%@Q5`U4l}}GZC|?svM!8&s5;QfI#guc8Ao5x zx7lbg*F7}55s}rHh1DSQI?O!d%c$^uO7HjD!D<(_4hxQsGa}DZEW1L-$9dAz!slOk zxg%GPAP}dWZ9%?3QNF>Qr{;Ac%?`qq3GjMB^@_0ap&d*F9jI=dT!md|w@#t$z%q42 z%B{j*y@6jH9UZTKItKlylU(NdSu@#+Jd}j?g_y7spYvcn*@GGkyEQmVku`Cs#q%Ktr0Oy=tpK zF_I%6T0&h!A_L{o4YtN!SDacGJQXBjB>*dqL3NQM=%@yNGPPVuJJ+DA`NRY3>(*7g z85G})Q|I;HxFb@=%Y5DgWcQQeWykG#@W!UyxpoD*%^L9vW!=j66y}x;a*D8Tiy`iA zJ?eMGP47#+p==w#aeB@%%!`)ZD}~fLyr%Nsy?|}KNLi8d%DhMAy95-VE^@(tVPkHy zz<(XU+~%o&`+t*Q$rFcS!Z#*5W4go0+yUzbAr{~h4k&qJQQom`hsL2HhL3)NP8W2Z z{qz;!nc0%&PF8c7A{$0USqwo)6^5jsz7~#AK8=;a zampu!qrch8GwbyY_TGEezU!d`jTyQy;KR8hvP=)H7IfkTjun z^6unpa%}OK5!lA{n!H_jiMuNC1m#0w?}9AmES$x2v5`=a7w?q zGt+kNKkx{|*YplE;&Jm_m`aeV@*DjY!ZUegkpH8scjWWun2z7Sw5jjRaEFN|l8O`g7n@GL(9EEK5M z1U3cGsNUOM1KAUX-`E?u&e$uWy$dy=#bDk;%wB|(13bfFPYUHWNY7{s%G zc!_x%3mh~m)E*OULRX@r;;*J7d^=*__{tofwbLoOo;m*)YwsAH+1Isu#uZk0$F^-d z72CFL+qQA1;^dBP+qSD>r{bjg|8&3a>2aRZJx2F9&!@fj`aIV)e{-*O%{l&qZ|^g+ zm%Z7ov2HQ^@Vp~LA<;4TEn43~)dx6#B;@dy;Zd4;PK=jzX_(jkF#QnT0j^tbi5j;( zw2OWur|lSXl{@3Up1}N=jc@6T20<}pmgwuI`2)Lp?D&K3!VkI&Ldtf5d>$KHOj}5K zHhGBAQ71i9fj!rF4dTcWJ(D{iTRX9#UrWgA1Nv~Ej<#@v&M4NNXHGyY^(tO}9kaFw z`nV>ouWz!OT@b5E4WB}4YR#-5w z6f`g}`TtxX{g>fR>pc)d6Yy7|@xX#g49?n%UQ6N!1zaM71OsJqN*D#w4mrCtOK+8bN{dO$p{|IQl__eq1jsQk>F?-UPg8D~JSViEiC|&A z@5!#~oWP0i?CUO{_k&QK0fZCs7eE5Z2AUM+yk1VsaB^nkVR51&(p2Hsv|qQ;2$cX^ zYO2Ei*h-K93$g#+^muYjnh5`fY5+mg@f|o9!&L?WZU(gWlw(IMZEBl;xMg``^R6&P zCyf7Ov#uF0+4~Z1PKwkt4Vy#mwlVoFJ=Id>P`^v?7GjO?&xld)U|=*ED`38xajGF? z2iHb-YqZ#E@CsrEM#H!zVwizNYp5zMdn#9B^e#1nh#W-Iv4$vz#2~#S?OU5Jh}s5{ z&dyQTU=>t?orcq$m2roEuUT>OweljVzw~N5$zGC4OyJO}H5J$;af%G~Jk-bKG%y54 zSnd7^Wm#hUk+Yhk7bR`Em6hOW`m>)BlA&F7DC3+vuCt5?@g>`3%T?U2(p(Q?m2gn^kmb4-b8FRjg9zL+r$aW2X7%1(0}eu5J{+iRm+B!6)Y#mBEx_H z!-4JlF69#m^9{Y{XLJv)WUb}i%*{e2*tUfc-(eW{RMEPN0r`P9qcg7Ur;wfAxV~a3IBlz<<52>irA4L(gEHQzH@lZ8+~z z;ayB2L{9`A-lN@RydRuj_-5O$$StC!6xfneY&LQYB%i^5U8pyZU^(iL4&@f-QY}DCb+YeZ#AGa)9m0KcMEz{NoM%ah#1JN0P12)1a?o)c zM?LZy?w1mlL=E$F<5g^1RTrO2P2~*5&~&Yd##n?{>@R`$S~B71SpMb!=SZNf1tEoq z5B&h@z*WP4D16-B{;Kcll9|qEEU`&Z8MA+&uZC>}=Q&2gSCt^47fPP`wiM&&4;f6l zdz1ozhg$> z6^s~zE?~YT7pyh@)s6hAKrD6+n#(OuhEXztTkW3DcE?OVy=i-a`ci2_T-faNKYk)hHr;GO0Iy{FjBis5wZ!$_GEq| zI}aF+=`$~t&Vn&Za$ou;H#a>Y?4w5Hp6_2~j>V6&s7pb+_QsO)XZvWfF@>%Eb5x~A#&sQ2pGNK z!=U+;YPz}8k$TOw$iqoc1YcF7zjw}JvfK~T>S`kR<1+rEQ{I?N8M!VG8V^%cbuCav z1&T%r-U#9i?k#LG>CuMmU6on-P=@XKG@3G(Cg1mLKqD*NZ>?b0Kf8KhIn@Usplfh{ zygpZ4>tq&4J*`(hgaJ9*q<=cHgXUJ(L@yfv(O3OqMxEZ?kB6x0e#wE~eW%s~XRA(o zZQy4`ft9+o#a)xw4$VaItX+k+Mqie2B_m`_cTi%tR$fkl$#RS3-k~$$YLEF)VC{~< zTpZf1xqDLe$ol4u{KvA95Y78z-O=kLR>j8=N=QJ8>tocUXR8(h24(NAPhc!5VRDB6O z^WoxEeK|=6Pef{lNotNht;xPezB^J^=4=I`D;#tI{c~^8dZjLU=X#Y1dBQVK?DiAN{gBAC9{jNg?c?}=-NS8~?M;&j)vg=P?u>l3CNO=BmXVXdl-;$8Hu69BdCL?s zpAnx>!@5v4B1Mw>js1+lYtU~{DiA{u+QEAW$58%@Pz9?Qec>>F9D$9@^FzwYf%f+^ z(-eCE9li5U@Ib^Zp#%9=)Zd?lcWX{1(OJPAhIkrzZ(DJFM}@wBCe8dG?@a$QoYWCQ z2JQdHDVO#CjdC@0F`|{oYn}#4l)sBZljgxEQ(JPL4R5UO#&_qEI(%S%fqe@b4kqeP z6rJXk5QT`Awe#N1z4Q9*t?_Vl(slz@a9|A0W0#gx2Mj6}4zx)z65+j${4ZzwdTk3QY`=krRf*&cFlx|(1WX+!!Itcg#UmpaM7(% zjxsIbnEdw-GImv*MDwcdK%D9K{}Xh>ejDo+2@-R0l{=b$(W1Mgxr9zCN$7N%PYUdX z|3kV|{Ha*1TD*X7z{c7KCjV$h>(Bx@%#>Og4SiGH`0-1`W^YD+;Wq>L2uWX ze9OLbvXSlj&Uo^^dm~`^^;!75`|VcS4@HFFT%G;YN<1}$%$kab4wjFOsFfw33%;Qk zC)Xu^-p*jX7b_KV^|=0)pNvk0hvY-cq-dLfYh=1U6;)#_09rm^_L29xd~!JF^m1W7 zE(%^=3c(E;R32wdW`U!|$LcLp;-7QLVZU^vsv&O<^X_CQzL$TOoEjt_$+sk4dJ)$l^y9uy^#bXC>v@8AfY z4^!bi))I!YOufG9Ga0xLbGtkM&1T_3X1=|~<<`Wj8!e)YwlUA*^^gR#*GqRamuk0v zr}k!_MI=L)Ba$=ird!*=XX`Y3wuR?s6ZDlzUCry_MB z5zGNU1j|$z`jlw(0%b|>;_D7%5sPJ0~*<*HAiOuBsiYHu*BeEYxA&b5}H`{=p$Yg>?6UYT3Ds_ z4n1sH=t@_;fq7hKn=wdSg?$88QFM4TI+5#yKQQFZ5QfWl6n@&llP?J~nC&12^)uIz zv=RD|WBk}dXFv6Dps9*Qx4k!iKY;yR0oxG?2Ns~p+c=I2Xb~OxrCOURgvtJHb8JVU zXjA-{7V?M7T7%UNK~9VJzL8dK32z$fLtDB%AtA(U%R(`XzpCN49s%J8ip`kzox*NT ze5Q9HhE6WbgRwJHEdnxw_P`RaMF>1+4=N)v8tMRjf!bYKLfu5AfQsgSLbIuPj~Wgi zi9Qj547WAeepuc?jNJH}XH$sl?DQeVtHkDOL_+y5<+XD-9KvL6H;EB0ti*g`xlqf+ zVq$2Hypc9{ezLixE_lQy#oy9}gs$=I4}bIkfx}2sImaa-rnX`HhY5D*mZ_`gWeh1J zA0$8b_hE}pCH2RV&@hJC(?8}0LGy<9))y+^jT{Zl4P|*D@+v7Wwf6=W$U8Aw7- zFZ)%$G`6FDuX8EJ=1)P^e<;BXua-K7_lB%!Mt56nA8SKz*)&>zd*@W+HG<3ARmpeO zd_p{&t~XwbQEqjk`POGtb!U*WhOZnCn0NZh-jefXqGB9T;yB&0cCsiRMI9AOl9`P? z=~$uwNvnV=mFlw`UFkK=Yce4r1r!O-wY<=1lD;<7pRmgygmIH~YN#M}=j`CRh?tm; zs#qUv8UV%bS`SfwH9fLpjkD&EF%9G=zV#d^*S&jFiiSKyAyQtQNt#Y;=k>G}zd4ut z4XQt>FECflzq}A-$HjQRC~t)9`Moipd71IH-Ln3Y-vmezL@W76c}j3O;1p2t1OBSb z{}nP6KATQ44q#ortCk&TQqs}=g+(fad-3Wx;K}`<-}?4{QhTJk)$$IXrmqP!Fsb{# zchnS}(*N)xSeQGg{sJBV3k4cA`tokY(*{`TZoHxf$o)~dTJn<>OrtC3Xj8P6bGuuY+fT2_bO)fu{;ca0Mp1zrQ*hyol~Ee!5vJ!hM@P;5RJn z3yzfW;^s+w8Q!hNzI2GH_~9b-b4Pxm42|$g=Z51IKa}DDi|> zTZEkuC{U$*$iJEDEBmtQeabO7t}>$A-p?l@hB8Yd{^|#fdffr2Go~{b^M9cbk_w22 z^n&bpL8{wvJVgEY{_{lu@dLcP(ip~3b&M!`3IXw##0SKUlUqX1)MZbstlbTK#v4kS)hvmWuL$9RO<9)#s@2{MSz!=Ox=yXgiYne$~OhABvmBRcd z8G-G;r|9bb>pJOI8J34`jN0)bK)E_CmR>16GG%l=$fVVarZU=b$=nL7wQJ@Yb1*l5 zaHwz~H0Na>`Sx4Zi_r(wXwy=QUJO(!=h<|}^y{qWY+k-&U!NazeOM_JX%uZ#DT)-) z5ZjQomAvs<$jEPBq}^qmvev769kKP^a%h-p9khZm+hRSe!L`S9B~X@0-?1GWU8?En z!$nzUHr0$FMawJ4NOaxw>su#L4EJMzeK3=pm}_SRLl-9Su{rq+35l%V-fB zNTU%$JFR2mHGa}=%Nw+evzG9|w9#&JKnk#rh8VEcJVyvqW|lvthZ%ad8aQWva)mMJ zg(z}A;c|g8WO16bKh2Qu-<12fE^3>Im~Asf{VKiBmcS9?uFa08xg!=*-3i(MuKMua zHC|t?`uAmDY;VOhxhFB9NEX|z+Fi>IDl*|e&xxia__O1t?jW5O5aX0}<`*3_%`#6H z7z>uy1UD)|Y97wilQ}XOYz7{G!&P8CE)gjk+z@`cR!~kUOmPh7;N0S05VmxH6^{C? zaMF*lUFrCqW6-nKJeg&wdSP_KWYU*Q&XPK^^B_U*Oh(*(oFqt*W$CopA7CBl8Q7d<^ICW~pR*m>~q&$S^W`9f*-IAMm3&y0s~ElsRE*acxCypFjYz(4G0i@!bKL1-YVFuMv zS7}5rFlIt9Fxmgqp82mGqXp;p4^{sSr?N4jo4OzqeW8}9NrK5 zi5o7q_ul87zt6olJyd^PZy>=KiI*ZFFl?yNs7ILxx9b52!=)QQ!m?e!(orzyPDU_q zKr^n3VJIM3d9Yq*h&@j|?15Ia6GvK0lDuf_D7fX$YZ>+;!8n^E9fTW!Zc%>r4ypW8 zKcZ_$8OQ1euaB;OT0|UUhk~aY5&KITG#P9-ARR=39j%Nj11)KaXzWk;GexpU0O&bf za<&f6fnsl))C%$(&rqPr7p`FZWE(rZGZw&Hi~qj#9jA4vI!}p^w=0?hcNA^(dZFu4 zc#)+zxFtGl7j*oh1XI}P71A#*M=BSO?ZIE=IrYQ8u6NphjFU7?N;3Yikd#@ygKslK z8ONjXGKO2;h}Qx|68p&_A>@KQ*n@VHK6oRB60uA9hLv~wmQJ*zUvHYsYD;I8>*jl{ zX+#lj9ZH2;xcj+&qqaeM+9VQEK(GxxG2%^xG=ls=~1&Zbk@2 z2Cz8B$Xv;p9o|k7UGYi@j&N@1^>9xvtI$$?7-RlQn8`_Ro6gSxupXg-StUg(V^vUp z^T@)?2v`r!ha#e@Ym}9#%h%i)V==Bdh4(w?NmtC8qBmtNB2~_8 zg#x*M(KXm<(c^?P(An*!xQ6iaj7EZNXvM@(FLhQZQDFG^QrwwaM0oQx!bG_HOqd7l z5?IK7I_zVQF>FZ(N^Y5aLKv>~2riO@q8jK@oQ4676Z;LAk57)brm(p^ih>E0fJ$@{ z2q63IQ^xhiJhc{XxS>m<8*;f8U7fI)n5DCS@}5_hiZwR}sQQ#S?kH(f4x>ugnNf1ik8FA;V78$O2USLrDU7p(d{fHobe2=5ybOB0AmrokFHO* zq5d2_fQWDy4hb19Z+K|?vdr^JcoRm0$O=A!zRuclUjDo9;8uoc=an5R$lrn~y*>;w zNh&Cp40FkBBVvu;oZN+)aD)bbDG`o8feIEOa&$JITz9dE??Az$e1diR4I8@|hw)ox zaQSU>ge6qLh%3}z6fd|D=Nkc+=3!~Qi6Ke2rYbsnnY!qJ)Mfb_0R z=-z0@$_ypmOrLne>Xci8;2TpWO54cZO^ud3C)~GWNasD6&2Ob*Y^G>)cwf!iLf1={TiI7=i)a8=gHw7wBT{7pHg{`E<@Wx}ZM@+snPZUHp z4j0F`$C+wyDa?D7+Ipo)Q0JKBP+O&#sNiW(v-O6T!RA!WN{yUx^=Ue->)w3=f6!r9*EXGM~R)q5*he3v*J-xW*r-BB9< z=FgmV&JbR)m}ESEIcioTPuWU~bk0279@lyfC-$j;jLDN8$M6*^j9#tAQ~^lj0u0USbi_!$;6`-C*-hyk~|JjFo_)!a1SL^v^0}b z5W2{h)GCl8vWppX2o>!7i+0qx!PT{Mw~P3Evu`W5x~ni2&4k1*%Qt(M=B`n)HKM9b zv~q@9*7EGJ91b@zwx90kXSr{J&ehm;R1D-43+ui(dZb(3%+siyZ7f#d(*Neqpuvio zfrkjliY`BY@&uY3L2<}zStr?Ct>d*v*@3R;hcqRF6-|)x&JK2 zD-+1U-dM4u_4LQ`{H4ISE3%Xp{Z`?yl>%Puz<$5;eB1fQ!H<1YEQ_zg%Vv1W_bt1; zQO}Xp!k8T1Yi&)bjPYGWZKMx=e6EkmMCG?9$69zL&m;7QFRw-WACuO1Mpe%pIm6RM z$d4L-x3O4nNtOs;66Rf9uJY-5b>%$~xH>^(>k+KXcd=VboWKOWxVw#o3H9(u=K`N; zwM3qCmcN9W1115pV$q#B7I*4)ejIr1Nn@A;i4-4t5x>^M(zQfny;h+V85l~QUxtp`3kFE_AV;8wXtU%=5oX_`lt5r~O_D;UKtGVd0OPI>&@ zscB>$ThQ?^23VLNb+u*eRG%cfTMhb%*Q2sr&!_!Vw^kL9LO}Vc(;4Ne6kFOHqw(;6 z1KnaCH$(e}t@o(YyscK5F+!JK5o!p?ua* zr=~F-t`q2DKu*z>QaxTRk=nN&{--s60mu@8>$YM%&h9wb4fkSaT0ie7f-?xO&D#Nk zV1R1waI9QF==*gAZwS+|`;kw;Zjj4%)Jl8wPP-!*S4b^hwesd1k|X(8e36bOI~Ex~ z*y5i&)$|ptgd+vcKT{-smHjBf>t2x$e!xEyjzA)5{z_sy zGSdl->7h>3C1VKTj2>|e-3`wEFiUX&6}olGdV(A5=BDV` z#NcKpFThd04{1}DMegh0%r&Q3kd7(epsIy!5D9Kb2Rk{ibWmX8zEcU}3C6cr^$>_tELCOBlm z?_B&w*r4-JY=1#rTq44y6fvOGv#;vVnU}@JU)k$af=MfaU3`a;`vrvhk6CCD9 zO9qv&lRrj0?Ax-W1ao7Jjygzur$smrCvjYm@+PPz<`k5FUuOhzobN5k;*F0@gTptD z9bG{Tx90~}sY|Nm8fRk05LCBb3={cT3>Yt;*aFGc)6vtoMsF(C%yes5XbKq~%<58P z%Tm~;eRBf>r9cZ*XQ^ttC%-ATHSI=u<(Mzc7i^N-%$ENlZuyq^n0V^;wo{$n zJRai4x_;E-Ik)Rexc55SvG(`vX73ApAE!HW81j^VEs1#{kpTkPpdka4XWFr{y%A2= zh!1baW6|Z|rB}qnCTM9?Ej;N$*K4WiVvxi)(n0n~o`TJ8l!HCU8BEXskeI8MH8iTA z9ZE6p0zK}(eOmC~>rCuwBq>>B3{*##ZJAsRpL z;R3zarV;CbLV1VsmZpoG>jjkvZ>R6ZKUY`@CEmQgQMCGdrE^T~aws4eoR53YNq-9j zA2kIt3Z<}D=QNr?=?oT$kr4?klYRK9f?sNXv@MQ_4zcxl$_CkhiC@`&QC~q}ZW4JH z7ELyeimqZjT3Tg3mEDvVv3#7Ptdp4Y!rv{K6f;QSQrJ1KQo+^>rz8Jp18NfBwr?tuF5T9!JBIjoA+|*otT?Fs)?A#%JMVi zpTlFfccR(bEXnEa2-hdu?8INfTO>OaM zuY&W^<|ve?6C?ATPP>P!KDz4%KQ zdFp+pop9?-&|8zi;G=W2L;Tba#@LpTh6z?r4?bTTxgHYn4Bv=o}&i1m9Om z2Q?UwGjfQA%h&?&#G@jD&C%EDN$dYEwKXRTb)h5y7RxgueK1`bIBZv#b#H3)-9hyS zO|STugI`+oDkJT*&-il){M$T#Nt1-X9DdOA)Q0Jpo5YNWmdCWx&9U1cEcVUYMbW4O zF5P-TyJW_sdW~ndXYXs78yvRDLenq$`sRNbCY&a!^P2psDaGQq=IzGgni5EF7Cn<_ zR~5^=?e-!QM3qA3@5xTQ!3^p{s=K+NfSNZcr8nY^ExV%3OZsd*4`nKUY+CVHx-l$n z>bd;~@`GIq{kNrLpdi9W-xx)RZ(qoZaO9Rf5r!E{tu9{+UBB<58f7x)lr&OeB;7Xh zoGZl(;aK;78D~9n8X**RLpeVM@pAqdZxT-IjuJLfpEEonV#3cWUk1)NC+)r6$xrr; zwC#}r|D-qKp=|UGW%Y%B2P4@Tip4l0&o~;nA^A4?+pbSNLq6zvI3ZTZ!wr?B;pSE^pYKT zgV*l#h39%BZ1-&m8}T@(}Ou0Ulud9q`!Yz7^}n!BHMfOa8i)#}KrMY?eSM zbfh~B8MhB^d(>=sl{r2bMoJ5a98zmI;UrWY8snzA74&c^I5e~%aLsIlJM`_Dy1|NG zk>!rc%;u)Ea3E!WeU30-YQ*@eu=iwaMMECD6^Ik|mTPMS9(r9|d`Q7E?%UZ(f^hOE_F9(rSGSh7gpb5;YL+9J9IeBr_O$Zzt+9ay19L?B z|MAQD|0z+bx;eU-%NsiwTmFw3A)5C8>LD4x30FgZjv&e&w5U;|fmR}^t6Mq1mGr~L zt5T%qQG#g$T7$Fe%tGwqQ7ka>3%u_|q8?NeT%{A8Pc0%j4XyljZP%lCTY zf&YZ(q(JZM?fqE@EN|#pISfSubzweO0lMdTxa^1Spn>dM-8NfHLC7rJ5@$~={NTiL zN{l~${9B3Y3LEG#uA*ix#s!0RP(MmUbpZtY_70H4%2(;MQzCzB9I=p2TT*B1Ige>c zG4@So$D?;$ssJy2__Gyq(mq;KKaz7md+P9lk`nUy3d4`Xinvuyk^l++lqbq7OZCCgBKzHqwq-j|=1r90G9y}SGX zHi8CJM*m~SC4HDs@wcZYanoALrtRVBjV<>mu!UnN*Ru|{y4c2>R#1ugkB82wW;m5r z6e^N*$&Vm+Wo@*KN=t?@XK!_putft6=M;@_P*+0bTB9yX8Qw@FcPZ)2TfW1hto-Xg_uBcl-` zdzm#<&bmFu8ZCT%hUZCdr4e_Rd=kWe8GNOYn%+@n48vpN+r&DvICWP)O}EBz%u-FP z;bx~eAJOeFZ&RG^kv8HyZL78a!`~wO0LSGmvQhf9+eb_+7-3J02PQ?;S#=;7rjD+b z&g}K4mUz}1(5QA}u)32SZu)mH%Yunxt3-J$&L)&$PG*Sr298S3$=Z0dVR}%dSIzaKYs8YSSJa_=O#lnF5)M< zhL{^GJjo;#yth<2&OCGavte;;?^%U-#+F&Oc-D2$?!t+ZWE*fdAfa}D55=FhC-bZ; zl0PUkswnZ0{1zZ!-Qs!MB7Qo^^|G4iDN>yJcka|b{Mvq)dVj!hUUp8=V+5ZZGm?4| z<@%pO;k1<4lVm(vY=>A?OXVG~0L1zcXKzd$r;B8x4CfJMg(Ryp#1UACxd$pbRb4So zdZt}MO2#n*V*nZNL{2S#PT@25LYCVdSYZbqdWCwHBYMb%{8{V1Fmfh}BjLq>6Zwhv zOidpdC{xVV6}|wpvya>T-q*j5kmsG?s_3EA<|H^=)b!JI&gpJ|P$(d7o{UMc zQAB3!_&d75KKs)FB8*eUcixjzYy8Y4xQZqvs_uPsg~h!HwUY#YdJC(44oS7QGk7x< zTf$gDH@|!6hto;4lB_pb{G%z%MtDM#qU4zq68<1u@30>)&iOWZozZ~A16=n3MCch9 zcKH>WGQSwP8c1OBl>B|fOVnZN!bI#I0skwSKUJaeHA%7C>)}eD5f=3>>7P6Klq!^d z!WvU#8D*RGeAuynA*5R*I0Y%JzE+|8zr=3x%!iljvK6L@C_AI1f4|S zl#;{=SPsZMl)5sEQrnJhT5?J+Gk=Jka&)TuWtJ)?se)txJ_FT`w+~-1YdQ|sxTT~3 zQDi&2nevh%S^=(qm-Nfp@Q}LFbe+hcNhOVZr1jZMP0yjC* z8UzCt18fTlV?(hDT&Wf;guD)UkV;*oSea^UA5(Uq6w* z(Ef(lcGT?2K}e^%G1#WCWpA+g-rQ{Y&P~4_6&eOYGKb2+B3ZE;hoK6m3co{MjK^3o zSPJ<#J_pNxy+g>mwwk^_K*awv-4bCZvm(V9g${$pTzb`OCho|IHzoL0BlaNV&Q zpupRUr5;k_PaZp39R1)hIoHM7WcHfTAAS#?h=PVY1a!3Q*nKdaw6w*xx5BcT(JAOt zAJ^*LZgy2EVpEpPyVu{^NDOc9Ws8eFEk5%bC^aG&$dr2ch3%6C} zB#4$0wgNAdwqFclP0|*8%_h#C4sFOdZof+Sn>2ZqmuGy!is^2=t#O=*9I;ZpULu0j zIX8ZP^=(Dgm|PrND-*m}RFN`=s>6k{f2XYI#m;!@-O zmN!+HbvKqpX+!%a{NwDj?pb7RZF+`CccM0W1M_buRU=WrBJfIFR${~_#({?YqMDX| zQs=y%w=RcdRpTS8(!Iv6(u?!BfUYOhWpJc_>fV_y4*Hi-i3XW9ABW69TF;Hv7f`m0 zt18BsQMvrk^)+tV2QWgAn+T^z0Af7mjb6uO#;ly(C%2Q@6_~z~@m$)RIbYNmskiTF z#mx+h2sCm{9lkj5TFIA65@34sQsaJDDoFbh5ganp;h7kpw`|Or5Bx6ae+a6oq4NxX zI62jFABVEA4XaBE)u@{s8ObT3CU5vVBWLaD)w0#pwOgxdYp-}#eL9wiz=;m@T=Gwu zTle){OjppU<(1~kRky~p4b$UEPC4sNJ&5A>_eQ4IhQaSf%pTuV4WJq&Q0;4fUVh447s=-Wu#wgnK|*MW#LtNP@@ob>82Ry( zlZf#0GB*vnK1!0_`B6z<_QNrjKRhZST(DlDnt)qB`IUVP0S;T!K%~~521{Y)$(<~mA`nhBnXCdQ9uV<=`qQ9D ziQW2u;;O@nP3c~b-6gZpSBoiGXYH}F6fV6Zthu?c6LM2U(Rqa@vJ5Sf^}Y=L7#x_4 zMGzoPa)a2qQlVR=Y*-npV+2`=_Ul!qnfD$EU=>-(c8}IfJA1Oe*}Nfd2VjY&`G-U{ zMww2td?T*&XJr!?-Z3;&(34evyPadWZUn{5PG~4C;wSc;Th_Qoj>(C5&`;sq4tyL& zFInFEUZ41~Mv<9u72{HeUubqY6xfph77jT;ou$7cV14pA=k{a!=JUbY2FEOD?a{X6 zJn_2t3`$3w9GKY;6qK~JmG<>E<Ifxe!8R^1m_6$SAv3nr6+=VW0o&@ zgpuChfdd61y7Dh*hG!^_X%J?2(fwYtKVy2?^{GWWat5}X!Pc2Ni2qEtROGpM>4^*h?eaGfXh>evF`M(JN zvy$o>TI0h)fPq2(vnKO@zoVr8i=7XoI_0n=j3LnG&Fw6QD{3|L4j`7MDWk&_(Vzdu z;DP{wLGFR>`=gB8!;BBy;{#2F1`Rm7Q( zX-!5$P+o9%I7CdCJQw~JIu2qB+^`)z<&)aR4H*mm6mhgY!R?BFTrW2M53Yv%KnKH# zL|-7)=PE8RD^6|OXV`D{49=HQh8mBVLCpx&=9>wnoguSjgjo+2tPOoFnB^LBg>e0@3h3^2Wy0yo`kPN8rL1*ior zbBDk9{6zyo^#_Z8LUafbAe%i>rdIF)={|a+(sqfyJ#;>VU9l-Sg8sB`__E@J@5-V^ zH^`X{Z+BSXqD-$Hu)F+fU96h__e5Q4`g)Q}>6tICj^;P#7O5qK{kCye8gPDa zr}@lcQnGz4AXw=|c)hm2 zA97VozNLo#j~3k=f56J^+m4&2{2i~#FMNHt(w4iIe~Y((#Z}G~a4;~Kf7aywGx7F6 zIW*8&Q2Z4hc7(-VY+mh@$wia3TCl!HyAY$aEVdHk{u&+F;MK*dBiK+t;rc@RZ+}J{ zSCCJ|aPXzgNl!MxTzCG;$II&#U(kt{ni#k(00WO2IL$04e}_2}rVzT|mwczqp1H7m z&yK#?MGcjv7qyn^n*2ijB|E0#$IV(U+VZ^Ri)bE5sZTuQ1)%71S5vMo+U@7XMdSlo z*~nFir}6$IqbsA$BlORUPWEPEmp+wd@Gmq5J(x{9t!u}pC{=S4M;eo5=-|&aMc0!F zDq~oWP#)M!e}fReZj4x_Lk^56KDT`JBYr2}TK;}SYU4*Y(5f=vORoGK;81zc^-_3r zHge)O@UtT`=8b!=OHL0{rxSs<)4vnvoXWxhoh9wyf|Duvl^&z~wR=T>ZBvLkrFmPZRJp+8~g@Z>_hcoyKkt`@JQfyI5K})?ChR!y#=_ zmQ*uZ)e2kI)H`n>E(?c8T3ZM9U1N1I0|X_rPBN05k1aE4QbcdQw-z|SbAg^X~J<{1vV-wcOQ=gL*o;CRCT$_au;(y4 zZbwzgEBv#lLQh6@aePn_29(D8fs%gHEq0)&+VL2#PDu?C;C?>*_23kRUD4T;f0=*z zw}(pdgP_~dKNGS~)wMF#ByLk);UR?GDxzKhFV=Pn8@9XLtxY=BJ}iIMLHIWoV&Kgi z9dhu#9t~Gwb?)XQMcbGJ>mF!7Xxz+@<<|#yl&_gM01+;Xb1TPIH?^~i%1g_YHRCJ_ zeU4DVmR%>;t4bRk8>zdq;p*ecS8Ll zPc107(uI)4F@t~9I@Y{AWGTTM264cc6_isnyDi9rd_6>nC_NM~&}lBwC7kuucaN+Eqlf77BPq=8nQ zx7He5?S^QpOd|V*H}Mb_Hn3u40cv|^iEqA*q)BlB;OblyB%SgvjZ=FuWSz4v2zc;{ zg>q(!Pp(oT4T#mC?lLyAT43a14A|E`lGCNy{t~zvv*ss0a)&oak$rHbq-jX4D zj1W*SZb_k32Rk#p7O2=Kf9Z~<7^RlRJ_zzdYm?j{vXfOTC=R7;89swr!I|tl4+AnN zFHEy}#m2SKdgYFXTxsr!@|_CR5x?Jk?^Ye{!syn0sj%U*Ty2~XZ&$tGNHz7*>C%+@ zWh=*RyA@ZQ1#rLYA-%jwt^Y~-tGYD2qUlES7Tiy1P=_O1?|ToJe}b8MRdv#0EHd3o z6!-3n_e;Hiy*&<*IWLp#8Hs4c`4}0g@9e%aG||wQb|Gs<({i88eHY49ca$RSOB%|7 zs~(+d((M@q9N}w!WmpC((nccHEe>=c;P`^o4F;frPBm)B0i1ZzlRiMGj$j#(fRoZ7 zOBYQq%}S@4rl>+&f04K6&Mla~WC_MPM{Pl?Le;d_|6r6`jcKBd9XTiGOw1F@;WMX@ zQrDHYt+hyPn`8Z^zB9g=qlqco<4ln@T4r}qqBPYcR-k7yt0LY^iVRJm?_{LTEI~BS z5Wy{+W+ks%lC& zCKd1)Bv&AlO$-mfgD+!z#E&F=wP=MeeyZyTM4vDFU07AF=HLW^*uO?fPIN-`-RxyK z6lL10=>@u~e-AkFg`SzjmLNxKY4J7V`r-^TxBr-ght4HqB^22vQKBrWYIFTeSHJE9 z+aqdf^bo~cMnXnOA2Dk~>8Is1qC}hm^1OBy?<*d#pHTKUF1A$@R~p3%iE`iS?(U(%zHnI^wqFZ#Fm zPx6a?2#P26nP2j7@p*=ic0?ur2W#&b-D~r-e+$O8ogF*bv6CI!w(*N?JK3>q+qP}n zww-y-%zM^4=b5!;{xj?Sc2|Gubys)w)pcE6b=Bbz#uMV+9l~&6hhQ`S%fYqH8EVwO zc&v6}*I7X?-x78Sf^y(E+kOuE#3}7E2AfJ?rXPt{SsmhsS31!L&2ngW&eZJs#xwJJ zf0_&)G&~fe(a9Lf?r2S5n=|0q{`qL$mIC^XM}RTN>2-?NjMhxIiwxt#5;}4(mBS(S z>2hrM%wuht@0{Y^JnH$41x%F9w>gsZQ3pQaey3KKff?8(o{x)D5Zlk&NfIe|GS2cN zd%J6NyO}Vokt$p&@?$c(LS}|L)7$sLe|R8r1?dhXGxRe1 zC%UWfSt*dY75#5yS&nAr5aO-Sus$TgP|PiD(^gdIozZ7doo7goPehJ;svhmIPaW2W z2v2AZreRN%vO9E7ZV=DX5b+X&g!7nG#QMoyVWi#|2lc=g1>61jhwxPrkb5;$f9#HY z@aJiZH2mE+@As}i8>a7IPFI@lXYkDwnr`5y8R~aL&kf?N`}PU{zo3h-0Ot5V&?Oud z2uS?D1-krC+53klni{r`T)n}lX)Cxm)U1PqpNx2WuxeQlaU0N9yF{G+y#8Nl7m5u3 zu}LQ8jQC|Kz}3)lM2lu#)skw|f4Zi1Fg$RTn^2XC?;ZOODuI>v%;cqMf(}7lFc0?$ z)6N_HjeE~c=HAu|LpP{Cinr>jR_t zDdN)_U<*yXcA^%}wxxGnU9n+4+Pd&SlMVM~+*F37$UVf`xfy|4owAnEf6JH22B*No zg309kt~;|ND%E2?b=H$r?ysPLvWGl{JiaA<g+7D ztOR_}06Yrh37po7onVwhe}ToIDS(xFc^`wGK2ChyMb#Ay!^EjZj=8em&7_i5gM1lV z1aw&LIVV9oj#K4*I3MJtiMf?TgR{&+c0Ec8P|jD2UF8x3qe7i3Zhs+AjSz+K`W3 z7PZTsO}iX!JW=>E3RVE?=7L9W^X4%^N@i<@m*c;9K|?cJ?NpoC?Ko_ zAtWz(-SI0gQ+Mqf%`!R-`KKc#DtL(-Wzk@c-6!+wMCdtj#Tcy~Xr76yKPOb3-cuvuJ465?@KGyI+jk9=vOfU^swI+sM8) zr^RDZ(30Yj3wqexD7kG6s3~<5EmrYv3-h&U{W{D}fBY(sIJsr@4?8O9jZh!Te{jyu zL(e5h0cs~J6}89NQNE)Cv?o8k8ZX;DHb(Bcqwn;=(n@G@d1r|uN@-7*a?sdojN-i* z#3lSQ4Gpfg-%6QQy)@L_F@&>@;kiBN=m_v-jleZ!uS7niwS#jbSI}Lx3fInR@bh25 zBt`(;f9btpyf*)jfogZ2b(Qc86F=wcV?v|TJ=pgY7TPX;cD{V>(13(mK0pbJqr4*= zCjte@cIxElc1E8M0buDCWzIb6{3r#`?8*P z<3UaFGFbztY2T}Jr}^En_|c$_vnG=vD<>(Ef9r^1Xa21zxDktPIUhx&udK1N-(dJK z4fevg8R$xf&;=9xI3++w;^Q^-#N;N7aB+*)V7BAxv5=v?Y*KP9{CWbP&b3>ag-7&6 zt@h`y`(FqiQ^A~Mc;K)phT|mf1ZGu?1{|JZ){xE7_2H;49RZfbc8)j0E z3hKgDYX^M%^A(*Mxser6m?hJdpW-F3>=;PI?+Y%+$EAIv=`TJDwj)RZu5qqs88`pDNe`*kBjdtE*wZE--p-0*FI zd~QzM68Js?zHs`0Z>7G`d>jNUwt6kc?RK+H3zwlzWUadbqO{EHGIs6foPb?zf2y+k zrm3}uuX&yi=eUEzPAz)^vaU|-W=tMW?04a~IIvm+rs~@w-C8>t@t#|p4;fdJNA{># z8r*L|8hJzkN9ySB-1J1;w2bzqu@(3De_!{SiN;TCAlgGy4s7rQ8Me0mLe>$AxySKF zd)f!s5)2Layt*<436&0QyrKtkfBBPfgg#s{mJ*Ye#GYtj!076h*!%lUy(SayjsG1= zO6gB>|7@rH!5yEl{TT{lxlxF1g&^1qcLw)+umX|&Oz!!BUERmoz-bl>tHROugrHfU z7U&8R6AxfGyc?o&3Jv6wys&$WY?)nl zU%#W!LlktK zVOTDR5l|T0D$~sn0K-?kedGF~ubY16KfHDv*Q~`=9;*v-lXQ)QzaXReaOptXj1Okk#+SP(63$HA7WIL^iL-G;hyb zuSjgMtBY+9awUUcN8y}88@Y|7U{-Lxo#fZ$&90XBj_+&G)Vvp2cE{oE54-JWYN^Uqgtg>e^L50M=b$s(Wh3`)cs}j zhk_>%?p3A=^_<_iLso1?aM$e`7Al6rPSt6B!vxrh}7&A*<4Z z<5+rn5*K_T^?uSymdoF^G&~c)iMpT&A-WD{y!>PuwKuOX=)tV2`D}$52DXsA;|R%^ zumZu7=VZMwe-~Zq$7i(8+k6B$AD7(=x*{$rceWAlQx8TEvE=MzC?a8Hv+4}uPLFgd zn=U)-SQQzkswAtQn2e$@SSu-%61}8Og2Zh-of=}T*ke?-z$CLhYBNz6AmD%Oc4G{= zyeETWGdou`dedXG3{~lv6#-b8j7&|YV^-Jt7#zyE)Y;+9G6n>Gl5?=Td5u}i)08VdEB8Sw4W&{Z zJ~R(yVGI%BE!zo;p@@OAG0dZ|>)dt{JJH)t^h&Qe6n`S2@j#Rhs6jP+d}>h8+5PUW zjFm)B4wP{c*iDW0ykjHJO_QDAvG(Th!KaZCx|vP#AyT`a4vIc#mHUMwEoG)BQ8EmX z@>adBuM#AC>ef;IN2f_eP$g`NqwD~1t>jh~|0ZAz zjD;Ed$bU=jy?YXBQ$B6cBwF~UFvJOc-QRJ%vo^W#m$NigAI-xic%QI-@eJO}Bnz3$ zz`UL22=*!nE)Ez)0@JV#dy8*ac)!<{?YyZ{QiEsm^v1TR0zD{MqOw@%Uml@4q`faH z|L#}COzZ`^m7uk+VkukCTUIbGm{fy$J$&2=QGcSGJy+-VS^K;8E*GW<$JC|U+Gy7U zUXTh5Z|=kPW)=-Y76Nl{cdG~!dY}6G#6(K0#heLIul=yA?q`!^qXT>s}^N+MoI_Xvlm^l6eE0P;m(A%)lkr{%&(T~NZPLA(5Wszx>Kn0gS=K5c)5n;RRp_1EYp0R2 za3}@d{o`DwbtpGo7TsjJz|D?kcs+I)6q- zdKf-I=VCRmwNTcY4Se_BhB~~}hM_OBx^Ij0G9max5Es`TMrR{lowAIE(m|p%OeXH0 zUx5uOoLwE(dFlXRW#O_c#>2$erV- z-~fYjXV3&l3q9AAgXt#oym*K|aepYMNiitQp$e(m+mq%|QR$#E+Hc7W>$4Y9ofm1M z9Q9_RQbXmT&mS$?2<_~a79W+OfgtozVYrObBt5Y;_8-xanA-y^pOJes+e912PhGmD z6O9{E#_!zUx=VMwUi={|i})ttG6jT&2WP?X3af{UkctC(;A}cc39O$wyMM(;5^bD+ z2V2vqhgYdPF{kQM-%r4LT`5$9Zd8R=8Jg~GS+~W;#W-<}I)ZOly|s>iy*Ez_TwLS` ziS59uzww-8-1_j541(ddA>Ot{I~I;W-eDm{YYsdi+HbB!E{jpALq}1G@I}TT=|X$N z>P>lxebE2u2x|g?>E;ZI34e)oRoKhQ3(NSMXo9T36CD#mEquqwBXAz$Sear<$Mf+)jeYNO?+tnAWC1u;2sJ8U=FA9|I3c_o=S)IUBy6e@l32)8<8hJHnAg#jFCtBX`uX zdw}f15i@sB@fy7^rA#66kZ43vmplVJO)lP+QMVBYj}_EM?@94|?@B1EpW25lklbdM zZk-iFA}oz$7AY=vtAE1QyVI+1{DqZm0_g#KU=TYzCt6AJKg8+)i0fg@u?5M^t5>G( z{>)QD`D{{O<{z#*Rxe(-3vJFy$D`WmJ*sia5EbyAusf&J8pk3a%(8BYa$9>ZEc_ZJ zYZ;-05L?Sug#lCeow-_}0_#`I_4M`C?i`OSz`Ul66HGu%vwv>^KwOA=Sv8GIE=lRc zD{wJfWa;`uoy;k~HmO-t4{L3Gib=apgXQy&^^n~otq+vIujG7`S>Sofausg|V(ysD z@6bPC zdf>$v4$wc5eSi1YJ$zX6UK^qxeWM!>7+!I|{jY!iMPtpJY(<^?W5ogk0qOnsVVnQ5 z0Ve;;18!6-(UTT3aGaO1;rO2#w(_gYr|GDi%!G|uH{((k?b86FOwK-^7q$0_@y6m3jhB^oia=Q?uWh7br84yX`S_5Og;Q)g^d+`;36$JUi zR}kdo2Y-UyHJSct|I8@xRG@@MUKP6|ZLcid{V$D}_yW+gH8>E^1KfYkH2=T<QOj`6l{v9@mlV`Eoq;LbWc=>QXP#S+7l(D|7K&#x-U@u86+WHjReJ3=P*fbx5{lmSKXQ|FCLf zA4~1_AcPefM;W-ch>4Y#2B91t0UMVkp&Tj!HkVML92Eh!mu8_HMFE7Dtf3rB0hO2d zp&Tz1oo@;M(Huf{izfySVl9FmHJocHmph^y9)BK?7`!+avLf9XZSlioE3T7P0_J?!kRCOGJ*v8=a^6GE%{N+ys zXZaol^{KG3{FBG_mHFtz|3~oz>?oepa%Z=Y{0AEKX1~xcZ?nQgg`B^I!V)Pn?(MB{ zI)A66P5tkS_?in0wfHU?4yqfW2B;DFuzg6qW#(k*VUb+vEDfZ)_leG-MU_?VBbl1W zd=*D1G$<$PiM@cn8Gb8y`+!CK`Qdq^F5Sj8i(1LV^P{x1B`{-pFJ!B^{`g>MD{1XV zI3#T2{9@8&3oEB)==1thjEwd$%R=y@y8#`SSfd<80j-ywqZ~AUO=<(490q~xua)du z;jUK7i!{>VB9#EwY5?d^<~g~)6vHfW_h!3j=^}XKO>R7+#FUw2?c{7*7_`3h`yD>c z>t&pxWw6RsQp!msoUw!mt#)hOy^ErfMljgWXiaaz=+K_?{Bq{1;=v?QRc6dF2YVFN zROxIlJBShk91VGYp+dKmK!{&(x)6TM1lDVwChzhwzNk0ZL+)Q&0I1~xgwrW86G0t} ze{Yf-PYijqMrFM-2Xl~UwBPe0im(Ot@FI%l4e^~6t&U+v*wfWvw~ier6V3hYZUbg( zgdd9L%FbeY^p~5hnAk|OryIZvyQBC$xz?WQZPJE*LG#JOcBB}{a)6`D9azMc`U7Z!m6cbAU2Yr_1ctfd_fcp-w(!7CgaF8 z4K4RZLy09xUKr$|pbA?!|`k#X4vpdo3h=ePa%>ehNW=tRQ|R3&Cc@*K%|v>gViz~L zAll;8?TmHX+k52+S%IQyFsdCI_i%)WgIY>2t@RE;$TnyXgB_H(6)m_)8YkVqyLt8A zN}aDHWzU^w79{F!&{>7dSX`DxVDaH%gwz{<1pm?vzC^EY0|s>3D^98L%i?o|#9K9%h|h>NU-1Bq-Px zd$(Dci?_~To`z@#aSJ|D3H+!AeC#|KKG~3YgT7_u7pYGWLrZH%yU#cCM`lQ_vtfZzTPxXPWTF~c@9=EucPh z9ATsfPFdcpTGpB6@18k*8;}BDy!ho7iS)d+-HiQ%nqD8+TTUF3J_`z>j#?qTEfX{} z7f>x3H-Csw+M~0MxHuq`Q#r_};YwnTg0<+L0Q4BbyeIf|z5OnsN97{iP^?nPz)-BR zdskHE(FcglKad`0wBC!w@1S~aYfeL$rZ`$qSL&Z+9teM)Z}9f`ph+N8`H&$HZexR1 zQn~x*HyQ(lxrMu2u|Tni*5~Bcn^4zF(ATl%s(2?T3F0Rc7t_oPPuMJRWv1DtS|(7&_kJgwf4X_^xjjV*hD*Br3K zp?_F(<2}ky{V!8jIb_=TqK5AW=Oek89f;d!;n(NAcQ7?!iW1rAb_er{0B4eC-8UCM z-#45(*SJw8YdBOAV|#d>$5UAyJ2%@eqH5a_$S!o-3 zJd2~OSnOFyCTIWDFoTC&&0P;d*Zo@Tv@~8^>nxKnb)M9FZ1FpQ0l(nTL^e28-@~t~ z=QMy_smD%dz3KbC0Owi2ik_UIr7*V>$<|17y1VKZ1s4heGJ|_wNjI;t<%F+-Qh(q7 zyX4quONC09*ZLpuKB$*?RIF5>JtQN>jz7SP@#xUQ4#B+u5prVZv@aR*-gwP~H8*&4 zU&{Y`Psv?_T4%j_03*6;Rn!DMz4#;>{(&U3&Nx)QMULiCy zplpji1#WXXWBZ}e?id>a6j?r^wtv_=eBMKwB*B+XXpd=F$CS;0;~IP%NtE3KZIHvG z?(beYy6zNHQ>S%;Jt7nK7W!BuU$W~%^YrY#I6OE5E*zw#S^j3QrUf(_QE9znjW0&6 zyoE|y;1-^z9mxQft1NpcJ(i|^#tIx=WQJWsz={2(5TTIkA1jTs3MB{M#0x{-RjS2w zRAMO&TbHY>92$QCic4oS_|$X7kCD}F9uavon&86NhAJi6oIn6W1S8=-$`RP#qTyO} zeMkALA258yMhJxWfXQ#I7M)09ug_v%(_#XlOiBb0%$X_tGj! z(an+sy_UVO0IF!frYu#3abDy!w3#6Pk;i+CRCoa%!ytd-{rcl5{@i^SB88m1Ddm#2 z8}i8CI~16dd9~(?-&W+|7Fvo}37NiW%j%j8^JZNyWhzZA#VJ3Brhm+fs_v zMydkoMhFmBk-$LWWJ@H;N%;81-DI!@0e%u0-~-*}DotAgTWX4j8d)c!zognmHHHh5 zs0snCQ80gh4b&Rbog~$xx!NMOF5v!>gsRQD$XpL8>1yoL+3iw~I@0bM+l_!((gt|m z+iixIkY7TM0FyAZ?A1k?Ky| zadl=J;NH>U;yB<*F?SLZux@hR$Go@JXlm(9>RW&LQJ*a8;JHq4E@`JL%?GnPc7nek zRc9GGSG01IR6Mgqw;bTZ?H##urW>D@>D0}O=Q}j*>bSK8yx4WBA=Kykqy8GM&9>M_ zh1;T<4m+kIv5we}WT0;GwigF;K8reSk+ zj+uYuU^$!^8`!jYal<>OQr?_Smkaq5F;#ass#?SoPo1-5j3!i*xG%8QJ4I{##tZbK z?ZRV{nRp@%x4x)fRw}2QTY{d*95pLMysB{EHO2Jo(b3APHH0U&6rhUvTj8KGN_S#u z2Y*wfdh*?bZwG*(Z`Ogxjzd4AoC&jHB5Qw_{xV+C4FUBxi=)N?d6rynNp_q;>HyP$ zTY1l3B%s$}L8&h1)cu@qwy>1L#02Ogj+q8mOeyeeo8yzMMJ49M{gS_`EbWz)-EZtG zJX5B8@ES^_X?(MfdjM`8awP}q(djt4tcJ1=;Ul!#8Z+BmpJ&%TRX;!+Th~0*=E8qf z?jDa>GK=oJO-yQG^`49kUsGqas7`n<^A4q(aMsp3j93^1SP!oByMgGb*<~N#zLFCe zkx33{*B(2w?gfjZ7^<3ALrx@Hy)7&peS|V7v)F}+%89zRqa?HD%siGhEy^9Tm%iT5*b5)2DHK3cv#;zrLL zQKAYbcvvm1t4txl}osuNxYO8 z_oiXol4>zT;m3uRN`2kCgm_rZ@W7~hp?#N2={J8o{TLTC??1WyC89`iw>J^w!@wl6eY8*RLI*6WSdz9YU6As4TL*fvwq3b7A-B|C4=_ zlpV}7(=1UryVnTKt6Yrb9rtVq*I}1B?+aFbauo%Z4lMbGIW_{Ze@ea>oq zLGcgIc&*QPuP3~s`&`ucg!1pp>HdcE9oD;Zb^1p9-(d_j2EVe*Kej0x5Rl^ke;6b4 z&(QybG6Kd1cK=Ilr7l%#HCz!ipJM1Wa@u$h;w224Vm4?xE#X_TRTzI5EOTq~TIH&N z>sYI`%i~KM#kYTBy?M|p0PhIl?%m&?p&5c3>G=3%^&*PalgsIAX4h-)>nzWk%Nk$4 zFYw;b+5?W@u#nPdzCkRQVl`Hae!7X!30xIj=JV#diw6glRs((U+;Qs`b!1`|X@ZFQ zlN;O%up=!(Sd5zBemNQD!Tt#R!s_^K0_tgr=@RF`IDLOC8#{`nWL*@ZmMlMm`i!=6 zGiZw6_cO3G*6q>2ox`!Q>(tps&^ZPbDSeb{`+E_JnNq*PnQ=m#;EaL{$}^H;Q?c2% z@~@Kd<6NyAYxE)W?8s_XJFnLFSVP3Qlp>7KY|XJ2>@jSaDxad62HKt*QEd9ecnBVu z`0!Kd0x*BA<_NL|+~E(nwuiw((&$5iwQ3+l=PEvmDPhD?^J>>c*7&_M!>e0V(0CVZy1%oYk+=}^0thXc18C|6Ov5mjp?N60*qOVou&7g z2C`7gph8;D+6I-}xs-ORk35^7x&+LT-h)CBc3ywZ^X_Jw#|zni;20<~B`sh=LMph5 z@Aw8D>saMoz=*Y7-l9opL(Dz6mF91O2jr!a_P~c>y14u0^dZbbj6W9dkok(a9xv#H znl4-(bM=g25ZwZC5h#XQE~@uaF9O?F3FD_qxT^QKgnXx9`^f~VB`JpIw=k+rnz4Ou z$X0)<+ngg=E=9s58_nFA#(t~kvaFY?xd!!6;TO}!O3jM*-I~#4tw|Z(!T7jDicj=ke&nbIr6*&Y^^=xzc8P$R_ZpwaC$) zg~?TVqmZZb?uXEkurHe&B}%hIeAQcW>HdE~%TSoL#}!%Xz_4C9r+xLL81hs>;qM{} zunV^Ew_@SB&nJl96}b{IxV) zv%_Us(Nqe^T_X)p?t6GXZ_*A`XMCh$YV*}B<+`SkVUy|hvOd0PaKGjd;YMpC6{UZq zenEXCdCZDtkk_A8)3F$K4~6v4MU!>9-g-+RP{E-TqyH}1HK$~b?9ooFuceBF6=sm2 zV~Cd?*W>pSeFrF!e07Xtw};+gkI~I;z(gtFh}9>A>aR_N&ep3T%;k7T_7Ot!2a9+N z_nvab@bHR3lep6wXt1sz7p3e$bRmBV&%S_SCySn$zG`E~hTs^B(q~Q(_~Gw5<22^n zE~9p$0(ZR-?kXN4SARyPb;K~z#FeBbtn<4Ey;YG=3q@QzAN6wpvdJF9mN%I-9o2_4 z|EdxeAd;dwtU$#(nTl(_qftnusKS+OBQ5&PV zYR;3v+_JwW+sKXzPguGaNmz&(6#O=_S6>wYH~Tk*(^jZMP6iAF^alh8$mYK{c>OP9 z029am8vPfeqtGV{!ieMzZUQWDYbxF8KKqx~W7qh%D10gO@JB0mf4p_a8U~6_R3PE5 z7`7QWip*?+4A;U7(}OA3!*_q37pR?oAQXDA#AW34TC|iAz=m?ALAeKmh0Q8(h0K7m zsQ}t>mJytw!!R#Y@M&e2DUZj_{ys`-t!7Q&98`;*_>$78goPq2F45C1%>ggS!DTRw zhus3^?o3}wZI~?6y$iZy{}15Ub3<@#I&y`CoyJf%+_8SlQ}b|>+cST;UkCv;g-1~! zq)4G=HrzLY2JcNz1TDP+W(7dLYd0Z0J#j<5c(WFYdm<>XLd9#N%_SjDg-D&~c1Vu8D*d4T%AJFNRk_bK}y zX9+_90crjBI_&?JL{xviko`Yv_hTdvfx}XRP;a+3f@`25p&JFrz_CgNYM67u;Wn(#CPK>-BhlgXn|D$QavA|5+A9 z^uTu6qO3&}R$r)zWe4%mUn%;$Qj9|cm|6L#Fw8f49V_+S7mO#x*E+o6qoC=2RY^NQL zrn8P_!#rAgu^|BsqJVr+6^$z7$g6KJ4^wQOyMBvOT3H$;aVDmqy&kbhEDdZenj4Tw z3cnxVpBYR9$4r0gjAXb+(9s=+yO{KRU8O4RdhXPbJt|*b0!Q-J48grsnxG1+k^s|V zyvHPpWxBawQuXH3QD2V&Or=~XS3v(Q#_Pc+N*4(rU$8a;d{u@J%D zKI-87Yi97ZaXaT~GMY>r6VbLSzd`+^FE_~THB&NLi`uqXbFY5xOq04a60xU(3Ht^> zP%G1k7d%jom=9;J;^cmnMul75DyeQI65M(>{+7orz`n31Q~|l!XabiG?%O zPTuBwk};R6x*T8*V*s?_M0SaEL0>FCWL1|KyBt?LpdFk906*4b5@O$O^^YYioTSOY zYd)#v(~ z3hu3uF~8}#a4~a=E~Nb{J#P&X+k(W}2)%DHi)$HeG{kB&yL3>s(oNiYmHT zTGN7S0-n1DN>Ftvau1FITw>`Mu#m3u9**|FFBwr-2w3$RHZ_-hb)lvot4&H}U!r@g zNv?y4f{W_rh&n;E*IIHSe>Sx4HNszJwxTX~jk;Tcp|^p0qClN! zNn2*ZNmI+K;EsfE)#w++o@xy?5VCKnW(Io~qg@zd3>u@UBc`N_YZftpHbP~SYE>Dw zb_1`YM@p49lNpJ|O=v&g$4hUVq#f8E&EG#p2Z#D)QZraV+Bn{df3Jn@0irKe*36ZM zO%+wj$jmL?5N!%qs#KtfOa&}jGa^{M!m|g5C{lhd3nsMWZL1agl58s45(G7H$|UMv zdsA9g(uzLJCM<%|%*=zWF)V(e8{*v(1^vKfeCgLen@CSKlAE?-HN~>I8B;STdl_$6 z5-GbmRO?|-j*LiWf80uiV*5}puO{(T7oNZaKyCEIS_hGyN~fwmNy^vIB|gC&&Gu$$ zpPiCt5LEo7p^Nz$!MZP}kWJVt09})Ohx7Q`NqNrryf}$a**R-N8++`QR%DABxEbkq zn&}cjkX7FAgSGtWFXwn97J>u^ZGqgcHFsV?^MS?&Div2Ze=ITN6uXwl72-a-2jUE~ z*oRH}20mf>Un$qaevw94g^$F~z$#XaRP(AD!~fFv)a$Ryq-1=v$#WDPu9R;L z&`Jh`Q{To$vLDdF!D}Y>-uHhck24`LOt%RV#NDZOM(HoXZ4?ra)pK~N;94)CYzEj5 z;=8~Ge{K^UDDa3vg!|=}6S;VrZBXQlCdAooAud_#ow@-6LV*izw+NE#EvYqkY?sTA}euf^%8 zf1kkp>9shrcu@q{_s7Gj;wR$GvFex3reC+&7b@DO!`T8ice_@0_#d zmS$V~;W)VAdBoPpT?$>=g<}!TT>7El4Ra#{k#Z^60ug$PJDVw2f3Qy6VABsre?#px z81o-Gqiavk@Bj-XXQn&A&FEc!I6N(0>p$eBbI zi&`-^d$haJK|aUPLEx;{;-}R^oH#Qx&>1i+x++pqf54D%y#mMZ=Imqbe+-I+Yz+jZ zJb~G#@=S6Ix?B*n+67Z;uY?;pod~Q;Hck51mkOa*1;Qu`e-Kv2Wo_NZ#xW-M0xTt9 z>50W?E+pQ_ymFS=;yL+ynF|%wSLB5%f06Ho@_D74eUaFXe*krrF+VVVAu>Wso93I< zMZj(Q0J|`R>e|*56((Q)5o>J!eBD|p4Wx5q{Zi<050r^0@VBYqcs9)=+ zLkxcD10xcaylgP+-J#A!KR>vs0pIWjBI@*x1mWjkpq$*UEs&AsLoGbeR~Es(RILVH zt^NgF4drt(K-$9U^RdJ0XF*7Lb0`j)hsz#vq?crN+ZF-P&A&4Ge+Y6v)ww6{dhkKT zzyJ6}t0E?tX=t}bk^3Wa@7iZv!|H&q8cPpmeV`PF1r z$Idzw1;qzP85d|eJE1sXsxkbF;oSDTy7`>=zJob)(wW;kdbjMKfyX}* zpA5k`{}ve#9Ua(U{c~3+`Tx*L_WuPG{f|4s|61}Jl@aNCvvWZPC!M^LFc?UJ+BuxV zj`EyrU!jgl+#j#C4L2dxrgLsxVsBVakouSX?x;UuFqW+#f0{hvFO#CI6y6=LgF4^O z&v*D<(96Tx5Mc-jNUB0?gipJ}=wKZ6yjQ2ek!#_0TVg&eXp=@uP!f6-SIQuJZ=1ni zk=q^kFij`2auErde~GL^6j!d1OIwH+yLjqHO=4YZ5kd`KXthZ|ulUq-${_sBA?Nv@ z3)uw2!zg(Ze#I>qeB$LD(T*m^}L=2ExMNFnjl(*yYYKP!&FCLg*+ zd*Ak3QNl_O-suPYij^GK*qo8mxjh1Lw~!f)o;5+=lHT9 z15T<9j@@FVJ#W>@9qHhW`md|<9Qp2Hhss6G{!jgm9&ObUX|XBUv=60<3=e7re@S>? z{DnMJHnA-?w^^t6qY=iC{b79$>tI*1$Zrk?>5w9lX^VD9>17;NMbn-P4y5bdYPO%E z5vCVpQ)4st8?#0^QGX|~@BAekQxsw)7OI_0x@vr8RN%=!Nx!%(y|kDPFXFg4t{8z&2)te?o4!iZZ%#psTaj_cXmWgNS#PfTsiDxn_&WHiKH zbrXP_l9H0OvB~2%C3j4V=H#pMC!59>uD#V{YF9sD^{#1qCD8WMW;!H?%;$}ed5LmLDq!% zIEGx(m;1H6FmT5Vkec0Ss_I}YN9T;|%708%y?zK%^^Z=R{azicmqaY4fm_Wk?s-+D z&aI3K+v#?pw9^kb`*qjf)mFB#sM@vO4u4lA;WN>j@j?qE!ZBzR zx#qF<(MGO!QTh4vH>^m;W~I%u@~3?8A??UINHt6S?Y;{UcE{8wfSWOEX6=*4uYcno z>v=X3?GA7?hk{p5TQOFU%U$a}*2S(=ZjqN|<>S#dj#i&6D%ek3k=c<=*TL)M(t>~( zZ&kQ#lHn&&qMe_}I8$(_CY(W9!CNd^Wk#-A1Lf5+oAA;_X^-Q&s?GUMkp*g&>`TPc zwkSB;tb6N?Hgq7yB*sp4xO5o`{4Im9T|=ccC}y{-4x-#pE%nXW?SfD-z(@Q|MiZec zD%vbM)kZSzF!-9aORW8urOF(T2AElSTeWzXJIfp(0fLuY%N#L(dI)D&vys-1;?907 zJLlIVm1>|}wwKE}nHLc>t{T`a93L4BKd&w{KdVE--|PW1RxjC+le^%~{mR^B(;r6L z_Dsg5%JQD*aiA#h1~e?aLmn@@NL@l^h&JsCh`kA}?tmI5be)oo#^a}h zN*g?_^w%zpR1i0R0zFJj-$1*U*Arob#4aa@2*Mr_b-q1UF(2L~0}j!i!DIG2{IykA z&d8A+b>os+d#di51ISk*ZZ<8+HwP%ofP^13OS}e`CW?;{E}wv$`@VsHVlT2P!Cz(H zBtlO9l)`t|w~z>NF=(HngB6F?<@RX^W)oq^$<#y$OhF1W!tuYZQHi(s#UhR%C_yQ^ZkAPbE5a|=!ou%eJ=7QBO_+SoH?HHj2tmX%JK%+ zLJ{x(rB@d*)WFdiHHl|vWyZTa6eWiF{j#BM9eNk(HQnTf}LJ#5Xu)4sVKFRA3rZ6y@9BH19g zcFvh;wrM&%|1@0dq9WF|=czQ2$E@ODG$jN3b6F#tmL$FC@&-}ncUQopoNKJLDET(V z>j|vJu!XDc#T6~M!-|$VD5_}LMU#eb;G-6`89A>N!ebq|1zr!oCDqy`W{vUyIG0=> zw=aQzcxz(T>T@U4nWm#jka1xOar8*?QB5!QC`@^@9o1Z{Kqb%sx#kNS$H2qE*6u!} zL+S*4sj{cW;39mt&eAG09%B;Q(`u=#**tMaI|Z85(EQ$xl}-2O?x9z6ymLJeC!p8v zz#ScobVJ0P_=gCDTaj*}uwp_|EDjun9)A*la>Q0mlvMx$%xYuHdxuYs&7`9M0S+rE zS4N5LQ*vnz<}wC2T9me?heOBu!DLd($0K#=@tXJiG_S;_i3%zKBFh!?2svqswe-Ms z$Iwk)?Pi)!kC2AR@KTjv`M8rmK5YEkU!u8zw7Ai&8P?WrTfDec;;V}Xv?^ZN3;AV# zj{7aL;&H85ty?xFQ_Fzn?)=A>8|*AkQwwJrdibWq@Fu zSk^1|M+r3_r;$8Itzz&T)9`+LTr%T-4R*`P&*Gx7l@QUhHm)+hA_#EIxVykrZOB?E~358zyN>#gjo!KGPvP}472kR4x74AoX z>U-P{V}ieHT)o@_6jhT6_6mvYQty*n8IJb&Ob~P~7~{33KP#5xwT=E!^fOFpn_8gLSJl_-3Wg(X%I-~$rZe~q+ zG!;l%VI1ts`uD+ASOd`H!=+|=i&a5j00Q?^ffDt@Ri@Y`t(a_)<4(AAJKCb9P@K_T zQ#zHb6L^_Py$DO%F_8l}3wTq1=AO5pMp3E>>q@*B+V4)KnnFuGA`2-4|I!cWpAbi~ zt5$^v2DuZw+G^dT{`EogqbvSMxPnI583Hl0aN4s^hE})(WDl-jX}4sRp7OZedstYk zZqlIdIikyLA}07j`~c-1_Mk(9OS}=j+L!U_S`((@vX9dsCHQ094~KK z_=6M~#9eE#ciinW>fZyF!S$g(+!#3a_;jOO>FRMk=Azg(?WtaN!^b=Xo2jCQY@)n$ z`SxUIEF>pE%wWhJc=tpR?|kYUH@Z_8O}WFk4O32Gc83?xTMm3Mz5Y;hxhJtaz;iO0 zDNdt-if&UXT0K~0jbMd;U9w^wIS0RJol^+DVld4+YUiL2E)5!u!^heTy-`+0+HtUOk0&z-@}_d;rINykZuUiW z=1KMbvx9HQg_1u|Q&U_V^NoaZ{&U`Z)A+O z+?+2uA?)pKmp6KU$^dt2H(m-_jo%wm{<@rxCoqmTrKCTio7Np+-!q8sGwC1lKQ5|(#q zJf`H-{$&=4SV~>w;rh~S3&MNAjw9r3Rl1F7t`8Ju|0-91_hFMnrtoViHZ3h)e;e~_ z?js{G{{&SW|h5={E126v04qWhAVxDrPBrlb`N%*fOn$fo5Jy zT`q}}YN~L5$rg5Q(n0W>a)EDN(R{Ta3~KJ5nfDQ6MW$ANpL=P9zDUIJih|$Dvo4%g zJgu8EnA`n#57@5rR*V>KhJ4o(PMg59jf$o!vUSu61Ji12CyM}hnCVG5&4;2_S#Uq< z&FAIrD=Q9Rovf48&%wd~IVEVTQ)8|WMSNa11+f@^=x60K788&?EX_+IalzO@hMIil zP1ytVm=-aAfNyUARvwZuX@o##_k`bXklkdZ*1ahU}5d_Kh>k` z|DG3r`JdDOa(n^MQdX8k{00Y3u#e9l=ycbhFNbOax%MQXqXSi_L>370sGnFM!b+Mq z4&`EwXtDd~{?YdfnAN1y~SG82{fDrh{mO$8VaxI+evRcmEyy{)1dOjN1gVS^d^9a+C7hKhuL zK1w_zL)`;$YD2Sv()pWGV%A!N#CVheb5y~fz&?BLye-4vw1ry@^g$4KkOOIS9H`7b z)8O)_Z^~(yhR&cT*g*qp5+KPC{Bf|+!Mhm5%z-o70d&GRz|bFq=z|w-VUk_YY#;gDkyArY&k&lsfMYhq-VDZm}3wF ziSE$6WCnbB3*Kke#(M&zq(_s$G8_fFA#|f*g3F|c?>Cui@Xo^y_vm}eFP22XHvC@3 zPVttbZdfR{3pdZPTMBm?x++KWAl>Smj_%<0-}~-|U}nlOkT?#hIlsq_bJtOSM@p#T z>uK7<3RU8)ok&PMs+Zgtupz7-w|BGaF;9m&c`>Z+7vvVoR`Fbkl=EJa?QXQoxk1op^vPSNg|R|IS5=#f|mSE6lq z)1S1obY3feggmqY^74gg2L5t?uNNSsqOpp%j>I5^YIX$K>iLr;U4Ic)27T+wEP7{@ zYh>b4FmgS!|2@SS((}y8v$zB=x+C%}a40Vcp=pP9ubiB$L)sdidlFAXUv((5d6s`M zpU?J<>ivA>=iuxODe^P8rSa9n98~)yI#@ zWey;Vi}c8T{Q9?ylVLmxK8b%IoBkhz?Egx)1xPES2>usjrT38oDSLOyp(vwX+3uhU z&4JBHRXuRngfZ8ql)6xVe%q;5@b^dg^)&&Is(93MzZ5NJ$q6l+=LS?378e)e>byL; z^8R?gLhkZJIy4t-2~CMXaA8H(>bax_S7H{vI;PNbvYt&rbSt4rg~cMNNtu?E%&*OK^u`xiLNpdA1zJ2BHt zE%i@BmQJxX+zs2JKul=QSy9|OFqb=%yf0BWDl{QR-^#SP;oOcIXMG*z5$f|c>Yc%j zPw^6v?uHNDD*-`_IDwYD!e-qzXJ-WA%5?b_L?>7WIbBbiqjBQsdEH>|vNB*B+JrN1 zWZKx520Ic_$`Px7^ViCV;FxDmEhV|nDs_p3P?Oo>i1T7A*qgd~ongT8hO$CsucELo8&~D50Fz3mDn!q*FgE9TN zf%q5{j&XbMAXnH3vNzssiS55j#g3WJ#^)lDDz8|75?~vDs?bqa`olw%*~A<&-`{Vh zu(*zScgi|pzxZxBRyQ*kEa9XWXZN#19@yx1iI>d>Q(?E5vH>PYD!_kACtxoX1Gkk{ z#NgAgI?;_aSl;lG3DPmMfiz-TO{>60KR$bt51aF0%&G zv1DPJvJgyv^;st4sUdrI)6Cras)VBagXoi^!Eyz;$t$k9nU%g?<=l zp?p`9A)jpci#?3wsS{&7cwj{(=sRM_8T*u|9`uBNv~j*#ccE+4BABZZNWsIl1K@hY zp4b*T#F|l}PnoqT)_3Lx;G%yats>>bq3j6SeEk;9%1Sry^jUV!!l@2gp6?0lmH!JE z%|*jyD9jrIaVfsQtUZ{rQg2`nZ>if&{I!7pOL764N1Q;HFe>c==x7D#$R4H*YLN7f zd+vFENa((5e28g>JCt;FZo7~y)H~Vym-0MagvDkQspMuHvaurQyEn+c!Z(XGix=Y` z_%i;-;LH5K7dbr_uf_O zU^)xRGFtoxcoti9zrP6LhukRJ2aFUckXW{Vllx&~E#vKK=JMnFVNwmKD7``)tuhEw zyOTFxL_UQsW#@l!190WM=f0hnXPPTc8B0u`3x>3VQ5+ zEoFzpnFMdY0$z-X5JzAs;Q)H(d}A211%0RXS@MJ$sOUoAac41R=DiSwRIa!-tjL%; zODn{g4gEUCW_CWQPyK#OdP@OsI6RE_{J8y*zAYy9qg;$RA7lZ{Xb^|N9;qDT;}6_4 zs+;>Zt~!WAwoCG{oGQcLkB5KQRyWRn_7T)!WI#g%GxTLGE7d~n?5vSfq3tjuJmzfN z%MG9W1SKh|>A?vW<0a}REUtaeZ)U(l1Zy2lCxZ%VXV*dJkZOh*Owll zvF3@~oU>E?^$;Dt7wq)OHc#8gWAlHkIXs=`%d z{k?jR8_CK-KM=Y(?}TEgOgQB8iyzRH7p(r5-f75~7JU}JQ8H|9YSs2=8h`rb*NY<3 zRfZ)Vm?THERkp3#j5yfo1~`^d@ZP zaqCBB9ic$F`B3!p5o)LXRw8#Jv&CKe?%YY3BZy_Yza9;7SE+763m#KG40Ll^*K1Hm z&7pTgXRpc0eQXfh7>-DS(w{XL^C-Ul-7o2F`a>-S3| zUo%#Tx^Q2osx=>9mVw-VPy!S*3v~(ggO68dJ;W7(vupVESbkv$=6x68RvgPrJ_>UI zLgv=sr1N2VYR1^_`~4fF&uDYf5VQziiEm*Ha%rF(=Td6RQDjj!%{3?&y4BFqrKFYI zKJ>cF5;YN!0H3*#c%H7QC52P{(@^&~?LxMLegekSS|fA!Yfw#p9@md3jM13)&^vk% zW6W+59}I6Fl^$nIRFzJ#{a`PL*$ zx^o)!-=dzb16!= zqf%RgS(xait7m^D*NPpdM9aq+p$$|w&mDyCx}7&&M$Bt}x9+q?Lf={#`-7ON`>(I) zLwp*yaWo75F)04`gXb+bo(`h+fxH1M@FL<{_Xp-{9p({p?89Y8-vaRi(s9RH$1Gx# z-ky)K4Jfk=GcJ^OpJ?ggmsWf5qyTXV$`4xVBJkOZhidJB*}4A7YrDP!>XmZf@krTS7Ba zR9D8O-M?;LpoHV!>li>l@O(f(YX6DN``@;o7L+&I@-qJkxk2J698{M921qdJEf83; zIw~@7KdC-);4U(SN0RaGQO|2CkW@|07Q0qgxlVI`OH2E*CN{oG=Ny=2&6b*tm6g@Y zvL%0%%iFh^>2~5F8EJk9ft~5~rq|3*uGflJn7FRzskBJ5=G99=A#RW(>(M+%>5(ZV zBGg7e&v&dnC3aN0DTq(>sV}!NhUz`1}<%$k>>C* zR>RAG2oR+OLzxE+dvAd)pLw z4;^~c->bXyWoszg0!Br18AGn0X7eRlTUK*_=*4F>?}@B|et)#PdE-oS$TH@Z)Mc|h zWCkPCEaB^!;U}Y&W$KL4wanv1PMMG%5UN}+>_^Z;U|AS{ z3#8Km@s_nkoH({jUi8H&mVv`pbn{4=`ThoVWln%VE*@5pR45*Cb*i~0bv4U&vt~g% zSy1o_lk8-Os-RvYpfj)PtlRiyU7rJ2(p9g-qGhp%d5wCDey&-pm{)^*zp_o6L5GG3 zYI|QuwvH&h0|_1gaTU8I1H)8Gskw)LQCy<6x%%XaN}8Rb;@nW`(wu9dv=j;FIon)s zjjA$)Orac83a2v3(jq;z8Lhr-O1kUJvJn)&lU*QG7o+c6@ib8;n|W@|teoIp1N&q) zL4`v8w4|?4R7%^NQb8Q$DIQ{%56*V9V=UHHAe2?DUngVC^SUf3I;8+n{~BO_0y|h0 z?2=S!Y8jyPcitvpH?$|cC&;Qyuto+YEPPx%Z5}?z)v`0YRzH*RbF&~n-lqz$W#cLz zZ(}rB>)5@tDm_!rfrL)yx`^h?@=og5UiWN@g9F+DOXso(NCVtuBG83VR-Vx^PW(&j zf~}9(@Zvym6+g^FgG|I)whK~!DuEyJgj-`sF4^;t(X3j~ zpw@y_W8R);!60CC4eLBD8WD-+T;AnZnH8m>f{JqVzD$$&Wegg`7dH1g4F8foQK@sj zjV(9|#X9UI&`D$1Gj_B5Vv950F|Uvwrc)oZD4xr%W{~dWk_R~rnI{&1UZ*aWYU}nn z+sCE7$mZMy%a%YL1UNmLAd+6lDL{aI0SC@AsgylxV>Z=28w;XT6b}Rf?)qegGghJ} zZ=0I!j;*xK)WH+bVrEQHl;&#@s+E%B9#-nM(6!sQ&irNY@&hTGBFHW%zgUXi!1c93 z>*SWSY$5uaLz$o_Ynvv2aD&!-r|j(O@fT^XejHtW;XBd@m)sA!Y}j|nT2|UdAv+MF#tg$V@_a03dyT1Q#(vCWc%!X3lN7G0mY?#qvo9z9%zdB?}pm9NYxxP|(sI0kV2U zb(6s0gNlX~vrqGb&Mk5HC3ZNEcu*TV zAuh&yizx8wg25K-vUc$lrT3STfYe@vfSW}G*!O}`g88_A3@KjjTdzSzWGVqSerci`T`O8piVWhO^qL466gVaiP5fD{y4osxk>m}cji zz`wK>f99Pid&OAciRxD6s{VNzoyD)5;uE;{x>AgPQ_<2ABb=G!ljQXD)7$7ArLhY6 zExoXlNoSM##xK0#O)@znNKe?#}%O%6_rFQdz;ccHY6 z?Hi7NBY2X@rM50SIc%)G?4R)nCk{-5@kE*7@Q6QXk4K=#dAejI z;~{dHS>?`_!^4W}Tv(=CD&XZ6dh?SB%^T}~=6ev)3xOLG`IErr2o8Luf*+Z|o7;<(a1OKvM|pGhzBzSJQv? zx9>fM3Ff~+p#x;n%Q&tn_F26V2hp!|$F2(BjF!8VFD0a|H@E{S9bpsc6?uTHO5rAd zVdi?PDXTt6O_|WzEof6nzy$6oqzP-M>lSwCrdt|hdMozDbPw;=WYQmzmpV0uz$71( z$7S=1E;fALP2*&0UR1I-+gMeaWwJEuBD&IMwmDRxUIX>g1}2{_RHqD|Qgm-eYX(tl zjHOv@6V16Gs~mKO!U69(POCxs6aU(OO<|uwC)OLb0oRL(j-9^bHVbh5(xAYd_}G zsM*APmmJic{&>{{U2)AoRbHlYqY7h%XZSl?$NK6yU5CO^C7%@A6+@m?pbCT?b1U11 zdW-Wa7PM3TCOeqcp=g#{>j6jS#J!JHoZFz{5p|!vQ}|Z%$%a{L-=um)S*&cf&hEj41!pa%sp#RNvEutTbYqk=j5lwbMdY|q9&Rpr zR0Qy}nJPBn0()y+N9+e}v4=p+hNV%0<2cMu#p$*OJegsTXTgg>b+0>r{3tP2tyk3b zS%Ot>3crCG5?n#Mv&(2t3Wyd;mRGvzynPUb${Blc9%{)PwfKEvY{e|r2VAWPm5c1) zTi(o@qmSLtqOCn%e4MtKG1`r@%k#T3R{p-cgaw9&C$J*w!fv8(*onExSyT4=`RM1n zpyVKe>s9Y?6nowHY;(|mq>LwbLTNY_>O70MsYF`8Tm2lu9y zuki!SvlrHBy_18vTyy9GNOK*^Im5}l-6iXQ?Y&#LX$0x%y(o2m-aWoaUM%QalFUD3 z;@G|Jlpf_oE%R-xe&V;N(l*U-O%f^OpS<6_{rq#E!rw@X@77iO@8#usBNNE0?W?9V z<}O2x9Q~Yh#m(YU&ob*GN2fMI=#Kn9A`kK=jU8L9#`N%!7r@8rm0~OIKc5oGU(64HrRzZ17pEz&Pd#EL1BN8Hb+~*F@cgoF!yE`Vu zM?tY(A=3mbKZ;EC+U#APkw4XM^q*?0j+)(gm#{JAp*L2owGrG|+qXcJk>7;(?_tM& zToAeYR7}ruKEY z8qGwM4(3;nQj;~>HZp55BREA4XdEivDWbW{Y#+2+NngQ-s83|&y%iVPwB}{I3f)zu zwh|N?Gv4iu2yERW%M=R3jCBw)S?cS~ae@$Q4zi?lL_1nXQ3bQuUx3)1g$eI!5*t8}TsC8}30T19M&R``|L;zm(87 ztNO#8gTJb&reJcB?4`2y3ox~9bjsy%o#v!^v?(lqLI+wLk>zUUO_3n#lF z@3fczGJZ?cFXp4&v>olt`Yq|j0F|cQnT+v&j}oDBBwJ#dh74=`E9NwZF3(AKiH1N1 z;wcGcOq3kfS?&MVX=*Jc2Or)B1^_~+3W`)qX6WWJ&bxS@FvQM6$E`Hg^o|>(!PQz2 zy9^guEwc#z{^HXkNwC95em*#yixk)yjAv!N$WKd0+=xui(%czfAi$H(_}W!??C#Zn z4AQIH-A=!PC)m5QD>9l9il33Oz=d+vnWTC8VHs>706bgoWRx%(a}pdm~U7 z1s2o5H50FV{w2U#{&=w{V?2p{%%mQFijLk~RQh6YZ_7T5By|-8oa;lY>}kP-^ZxI! z@Q!L$zkU;5Q)T2Ckwl43V;g*p=An$nHM5{_O}dZK_85~o_p94~*_caV zvmp7oP>CRA1?ybXSe?XeSY~U+ne8ZvST*xdYx!jn!k#}MJehjn0q)T=k)PSTw0S&D zX~u;w=RkY1VxWWWrM7CT>avGp_CWH$6TQLPP@c0AQyyo&)*eq!*CD-~=L8We&jnL% z=mvD6|Ax!C4mkfwimx~4*i|imX&Dt_%AFM;3o>=qK5N8^W;8oc({E1GAHzU%pUxVP ztFUy0mJ(LMK+^{2uL@S)0^jCg`-94U<>+*6TAqPPBGf=z$ zwmhvnvV<=WR7>~0FVnTWAl3;B8wXCsY`@fD9vyIK3skxCT800(E}(a2XP!Zy z2fvau(-;{PQB{cHU70@80-R1S(zmsn>Byg$GVXtb?%_J;^C!da9+=)uSg1ZppAb|; z1YDZelCJURoeP|Uxfm*JKVitr+w$HmCvXUxzqlEWE-?RR_`%+-HAN5%71 zg03#WAunlfU2Y~7uHWz(QorEi2JvtMFYRn^Z%6MloaHBFU$W(ZuKPV19EpAEYz9vNks@iyR^*Fx1b?Baa7)f74{I! zUc0aGhqNtKQ!FFWYcA{B_210qP!#s=`ZV+$0w1W6we16S6Q%hva`Vl$y2dF^XC((c zl`^qo?;r7h!a9n9F+V&^15W^tP8R%WWbK8>UmqS8fwL|*sub>U*U%qttWdSCH*DnY z4}!K5_79A?zVU4o?i9AMw<%Dz^7dtm?KJ&8P_cV_{a)B8{2lpfL0x_R<92a(>z;D=>qzZrf2GseA?o=B4mESuQ#);O$ zL)$1`jiA1bHCw!6&%INQ=T@1TeQcFBjxa|_dIq9E-taRZz(WELunr!SR~j{QZa6bG zc&*kb`FJS$-O^qjzIOVU@Q)zeAiD>>ZxMHY=xfk2CSN!$96tF7*UkS$x+nz7i>XLVo&X_t$X@*Qx7-gSoyD{Y5A1&^fjDlC}I=A7Va# z;F>&AB~1g(qdXC=g>@uqV=-d~4maTkM~z!Feg{)IO2dL-oD_{e?&5~TwAkBYkTGZ9YGsv=QZs(1vF=a*D3_++GBQd1Az@EdT-3%7iSfcb`+E;d1bR{w0v>@|20tDdN|gM^o0V&fT#X5&Lc(Z%9WSjtEO;$fiA5GDc0pU8E*bc#;ac`irzc>poeW zaXLVKZSiFmAm}-Aq16{b>81#OHIg+eERAhy>FS&d`PUajaNCAZn3v*|&qpi4ZFvA_ zOB}K|N=w9t6V~%nUOCq=xU^*AaUzxvJ*{sL=9|AJBoiSWx?csQF-(at0o|B4$<6uViBdd}MYWtGfZT zgipY-%&*1<$o6=LS1bN8mN2y;ryXcNbS)}LmUPeKbOCMGO4kmlqJ?-^Rg-d-6c2xo zA1whJlKU!jJ0b{+4xLJWI>*ldZoKjJ!pn^RoCU$WDR1O`yk^P$myG6RH`VHwvY%hd^IDN?!O2nqi2?U<`VOztEvCKmSN0nn%ln$!?6RLT6(wGeJ$VAghHOn2xyq zo*v_%GVy-(Paw35e+1^eL0!-_Y#2gT^~nV|qhFDXU~L&*q)KK79|6-$EQOP?O4FYa z+eeE3nwE-xR{R|qXfe~E2&^VmZ5Rqyl-ZK^JDd2*I6_%HtHoqtBBzL=g>i67bILwu zs3O{eunSKrlL|JAG;^L9F*m?~3VFjtmTWFDkQa>R{jn;$5Uoryd&b);(ULm~S~|PG z*ik+uyV!f=GzQu1e&wCzEr0rY+AA<4o6Lc&?l+Bp(f&Esa_A$flY77rXE*(BF62n7 zRQ6~y>u75WZ9={ChAEvEDV>6LGcav1TZC&VD_)j#SStSX`j)09))G}ij9`Cz816s_ z@ZWblhA<5Db==cHOHl?R`lR;kHqhl%;`?E^M<vWIH7q$<+sRQvcNQnRFgr3#wl@YrOeojSM@=YXUMGG`4`p*VjK zWHrXDc*8;5Nb}Tt;s}g~`vt1`bmHI++~jsK2gQw2`@M}zGUU}e8}ubHapeOa$(*KB z6L$}wRq0KCHOTC1<;O)+A^9~G2jx;xMu`$(XxuTl|QZeIMYc zSVs?qWx}T@$^dG|C7`Ar<$aJT*OhV$XO2uw({~6mzM;prRyj>_7Aqb$TW-(wly@X= z7XLWO&1oeJf*M;z6QTy_1(Rajt^MST_*ahWX$W6Jg4ef4DQeye!`R`tY(jE>2TK1z zTFH*TwXrno@1CAiU`5O}b|!w_nK^e@o{Mavrr?J@Kb#S>O>t>y-j_~doDTS@ zuf$$l#vi}^pb#K#DVJM}lEu(}U(h1z8aX(VOU%SaT=(=&nm@tOs*6^6YbACP-J@xg zaw;WslFwb-ad)70yO4JVU%*t~vwsYd^cK52_=y!7d_dIf(ekT}iU$VQWVCtfjWi4` zPgO5|e**Et?usMxk0co{Fg`2w5VB4tjb1?kzf$2{6j?6ej9;LVqWIE(-NAe^`3a?C zJB_^IbCiwOQOkw2p_9~DhIUqRHpd;TBL6Wc16}|4c=zmNXS||{D9cdo^3l>VV_E2l ziTIQD8bmzuzLC+J5aE~j%8XLA;l%~P-k9iTLiR&$e|=}(azbe-`6;}g_llA8T(B^y zOn5f>(EdS`Y9N0T$z!K~^|EE%;)wqh=2cGt;x49t&B98xN`)w7U%RTz0}i`^$)ps@ zOvkWm_5N^KoC#5m?pjX5A2uuP#>QK$Ab4xB*3<*M*+jnZknnv_~u~M+#M=)m{ol%i0Qb#?sP%7k&$W>z9b#%kc)^ zPwA_OF|JEGNhj05M&Z%NqY}MfNU8Bg^GFm^VqK+>UVI*U-ly})91GhOnmFE?bMAH< zDQBKU&o()*M4End=4HE_9k`O|G9&z?C*3D%yhLc>dcuOW zRvSp+yc5Q|cK@MrZ*W5}*)-81yJ8E6c3dkMskVv35>dF%3v%!^m-M^E3Et73wq-2-1W15O_tffhY~m3$$U1#6gjjoHjpmoUQX zJ)goz-=N4&=w)@)lTM4;a89AXYgug4T88glLt-R+->1cx&~`Fo!bX%afz=P zGKJ%~H&X_G{kd_c4C=VMiNlE8%1`2*!#39M#bA|Fo=jAc*zSR5Ym%vr3Si^9?rlGt)_;`ryLHP~x@JD9J zZ)p%rf(k!Zgx9Jm|2!zns3r5GQ?erL$M#D-yIR*re&OO&n<9+DAJCI|srf&3CST$e zC$(lNSs|2+>o%S<{cYbg3R12YoI+k`A(Ekg=^ly3*wQi9EDFzr(AEK6jauW|{gW2t z!q4!NwE<@5+~0E8<3}J^j%(+B+akK>h_vq!(T~HK^_Zj2<~^OS7)4g>Purq>Wg?gQ610lH%@v zx0zu{*|lC=M|;2Wi|}wK0kZUv(tc<32#f*}+-|Fxq`s)X?#ic^)}54kVR0U5>PLBR zq4rZ&Y1Q`Jh~1loKK1m`E*PJyS|pm~s#JrNk6KhxiVHA8xbjeDjr6}?3n^WE1%3ho z1SAFh|08$r|E05a{il(2`hWJfLUzu7&UQBc*AgKUa|2fkyZ;?1I;<*dhXX+6oz*iM zO&XFFS_mbziTJevms6aMZjZ9g!OF@3|2GBWlKi>pEAvh!9jmL}C?Z%rP=t)qkEoD} z8YcBO;wQ+;C+v_9bL&B+E+K#^^^t@^Oy63^v_va){@7HFZAnY$tv|yEgU?csp(W}nV!}8xR% z6Z&h-S}T`s+OF=JmtYf$HcVn$Esk;7dyUNK#q1?)0Ma1p;Bc-jDMH?k3UchEtSz%Q z7m?<8z~m;XiVRJ>9h?Yc9y)(gEwq5XVA%uP>1r> zILbrz5UNeQP=n<4D0A6GzRJ&$PrS9*wFayi z>*Yz?Owj114VecjI#=#^wVE|IUH8?8GXtZj>Gqg{SoeN2Yu8UDz?m(7c?1z9QQg}Q#*vXw-u0lGt1v5rSoXa-%+z?dY^+~6(Hu&~0*7b%!U<=9oa1FBHF&;#zr z1e+u;bdOMtLD>P;;aHfp*oFOA-%_&Y^SQ50nYD_I_o*tJTFB(|Zrov;y=4U0 z!BdjbVzOnpbKMA`hd!f!_I^q#ZH}-JKG&@^BjTMkZXC;?Z+Q(BQKnY zrHlRtbLHNz+7#NRO;*_ZLPU!{#UqWh?$&r6Mha!seGGt>PS+fNj9}x$Z+gKlPraM7 zt$N%}>Ce}3m^YA6`qB4qJt=z4<5;g%M~Mne7N}{Q&I5aBlgG=#41x#bd}(@t zIxNC?i7|E}0p6Z>D5wQL^i}gOS?r^uumBMzHMxE!oH7L_eiC2eIAUoV(CBs4?LyZC z29H-RAEiE=ke;W1HVa%B!cVX_Vt&}0U7beiE5EI_JRL=R15+|2kKj|OL-8Tzxc}!(iBm6cHRXI zYooBwKjH@rflwwMeJtWzY+rV7%Ap(EilI8t;qsqle0NfRd24QvIj@6nVd}CoJ@?ZH z>M}DmejmKUGlNMHV<^SmyjH@zFv#&u6z%uR%H~ClEBOjuISWo84#X{TL#&0~QIvi% z*)xZL(0giO546j@nT+n&_aj9Quh~hMg58oQpUo#z7|MNN1Py_RcN0f6{~s+fYkuS+ zY_2dz%IAN7`?1RKOYa-^7Z4BzFc6T-|GAR$uZf>M3cT`z45&OWBo@+CA#kSPox2G= zqTy1sgrbJ*nmyw zL#L><#aL6;$7)hNYE;p%T$xZS%R*$)tgMX1s-4e&5(C3ciq7W8kJMi7i#S`RTGu5@ zRm#OS-kl5Zk_x!Q#Pz#XV-id5mF);tk{kOXSpWP@R5Bx-=xz_n?{E*%%FH987ll|~@oh#OX zF#bp07InDk&odu$G$`mgWZBW;CGkDabM=KNX*ys9heo)i0!x=^U7VC~!Iu{$QL}hKX zVs4Pw(2$ngWNAjzQbHRq_`RxhsA+TXdz`ETecZ$~e=YGJalJumd!0r;U4lVs2Oc>f z;4fi|l7Fg<5B);$SioN>AENk}wS^|RQJJt5LLIQV#%wn8Hp97-jrDz`m-hqJ*LHV- zxsDi4SWXyRFTiD{x>RU^KG|6bcu2K4T#h_GO)W@Su0G>19i}_$EQ;+q@ZiK>m0piD z&;;Hie-T@@9{~j(93Q4!M~WdV%?F7T5Y((aTQ2;pw4_0+DP4hU(YF|m)OE22KvP>` zF_&?MY5*QOi?B>Kp7Luk-z#fo*i0#U#%TpFnKX}3Oi0>zZWw|i5>;ujmka&Xq49fM zuj-KX+XC?)p<#`)q~*@u@0)E=rDrVYir$l#e>Mwt=`K;*t+pAhU{V!-pQrL_v}yCG zWF|=MD9q6ZT`^s%vU0k#1qymA>oa)KoJJdPdjcq4%a}KkN{31(ok4|xNqlSQ%Q>4Y zxl>J5avEDrSMXex$1p5B3yEgi9mlh_pnF4jf%^kZR6*qs%-E<%0?MO4r6`!)`pTPS zf3$`Ad)npoN6{ltI6Oz6!_Y_*kWXzJ=nEDP(C&qBL8pC*R2IzUv2M$KK#)q+LW&w*#k*{ zOKgZoC15S0$5U_1`*uRxB9hK*PI}dXe-5BW7>VY}jvi`qglW>6G;KBX4PNCWQvVK= z-n?}|m)>GlX+Kt7y3S-knu6|U`O0YJ9Jg0%G0Ko2Qamw1n>r*;sOHq1blA`+FgfXJ z%`Y+GRCspE$s1c~7IKyBdU42NugYv>EUj@pb_@L6s=iYsN;^Or@5>03f<$qkfAqhg zWv4i^w`KgY{xoe7E$~n{eZ%ziClI?O0h6D=e%fAu0WGY~YCHM|@6aq2Sf$SW)ll8t z0O9O+{`zbqm%{dD72TyVE{oDW2-!=X4I;d$Gu#QEvk$+f91>)fU~U{__9sf)G|6^b((L1nEd7bZ$DcP)v7m( za1WG4&5pk8WY~=U-0aC%axGHVn>D+?qmw31F8$d|PA*=xomd@RRcY=t@f+H7*)*uu zXBqoc9`4D}fz0EM7R$I-&Z#X@Y;|PCgF}>YL_a+ds1$jx+G_h zu2#wIa#F6mw(TFC5eBx9f4Y$mp7sD>7+YPc;uCZ!WG9EvN} zT4tde>}{r?H&9bwakJ>irZ5(u1dy8_Db$Gl;=safYDcwq$sQoqW+V{A;geq2;x_jK z2ydfREgy%&Ybh@uj@xaU6!b%%*Si*oLa7g&0?m^I#K|j4YD7u_e=Z_QcQY=|C7#3l zD@bXHy-WQru$Mo~*B+$l*pT19x>g$4Tm0}o_CHWg4j>xq@Zd}M2Dftx;Bb?J`oP6L zPlWH+dIQ3a9$<=ROW}2g=izWamPFG}UN{_r#sW`8P<2j^{Rm8g+9A3ahcMmlR@!h7 z3=u}+`;4N!Vi%bIe}*|>hDJc0HZvR#2LMOfHnXzZ?!`(?$z*XSazffaL1A+I58mD> zO4nf95=`#2ZQHhO+qUhU`qQ>;+qTV}w(ZQFS?5;Oz1`=G9zCk6``)MTA-=bmbF3LF z)|{b`XM#Dx{D>x;@t6Zl53*v`n2x7vsX8vY&j}}KvR#oce+xBq4#iSyj;q%Uqt7TT zx;`SJZLHi)#!nt-J+wvbH`O7sxcG~FD39>XYN)yS3%qnre0^}XNtt6k@12};i@lU5r23tj?&W>q{%lsV{UPm z3$0;n^KwQPe~5VcJbCm2j*+YKn=7dJK$uhhKG*tSHu>++EFe#>Ta(d}eMHd9;+35G zdII^VN6?rr9k{%JQ|pOvGl3_PMGw7mtRYL@g|sSwt`#O?Z$7W55eYQQ)7H&Wf)^ev@(TD02w|<746Qlim_R zX-KeNy@7Nm)V)$u4lQpumT#AK_ZVV(-0tE1Oy7iK(4Y_9JwhtZ3r605UQ1-|{ctoN z@J}Dof5=}y5*6PUKl{WiZ&OY_Q(|d2lrHsNI$zhPc250&e*bwSaSz&M&3|?gFd(Gd zFKv-(q};3}*?3VH_TD_I*c0J7x;?1>vz|!`-KAU=%4#%+sUfhW={Ie#ecU3}H?qA2 z5?O2<;l`$2?Z#HE_m#Pto8Ka)&ErzVW}juDe|JrA$c5pA!?tvUxK0mxqy!`|HudFM zw1!>8@$MC-?PF<_!1h;+bJA^Rx2ySK$}su-8?kS&zwckP!obelPR>7M9nCKwAk+VS zt?+-vtr`D!MeuJoBmXzG@Ndy;!vC@G?`OysH9G|qAw++4ZRsf@aIlKVAXKV4hyxo& ze^N+H935L)D`VqunXcrNuAUQjogt2&L{dO`1i|0EIObWr_1|1E1V@Qk+Zh`f7AGCs zJ+}h<0pNE)afxSw79dP8POeN>s(fqqkZK4a2Xtv1SEbFbzWN@a%$xAAH%0?h&Ln(d zm8!>nMA1E$Sce^GR683Zt$mU=6m}Bse-Q;!S28(zq{V|`!ZpS7F{U6?Fnslx=!N~! zuFZdiQ%Wj%jJFe3f`gXDDfd-!;z|8Ck{3~b`mrf-hhGBc6~T6F353dO zcsrt)Kt=1chen*;-eEvvdh@xJN&z|~_b7!SvjZjQe**r{_J`M?aEllSQ8%o(dW81P zc;Gd{f(gloelpK1#5C*yF?M&%e|I*@&@_Wb4PN=QAis9dgd5{EdYQMez@9?uuJ|gf zUa7~|ZKK#Q!HU08if!Co2qkdHe@dnFlp3HZnB_-*SLBDbb&o_8$*H;V%8_L+r}pas z)-WbQLO%!IZ`TI1dGmx?K|C zDXdzhO$?=Grv1UPxWo@c+E3Ug=ou4nRY=1W)QQ5Z2(w2-eqd(~Veen9l+BquGTk8> z7ztfMb{sH?-@$|HVi{edZSow8K!K$#!kr_;^Tjv7#1#dCQ>}{37~{Y}>W3)VA7I>b z0hs7Rk!g+;%c)Lr{=Wjvf3OgSq_xsxa`XO~9?*?Di|(L6K%|iW1@!n2tNN~rju`59 zD;Rx<436{w0r+qvyWp{Mvp|S+XuLElFfA+so`jx#>%^uh#;v`w-{bC?!90e6D=H8F z+d9M#`PlsxIheWauWL#3MxU2#mpT7kE(?#Jx68I&;H^OmP|mPif1nD)o->m-;??If z!SYBPREO1fq2>66p%9G=VJ#FcvA&BhRg1C=^YSB2Th?4L{;*(@VVI)hj6a1l)zul6GS`x76%o2}qj8aongyc5oVSu> z*U%yg?&b_JkL`$re<;S77+qjV3$-Vssj?+xn2GMRZE!=51;n3Y zC?noNY2blRlj^L-?odU*qr%-m8dxXaaOubz-3OL%$caJBsa2YcqGd&#?;X1z&xmPE zvy8NIN{`IPH{~Gw8VHN&!#KdD!rc)xuz7iADOij2P1;)be>G<9vaapa6xyjp>r^Q* zo8kz5+{1r7!@gwI1oSb~hhMbguRL7bXpwyoqvk{F>Z56cYn z_;VZ3NoxLrsmw)i!njJTbFQB_*vdMhH}1YXEv#40Bev#ReL^S29T9n zucUW)3|XsCL)mnb%xqCwlDaQK z7O*U%*rxvAJ4Z*^ewzuH$;wvF)o_x-F6iMM$610=i_;WS-+}-^nc=~VSNc)pma(bZAiu7 zAEe$Zf6;d^An8aec>RQ>bJlbS`#aE+$y&!ZqvUiUSy$fG@P*d9hmp`u;}kA&t0Sle_lB%--Gvn$U+0T!VtQ;jN#Uw=y%!q z+kbH*s&kv{`TT?T6#o^xXZd&D>!@UjVfwd%@k1KeQi3D=58fAz;Dvl{U{q)AZl6aK}72AkrJKnn^MyZhSs=UcC^yKF18= ze*!=qL2sY;VLL%cgQn8#?Oh{lxd7h zHn-3Q#d$Wh^|n(F2q)W~y_6Z+&`?}p`P?-!BeWuud1e%0q@D^H1erwzgaH{8;7yIj zg>WrYY8}LlXj)rSQYN9uO#9trDa}!^e|i}c*QB`v8$joXpqy(18PTn*9PAF0aD#{~ zRvk51fF?7erWVf9=In6N$BYU1_qHBQg|kG$c>VP|@r;}?#ozmga|c|2^8irtIW&f@ z<`1Ze%zx0n&@fzH-091O;3E_fgK?0NP)`04d8Kv**q{m_5pyUCcvPf2Bnp-wf7d(> zE3vlmAGGf~>H07f(^P66+pCk*UoZnC$VyPy zBQvMNGNKu8qV0byJ;#3-# zCFpHx|IxH)_g2>U*&kZ7pdY?$e;;KuEib>}^b9UyaiV+N{o9$CGZur$vCSm=KKUt} z)Pa-ojtC>qqI!IlQ9=B~RU;Uv(4i8Fi~F={)PF zx^dFr>Z_9O$bmUTQ5I=qY#&IJgW;}`R*v2+y@ai@oXqd9#{^3NXS4loe{(u~0UN9^ zzc4_@?m%oE`jBJN{@$F1L_}QKo_6{<^FWFd(?^HLvPspKG3S}1GNGZ?PzYzXEXg+9 zi312+1!^^qW4_hH7~NTbw`(tzOs#P=2^rw*G3uNost7Q7;mWe{lTS?)vT#t;;`L;)6-NGDrAP$Fo^ai-ea&Q9QHNqD_tS8`Gz861YUpA{gU@wq~PxEjLe~Yhq2kZPEw){OU zsX!Bv1cYD2DCzbtf2?BjakUhZj>(HMrFjb0f272jCGIf&N%4*;)CvG0 zv7Z{R71zP+EGT#%8;(WJJ*b}2pc@)w)S=3+TozVD$7RgIFW*USKA6jXkYHVRkGHX} zuIkx-ypJk!91mSOWwPKuO-Er{wpzUDO`ROxvEt;kyH>yT0tdArk0B}{U-3c!z4y274*hkE~k!)5yr?T|>SWTD*K#~zweYCSvzWTjLby?ex| zt^mw24Nyk;mjHm>I%@2Y6nqYGOavHMj~}0qvsHL_e*%!X1WhDj zBUEG8Y_4{#tg8ELX#d$%x3ST=_F-x2;$p`De^1y5_&(ge{oMUQmN8W#-gFIMilQD91+oEei~jDbzeEGmD)B8781eL7W`)P3t!O16;3|_ zQ!27*0eeob=fVty7NaDWHD`CzDP$s1wGic=HV<}`G-z6D_^DoPEF8$4XUqe?e=N&G zN%l{Rfhf7N;*>QaLcd>zjjg1E>~!jmm%uS&wbzc}-NfX;5z)a8uGPUFv5Scv!%ngp zzZHXm*Wd&(AhfLY1~VuKpzLy>#O5{TIg|`7s!xvJHsYZd7-EH!KuL|^l7Pw1!{#dt zE7VUm$_RO73dt7kGgz#|onlj^f2{789^?;xYy2q`uVz3JHrhvoelanpxOUR48K`sQ zl_#v8*bDxRzmz3Q({FFSA;K1mQ289&VqV(ph)L^#Uf*L%RX`Rjh|B7eo^xG69co=| z6u?1d#_1IIm>|llRDkXl0tHe}<#!45%E@xC%)d&_YKR8`#M4D=$?j0ef67IJg}T0d z2yHg&Z9DJSI7r2r!bsQjvq9@kxEC_h9L?VV#YUY?uliz@cvWl35*+w(R|#nXz>u?C zMO0+$FX!MZu~p%{sJgGaGIZ3!x5yxOtp4O$bdzBe0kRISFcWT+8$gwui@~fZ)DRsa z7hc*KzFFBf6s)%=5l(b;e?#Um3U$vO*xO9V6ofQ=IKxLTl06Ei9!5OX3zXBaX$~W4 zaGoNF8I6JFJNUQ?XPuA3H@a$GuXZGFy(`6e7>)VX64VF}cW8PNCKIr-V>tzuHv$XE->F1S_{2_E$4kRMzhNN!2 zp&_CPlPaJjJHW6+Mru|d& zo?v{s?G0c?FD?`F-s?vi6Rf8b*t~!-Hr|4InaKS@r8-j64B&*rPiTdGtDQZ&n{Tub zw9xMa5Ia%0e<{%h{ZNa0Tnv|Ax1iZ}Bxfy&7WbW}Vg(qG5HY+uM?VFFaiabRpgB+P z8lHE^`m1-5gH@h2b6DoTX*%Wwl74EDi5)1vzy!>sGRCEh1J!&6K^XSwLh~YEo5k9@ zYwn^*)1L9WgFV>3r1#g};7(^TP10=e`BTyxJb%;4f6#<{-J{M-HO- z2&Z}6^$rqA&SW3v=GrR3gga(RcQT`HO6HxeAEga$;N zQB$e9e|fD)BklD;=S2V|i2}Xa>ePh6GWZ0tP8yq*Ib|g9%^y|Gi(KEAkI$3ZCgDsY zj`J@EF&m{8S@N&Ve6v*SIkq=Wl$zU`EVHe}*%Ulm-i`n`tJ$**wbS>1Zc0=~?v_ z{10lbFz1qD|Dw$lYel!n6`~f{4)eK<9~o+$%mZW3sJZ5cH<@yrJH|H+LTK-?uvj>(B4B zod}YF|117*WGBB zPDdxOW0?N!j^z#L7Q;*FNMCY-zjZ7of85ra?-+#=s7CqZ? zFkpDT1-;!k*w7)xcETNf^2!i3gYpL}b9dlrmnH4eRQ)$YH1C*18EJcb@D#c&kaR5BH`KV6~{B(z2><^awX*1MFh(Ub1PwK<7LwvRACFsm*56 zM!~XLS4Bzx)<9*3>e~aHwV_`dy`(?#| znO~)Wv~j!Yj6cE7c>CgEGlgp3^d2-4-}Pqp6WtEp-0NamJ?eD`vPf>oarZ73f5mP$ zpSZ?W3(G=8Of%Lo$uo(q^00uMM42HsZ3zhm#de;gw7V;3qk%ms#%Xh>NB_vvQeIs) zsVZ7ihtn_so!R(>e3SMVLmzyyT zmk%AqnI-J~MkYNe13C#Y>JAKzQTxJJCkQ}mI#DD~iefF{0mZXUC*lW8YrW^pNBZ2K zxLrKmQf|e>J9aVjuy4XC-Z7z2>j#^0u0pkxjfw3j)n+KGf8pv}pSGuB5~m%?te?`RD#Zo|Xt40}$L9BW4fs`n|_O(uJZz~&q4zF%r3 zyBroYV3ewNa$2m4;1kOX*j zr=xBDOhC8k?+=B348O}a(Zu>0qbFQ(2xvkaEfBuH{E#am->`#LbIxv6!>@q)2=6UGJ|z9-5$WcOU!EWNlXe`W@ni9~!CESfYYzQ%Wi_^D`%+Yk@J z)8lzXBNux2lM>F;QqEKE?CaG-&EaG*K(`YW7QV-EI%{nn?!zb8wXr|(gp{m-YnJj> zaQCzAg_Pb_?r!McMP|8Xi)!QZxFLSc?J;5%WoNkpiu2D_T@~BcGTMh?JcPj~D(_9R ze-Dr>;Z&RvGQD)Q?0#UC6Eep$`eaqKx!pkUkqs!?o592bdD?TKjgRVyyz5~M6wX#n z@6Luwn3Tn8*?fS;nu|+nG^wL~QGi zM)&70-6)lX-#{8OR(vtZxd6Or-QL33f7}9njX7NUqpR>*v79QC5ICAyDzhPb)S+Kp zh7t4XAPMxY?K4fCj;()q+h8z?Lvu!rL2%a3C|pu=f`T=x!8vObrqfD8s9RVVupYmN z3;!YFJt8Q9(L-&OxEB_JYc8Wa4i3QR57(M}98yzeuf zeUF;)FGfCZc)Mxz)cDSH`%oeh|Vc!f5gCR5~8mb8ZA~H(bbL>hPCSV~*FyvhJA{sZWJkoV#n{MPuzBi?0?TXX*-)p5o|Oq*IO$zIe?Jqm>3fyuu37`M z!kF&_ZGeVxpI_O{k8X!%Pjo;S{`Mj6%WlV6hnj^DvhR(d2;v{#+9^|&YRKn z2%UBsDFtOK%;!5f)^{RAJ|K|Je53SG5^!PTO5E|AFOL@9{7y{N#?^U9=_$(e>va z>DpYvJ)SdUvKX@Fozi;6HQ9QEJQzWJU>H?;Qt@75m!vd{N9;*q9$&!RQsTtC zJ!tb$c6fDYb9puL$ugTBk*VIDy4uoMPpE4|uPXqmd)=5iDS1kla9Co{tk<0`HCVi+ zUFN9}Ol|Pc!`m?W8DNdEpOJz7VxPK9_UkJ&7^2@k}*pyf8gkq++0bTU_Os2xNV2_1BUmBXmyIAb+AJ58{qt5*&VjV`J;FF?Y@Zn zk$(CU{4GUbF@@2OaHcYC_%YiVuoQ6qc%S>PW>D9H=ZwW)KtL|YKtPuN$-S?CdInv? z#s@_V)xS(vcnFBjnd%h;e9>77iPBQK1&%PZHMz6~fASyF%C4(^qoylMc;vIlv(Mn( ze=KfN1o-dXki}nx3$7&7COHnu$*}3GjEu)wpV@2|^M}v8zVBa#4F1uDznX~C>6jo~ zz}YRXbbWQ(#5)?ABeL1?6>MtpZwt-W=jZTRXR2=?r|mdshb|E{u`jubo3 zS-eMOe^?P%u6QG~MZwV@CJSzYOLLd#=Frm74#AOOh&3r2Al*RD<9O9JT%iBWbWwko ze=trOHrMYalrYJu6;O#w7iF1aRSU(MAF~^~bl>itRn#GCrJ|IG@z5U0@V<%SUh3LLv~}HQ!+WYI9YsRx&am4sbj2gwvY%{^4u#1KHr1RQxe?IE^ zUjsp~lY}X9R+hS|$~C+Z5l*ZDs)(@r@cswt2r@#wZIcSip({;~M@FAxrHHY0G8^3- zYhiU4ay7K8MP>^LJRS$L6k${=Q{r*yv+kMMKeZ$vQQL^i*wNC__eLv~L)@az#po7} z>>w({5Hf~(;d$b=wR_#3|D~N8Ky=CHg?j5900bMDLh}ol8Q*qAh*GX9$UVF zo%-82O--s)Ex0K#VX`{$e-D%k-YxfuIA^NLOAIQ|0p3-rT>zL3ZV@xL>dIdPB6u-R zzoyvXI#>YM(x%k6e1Uvs(rx#`M3QaPraD&wgpEvaDWl0uIMgxFviHG^SCgctY9PND z*aGF2Z0p>`lp|CaS8|P1B~(VsOT4`NE%YE^+TzDNKJgHy;A6j%e{(#TKZt@w91m+y z%plf`tIMi-0N-NMMX9;JpVWpJI9D8KUY;D4|MnX1DqU%y`grpx8bAmI2C}mQRj>BQ+o{ITm!-gY2KT0-sqf2mgO}H}-NO_0$n3g+K@kRi2P#h02h2MQ z{WYC(6V=wPHTsrYe>ND=Q_<89TCAmNPATyzo!3vj z$r4Ts5iyf-H{@@rV#?}n#%NFE)}z&CuBYpuRI3G!ap60|ET zHbjpGCzD{bO{dZD0_|OEw1+JpKaYy49VC2-maQHnF07+yfB729d<^G0-S1wATUJ$@ zB6&NkepMK}Ef>}f0cr^|FZ<3q=9~FWJOj3X+W~Tju@1tq&vb~Bp3c9>YEm33KIxjO zgbMVEjOR^~v}?Sspe*rQc(BZIy)2$yS@S$^28H8pnM~ANZ#28pYweEsmXQY0E(f(@ z0_b9r_`>H&e9}3ODa6?9I{~ zTTxNHbO33QOPdUi6YDRlrD{Dvn6q`|(K5#5xiV*2skA(3aZ=@=l}r4RIrt|OKivMZ z_JkE@@{+|HZ?uXHSy@uCOC>Y~y*z(e7upp@LG~s!e^(Ct@sk;6S*x_X)#8Neelx?k zRbJ3v>SPrkva$q4d4t0&#ADNvhYZDI2N4f_{R-Pq%C$Y775_K_)qwYZnUaw243V?| z0RjpG2LjUh|58_79UT83it0bj465$_+sxoMx^`?T=ww___*;{;PP2sA5%3URBo`ROj#65#~F)pn5SuxgenkVZKPmHe~gH%Ou*Ph_L<@7dgeEj&?+u+*YApb zR1*u(rNNSSR4R(~Eik7~Dxso{wuC1~!N{?w{Up;d&zEVO`s)?BkLYeZvmrs8_O77( zMSmed9z#>xVq3wmu$w!D8htbLCj07H0?ut~DUN2p3ml&_L#tqEev~I})H5Wk9NhQ7 ze@+}{MnP&>qTQoxG#b7X44Srl!lgSSbkObpv~xGb zJUXa{{@5C9PKU(Wy|Hy(-Y2RWe-?Kz1g-h*l9(>G`>5ed7J2lipZfrM{EL&QYMF{B zg*m=9=@C3tERhg5%6I=9!Ln>1Yqa#If3cOB5xdD4(E%!CY+)xN1CZN|RWh;7e~RhT ze-+7i*6Pk7L{#U5#*CSNkqZ|D;4n&Cd+LOIgc2wRZ|X$W!^MRaKvrP=vh)N_mCi6g zlmdN<-J`#LmDDcVCY<;>ps4?{&?F$q`)q~}T=+oN(ze*tA16W(RpxDENW`@We-DsM zcmP7+F`CM$KmWp7#}c1odWLhcNRP`o90eC)cHS(Y+PXH9^3YnO?C&t7nnxc}cI^(A zNMHw;Rf~>e=86(&p@#hH^dFQ{n+-1%5Kt%j|52d+{|dhUJwPNP096C;r&l+Lb_k6U zu@+tG&kT9JV2PrL2$7W`8B_vXe;}Al`jvcQ;C4nm4~}F_i|1||vHG$#-D(#b1bR(5 zn_73B_N~qjbk**wJ9C#5yKd-FlGobp-`>8@o-`Q-zDL^MbZ-hkVw9_jg+-`lAUJS5 zxz5#Z6OPjjOZJoXwj4&VJXjpQgORUU_U#LK4oZ(8W`Ah^IOBk+|I+Ece|B!O*^Jy| zQ|NqV%Rw&JEmVcH&B&QI7;jf6?jCYeQFj<+D>@;K<4O#puYd0J6t(7Nn?})eTE=7^ zgc`a*D4XuR176~6ox5UDDaB&}O^*UcHY@0-8%V`H-q|TKmz`7!6w|EUN5_+?S0%)D zN!%AoLj77FRb0e`wWxM9f0#T|P_A{=lqU_-$xh$bj-4qmlYo%LUUK`zL-#1!zG7f| zoS9vy)e*%ERc+l7UH`0{N{u(wAe_&8%xUlb%Df9Hf-ES1Bh8f|B-STAW-VnvL?M$Gy6T1_Io9O8qTBjQ`s;Y%7OMi!*guP|Y`L7(UC0UI0`xBYcno6%9& zU9UFA=b0in5&y7We+XiV-3rC3>msjik>yTeM!E#NTqFc|bPrrKBqd(5gmAaETwVzI z1V^9kFF9N+&6*P>#LN~OpfaSE@-S)xgvV-_#0eJvzCQ%mJZZaUf0tZMyj0)+i7xoN zx-2{1xRXIvQgTEdNCGZul)c4Bc$}k-XSXgx@G4(;+Yt!Kf4r+-WI|8~;$r&#`>L@v8bN{wtN-sBx{Vhyav!Z#r%( zR-EM6s-8<@f323kPSp^1#R(QFaMBdG)k6d{mPjoR?3y=>kx2FDI z>cqu_Uo=U%>5Vnkt8&Qpl4DR%WiBOL`f7&2%Y14%mFowGPyXD6I+{1h4 zbu_Q#CdyrWWhS7nES00?dF*dv?-U*Oc;*SVc)W%1RZuy$^Cb?o#rRM7Ho(G>T;DY0 zpu8Ma_LGlF0RO6y-;#}&>q=@(j^&Dt{*AB~jLlzsIP@0Ye-ZR1$Kz*;l`LnTmmt-i zQ<`Jse_GRpYl&i`riole^1gjFZ~-E46M1yXRUnZ+@d_ zf4mYdsfF1*_eNi9OR*RuO!P~pe;>gAan}t^O2zQ~nP>cZcf^tLB2OSZRSs6bT&!uI z9s*eDro(7Sk|YSmW%((2a2id*6U!4Jc7hnU98KIGhoBZC=p(mDl;{0B*Ms8NcZTQGcgp}ZOvOx z+L|<z9-N9#`@mSgL=3Ohc(GW&WDIA}=H$?Wf2~-2 zYv_%oK&ao2MQ}k*xu^#@-p0Ckju3W7DvxDkTB=ssCH41JKf~7^;7c|k)Nlyvl#>fE z=Ny;&y&_c5EAhfSr5E%RRh?TiliLonuIMI|_jNqgjZ*giv`fnG8uh6<0{Nx|V8@~P z#^FUM?Hh@%qfd<}+HG?-pA!l(e^)6HwwX=%BF=y&^qk)LDa*7+5`({HLvXc?hh^XW zc0*_fCHn%OgzC1&4Ll!rJL-}r3Tt%bckYPOy&;;~d0ZErRR(m7^uo^hI8QU=5{KCa z{3dWNOFklem)WKk!C-8QD$Ny`^xvjTJvPlOqhuHCy~04IvPh6NsFl_oe~e4kO_}`L zD@I@88J{mOs=zxR#TvTh&#B52nNq;CrS0{JdD9)fxvIFmq=`X|HKbRxj*LB!3R8Yd zt$nx1d4o6PN5tiVKT~9xu${`(?BW5@MRPof34hWV<^mmJscy)kbX)4F<4Du0oa6H* zUME4)dVjsuud(mW`}^}Df0^fs#zRw#aZadtuk0UF~1e-mS5_F_O5T(XfpmKiN^v?+7Rt|;gI0kj`VhmfD zs=ye7vv3Pls;{pzQHYWWCY0-1>|PN{_^O;?-Bs)!ibXxZkOCt)ZlA@C5E{B<0hYieOloN+KAxlVJU4d3N$TY--o>k2~C4PN=2J~Kay$SXXTM^@xH z{s7YWYbJx{=3H?wf5l*bZMiV}_Ih_u>Eb?UvH7fTy>`DD&}7r`0p@?%@zAajP)WHw zgrZ5Cg=UeDmM2oNY{N^T&o1zh-t<=!5ZK+QdhAmL&2Yd3(w)B=S%e+=J!X^u5WCPJ z_5JB7xBceXJ$WsZd^eGo9N#)BGxN5`H?gER8#T@SJn>u~e|hUE{07Z|K!Yy3qd*fV zVZF+`*O*kFd+uXO{FX18d_ip#_!)-(>Z(5Y`De*CnYH?A{R;@F0}%+w;6F#Q{Zofe z{agb@1N8?Egy^0qhzF9s1QR6l0K}S-8i^DegzdNTpNn`{M(&B?Bq-rmzunjER)dcg zXRtrHOZWn>e*_n8xjUbbSdb_R&u>JJ&bM8!9s#etpQ(L6e-9ae^xihYn5!T2b@M?| zptX_BsnZu0RlcOESg6=gvK5=O>(ls6I^F&HSrao$@*8y&F5TmT=)TX?+{EFqskz|f zbXSnw%iW@ls=&JMsMh;aixT)nWUQ=sstj}T;J_;Rf7S^VgJYma^$t#+_KHj7rOF6t zlwFiq3N|}4$dwev%GhS$H_ZWF;1DoL!K`hG*3Zf2c^q;)m9rUKIs@hbm)eu~%T(d* z^^%pX+y!Mx+*U*8*6HRh-rS|L(HB)B^aHQ-8Qw}!Gax$kZWW~^+k@ttrGXLnk(KAg zW)~A1e};py7Isljtwct_YtN)5La?dNGW){%m51(uc(|52lXw{utdLitMM0&BriB+F z=9KFVvc_CT;p{dpTxR8ZAYE9ary<5qJs=1ToeiYkvT|0iclClWI?yI7qI6#%HM|XN zq@sOBnXAn5S%N%SJ`{L%bnuX1_v71*(Z$PDe{w>8PN~WUl8^cQM57h+S~KGkVB8&} zaAXNXzkKk~I7i*x2HUcTo7*l9*1!OW97ggHiCaQ8`2P!9Vr98O_Mq zNMxcM($(EH*;h2oIvJJd3tIV(nNX;m;o7LMQ|Y4p+)bwPdu8tTt~-o-5cQu);fhfQ8{5ZK*i1 zGhp1yXzz!dtDZ~uURN*K31iZ|+bitn4Ev*RU2<+(=($*8z+o!~qL1tu1dNl@_`tMO zMP4hXWlol|C!yAhJQ5C32UlG#t{Aul&d zoZK!~OOl#7-(FP;?wb2JS$k3DcRRv{iC+x1$cT33tTiT;G^fUnA2XjgBH;t^A)mu9 zS;3GK%ca8+l+@uWjNg8bD|DHOrX5!%B-;eSPOt^%(NMBdw#ApOR9{9KxIc~ze@?)Z ziyOv+*arWd1VWW@g8NsHu zuQEiEP@owWlx`FL$@57?|7@S$3R0t<48NyI&sLyCasfu6GUh*;ZhcOBnsWToERS(W z#(|7*f(^TnVN%l$HpkcRi)M?ve|%-d!d0#9int_SsN22i{JMxkbg{U6q)zw8Q*q{K zs-L3;B|J0A{zAD8Ny|b*=k_U$^#rYgXlC+HIO~RS3}MzFThgtF#E}VIK){vm)O3f? zII~W@t?tkylc~0j`f<0f1|{c#XnWWx(7xIBJ@?;N;4!dE4J2CcM$f|!e^u=k7j&~s z7aOXyF_TwN+aCOz%l3>WWbB-M-5X_`J)kzimw7ZjafV&#k3|u{cgnqwXzcZSg1tZ2 zA|L%2o^v%Y9+79pk%r_&fzkokroBi9)wO;}oq{z-!m)X`_)qIeQBN!f(EF`ix0s~E z(hqbfSiE4J=?C)_9J7Wce=fonfC5o-_=BgsCsYn*{Y3H^#?rZ%5605H*bfGhbMYJ8 zm2+_)+?7lAwJ@^xkCOcRN=AlhQaB63RLEl%#kcoFicgE)UrfY4 zypAw(kDjhb`(mP!mbqh!LXg$j=jmf!RMCm^Y;j{HcSj86k*##Ze_l!RQww3hosX+h zrNEJptVyk*_{N{}U;>+G4W7xpe#2hB)#-!&KD9%lTjLX5dfe3>;ZL~)#QEzd{|yF4 zAfL37W++aaTH_O~kexZaxE-f#55~24#;Kh<+(64TukbPoB^SglYt*rN7SdCVC3)&g zT6f>)Y;dc@qE>zMfAftmLo7}>rRF@T1FxU#06{>$zYadsRdW1BB&e~Iu#P=&=N00o zkZC4y2omPGNv$X7a<-;FL3KZVir^_bF_yO&x5x)8OHIkvCcP@F%?26Cp6zh{n9fnj zPhUcOhfUjC?oCwb3i*p`(C&Cad4lS3{6yC4e7LMMeGc-jOFIyOP=5(hCW8E8<9j$* zQI)<#rXjz3z{4T0HP$tCOr-mvW8ymmhiU>hL2#gX4DZ*%A zMs49K#5;@jwj^1m8-FwEf364)Z;NTbewmt^M_p2K`2p2bUmWup{?SfNp@HUx+V}Ijr)mb!5g=Kt|5j%&q z0AVwr+?hH0O|fQ+NVHfFu9QbMIBH-x5iKUYxB9~%LPz~27$-G7R7^#+;`8HL$`)Y9(a_y%%>)dS*b*@N2>Py&ti#9ms3SaCuNPb&hK zadDOg^$UoGQ+H}-+(T=oW0n73ZY-lBqEQe3vA=JiKtS^Ui~H+n>B)NbtG%h$L(pxlC^7rzh0Y~g}T3i@5>X-wu z(Xo9|KpGc;nXnd0YADlO9cfE<)`y8*&FrrT#1~D{?s#qo0!CI_V!2N$rq8HAd~e5w zgZ{?`=zlz;AMWau3aH&mU?SxO88g?Fv{7g>XXPhdYO6TRR30A@1i5M+NZ&0=BZ{bn zaYRul4H6|ah*X_{yUwO^ymcJrWp8fsGj9WGC;ka~(eGS?V%3ea%kVOh+$rWfG@D}s zL(djM@atd^?E@Sm6g(A-xezq2`?aS&o!R=0bAK1KQ|(bBqLDF2$x`JxXuv9)3G9xb z!h>Y?xbn;F57||~9(dVvpQ=(N+_UV;n`a1}F^&<%Aq(16xK7U8QTyrOx{4iba6su9 z&Yv_{mp!fpL3l3q0CW$|B!hfS= zZL73PoreT2pj&ai+;O?(YI(cvTKfTMj||g#A~GASpO0e=R(bs+FX1V-;_2Hp!!yf` z5XvGklT9Gz@3VqNoQXoeo9f>m-%HPjwQcH|Sm#)W^wzjr1kCM1Ro~ z2}`mcVc4oTWlX?K-iZFokSQ72v8}iX>CRloQ|XLSBn%=eQTJxV&-iaqL3k^-Ssl?O z??do=YPAD%G+6@Gvg{FN>I?bvQ7Ek~EY*G(*3C&$@&~*o-3sMP7N?;RECd!nz+{k7 zxLSi(uCWcwP8|BP~QDI2k>s^WE~s;1)ueEU|YQZn(%apwv=e3>Hsf+21CB z!HTFMb@&HI9@z<%MV%d6K7TfUPL7JN^Zjk+b3dDmu?!UM(4b&SZ>$mT?$tWZsTJH% z3!o{FN>oicG%)v<&jAAjnjwj+6_}QFt8Wx#p6Kwxidi1u4;|#zlVYJ)WA>v{p z7Ofc+&3>NN`VeB8VHmkBQWuB0^qRDwVxExge6dK7xzyA(eH6r8yZEk7xQ2*wj>Ss2 zq~IsPf%(r7AowbSvww~d-O$(xl9bS9{Ct?W>_u&v8H2aCc5r1qV`gdA4FixXX@mYw z@1iNb0mf(Wi7Od{pS?Ey$duv~%7V9yUB#836;vKU1#Bl1RD#l{fV2h{lr0BFyYGQX zN8~78A|w>{<0RwG%Z2NSi8G7&EA^!11(Bf}%S(8MI>#zh1%Ig2*aYS<9bmZM&2fk| zgfhWnUy$`28*8?>w6(mfp;WR%M2S186NsiU<}a8-Ec?ly@99FH^G5jJU4R9c{Lbh< zY(e3l%dy!1nG5)zoBzKD<+lGLDEDLE8=I;^lZUQ`6!j&?ZXR){5*Ozc0lsaNaD^M79KOGSe~TrDlia{>4520)X5 z8^k$K*6W8F)Dc{Ri?m3yE|N#i+A3QK8@{cowI%mtl)v8rtL6Rj={}V3t3*;)4jj(1Br%-AS-C>Sro;wVC0@@SP?Tgcz zuzy&fD>{iKA~fx}J&hxQADnl14sob^`%yFc-RS^DnTR=U&Q|6%d}p&&-zd_x4(xA2 z@h7YUS{9#Z4rRa71>Q1=yf^?L*yaqoECt$>_~n6rzuo+@g5J_U0f zHt?@6;#4<(HNO3GR=Ps}8#c=SdeTGJ5my}Td&Hw5l2v{yxtRD^LB|BM11Ue5CzQiM zM(&DjDH0Tofa0ROd-~VPhCU?0o2(SEUZ_wY8d5OibsAv^S7WEg!h~=t9i6v@<$p}Z zjb4wdMbFPkBO_2(sHbFt(1K8uDbygGZ0aVPuFCRL{*Z%e(^QN7&Yf5{wfbJxuOjj; z{4BMVqV|P&ma>ie?so9-{e0sO*I5)5Yosz?98xUy_`g`7mSbD!oda%Qoz!t=}htaT;VZT_9P|l3+W@) zpsaX^CaL=_f)=8@xVcI__-i#Zu;k|prdXAe`DLF%RI)1Xe;fVC>o|1`c%P9*2RBp| zEU!ACjvDGb+@RuI_yFLPyut9C2r9C9dtNHCrMwI5o{MP)+%%Xs+HD?*R6)r6qggrXSSpeNk9D+&(Zj2dM-dhRi=h#l(rtgbC8hly;XWiHxOqub_lV|k4 z8vTT@sMofDkyeHv$6im-ga&(pCRa^(*qXy~*&I&};JS@x8$8xl$Hwa@?6xH60^or2zu8jeqqn(1y#os-nJ+vtvHD1-vz@*hzW!=%rr3eFlz)a#xAt&4xrY(E z25yA`)|+O%0S>1IAk7xZ7N<0-ukNI0h=I4ck-+W}G_mnqmTylV$!WgCiC6f8Wk5Pk z<3~TAozI=a`-7}?ZHh&>Kodj~Gw6o$idVbHg>StNAtUt4jy5rglVE%r0!P2nXT4O% zX|)nj>f&Sc!G$cJlxJi^Xo)~CMy_Tv&lAkF_)on*-pJvL>8B8u;Pa4I(I4kPGb&q~X#OdDBa-iTvccbdNr{flIuJY`l0 zyD2Bl+E^8c`slFbh~CYuZ?5*0 zD*&6nzA^v1Yw0NoMp^#nR!0f;zpt11|8yr z)Vz1C56@FCgfF{5dq6voO2)U`3)HhpPg?~;Oz7BzQajV)jN<0-o%NWM8TU2Vf6C7T9bKLrS+|@%zWCxY2aP)f?&g!w5ME!|DBUwkMgws+A43 z3M8gxOn;j&+vbOO_J*UyL@Eu_@FAJk9`K2y%fcA2f5M#0Ix?}AiG9Rs-TJW~bu3Y7 z#M!0bd%cv>bo95)y|5G(m}Guv5;rp&a+5Y;MJH#cWoovK65 zG0(;r4K63`e^{Qm)s^!A@Xw6Rv!0JcakpX=OW#j|r5?M}78>CsR3u|%T3 zvwwds(^T>6u=D?dxQIJ#mt-_55_*afRY+3tlC}gl=(lC$+@~M+b~>{k=+yb5{O@S$ z^(jj`zybm~5di`c`M*Tde;!l1(7tHL=mCx>EZpH_U{Im)W5~qoVj4oi&?IEUDDomx zz`>Aq9+cy!7M$0}F*>?FYZ^XQwv}^>Hh;D^FcZNhx|hPX%`bkMKC1*PEiKI&9|5~l z3LIJ6@qx#q*HbgTyPdl~-8Wg|ng+hFtYS?DtgzBWcsVZcnd07Zv|sziH@~rQl567~ z-PSk{u3p6D9W`}lhyHKk7olbvriE9V3<+_pGccc60uID6}%`=2utqH0Q5hEa~gaOmd zS4POty1=!LW<#CBgpCr_Yg(rF=YP#Lr|13)J@`HGjz})+0D4Xg0*(OU!xbIm^NoEO~r*p08~}zD@S-ZmA;EHGfB|e`lzr zkE`l>f|TeV{)VH4uPEUGfQMLAd5^(BEXaY*X2%;XL=}2z1OMj0a)YQgp}}>MjAqj& zp3f?$R<#57Wj5^PAK1hrxNa~lSmfNWY*r`)matr~$yvc_N}UOQP)s38LU`&NG}dZ@ zKDWp}iIX(lH)i%<+N_$XzJHh!a-F+3T!vd6B@v)SvwevPJ7oUd8oP4g7At(R00EFM zm58;*2(^W!g0iB`k8#UY$b#d^<6y1MrHEf*%Mk5Rrp1d8b=CdY*vwe5P;otPpBR*f zU{{4L7O@&lXuq)CR0vKq)1%eTU*rhcI28d*z_E4M2FF4x3~uuyh<{x6Z}U6b#(@g@ zNT6pr>k>DsMkwS!*q1UO$$hU4LG?K~R7m^4-z)d-fl@W=f&v1j5XHJF$a2@!vfLeD zkie4~yHHPP?Li?j*!tA)n%Y6@(HL4zOR-bgI+H}R0PvIl4>$>O?TX`yRbPk(g?NBz9QH;FD56V~V&pJkdvFy1+Y}0|tnDssTKSCD? zQ2)5xz(aH^%YVlrgw;Bq`#XANfd|G#pSjVh%7+7?5hsIoknAhN+Q%w5N{q>|H$Z}2 zdC?c^o>nht?2M=xW>NRB$_3Z(bjMgvmN$7v0qS}O^F8NymGh8TsHB^(G~XrscJdXg z2p+|YG9FgQ3qTGTLZ0XS0m1V}=77Jd=ORhOe!ShA`F}5SK37{d^&_sfnaY&T&b-~b z`JHE=9;I`^Z6fj&)4`HO05~f;(TjjuVZvfW;cBNcZzu?4q;@{iL+gu_^-K>Un%8$G zKe5s{oJZ#OS1*=||}h0dfnPpp1<{0qLq-tiHzR^lNlU zLbg-jUw=s8qIli(cyLe*t=WmJ;}DEbC&}s4 zFOxFn!MT0p_d?;(Gg+qn-+qH9y%m_Ua9q~L_J1SNCU0Q;7IT`X&Hxv!9%?*M+43f5 z9R{Z^CRb+e1bLP@73>f7kRAy`OC7dEcf7@xv_GcAen~wgi>>hQ2!5E8DRjeQHM-jt zX#9ZPp(s1+a1AmOiSBD8rEh^Rp;AJeN78p@)#c=(jK6C{EWtBPgVEx20d62DUWd%I zr++zIK!4wP!>qf?b-XE#z+48^5qvwtcSKfx8A6+qFxK8fEnOS$G9zb0~>K2@I8 zRZx3aUMnpIYCX^xSdaGX1irTO1Iie{>XtYYVYJ^K6+^zs=@ZYDRG?sG_!w1wBF>`H z3XCUqkPACsZ^}FDY=Hpei6I8s2=X4tjtSI}uuDSxjB z#gnEw`rq^dFej3;#DD-}xF@&ue%8N2u^{_ zMCj@4^spUpNVnTW7%>M<%rE!s<#`Bl54WKK>r7cq!IVD~>%@Tj;xNv8m-kP4dH=OH zV?`rWNa^&n1Ir1yh9bhPUd&#is^Q(%9Pm*i+$Qcd^9{nx^(P1g+-(&ScKW`dbzl87XK(t6^Bkhg0;^)s1TVnNYp0Oo6 zT`kmhmVO#VhOwu)$vjZ@DI%MkmLPU%>A&#e&ph^`GC_a=kv>W9=-b!{AirN^fbp&A z#~tE>4X=xm10|QXPNv_nx_|X%q0k%|D~<{4%4j{^B3s~KwNFRrp>i#vg%_uvU*D$N zVVfpkefX3>Hm~fj_6_O|wu+SmN@Hfvw3fFxX!-f27V?({za<$Lwk?Kn>5U|0vpvLm zc?tj;+1cV|xU}NkpPOs1+xpCs!>tM|R&)j7c{faD+LOE;Xcx$gUVonv+gemOx@U0b z6(o~smV3$MRa#|hqiSTh@58Z$snQ9zLtkt$NjB~;u5dD$KB3~#pPi{PmZqYBZQV7x z*A4f3DspK4`YHGR-IMRL^N{$74d9Hi{?h{ou*2c&3u%}{iv?+!tDWfZF}4RpVy=vX z612eesFZ|RQIun{d4FlCFbZaPnKae)llrnJt&ZeLL#K9Icqq2=OyxI;T$WWSJdo8M zLd0#r6N|~(zrX4bEWYuC)Slq7SOUrI;y#O;;?E0zkVUcfs|S@Wu?>;yt;e&E>eDd0 zo5)r(Y%ImYbKcXs`=|7C-c@F-M{#;B;GQscW5mLa4<^`}q*>4z!+sQiSYIIZA7L0pwe=TJSZN&Rc`eh4mclv$iF7 zEN-tpIo#mxkRMn7wz0K0)4TJ+ydwBV%-pcOD)hi&aW0eeZ?9BHZ|fLmHaBXN%!Vso?|*$k^#0kMPPR0_e*rJjwwZE>Y<$7_6!7oe{wV|66ktL^cMAvAasLKN z-J;x*T6i-6oYPfCMfq8mN7g@u?FHgu9TV`8}7 zcNji;7){q;i#Y7>OH|@&5zFPEyQ9Z`0@Qkfc;@fkOz@RzXg|N%ol|??U?{$onw0l+lZMtASw$BIHiyE2F)~_9D!q z9mIX&8wy1HLj|iJEa5t`1pf?+df=t6QLSyCbZvBu|6?)b9P z*&Jkw4n5vY{fhE2wAq?_+IDRD2uGK}?kFEL-u>tbrP-HAjge6tG>6 zSKd#3TlN;Pm(0^~@-IBDo;3Uo*oe$EOY&)qn@1IOnTR_82(3H^y$Wz;3G<;YIYB1p(t?;C8-iM5g z_g_y}qt>9uGr6(%AJzsgKq2^6jFH7>lms((vxKUuI}>Mw*ICR|f7hb2xMh{U-3oX6ZO zVIu38LF3Z5j4b628Mk$2+ci7b7#UMEw$@Ok2)~(0mF2^p=l0d^oI4{W_P=uMXN%jf znL?#BtT|3nQbBSxU%_K`Ph{W(t_=zDFT_(rlw9d5cv73mwV5sfgbs1qGnNJzY#M&WlWk3D=dO}rk4Kj(e1I1Vxga{rbKoBy_R60(h z@E~+EdZa}LM@pgAxk}MMk&HvLNX> zuH}xRL*m|bJp}UI9TZk3D{H^BGg@QHAT+i176{mV05 z%Hp$UCAl-7V7Igmxi|>X9CX_iQ^{l!{cj31LGN2`lNW*cL_T}d0*~Al>D3v|rs<7T zXj?T}Hk=-q3nOx9i&uy_!hdr6zQX+_L&f46{v2rz&`#z*ARL35(tnt&BQxy_yWPE5 zIPFtaXREV(Th}q+p0$9UR16GRWNj13_v}k_Y&Rx4$nkD8ZzhbVIHKn_;Hvd>m7;!< zH4AO=U8)!7W)hd1=OI=lmM+BZ(fo~{Pqe_V4{h}?`UkiceM+2qzkiT)SCPzh4O1Z- zJ3OG1Jj08P66uB*%sU=`UZYi48CrKixSR{Z?YKVCi@-)`YGYMmMmqhpR ze34L~#cO?A09j^!9*6Mw$Mn?1BF=@Jx5YhInkJi^d+~4Q$HH0_@LU&epIa>e z#V+S_{ki}B=J|R&%zrrIoO;4^2aG+^JL;L+(H8y_=r~Bwr}#kVZ1#=%gI#2HKYU+` z&xPTAj+k(5%_Y`2DvegDyV+j}tD{#XMPDDmTkHgIGjXTTvH8Tz#{69o3cE)UaJlDX zJ7|_s<8zLSu$b+v5H_LWhxAJl26Owk@PYMHb6EVu^39O}(|;cVE?1rBE9Yn5$s3#k zww;x)J;JJol2aHxHycdd`y90iEDs&}-s_x@Ec+L#+q1BZ++3=&c51&P*q_l+|ifkcS9Ox+WuoTiBwa%^kUGQY!Dj znoe8_AU|@sd&e%&cOHFWb)PYHms~!Bb$?-P`~SWUeZ9w)o$EYe6TTVjzwu7LCYG7= zdu~?bT7SLPTovoaE7>7oBI`(X!vTfRgG{L@ogOoU+Y=&Q|5 zUP4^>j4LI7lFvxgG5B<+@D#Cc=fq4x#49!7UOUIb!CX|hUKO6oLbj+?BCwplt5FJ-pvY}5&%a3_sU z1%JAYIFcDQ{R&)%lJ=c1r^KwL(zNuZy~`YsCOL-T8O-i^dOcF%w|wAPyW5(4;HGhz z7a6!6jJ`k^N1oa}-HjTz!3HfeIf>}Q5W~0x^SJT*3-NI^sN@+qbN?UcU((t!t|RN4 z>8@yXUr@=P&`dX_)cyO;Vsl5v-Gf)n3V&TWlvGaHGyTTT&P1U`APT72l%?Fz3`5F- z3b2>XCHJxlgeGS89fbbCynNE=k7$XfX=4$F^Ahj!QA8*5(F-ws4eK>xX_MrXGNZAo z!^o+6SiA$Uh%WBIwzs_f&4+aMIRS{PKfvrS)@^T!)KwLf4Hd!nmTgrIBWib=-G9?I z;8;z(T|9Q~CmeXCDBRVnI0OgpThbK*pgjTL3WBg%Kk&<6H&D$ddQfzQi%lj5H85u& z)nc^j1xkX-6o@7cv9w8NT*dEDKK#%Eu!PPNsH4(+w_?G#&gQBeSU=%dvmx67MzNSi zZ$ATYj24`t;0!(U=IiHLzB|YQgnvJ%TQ2dfEqJG0<-oCzf=z< zATC|)7HgWPGvKo7Bia;6=X#H*3_C8E46nV@Ymr30pb?06ysh;5ZOSCFBd&!@O=e1E z81fg};#XX#t4|uxxM!r5S<;#&WX2kJsgW%keS`!Cp$l5j_!x^4q1LRLs+4&WqFu>_dWRt65<0ah)~+c%^=N(hX-W}y zw1y|R1&q7*C?c#!<8yt znw?#h&0)T)TsIYDH(@kHyQ4RrATBYgDG&CJJts+Q1xyd;$wCu~Ab%yF&FQ2cxOlSc zOM(-ggNsk2uh$>W{<8v^ArC$%pZy4mpc{Q3arY6P)5mcHf8zo?Oj7UH>kfEWy!cU0 z@xboeo04($>&lAxszr2*A8nnUZ0Bg4W0HjJr(|ig%F+1tEVle1xp4To7kC<*Jbb0Z zAAxy)8}BQQmw?{8mw)>56B{-jPsVu(ayh)QH>~YH^joshtYUceL{7A08(0;Xcco~! z(3*7t5qHL{IOE#y!Kz-arXzGz(XUiwGd#vO+G*?V&d2YGew6n+`-|$p?7t*@X)lbm zP-c?vD1dK?%f6b7Eyb{_I?DXCuQVU%RO^t(geyFV-6{7=)W zShlI8C?kI9Dz{lW|6DU;pP8x}v9XUq)sxJjvlp`v=!sjwKdQYhWxYZxYfRD7*foaS zYDF^IJ-S?VC+H6xLv%WhW3@Kp@tpr+@M!2k~1|uZgNalCxDG;OMa7 z5J_o{rGZB=vgDnARVV*j{7lw5@c@ zuO?sbmOgCb>+hAZO>KiJ85L@qmN=u9w%(U*Zftg+Af%Tt>try^{8=CM!+nZ z_tM!k+J6+W9V(T!U1{O5#I(Y!X#DdJJX%cEI0K8*@0)A*-c()WJH1@Nn{Bpr7&lT% zQ;wxB7Cme_oqoViUL0h`ym~}CTSD)=_=ALc7bOLF<|3yWcm$rU}0s;hd z^3Rye|78T_|H%sZU&??fuh{VmWFf9{MY zV$CmEWIZr_pBOWiu>5Wzu~5InM_6T>`Q}OwD101txp%X}TDJ4c95i z27iKJXb>}MU7ZIcAgGIz#bF(@C^n zh&r5S(LKzyxBmyC0+HsU>#j=?mC%m0un>3jpeV7-kS@B^PD_0E+7)heXgwG)yfJ>s95%Q)Pu|s5;`G}+`fHI6; zPo#0PNxnUzpswDUDY}GeRe!0#6q^Q<$pYsK;l(U14Gw}J=AA4}JFb9_+Kla@1I$2v zeyU~!0ItAoEB+2jNeopih^; zb-(;ot$9%Mgh)INsOQFFcxgxBp- ztzGl4&md*qkUGQF0d-RsG4LJ&-DC{Gh_I&*}R+!H9{84@_!Yamq}_W)3b4JI0AkS zSKnMdlbQVH*gmm%QLC$j7stM)(!l8N*$|F9?zD3H&yc&K;WZ zB?yr`*?m=s?0?Qk=7SY1PE;~$u`^v~`FTGuQJmOwuJA*+3yftWC{>iEP2V*X=LVA8j2DPC!IY20t}*#$N=10Vj+gTlm? zrf`!d+C?51vrm@lo}Vy7bq^Z4Y{Z4izD<8DUC7k5`S`Q<;D3NC7F}T3%jF-Wr0v;Z zG46@OGoE>2*D_V*!D1~ExJrZ}Kh!5e5bislwV|S!pMBOc-WSo8qS+ytMXVyZX3yJE zBvP(W>WdI)OVtOEkUH2iuid|Q$gkE&w3|O=sDFsjU#n}OvxQVJ+d8HM6zZbe)z=hVQ_R$rnS)!w#$I2Ipyr-EY|E0&dD)0pE z9-PJ%gs|;_yCU&JCz78S1SBKUME|YHL#88mi17wJL>Zla%s2p)~`uxn_a(@7+^O5lWq_||{Kf>f+fcg`)_zHh=%PTNs zD8OqQGC0%VN`RtGQVf-ZHOQ6V5@j)|bkBLt#UwXf=*B7_@)KpyYqzi zP9h?Bl2msSAvhKi@XmV?Wan^V!gnky5Mz0&FIIiSmiu6N?o2`X#b?YPp?UTLF@IeJ zs144?RU)h&%_1l63iG@r(D?e7;_xHXt}){OUPkku)rqRrbQMwmVKfL$XcHi`L{a&L z8g{S^SOmUh`~AOyiu0j2UW|Dc60YnTdDRHNWGTEN|04}3Ci2~ekF~mR{2eUoGW)}m z!N;Qa^YanAPk#%05GfpX%zMl<^naEpnpar!9Ms2Z{^GZTQ*kh6B-g2w{X!p22MM>@ z<$aUl%Z5rOAhEXPpo~0e0m68wNnJ-!)NuDJ74$Kwd6xbdgYQ+zDRl0dD87WVO^7}s!OG>iB4B~<=6lEP+R{xEU_q1b+(Sm@}&`ASvYQ zZw_Zva}#FUhQP&ebIF-Li+bhcKA;fJ`&ZUf}4!w%U8lx4NYnpCFKkUfn@5#T&;h?=R zSyBH1>*>D_tp8O_M}KwtKj`<5{3Iu=xDIl)p}JbW^r|Q-Vmd*wnp_=+a61;Fst28E z8g>Kk-g3Zr@yKbvU|+zP80ukGi4MY}+Lqbw%SSio&9v{&*As4_JC1X@qaIsE=Sv4RAKWhVq*xF zDn7EVnPFgD?BaL@l0zcc2xD7<;spQG9wmL57xBfkuftfl7$uT?2Lf60X@o(S<`r4e zxD+xN1crjK+oOXo=446M*p<-x4L$E3_ipVzAR5S%KF$WM!DBKRgqpSSuJ5>JERCiO z^d6?gJD9kAYkzm-i|QvV6ZtD>n)w8o%eaUL60dPYzXmkkj@d5)#NuVe7-pYttY-}7 z%_|7e{dOkMD`hakg*T9anX~oIA*BirD}mT|(wxn)j7=H?=79HHF;q)Og)_~l>4NS<{hdgSKa*t)A*nC`!CKs7}h+Y7Nt(6#6FJ$Py$-q zC#Q5Q>yRLtR6BY~V;%j1ok)#8h)3`iW)({|u_eigBG)T>NbW~O?jXcm+z~y?yr9 z-QC*-!Zqj+jWH-%Q0XRbLlAY~KD>G+QLGp~OMj~}11PBfYeC+1^!#TLJRuAE*Gx0r zINq0CoNaH4tGWye^9EcId9621yJ4@lp2|KJgpRq2?nE(_h8l|2(4H; zXA$U)^i+G1&prmKpXIpTMKC1%;GAPT*^3`_#(50&sfv^d*XQ<)wbRgCM!b7_3&Tj@ z{(t8WH`8NHGD(uO1HE?mS8s46)@LcQ!KP$W3>0xin{lZz=iCK~q3)XSO_CoRKWZqh zUv%O1zZkaX>xYhi@#v(<46URdCgjG#;)mQ8wP%P~UDo;^+oGEP&CN)Ym-i%#oUiaT#^g60u_z9&Tg~N2Y2VcCcPx^GBoY z8?j4u;k&yW>0yylOIUFQxkI$+MdNERj$_oY!sbI03gh5|!s|-T zP{P&K93JniM`@x5kwcO7HB9{2GJmbuJjIfr2awTI!ZKNzg6bwj|Hfx9ZC*)94ORW| zXuY*rh-J&_#KuW4g@xds%`uu_-i3iC4lHV1I`_Pdle) zGDa54VwTC<1egUbtVi#ufm1! z2U?Y9V7{#+Cx0e7%&eWk&eM){bFiwb{B1%P-}DSm*Y*p))+spt&YInk0zG-V+Q9|1-*_2%4`hWF}kq{$nf<-!pjH_-$(oyMFgyBGE@~Ex6^$?nMAz}VjCoIqo zKjj(LQ-3VCVvg#bfIoS8P-7qw6{f%<%srToB^h`Um<&g-q|Tsl-hcA>G1Rlkp&5_9 zmBy}5qGf^To&+#S)Rz&JlIS=j)VgloF0&oV0h)!bFp3@eMnJrQZ|;47m$Pq0w__46 z&e4kz#KgehkGgki7A9$m6X6uB>2Xh1w9Bz3-!Ni*LTAV9)Dj%&F_0K18mcq`dC5K~ zEn8Y4#4S<>=SJgZOn-|@QXN^7zTUWe{rf|=upSJTeSMuMD0YQWqiu-R(uWM365DRT9474#h@@L16Ub7i-&)KpcALsR zjh;N0%kN+^?|*R_GY{k_ZA09!%VwBW=ylQq3|V{@Q{G_S1L#WKL+Alav>HsXO_tT+6_M#x}f1i!fcXI616je%2n^An(cn`?hW9+86~d_?pLlvFPT0Kqsgt z&TGSfrW2+ros-jxmB37@^Q0fPp|X^eh$ml9#Vvb+U4JnHBX*?O89|tjxwReuW5{)d zb6+6L@wd##?X!{EUNjm}Uw=SNF!?NMiiXNGHtA_}S#S zjem{~=tU+bbZG#l!jG`lv$0g30NK@#%By36{gQ)~z5Z&Km{EZ0E8(=Gy{NpOX@0wK z;7{qTCp?@(8TzXU@VDrG9td5zzUHn6o}~eaxHwz%S^Id(Q&yJaIoAnzwQCZ_i`_EI z<|P0{yd<$qa>(2$YV*otP2qBnAZ7wBC4VWdyO)1ry?7IvtMt0Te8oSzzN#f&r8&-= zz<5qdyhtj%uBu7iB6u_X0AUhA)~~F#3bTHM21oLeOCo|b;jaS!+h9c;#ase}yc%01 z#R*ywAD;(S#$^>3CmKEmqCYE5m#rs6Nk=wdfh`0;%M%sr(IDT$vN9WW@pwHnoqtL| z+0lA?o?6@;rh1tgzbSx9Wi-beI{&s<9A`0K4>A3hAoQ;j!gvj&Rs{oe0`!6vTHo7g zikkVHp7?{6!03^1+#vHT3{=N~h8maxW40|ntP%DbI(@OYiek0c*1z)`<5UdfY7Za5^n}n|a+wcgHXr((nT*%5Pp%sIje&nrNqx82ErHl)<@65tD5@xxxK{X*1zBq|RxNgx zYByb6u;MJuKZs_~R_<&o_6@)a&r$@UhVsA6s4(aOR0?vH$(uN|CznDiQ*lu$EP%b*juxNfdiWre)py-mXRfVwRA+di4fwi;k z?JTDx3_aRB@SD6<1keXA9ia^Dr!3-Wi|8Ry;jGm4yE@F+?0CeNWxZkE(!W}#98yg& z{S@X?+)}m%TkeBinNVr@IGtMu4BTQ0ZO?eHtu7z;#I)8wakz%1M|$DKqBg`$9IBP=Qo zbxC>hI&`+GPBGp|G|}7BvD`i~uDpv!*XSU-V;ne7Wuvb1d7)DXGm&pR9gIhRX-?Eq zb;w@w0ffR`-f8@%^ZBE$3w)qq1u{k2e->K-c#aWsQ9Um10+nGWeo=ot!Y>cs29n>R zSF_7D-26l~zi#7kCX8uxPE{Z4tc;tQPTSME8`f&6$SpFnd(#&)8oVLU_(kGe7EMO= zNB5w%>A(n7AH6dBMz(y;=zxWNROVH!i6IJ*XYT2a3D2&-jRbS+l9tXYTa{xxhHMl( zT6OC+PQJaXu-Llhqt}1$uR;Ex>e|o5JVg}s?)AkSfBsVb7)PAIv1>rlEpibas>!P} zakhL$nnaxuz_Xv9>)rm%;n&T5$17slK+!m=z5_OcM?ea>k9GsGe;CckS5M}11Q}s> zK~n_tM#vmhI-_~>*45!*8BWzbY|3XtN=tG=et*Ymp96nfs})F zVgB)|mf>sFE`IAEtBB@#yJ1xMR563Cd_z=)p8z+N6%C?+=Nj0oyEZr-)QADL(-*oo zVTSSbda`PqN6LSe=+&-q`dC(HoJWV}4u@0Wpd=*%Fjl2-5}?61S1z;w+QePBCs)8n zm0OLOb8w4KSu-jzJz&4d)|U)T!<#Mjz8RXmmyU!*dV;irBAk zK|h^nn`9Gi{>j}~kGWHB9-^VQ&4)*jq(sNVQ>dLMk^p~3#=?_~2QFhp#`#u#2HK4D zc-rdBO+?bX@$s$pnguxuE-h?|5*^55>9o2-DDAiMbYYQab_q;qhMJ8CWOa4wXm6Oq zmxD2Xx$z$Po6+dY%_{$?@gDUjQ~zgsW5HCjU4=_Y_h)-^L7N80r!TD}Ki(2T`E^$M zIg^zlEO>vcKg(5Z>~Ok&j;k(IUmZ~u#3^wSgisko8UnTMvT&=pE4J42X3H5(*CwyNxdS|5q)wW*D|MK%HM7le> zlxFc@+~VyxbMooHk<@b@M zl{}H46T=<7vS`|q%Z_QR1Er`D=e;(b`Z^t;U5je1hrcPxf)o3PbN@qnO4NTVBSAML z6vKbc$*!6}ZU;S-Bl4bc>%~7Y@WkKMv@Yz3k2)Pio^zeD+pd%^Th^2`E# z&qeeW?~})wdTuh^6&dL=3;uhJ%u1&#xrJ`8}}Q$z#~5FZqj z8kAjRk#{!BM7E>dAH_3HTYj-iemDuMy3v16pKxx)!)%mbG#)Ey!%o{5){9+r7FS^F zNmxmPgLfdPbbiokugl6JIVx?S<@Pg7Nt&2oEw92`Je{$l$pTOd9!qxA{ICOitcJPrpekyGJ)It+uX1aff zVR@{OELW}Q={hV~#>FDJC*Ds#z9<~{%Wulc-myJmVFAz5_QlD}kHg$8OT6Td>Zz}m z!2$l`alaYi_TB!i8$P-%#>b{JU&gGRVUBJesH}Ha`}5Ug#ljK?>8D1ZgD(^jS%N7g z`sF@;?tSG%=r{Y_GC!w3 z_&6CK*@kf#RWB`7`8YzULD~UORuh)qHjUJVRh0b0?*x9k=ocPX*%yK6t`a+LuoyGg z`TMI?RVG)_((|tZnJS-L(^j|~_JI}m_1JbQeuMhtR zYwsB43-cxk7H-+LZM%MD+qP}nwvAi1ZR?h8+q&hdd3#Uq%>H|K&z$b*Z<+ZyBQl=M z$aqY-6ca=_4f*M;t2V@^lwE(A`&O>Y*dDMY=BYltE`Zp|%GoIH*r8nbTc8%sXYyG7 zE~0y~dCLE#O@2e|pV|`dojmozkiNrD-|2H=`X&^w5ES>KV{va&1m%!&aJr{UUh7Wm zTd;m2QQ!X9X74n-0nQoLoAU#T{;RCM$=7%+`@|=(spN9QDfLj+4}O2f`<7-d(P)s}y5Cp(}1QcxYGdrCgAF73|2Gh4?%ljk3xefH*ko=xQ?;dYg) z;sXRjj&@t(+h)*wwN69u@nVofds~-8R{9zu?P$MZF};@=BvubDW`r6$$cY^r$r>iT z%c(NwL0b$}ol2rflKh&I>aG~ z*38%^-k0GrX_kMKe=)x?GTq|u;P0UH^PUAKt;627j#;{yNBw`jR!Yeou(<~T0>Xp< z0+RecyjJ?Z!qEO_e3q*2zdeNjl(o{*RH@NXKZR-*&`kvu=6{3OM#@SFN@44VUpMQn z%_MEx#@c_A#S#od_y_P$dbn!~WFrenCC_YSayj4hn4f>le1AVaVg#IOz>ow0g9)M$ z!7`h;R2AYuYCd95Xv6sxu))<>J!%O{tj>2wg4*5U{93nqDd|MCTSp{dua06oe1r|Q z+jcl`7EwRTX22Uj9E2vO4l869dGUz0Ca3s3xyhT;b!xMb81kKFOpr(;X^%kyQ$$l| zd?(g%t)*0)IopaM7Kb=!!}W1_E_@AtRZ9S>ZlR6 zr0IaCFTR;#PZ(`cVs5+KS(9l5iqw1){al6b`sv*p-)Q;CT(V#xed;KD-+fW zY$ku5x zOhJ+JMtiF8MRI!4auX|=C(Z%2I_JGK=MaBdaa?y%B@oz)8Y{_QzWgO;5r$vj$MDbG zBuS&5GC=`fQq~)I+B@(uODu?o%r)WluMs|gJ1=%WAlvau6dbhDF8uLRx@OO_em8}dNUIB|H!YY>0W z?tMY_JJ_JdxpI}QNjSH}E(bz~2&6qK$r6n}xtJ7C5guFjF6xeftLXv5zv9Yp(zc@# z3i8-8dio+@DU>4=cM~lh@MTCD<#OYkZ zhR|Abj`A2gEj0|;edM$jZVlEjtfZI+*3@wKzyE+I>56|&rcoYPC`!81 zMvQxe^m7#s3D5{XtIV`cw57G^Dp1)z(KIY%#O$Hw%{yp~VKp<6vR6+ikg>qhmhgJ0 zjX7JGLq^J^CDFIWf%=k)^5iS?Ibyzu`X=bIm2ED{qg5{xM5MvC8=3aodWv?<5<_-(SDmehs zQyIW3kv*tTG13_#3(Nb_oi(B;!W?R6_RTEh?-i3=3mGYplHIEeOLy%KQpbu@>E`TN zC<&6h^E4i$lTuAm3A{*+2D`B4KGou^?P+wYC+K8ABU4Ue*rI>3i|QXpq5$xwU!I)E zC~a3*d+36$GC?KZJcU_#)7n191Wlas;Z=3oySQWwdUPT$U0P76@}qEdxXHBu_Lq4=WJyQ*BB6FpKASsm3}TZlzl3nT35?N~%|#GLgc7CZ7mq3o38s6NE*pTtC_>~4s(Rr zNUM4`Zs{Pki{q#TEVEm?5+}ZoCdcg{2-3+VYH2Ksh%RC9?(^xiV^8)2{?w@senqqY zwpvkdRlZyYTSYxKQn{?YY8L145DKeFL9e9YKDH3=u!Mh}jc#dGqUd_qcx*d8Cyx1nKLM#qiNJ8zXDYSb=fhSIcqs;D|Ao)zV!o5dOkxR*~&|b**v7 zQ}m75(;?hRPvN=&`e!d#;!AJuhIDbg0_-heOZB&feT;yogQX1M$4(s@i$wBrg&XNm z$6fyvcJ*|c5El#$(?hjc0%Jk0ZVmN|7<<4olpB9K0FzuN2B_9(ESst|3tE?3#;~)6 zV3Um97~1^y1ZLPCNzF&J{YI;sCUK?+kRMo#<;Hej+|{$X`#=;%i9>M(hbUhqD5m#> zOh5NETZjrBYL~QcW^hF1Cl2)V;{ObN1g?e$b_Q?TAE2n`RuloYZ5Gc`ixvqTpJdzW z2ZMhOk<4{SD`(WiC5*P6v*3;Ah^!>KoW76@fV^&iu}4BvO<(}K;@c+z|%T?C>x2Jo+q7YR* zowWA6R+Z{Jh-#}ZV{GAoh|wasKqMs}Lf4|(hH2Ur{p*E3a|PS|!0S~!^Nyy(6ev@e ztlNp-G?%&A&FA;yAw_`i6&X|b+b<*V0}TTYTW>%W!%`+bD#2fmU2KWVrBic2;b4FN zLLlD@16gXbn6r4)>>D5~^iBu-O&6qMHbP0#5NYC<68Him=H#M-&^h=@q}3v}`jU>N z{)#CgG?`D517Rv`73^cE5k;h_2{I#`NyA`0e-Win$scdW$$HJcJz=|!9BLm&D_`W# zB;-MiNpw;_ICtc6toCScSe&17vOs@xViOG-R0=}*PK-f#8mKLEk7s@>?J>BWRcwT@ zebklv{{B+F?wGQTL9+gPJxq9L7JZq9A;c z@WoaS`{L_+N|yBd7L`nL#V!q0L3iUY z5|1Q}m8_Q%mCcWE)lYblb&7w}=&>*ctZH`|qg&`z^+yp; zt;G_GS3iA${p&_O4i9?mg8~A=Lk9u^{MR??zpE7uC=J|WEI)rC=6ZiD;h->)*euF} zMpDfpu_7E}s1OrZL0BZv(Sv%P{*di;SGTlZ)-CCOd+ojT8)|x*>m_BaZLKY>Z$El% zZEdf8*VPDi?aegUO_(yo^TIRte|~Pgc5gqve@+9(ZaXmgMLlRksA=aEYK)1{scaap zQj%MgK8hx)bKUWV8n=I&neyn`=Y7?z)?A8gOYTEBYU?eUOto*&Lsj=h2bNuF_V$Xik3Bbc*FZvi?@WxJQ6b7g zjIHHTJ;F_2Bd|O(>XIO4?&v0929pNpUk?moOCZt%9c;_Q#(Z2;zemhMTy~^qr?e0h zfSz~op_lo{j?cT#;L;xhTPs(%uHtJLWQN0_vhkc0oj-r;%Lou7Cm0NE*I>Rx4h`M+ z=+DAleNA;Qfg=_iR95&2MSwzODnfWw2fMN^Q+s%5fR zr=qHDwJF^c@0r5v+PE-5-NrvKGN|f{z?^Uj{f3rfWXl6b(Yv^vLmE4-c08vf+vFLP zj|LVj1&4pa%RN)l5DMs;;+Y7lr#%~0#dfOQOczLbJJFPs{d1rQ?-@=OE6Wn*_ZRYfV-`pDxoYH^#!$pT?x7Rp6jWwsc}o zL{1Ki7c4=&gg_9uQd{JuqyWjRSjnI~hB&UTYuA5zG~qlMsVF_B$D}ou>8AG5oO32~ zIUXSgP-Q0)(!}H1DsX@fHG54*vt{vhKa3fBWH4g~PTL(BgEBh|L&QZ5sbmVBMpO3W z^Xe|H9Q4CGY)=ef^sQ^&Tu^gjHEi(o-e*&l7#-ED;sta$CdZi{n%#&5EyFJo?(;!- zTF-w;Y2R>4^KIR>Ri2)C(C3Ze{gDUp@+5sB)BZM*N%{ffwo5%i;4&lUF`KLo!)TnC zxgy^DOEH~eZF-GpHx%vKEi&0iKW60UtwX}qImPs8`)10mNAC=iY`JJ~(uZ8PaA$>A zH(=f2JH1n3qCRdvbwv7W#l;`8ZVZRDTXBCZ`|hOC*GcU}F(yHd!foAbmEDLFZ~_Nr zFPyI2uYIQmXTNyw)-Ak$<%!21Av_~xk{lLNu4>b_u$X)$-}frrgmU>|=0 zr_L&L_XA;UzUo7g#xaiB%>W_QZa_%&j;j0^F=BL8%v*fs8xA?fBSJGKeu{i3E`x>6n#4|`2Ug4LE zSJoTjWsNsC=W)v7OpVGu@O)FPTD^ZhEy^DKu~Q~duds#nYG)fSZj;QP;z))AX>9zt zdsC=W%=UE21)U8{)G%9 znZ2$l`-`y#LnGBxf)tzVD(AVfJevW@EWA8<>8S_Tp7A@IEz^^2 zIpxY=tkN-Cy9--Ol6;Ow?C%MXT9+v!itJwV^W#-8xcG+?ws`N*upfV_YOa&>pb;MH zU)CO0RUifT>8o_(2n@qJ-b^lhRYwx1J>fwd2u(ZL?zWUZLm%Jd&y;TrVCZ|=xa)&V z^Ien+PKX!u_S0=|u%1QM?GG|O;rejj)IJ!yk2ds!FZZBU??inV)Zf6L5?jU~dt;vp zuTXwcSPcz0%gx|R;#z;?g`)6>A-ydSiX4&eSl-gzXy%K0C~5n+vnN*il_pI)(JG$$ z{6n);R4dk1oUrf_^ZI+~f%6{~m0B^;^I;N5WlMGR2Y){1masIvIR+Cih*#tfy2pRb z@WjA;RHpIyA!bKKO!N~qyNRx#HRL*}I}`|lN4GnjJYHa}lKg*?&V!j38e2Jltv>AW z07z1LjH(d#!sM~)I27=i=e&H z3Zd6E2}bvq#Ex&ttH`+~fT#|Cq{f=+a}!*0w; zIPY}Z?`U}|wP?`kwulp|YFLo0!K6KDCUPQEXu82!RBYcUk%IjIaSefu$6Eo}-z5=}S`#AK5jk(3&@O>}HpJ_n3 z;eb!{+D6tbwH`C3)9(O&@C1DVpr)W+E9G)?gSvLS=(kl$etn8xuW>8hP;Kcw#wo68 zrA%Eh5omv8#AQE+ zz9KURpnUES`8GP-puMIxpk&bRBdsUR`CWPBEGvFs!=;Pzv->fEOsPg6Qb`6ajYfeu z>T9@$w@q7O8z%qmBVSRV91g#UfqN=fgjN&7_z!>PpMP@ekc;~>T*+V!x@z2E($6~x z4CTtkBj16&MyL1skL~@`973F4ME6}N-0pR;x+AAODK!Hq|I;bX(|*g&9#5$5SgB$LDR4nl|f9) zVnPhvVV2&9nl`#iv#_z?B1-tL0u1D!Yy-F(|!w=l?-d8Cg>eQ2uZ`f!@S_N|pZ4se0#bSE?jZ_3ub@)z} z4M4_Ps(j42-PG#2TCZB{hmx4&9n1JFp}CU^v(wUIpnHOW=Z5$~V&^x(@$xNgNvKwAn%pyDKQMAiif=Y?mt z8*yQgRg|Sk#h;f^ZgX8`LSM_wn|JLJkDie&tCk@?p?pS0`4#8MG`pDI^gDm+PA?q+ zp-6kcGLnUpX70^D2Qo!D_k@k5h-VuAfha-`%oq8~L&V^Rx~6=P-L)-iLD$`w-I2yZFTj!=46eObW@*To!vKn%n0$LFhKQ%tGA5A z`rAxqi6yA*T%{bM8Oddr1YIWiK2Z$fNQ$a~EXm7IKO3B+jJ}Ih&5M6T{5Mwi3HB-X z`nsUGsZC&%UB;C8Nq| zl9mb~4-X3g4uNa13fX@i6`BXNn@XW&hNkJ>Hqt#KDm8?~s5n+~i1i9A5Lmt-yN3#j zBauTwAME{4`1w^h^S$IdpLMcM%tbxg@}Gz_W{+!V=_{;Ye5kUX!QHRqfQ(~lG+xN} z8%cJMO$b--(Wv<}^s-yMs02F_qbKyOKoL@ZgQ2SA#?t5U4V-`YPCJL`V^t4ivhPP7 z(fmZW5*1R%Jh_-&-uVtex^r|pjyJrgUf*AFCq%XfW<~6{ETt$}xsr-NQ&nO3bwkQ8 z#VgxBA;xOtXv-hDIhQMV4~BLctP9WDB6aJ?*yo}`KT)r``+p#|GjGhYrUYw(-7UZH zYdS5>x*Au4IS7CKT%UHz=1(Q8C7a+0=K4CT(fNkO10HXUeT4G(N`6X$&xGTf9^@TJdyHKe)N zihy(1qVXp)m?mu`FpBov!(dJsFlJPPoQqwdY@<0_gOqI^&+k! zMgKXv(QI@yhMjBQk+U9Jr7iAUP<4k@W)%7I&8RWwMBZ=(;BwVSB;|gG+R5?L69#BD zA3*2o@wHWTY@IlD=sG(`E7*+^|JfCg=?jg{S&^lsJvh!OW&|_8YymkY7k4TVSP)3s ztg1uaU^jmf=K10-UlBipzoiwxoFM8Bo7D-Sp6*tkvdVL>AI>tF&J7FZ3x5IA7)}RX^nJC9c!w`BFet zV|+)Ti$;|&$DL*yaHV+XcwGVY+Pt0%#-EG6%VmG@izmo=8}t7UvGbO$=Ce-!%=2LX z6CHo-EhX*D>=^|AS+aDoG8m_e>%m$4b0-p&EhxO?cB%Oe zy6pY3B`yaSRDtQ^=}y+}>hlMHUW;o?|fbA30?!XqV&80ZOtlbUzO6(y4DU51C zJ*AiI8v2}uPV-*Z&U>K_)79{bxjyK(iPo5Hx3KpNieLXg*j-MVbwd1r3X!gwbtCtU zL94m!H{_|>MNFp)jMB;-{m>wl;B9}Tm1MiEB_frl`D`n$UD`$qh;5(j%{BS5h9JGx z3W&Pl&lba^^QmGd^L*=B#_%5p#SNpH<#K3umLsd;Gt4b&XZ1=?an5pXj3KMOpv-B- zTzu%hn~ck?V>m&f2LhUjtm$Q{!g1V>`f;3~Y?!;%D~igJ9O8xOH( z80yI+Ta7r1Yb_0bxGLDGuSi{SB!u8jI*HAzFD08?2mn~>(+J!C8;u}?94%+utsdNfcP|iK-~4}d)`A^R7qK?1l@z*9Hcs#1f*gU>)6Dmk?LA%*qCx0| zF%*NQOU||$%W6~gQP;4;jc8c5eD*;fmGF3z?IJ}>^j4$P0!GI#0ZSqd)Gh4fr1QctqvG;H=aRSLfuns;2V5JWxh(~(BU}Bpt%bj>Gps7%}nuZj&N*Y z**{U9a7p{`>(b|#;n7T@>laU+c|!ukg*SFUJ?D**>M4+bArAx$hjg*%3+hVJ%=1%& z%+1+CQ@^1(22$+)k0$~$4#J(A`5(@SlzWI*L`bnjfghw;W6+3C0gaGkm>87e_V{?q zVuuw-QLK3LJVEcUsSAHL-vF9^KE2J0!I5B9&(1lzXMs2Z!MHYH z7nN>f03(FQqf3fv%z~vFrI!WjZ_)#+Y!}>}YffBZ`E-9#CxXnwEuWo3qX^;%2zrZM zR~<@dR2`X)jGeJRju3BoGRB3$2B>D(15WkdEY)+~h+rT(Fre0X!=91<8V(B%j8KkZ z+PS+NxrS~u1|Rf9xc3C$?4(gA6zeW22D>R&Ty(e5pOO?7uUAYA(>~E*=Fl0gG_%91 zPo`q43s#%njbB=%W@Jd43iTE#9|BT%JedgEyxCd?F~G6(g+B=m7w3@^@7=~DJAC)!7|qiC!spP&K4Cd?4*23*S-b_!#8MN;Klzq1_Y7 zalMX@SmqeECnT#CgCdc;xE97GgChtVhOBO&x9XuF0oNxq>4sIcthy%DtQ<#e7tv=7 za6u4samF*d4s3E7VwM$q^U6T2N^~5gGe&bkNk` zn8VX|yyB)~$sH4JEd9+(x6paP62nlt_3@6}H@ODBb!1>;eqvW%W>TW5%XI51M0IrK zuRX{LzNEL?g9$_VF_e}>lnEnws%36UP<~zh3p&rF3c-OT*N3b!bUQ??h~B2-6T10D zTho7P=_XV;7wfd6+T+ok^^t*jbCTyvax(sjihh283BObxd1<+X?ik%h*FKSTbLS8| zwov<$0@g%_5@x1%_mir^!basp&RpCe|0^8DkKr#-BXG zmsK}Aa~<>rZSHmhMV@z%kXx2#7`l&DsrG}@`$-nvAaQ@l zI%@G5_uEhY-jC4e3+eO@AO6M&YP{H6gPfLcq9_KvfAxtAeV2nYrXcN2 zPY{r;?wEffnKarErZ%8-L#;*m4f?N`k5BTU#DoL_VnY2-G@bk3V*cO1_Nia`^xwzi#-qE?Q1GX*=dMD}Cn4p!H0$WKZ5gQ`L$@Y2lV6_^N`_gVjVxl*f@rVM!-PbQcHiJJQEBq1T#e%A=}wtJ z$T|m;R(k7khhzGLb~4;lQCE8uA821lfO~0nW%Su>*%T za&(<6d6XYxP_taFy8DX~T}NuDD~SRo-|rHF%A@29^!Fs-PEFa=vl*+a1+4~W@=vTL z>XkO0G>6=?FlfYm;eki)Okw_rv#S7fHkIxlw}-Mtk<{<%`w!bFkh@5mlUp;FbN?-d zL?%M~R~T`2_&R_b^ih8iEng%ia1s(}4PVmj!_ks?>vtJBJu|ImK`_Y6szSy~BMH#; zsT4}a8YD>^2{pK5%7p9$Rq0}V?!1h#Ua}$m9R7K&Tm@sCp~QeA8ihk+tI&i_OkS$K z7o+-ulZ&f(fkC~D^d)nyNtTOfWs6E4!!`E;GV--CHD9cum;!&H%wC*?>?m4}`n{%4 zoTvdF-v#x>O(tO(O+9%jD@6^z>OxHnemdFTM^vTQCyR-@q6?6V>_S5!K`~Ku-nSiB zI{v|7`cCXa^#Xq~04sNz3@pIWEyc~c&a?_lM4vLevk|p zDfRV%nifhzsbd1F_Z>x$p|$bt2=9}DURxVk=l&Z83r!% z4~vR~x`6q0mE#GPFEJfMGc3wu2EaJ8HBDCjG^yIjy!n5C3``%9(=+>_n?J_WN3!%K z9gKce=2jaKr%%?2dQw4Whr8)DD&$=?5QVMq8)3?IqNCYwkTu>aQ#$ZZU6lv;u7Sp7 zlUFHe)$3oad1i9^@lzGvczb40TWR!WRUeR3yYy#j`P`>vKkX5iSNNgrR^+&us$!)E zG|gKr$(4U@HFhY;0xsJl+G#p2R@LgtIlStU2C;!Sg3mNC|`gdb3&@myvNAi14d!e^LurX9U*Iy?F`+FYVV>q@t3Q5JO#!6o+JUCM5M zn@{S8l}P9DD$$>iV2M>L8;6lM3ld+Nue(XNg+73Q!eoEU*+te2~miYvFK zQfHF8yQ|*P8s`= z)F6KcrBd5|dEbWUCdtK$hVg$oo7-L+2)8Rbwv#o0%=(AK20~ez4Up>+(MWLGrsu@? zZ6&yE>P>$o$cXNAQuUn0oi+B3r$}j~-H^)EXe>oT@1UK1&y5)hrR-Ymt5QPmm z3mH*W|E7G+?(eU8jg)Uz9??VEq{clAJ$&3VL{zI~C1bTYY(3Ck0WXal6( zK5m{Nx$i@KR`P-RMG$y`_{ZcI>}>kL6Uj?j&oZan?})PYfvQ4Ryo7}GjC4`%*~!nr z=W`*Fn)5#=d{tMADCr$tkyR+%A%LtgB)>j3?wFUiBaxalJvlQj=lAiWRuc?2A zI|Fj7VAjE0YK5#$<@WR{H=}cX`uGAqcr9LDA13FBJw}2{f1~vEn-Xh)QLR!7^frQ% zGFVk65b8$R?6r5f1HWwbe^vDEyyJK|8t&!o7A) zCAb}`elCF4H);Y9G=2b?B-; ze$G0$c@k3Ab&}=Y@Mq2xMStM(wa5H`#$$-(9({B#`xW%LCHXRb&hh~Fawpse`p4cp?iO3KUOQvKYQTxbXOq3f8S}iS2H!_Jc<x!Fo-_ri70FPWO=!{|*dP9&oj;-O=}GCeZD&KEy;1G83iVTK zGfWT@TIrN~=YAB7*6WY!(*>`chva;}zqAJYgt;xvjxdY*=dS)*-%o!_LuNx~$cxbQ z&wp@y@Q=w$7(fF78Dah>9N_=|3glnhA0DX3SbjfO-+q65zj*iE{(SS^9SwW{xkO3)VuPfDtST4H?U$OC;%QCXL6cus zTXAI_a+0;3oawl~jD5OGqwW#Y!H}tk%NT;KuH$MkLg2+IoS;RQF z-Ry{i)N(3~sM3F+L~sGd@)zH=Sw$?zNP-nVE@O?&$)~RQ!SCIM@yhr%01Zg zNa|aot}UmR#b9YBzxbu((3o)RvxQ+7dEBd|@g$ghmP4U}R`#dX2|bI|knzSDXCeVJzOGMpHlR2(8dN zd$zjaJT-xpE@01+X{9JxGelbzDw=KTK+<0m;$nXXbWuq_*>KL_xt6p*F@(kxDDsJ^ z#u(~ctZciw02ju{sneopBd=DhK_#z8V3}vf0Rzx<_9 z?S`&H&tOr@((#M~Lq{(r&C;mtRvWpz^J;&bXzi3GX;C(iUpC-h!IZ(ROCWY(dDPuR z-&K=z&6P|vAH#7h3gW2nVA)Y}W0l`zw8jD9vTbmG=j(xvbfnoSJ-BXcR%mwdn&TnT zc1(_PpX_}jdDyza=lJs!&@({Pa_PuI)8V*{iDRDXLbFq|2cX`GesO$&jrGfTXElE* zEHZ5bIaR3&>bBWc<4ZIjfpEwULa1!l%=<9MAIXBe=?_QUsyG;Wjp(-wCCf53Vg09c zC^$QN=(QbGv5qGTF*9Xu^68+~WcFpxjMVb*KXA019#iqb%_sCX)tlnl0SRpS zosJhu2YkgofMrRmXYqdzX4Xn|PzLNWPNCcX`O#;^RQ0g zE&a*C|4ngWsmC!E8TRMIx8qO54eWUL@Y;EUau!!PSJ)>!_s~td;O|;~BC24=RO+Q& zx+Z+|KhHg#Ja%OO;>)LBa2A_sO**qI$;ej94DfE6Y1dx0ht0~;9ojU1$3AST7|gR$ zwsbniDk2B@7;^oF@j>UVgF%0u!%~;=-22n8JX@jZGtO2YOh?sdp2=VzqAV=TkVF_5 zz{ZwJQBwUSll|1CudkNLL1-^pjN~{E&xMn*=ElL($BD$+hBTHM2Wo73D@?@}w6uY9 zTOWVba@{U^o(WMOgng#bxmg#NsIX7#wO#2Njqr_^k%Ma+A-gxPZ%-+M0w-k?n zHg7I9Y67bE2&z-7wxxe3P=3rR_jW;YXX~Am?+60_7U{`2$!mZ2J^ZZV+WL<5!)Qg7 z?@zy5PC+3%h{bF9@zVT`Gv8Ib7ee~8A)W6#o^evatLT3U4LHup~ zW7jLbwhHCVfrx)*H!u2B(HrB*jrf|r1SISqdx^_^gAp);Nkq~966q+7^(iQzL; zzMh!j3F}0zp~4@Ar~ALQ>GpZuz^)O|`U+$Yt~uF8_tSr0hw36)LJ$tv1n}+KQJxp1 zxEl4eGRL%~r`;t4hVTnEc||q~3xeZx1YdHak0XjuXd1Aq>aj2gV_`fmFOPgriS_8{ zM`cacZE?3_*=U4_w&3r8#|7WUFX37PoGAT_%AYc4(~AgW41k~96=AYf_w$o zlm=VX`UfR3rOt)S9=hS+~+Pu%Y0;s^fo^k6cnkNu|HS(*kQ zVc6oTsT4XI;&#~hy)u>O`qQo~utX5(c#npr=7>Qw9m>pIYCJ#8Xi|`Hz;WP*JQYceCQE3^88yLyIyf?|Q&kysOgH5S?z<63P zx$}QKQnJQdC!7r|lg%x!8`uC;K&!vjM^Gq~9f@9KthPyavCpC#A52RF;~l$Y9{Bk* z*W)j{TF6z|ovTQ#&zvYYyt+*KdPocG@ot0G04b$ahh<(R)ucuN(LQk{rVxFvu6Hy) zyqK>rU;k14*N^P6Xm0SC-Fx|)6MYYmA2^OZN#22fq)tJ|Eovdx2enn|K?}qdAtX49 zxBuX=_>CQy*wTZ9hBhMo%S|xHBc7fJNo2iU z=Ky4MOQvbF|Lh7j^IUM^nSl&fAUPa2|FOtPiLL93o|$yuQ2NEiRoz!#T~&Qr-~Z>H zA|U&Jl`NF}s$q_HK1eMv@3($ydUIQUa9P@v)kL0hVQaW$hU?QK(=Oe)K!NMrJuVBW z18c5-Wm@VrwNh4&cV#qrcBW~QH`zu4GG{-9xl>Usz4dGei1&hzfKgv4C^Cej1Yvpr z4%c6w0(2v?Y%uBGSJVbjAC6IW+_xIQaOW`flWM$m@lA!8vO)+ z9yuH4wP9nXUCL1|62~;SYdUqbwRg|R7e~RpLAe!zivy|oW#DY2`bQ`~IY{@CJZ3hW4V zmKn}lQ{`90HrlPUaU+GjjZMtL2u0fTRGjnIz+)xM!7+5c#P(prz&N}hIedf`%XVRB z?(|I4zO7VD)3O|RHd8A}Fq%-&n(2CKK5fX)ahefms;#k%(465i4?+h&lrR;4Sbz@C zoazc#QOpbvk!b0^o)R`Q&S8q2ddjs97@Fx}Uaw5lEURPFeRBfkUzn#og_wG8WZP=rK;al<{B+u+u zZ5mZ%gTmCDUvzb3_U78zqx~$Uz*Med;Uk_DqfC_eJMw0_Ma2tI$vt~0TvlpqE}@U~ z?8>#NKTWy&y0GQri}q+eCPjcn2c;L}US~0VFurjQDA7JCDKEU?PY3QpB=ip4L!6fY zS!ZMAnPOILPs_vCjCl}$l`Jh(S#*%^#!i;HrOSxZ)vFt;Kgb7duQ}qz)M@xd$#{2% zb+4#tcX){YV2~3@g}3N}FmpkESr#Tu{Bw?ikK(=zhR@Ho2D{d{dPClqXXSNrwMA9E z+--3;@6Iwh1KY$z!Ah+{#2%_z8mYLtSb8+JgOE&lPQ^C{7{ z4%0H;PX#|t%X)Bs?v_xv@lt*h`~3jjE3a_lr~Kv?Md^m7PI$-biF-k2!$C?>y;z%9Zxikpx=$8&XmcFkDz@2uj(rSE2WR zBh9R7vDanSqNIfcnGXMnLBpRjquX?FHD6-(f)U%)3$${dblB*GMBN2a60uS(`i(9a z7^X?LIvV|dAg8E@jJW~nv3bT^ErCdVfo7xBfCY!jUNddApCfjZIAIAmUMMd5r-~W_ zs}#CEY_SkY4l+a2u2(g12LmXjStiZb%TVxQOP}3{PUT5`3-`rz0i8 z+bG}v%0pdaF3CL4>2)dDZKZp+)-p5k_aRp(v&-sEqiVb z;AfqG=ffYy4?%OOSc~=riEX{vP#bl437tKY3xuNBw&R>IqAuZ)E6sRJauaF<)Eof8 zBbzTs>7!ei^;XM0M+6P=Hkg&_wAJ^)u8W5eYKyi-LB=)Whj7N1xx+!>-lt>b`HbcX{A+Zo)}FL^ zjjDUnG0B}%AhVi4w$k_?ti5BDCS9|CEn4WZZQHhO+qP{zW!tuG+jf_qvbsxM?!tY) zd-iwl-uvG^=ZukKtjzeiaz@OVu_7bphxX@hM>1mk!Su9ry}FyM4{e8~j?-lsT=THo zWytJUDauC#yyiO_NF1zUD(p_4vUu#cA*(IUA9E_kcQc9TLVmk+DDSYYWRB>6W)muE zTb5kt5VXye3;tQt6>4yhDtH98k^Qx-wqb9m*Yf3Vt=Wb^RG$gu6kOEaa>lE&nXq}ie}M;~ zlB~3oo1EjX+ZnESr2v@?Us)o5W^+fb#+oq!)V%fsr~4w z@MQ%1rmQ$jhCt6K1UpkGvyCDky?cYb1g8V)kwQADV_ko!N{`+i_QJg~eBIs+DS6-N z*%wYOB-|FOf5uh%XZ>MM0pL!9Dv|_-sVp9ziv0Q$c0+xi8Qvi*HKA4mp(BrS05mix zy2vtAl|D~7b((0UjO5>c^d(wUaKtRcgrzVTKS(1NVBh3P+~c~Fz|c7J{3hZ~`}s-r z?zwm@-TAGB&-YEH*!GU+ceeZj<=X>ZAL0YQE8NO1cVkvy!=*B4ejbAb_)V_;K}mS? z{HMJ7u>^IR=}oEgJ!mj`;m7oOhM2wHX0(QNNvI{ap}sImX4l4lp@9BrFz_XhZ}=xD zRI#&W^{C0dpeU4=8Q*z3V}e4Y3qDH%r_7^C9@^S0Hu1KJDLje=$fh$a(fvfG|6mCB zzzFj|MVgcIHrxtvawpn1n7!<;5k+qJfMC}$!Pd1~T+TyMj@02iIw-dW{5c-|2|Bo8 z`qQmlQD!--#*}A&+?Tzo-f-;S%6C10f*|bkZ4wBwZ&nB}Sbx}k^`=Qaq7Y!|8PV%I zdR~C>^+Q{izG7@AUActu;T=KWb^YyOKtrH@F#(Zp8r>sQQ~dL*@;hAevrGF&<0YE^ z#_IcjBP<(^K?du82+QLC0%84oUWk^S7n;UDpS(Gq+wQP`w#84g`NZ1y;xKBWPf!ts1I+`spJ#MFb)(D&D9s6++}AID`l zoX0-o1N>!xOSVHhk(tKf;L6KI#_=)j)@98!4w7&d9Hd0qSu3fGV%ug}5xq)9v_Dxi zBPrSGtW}x`@qT!!-;vp5Q(_>@x{Ho3cij}U{kjZ)tL;t@&OgMLscemyCLZ$!skc^Z zk{Jj0RyOuKEs|uIcR}LI4iC4q#o5EGTD)*vbJw4jN2N#q)dfz4u`Y8b=B+)9iIE6Y z2`Tkj_UI2!Uulh-j!Gji*r!GR2L`x>Se^oYjw^k;0;rjmSjc+1vG8i}W z);IotEVHa=dH<~yVZTGFWH$Ug>^!M00Juy%qs_csmm(CyoMeV zn1TKhmlo-ap&GKZYw_6ZSc&MRV=v+J!OSb$b4Cp}SM|zsC%MM>-KFlQIoWIwt;fhUt2=|%=`0UEbfBGPEtw6HbMh` zKYg{7H@h9*Km?%E=iutT(xGUJrZd3|z*3Jp%n}aGkfnfq>zfy!{^(#tC@UKlRdY7Q z*0zmaV}07NG9hIwzrcTcw6ZBh_~5$0&>AJZ`KfBIJ0gKfWNWL zSR}JNe2I>Q{o_;Y0^NI-vPGX^A|;c}|e7Z_3hfH|!ZI zdwUq5S}kriqrIuI~z~re0Hv*+Xa8k#!D#IMrK8 znkkV-88}SdDp2%)p2@d6QYO>EXIlxgTu;my64EQu2^1n$E&d1tt7Sc$J6S}j*9}La zGvj3SSwi0*;4^R&{n|aJ<1=JMVB9s3zvX!G`t}9tPWxq*?`~R3rIR5cZsF>56sw1t z{gl3f?xZa(4rZEh^mtUiD5`{i0sRGQFL*5-dNaH(l|QU*k+NN_S^G@YXuHUf4J9IL zU!jTM>RS8n`?{tDLgbyB{ZC2eDO9ORZ(AL?eS@I%9Q3_*Lo-H6iX?s9oBENG7Z6o5 z2Wo+EAzvCqN>irU*m~Zg2nBtUdK-A9(zAtxs?0z%5}kZq!DOlXIOjnK1j>6T|4%{TI^r zi0^A?D8Yw+=lUDNPf35&&EczJ;9ulr7+){!rGOMV}5sU1x^oi81inB$#L{L|{fI2ld?+E)1|s6P37LRtH8GXjIST#oxZZB{GwM}9)!~t+vVyvUr0~k(ULvG zukUM5nlsIxXCQBX?Rw#~xOLu(eb%K_>BoFFp;dTu}-i2BQB7aUXE1&pPoR zHcvbQzwG}0x0dgd@a29WpdcU(p#Sq~_y100|1AG9dHlI)DmZ`w|_QWeZ2Vt9_=Vf}O_=g?2A+92$|em3W8 zbc@jW(hJgJBL>zRO;Km@ALW+8*v=frEYbm;IkMm4&s1&So0=&@hY@`l*$9lf8Faq(TUUdf1X|7K|n!c^UN^fwH*UAP*+SoMpGY8DcXH@b$g0Si z%VCy(5gmSga~!F9J`RD$1yjE8^T!bu-e~Z}KY=j-%!mdoS(`-YxZ74)(x&7USXp{DJpHH zV#9p2ye@!_(~O&+5e*g&vuGKW6z1Q-#F7txBXU{_1yK}GYJWi|DB2h?Dwh-x?@1l1 z+2Y0wHT``Y*1NrbR4$hS1u$+)Gfjwxnp3Q@8aQ?6E4Zei0&@KFio>zu|zc~%~OwO#4+QS3s`$>=Uh4fw1v!cHpFTtdrw~P+ z5{O0hTc19p>#6~wVQiYOMHrbmP{7WAHaMSoi-@x%T*FeT`_m#k5oW2h&bHLj7hqbD z(WUsJr)H@pDYL{c;%pn4%cYEDWuj=!?9xZS;g3#Fh^eecbpqia#aUv?_`kVu2qEyJ zwPbB8z|sr}7E<8NW)|N2=45^Roy#$3=4i9jSP~&3+#;t4OvA5z8JMs)Ouw6d??rsj zfg{Ez#B1xLK(=oRM>=f{7bq{B1P)%sZgP6l8u1@qxMjKLg5- z>~Oes4Vz|5Iw}E9`$-+KDs^OkrNpzyLEwDwhd(U9M(@*1qPta1#JF(=Okj0#X|U!o zZm?bTF(UdEvQ0J*sO7~Y>H2cg!rh(B-4*F>J3u%pd6={$bT=#S7E-?S#`ZV zH!ZQ$>;GD>Ri4*qr@LJ5_%2hKw}qebY{pFceB&x;>Esk>^p?>>bxgj00^BA3`LShP zyDJX2TkLub6KT4&pOq8H&5LV+A-&8lvKWIScC*#J*sY>NH&w|)OV}z}kz5P(i@nYW&OqLYT2w+F}4G^eE zBtu@~{5zsHrBbVjo-|2+`2-JnlboUd!KEvWHpL&=(i1y%hbHc|)DfDhbjR4vchQSU z7#QBRjXG{XCj zz$)WlV)eg{V*bZ7=QG2obN$>F-|mBkdUc*6|USNfCfsaaa8ayIVoK67+L-= z#gVC-U!I~2E|J22p2r0gyw^z3Tu1=(CM^Zw9)LBxO``=4vx+v=nW|(~TL?yPP1bDzt@Ep_NZt_F z=^5+ngdsq%gK`gP{?DT_x9kjL9L$TVNgH$Hq)r@v#C8~ZcrHcDd%_NDZE|HTZDVM- zX7Nc?db1>awsb=F{;2hEs#!I|#gR+i1!3^Z>H{ygK2S8XqC@(SH#PqJ@FwB($UMW@ z8ztO^%P?n3Qr?^;dSwNU=HfcL3eyTU>v4sU))9hD+)zn&8)OWYh&4iMo4K8yzFS>3 z#;1mVGLz%oyQH5twKS8obsNqJ30Oe=6ingm=ZG?-eG30=y23O1-b^JwH_gU!<_*3o zQOa#G?T|knb;A%~Ik&OG?7M;*yne9e^%8(1Q33{SD&?c-0<~cJu&19zho%JeKdGCF zgYRKRIo|2{hF_U?s~rmN4JLq!c6Gd*zCYG~C}bdd;4BA@d15NHu3e%N6n@exUynQV z;t<79DNKs#t4S@X;D3j#+nT_^d~v>hwsiijz|H(xkgYrVSAyu$Nn^N{U92 z6%Vg1Bb_z4Of;ia&E+_DrnkS>l~J^(h3)i@beNO<)S2}h)RID_!4-BCwNoXggrIaP z6|$N%pmUHi>z1dq$wm~*my{fh_24#t&RW1NwP1=m$Dg!=s+M0NFG@K(%gc4s=El&W zF{$FdcaT;+q)w3l@T4jNbD4C0zoQF5~1&0Op%Eo62DjXM~UQJb|GEK_TXGYPR;A19KXLfYxfC?Q{N5KnCcz$ z*)?h&SJd2_A$5W0(FenYW}~=(*;J6oE)S~c!D_#_MGHUE*LmShw?7eVzS44Y772$k z1MA;ARAU2I7dqK-=p89nX|jrc4*7uDr}qBMNJyZz2=!Z_<@t!a=vcs;=`T7Omtw+D z&)poK*(mouX7>3Dj6Qp65iShbC>smjUdHo|S8XTSNd0T@<4Gvk{Hi=JM2-bM(Z)TB ze_B+f(ExwQpTcMa&vd~m_5C}$VE>r{L$TVq0SM$D2`jtxFzo6E!J+tQfP64FxdH69YtA%%(=BXsFoSOo709jKqD@ENUuHAOK zD*qYO>18H+Xk>jyz9+(#r%Z=8e6C~@(QnxugKqPb6gdRM`!YR$?s@CQ6ejv`QgyAv zpDE0L&2E%e(&A9_uRhJCazd3uKdp%)*uPiSrt06%&hZtPw*4cJbMxX{Qf zWby=DWOG*XY1IgS7>1|i;ra;@_!F|(7(Yt zIu^#}st7Cjv2-goyJdlSR_xq02+y>19K?U8%7FLC(dBN6ySw(&${O(@uH|Lrv3RRC zT3;tg_c20x8WDq$cSs*g zJCE7?5c_j!4nXl%u3)!;X*HG^TOUs(f%MfsoQi?lmgK1{gux8!*e2=)NylHQyn%^A z>c=#aeEc*h>;A`(0$1%2VPE;@K-CS~$W)JDIPMr>`HgdRIb=m9U z5Q&qbPMcwW122K~(OY141*dtV1#CBlXdG`s%Jc4H#*vR&IazehXK^hJ(Y&62FJ&&v zrQ%NG{7{UVWZ&ko{2O9U8ilTAI(4Rm{CzAg1}mNi7L*{|8$52(OW?=3$9oxeGhJy( z708g2kI0q~X(F8N{5Ye7*`x>HN!Wq8eYJn4?iqG}%hS|>J6*Y?gJkh2eV_xgiIlB@ zNLZ>m>5cY$jjAPtHnxN!79tK-t8Er(xSHD;K93=sdz+M6FGqeSX}+_uY5RTwd+8D( zH@AN=*WNMp<59mTU>LOd0apM@c9Bw3g87-Ss7d53Wt=SK%UoiumqYyrSu@&LaI>2~ z2sN~SgjPv?Um!w{3chh?=?}QE>;%JkQ_N?DBlbQ#(cyjc3295>j2W8+0&x?m+RGR^ zE>I;3ND7X1`VR-A!c522Pl_6O84`-k>`qb0U{12dnPNs4?mzK9X$( z7e-0*5+&;nUm$)4w|Ajqp)xbft?-_{b{FV>gdDR#Fc)j0>Pnm>0Ht182)2T||J60f z;pH##pDOZSguoooETNnlAK09`kTY@`Rph~9X|d7O!7w2OTK0G20bK49M+ zK92>7Su(P@+;@Zd9XnkBO66e9AAb`}%EYTa3O^D~arLiPJWmj>9Yj}_&Ym=N$MU^@ zoHHdS%b?!n7vjxCsC=VI5#g8^ER;jYwS%|zx++HKLzL@hAW2x|s+Q%-O+HOIPY&Xtlts{N!L z`LONrMJRk`<&#`8;$kfs9KTI}6O#lc9rBbVsYR5$Q#Ez-k}vukbmxA`8sP9mD8adN z5{;ghCCYVk(>tR|^=jge--B0K>$<>G#Wr07SCKgO2(@)9duA=T`6F;6;% zYF49yg^rYHgXuKhMCu7)>Q*dFY;YZozPdh$C_Z#3u9#kHnGT&kKClvhkArNV+K@}c z8^o)rk1O>#B2ep4Ns3Di)kzs^WM?Ee8r%C8Q2zXEx%x)>uL@p7N1*l#3V@`>5Es1_Uda&gh#QkAd||3P+}8$ zGxIQ1T1SG=={r z7locgVL_INGdW5za+y7J+~aM~kFgy>_H*dWx(lmGS)5E z^eNqP+*8kDVUFdAVCijVvilW{>%>=Ia^wPFJ`8H4w6`isf159xLRN~Y%y?Ib5sxeF3`f~u<(JZ z-0eK=#)|ua7d&M4Q ze8uw5lCjm?aue+G(2Yod#fj$X>W%-+vW<=nuDq!Md?pNlW9sy(5q3s2eu{eXut zyT2OEPP4;GUp!+7)u6F$%p~uuQr5$laAZv6LLe5EzMQMAs{(Sdb@UE(Ej}1ZfMu%B zsD;GK$7K7wUoCG4bNauD9UDBDZ5zCpP0mOO%I5UjLhG`lJ(B*GT+y$(MP~(Li!+D( zpk$GxSACp+B~kcfRp*PvnDO4MPXLPvejxX&;GY&MDWo~8W1*8fyh)35cWhChk%g^LV6E3J#1B0ew2Wm0d9RNIG@M{bE7YA%;k?5J3G>tbHM^ zAuCk*fYnV~-B+N4>8YavO95qTDB{5cs+Hz550gY~@^ufndG1RAz>igQIvB zZsxtqP!nm#$WvjJMsK#y6^rO)VN4C6s*B@)V~VT35V+8ZMuVSs9fn0!N{ain5LTAX zz`(1EV)nDsd>cl|d?9Ovf7HQ{ox%!xr}$z_y}e91y}^v@nfXFCosC|9I+H?7Yr`FG zpb1veFj?Owt#XBBY`LLWY*Nsjb&M%juEHeOeC}k|qM)*UzLH@x1spzp`X(D25lDi6 z0OjF+7|>RV@O%kjq|b70zpYX?b;^wd)+$YuKYjBHQcLkYLyx>Z@-8Yu%A=1c5~pAv z2MnG7u8k>I$=OHZHI{6E$v+}91qpV!K7#H?!Vx$wDlg&av3ba1Inx=#TbWA&RDm=2 zcB>;qx2m8L@?7RGxMGJniUeVlcYzwzucp$b86%FnKwqVpz2=yHB8qa?6&{^XAAXn4t;dR; zUui+RkV{|@drr=7I)#ovJ*tIwf<-u)nq7~PiKP1 z1&R`GE9sSAbvX<=H}vxh8Fe}hq$Zl>mE)OFb{)tOxU*x-NHg&e1elC}X!tMA%wlxo zRth>g1_gw%A-+ zOEb$jTZ)h?#VCyi!o_rSJesWuhr&-2ntf06>$HOT^YnDD7YiMc1&r2vu#!@`-hRu3OA>?q;H0Xywj-n=FTpd3BQ=M_o@K zi0yWU=o7HhIWaQijb|5T7h8g4HC^dU-tA1Z<0)slA2DkSzW;zq!))d9ue8)@aRKj9 zhs(uH(@H|FArI!l!JyhVlmP7SfR4*KjJdIhM)ghq`+mMh%QX{Ky>rM8&HY~+SM3PK z&3V*sK7zJ1ZO@K>KUXVHP%XyhcSwt7h%9;&3Xidtd005IVfa=$_y10qvG+aRV!lUtYmSml4nzykzKI$?$wL zHM9O$8p0NCuX0-b*&O72K|hs91~fN`A))G!V9FWhXS^GK!f7DvY?+t2{%zmWv(oTC zp%)cQP!v5~Wa&}*l$b=i6T7-#Ync6PT0a%R#?@F@xl`=!ZFEp!uVdl&H2P`XHGX&T zT(`C(HODQ#F+S`J5r5y+V+8hCF>CZ%5zEwGr0}>CiE;En9zStWPn}r}+xf#&yrE&B-RA5$<-j<)6&lv4l|CHe6RZwNZF+~EAx%D%rBWzd*nTF%}8?}JfD zb}ze3;qhJ3S>Ow$yNLUIFfuADVpc_r2`doG$tq35gMY7?cJazTfQ(yw9Q%su62ybw z`mn1t1KGy81QiAGYHR(udFNrF1wJ1X3VFS_dFN|?j-^Mb&>Phu%Sq53qxF?w#Urm=PTL0$#2ri?h3g6~ngPA7+|5#)Ky{)vvRYtC8Uc^+tdo1x4d4e&l z%+=X{U+ZV`3Km&{Hwpcr*~d0$r`&D3$N_Rom|VFZbNB=CqEWXX-E~O)uapB4DT&Be zPCy0G5fP|;QpWHvTZqqf*!SAU?|jzx8L8yB+X#|2-Dk0}CxN4P!FVLmzg&_Wk9OGp zSosLIq>@}+yI-%CLG_v+9_BHI;5VYX6I8g$c=hL8 z5_Ww1n%&3=YZ)|VGw*?6M3J|Jz)BNG{E@}G*(6u!LE6ZljWVZ1_f+pR1X9tppv#3y z`kT4y^(Rj5(>EgsyJHUSpIHBuz&U*t(|^%EYUat9N&K&ijEqKr^b`%L+Tw>ZP{_$7X5G_`~dx;Hk+kH zMN@iS+VuHzHt#MtxGw|(#PkJK$Br{g{{t|;Vv5eiha153FJ_sS(H#{~p+=brKT?Sv z71bA~#V;O5u}CW^2dRPYq1z>1T*_8|IH!wY2<=E&R`)*5vhOo@-YWc9X3>JNnE2~= z3A|d*7DzUzAs3D3(OHQQQBHeX>A(jX+LhxxzNZ@e$zB(&(96V4e>;<}_mDSBMhRWG zA=(^>8Gf79)lF8T<{F9ekrbmzm!L~?4_Kt6MynTpn7EHTPZS>y9{ys(`CAl!hXBkP zp8wvMF2azNd1n+eo3fYsXg}Zuhx7v~jXU%}dSF2@)^x)RF%5#w6LO=C#H{%q z-xEe}GWY;!kpscqFE;)6|4nas*M4e$K!bp|VuFD1|8Kvp|4>`n(Lv~11mB7Y`M)f= z0Y7l{7>cFchE_`t(AHcdAG+{_18Yt$Vy{T z>o&@^+xE9_^zOe10Vm%BT36?X%aCJkti1MfUjkqL8aNTXF9y7Tdn0~fh{4Eeq}fnQ zi4V_&zK0QVdC;NV;s{c!767IcM_K!>G14~Hk*cbcm(p4$j}wUDi82I#SsM86UHBO0 z?01`64Vizp#~Y|kcTk&FsTbR5N1Vbozz)y*Kpys@cBDVK&(6{+^Xc_^AyMq0*InhM zS1r0B(5<45%c@svmmk__*B5bynKow6w&`9Psuf<@?UWkp%ydY`$uF!6jCP>gU-`S1 zjp^TIU~d@L$IP;?0WV>HaWjK!i&)9}0(1^Nua8BCuX^6yFk%j2`NhWBIP_^Qjk>#{ zpQnq3TNUK7X_DooRAQfK8&;Y`wmW&?x1tied@c2tI$XMeKP6Xin@>@uo7Y*;)yv1D z3fTHV#pIv2c(^D`e@4}6tl3m$nmWK2)7R~G@n4?MX8^FvuM1s&#|T+4LSrN^broO{ z*Ya!M%5|%WqDPx(y5K_d@4?ft@l35ukoRBGjX5W~XGxSX+zr0$7t5?!q|f8%%OlP?{2 zt4OO4-;AN_g@j@NsALKmGSe+`VqCuHX=)NXqcRien}(d$>py8b z?Moc+WaY%NgSWqB-k05_474MhbQE*_N6L!k{n(NwRoqo3@Rr`bRBo~B!7*0HX{s~8?FyP*QC8Xa zY(2=J7DttTkn2%$!!+mEw3!v-(c-?7;XTH~_-z}?q1tQ4FzpN$G0;s$d8}U7h-}Qq zEHUbM(nuJLR9r+kra}I&t9=9=qIi^nnMfkw>)SA z<4{2ABg9F~Wv0nG5IMox8^UmUyOz&g@18>90A?zqYt-H#dfzXNWJwei&D+cWgxGk;7rS{~;)P45&el zpftmCgyi^y13>|Q>G4d?NL5#hmpCy zA=)T^OP}6G%L{eaAJb7jc3UPJ-72E0vA@ohF)wznAc9rKZ~k;m-KdzOf|JGudYwb! zqrSFtOcgx-+M`nD;%nirea;3u1SwUJy~uQIX%*J#U2sHd_bv!t$7ry;jPWID2OWTR z&uPsF1#j>>8h_n!EB4*cMONd5JyDT^TZ!bum5 zRaUYB=-bySxxsp?{sw!>tc#3-WEd90f;>#IBDjOtzL->8#ltp0?n3DGTPm@#`3Ssw zN=(!<%(mw!KtfVduZ3xOb#JfW!pTZ)&r9$vW1&{3ilXcP8O^k?h()K>OY6VZ;_yd6S~_ss$g)ssX@#>OS{dzFB6^RDEBE8kl5Trb zX=z<0#Czhm((`Ye;(erSo>f$8*H>z5`C*~eRFayomXAk-={P8859^a?a%_xv(Liz# zI?n2(em3{+#_QuPrLtZt#JD)}wMtbMGl3fP?%X)hV|YtOeQX6AGdEVov-W&(5}(gVYS z%AxkYGwO^B(IcL}W@-xLiCA*oasl0qldyt+xzy{Hw0Ke& z9Zlr+5@a1FP>sKOT^N|M=exo;pH1u|hczN!&SVUmoya=YHc6fl7Y0KG)||L#_~&#W z?m3To^CY4JAOJzF6=N8GLyxQd^0Rsi^;035|odolE|j zBzwhi_@vhINE1|SLBVK$r@c{isf{VD{aJ@fuL{}{If(2}L{-kL{G_iO_#GcWyBR3M zxqh04nue4Hp9Ygw;apQaQr%J`>Cc0P;8TW|qezlE`C7ro&F+o5Rbk`pBY*0$!)`ck zMc615Ut0dl!qF*f__vj_eNv?>>Md{lONQ}A@rJTVQF@ryaxe^kp#q*&>A)}^?5~&z zd31zqYFyUC+?usb6CE3sNU7J@L#!_R`lXp}^y>WkZKX^!; z5QByflt=SN&J8~ZzWa*L{#%7d@CUWV%|8No3laoG{C`h>RsDaX4*#9YDp&tsS>lMD zm6o&^2&SSEO?wfYy9Qz~h%%I@ndd zS_U2V@3)DBHVmsASAHo4G+np1ryr^pEJ>U$u>E1xmab^1e)O6jE$%Sk72e{+@|59m z(Sna?DSE0H{z}uEb0)-@Mwo^?clj+Ac9oTNzRs$DYP@zw_zP&;9D&)w<3Au>hKD53 zGMUA(9hLJQZPSzJXs*Cy0~wkqid*R|JhtvVVY(&baPf~?8i6$-b1=_(8t%)3~!D)kYR5Xl31nAXpX>&5EitIFXZ!_NOJeL++2RR z>ReNQ;}RCzE(S220xVhWa_RL|KUx7C=u@aIG9wun4LBb`1Sr1;x=bUgHjFNE(ZmMF zcFnD%VYueQmP)U!&hTDFFsU66tK5NKVc8WAmQ<8)fsNAbzcV+*iD^}*gH_N5v}(3G z;LQS5xE&dQWqWg*`vxfMz9`eLV%qL)%U<|@0rE_Ulx@JR1|r^l&Ah3xxB|-vw+q3A z^|Xh6!1d4Glt!KN8u;}Tq6Y+ySVFHpU<`9wafr{zSkPk3B|#x(g!io{fEiJ?^6BQ( zV|V78arbD-VWUE)qe(s?E)X={KfHNS6Yl1&HB*bJ1$qIpr;C5&Zl7=S85bg^FF2F7cJYW9`Y1SKIT3li1)cZ> z(%8J#Jb-=mo`{{>E*5tq^~i24yIO`My&`3Pv1(Kl;ITA)VK7sKpr%5Q*o|dO7fzKG z&rdVg{Hxwe`g=lUNL1?RzqNsVofPGNCHlvolz#kQ@TY(Oz@oO}xGIb+klW>gs*fuw zx9Uo_#sEW1e?J1Q0Z~>RHB~;P;!VwjXO(O3+?ULBNp%k|4NbC!1S~~vEk;Mb4_0sL z<8zzXXS1^M91Q&H4+ccJIZqbd4l^+U#fiu)z~w_jfqz85yUbF`6XzuuFYUsALCEty zs~Wf?I~Uf}K!#?@pmjDQjNMlM(JX*vJ|*8>7!_5l*MQIYgot~gCD1xKT}9!_>e4Al0b7T--j`WZNNx9yo|@e3i>-xMvgzWWy&BVY2fQv0)$ z?e9SbsjH@f(h{S#rZ6zEhHb}xcH4DDhs5Der1fP4M%}JB3rMx_037E+5`%^{1$`53 zqI()Ie?=O-8HK*X0rbE@%m~^wS~<*(Hd(vIn*taPm-OO0JCk0nk~sJ+g2l{`I4`RY z1ISWYRh$f5R^)o~T{M%(7ylS^yqV*`%t+PaRUj$M^S<)BlFPn^%tds6K=ts9eezmWthHoFABdH~uEJl{DFSX*L7)X_O@34@MDjivUJ4|?>}m_bD4xg$z+0UQ?R z1$5(TxOsSr;MjKQ6o)>QU+5CF%|q}5RZ}X{8xr%uwbwlvBhK$mX2Urk?Ql4bzf}FK z2~MrH2u$uz%G?PB(<$qJf;Be#q{0%H*a(Q@beSObryt;*RtKCWVx`^w^~t={2XKvn496F>zk3Anog9YT7(HZ}y5OOdNXy z{YdatW!VoWsBIAMo3_>F)mg7cS2?asN!o6jx>8_zmw)9##Oxq@4wDc;^ADEPi}Djh z>w**m9V^k+t77_3u=5~v z8v-v5K^4WShn}@uzhXTEhvh<)zTH$q`jc7K^3rE`T#=sQIz+ifTgJwYtx|1= zZez#BzHR;b_usSrfWMx9IAMT|j{7@4YzO`?ENo5zkD-5Wf1rXX3QoI;g>iu@%wR3Z zmR=FQcJKbfj$dex&o91zZF&1pj1=t5^b!}b4A7oEU)}*KVRaT?MM6DbA{kn3=fa#P z*h#g-Na!Q1Skx>*^PYCjWf6GqqF)ohXJv(2pLO8Q=RiI**{cc`7$@s)GAwKnGRY>9 z4ZNiPVO1iLf5WMi1Z<26yQqp4JwD}-N4`qXppybIIxLww2MZ)iP}9Un1ah?vqQ@H; zM{U1~Q~ZtPSN(iQGxI|5J*+JDw<^{LR~kfLuP94NUtWP@tFcpQ<&No>13|HMnl73A z7^i4ZZlUx{xN4U55IIDu39QHyWbX(`kd}gwiq2|Te=*7_sMDI%1#aLU%;Ji^W}0$3 zx6?Fd>J6>lc2i*Lwtg1mDneFq5xga7-Vwkb3uX5Z$@8t+L!+v5U3_4CXK>o6k!5qY zlU&8gQ~d4@IjnWofU@5DJ*uMGLS#Wx84+VFEMaUno(ShdA7E5&j5tR@aP=&q6%J52 zcq5-&e|aG1;_GI?u5Tv165)V78}?sm`2C}LdT?*EyOs^8*U2_@q^nZkQit&Lkt1xX zu5jh8@CXBoIYJti9K!ySEdn(7w`Vi}?T|d|LpjN!h4$AU+v6%{w5&b!n6o~ikQ8CcmkqP+hL16Clf4N^JgnnY>0ekh9y<+AsupbyiJ%^-8 zXT20kI$+(;b#&VnHoT~)(xj<`zRbFkG3n2(F>JFWK4N0N83AT67rO5FK-7W6QjDCc zYn%^S54-Va>}e7SwK%KkV6BrDc)PoNl9&VxID}qYtuQ828d)?8aL7MYCI+6!_X6f~ ze=HvL!5#h>0cXP*n%0Ba(DPudNa9*ienm-4opL^+={_|>-^Zb6_8G0={d&yK$t|{H z2;Hp!;@^>)M+WT0krfM6^j+#Z4R%rj%Soo<=G7(LV#XKX#3k6 z|4fzK_7&v|Igj9jDKzs@>+r{ARs|cBF^+hvPxUl;zcD4uqxV3E7(-8#or0D_?f0P8x z{Fw6;lCiO9Y3*!ml!Oupa@TS|eG8MkK95e?`-R}!J54QL`yB>Q8VQF+gUO62>J0sm z9ZZyQAg987_G~Fft0{P>xBQO9&>#7nRQsO)vQ{$C+O#e7@}oy~c=F6 z$%7>5qzN0ndgfO2qMSo>iEDK$FJ;jN+l?y3vErlVv?_X|UZaHI0~NsQe>;SjfJvwX zRQ_j6gKa^Y@m@klW}qIdW0(`!9FZlMuI1YXHq2V9r5f6JBHHd0zJFcDofrBpydMnR z?{1Wgv|dUgF=5tJ;4N(zh9jBR&N(zuZ2+hdSGZ+MW&9+@#*FS>5h{w;P(Gx8V(FB@ z2_TX!9I~0^7lP!6{Z)rcf8Er@U?iJiX^YbE%VEJ9aHt;zvkUwM!mK|zhx5p^vN68u zs*FB@datW?Q7T#$9}(MGdAQ%X&@T+voLf}!x@W?{!440XlXQ-6dpbLZi29XeSIH%J zcXwh*7q+sP*{6Krp%lWi?NedUPkT7@4tW`6IlC4SM9$!xaJyHRf0#(~&Wu}>cvKK< zrX6_%-z%T%-VT9-6&pnTo;n zsd)NBC6x%K%J6#}!0Pb)gnNVq_7*R4GE#m+JldC)VjCImidvfw>`{n2lIpV^a4_VS z7WfoSYVW*nkY|+0f8>SdZ9Bf9?@egP43vNv3_a+b95P&0Cgm_NxmA2Vt(~VMvDz^P z6>42KF(B)%c$lcK2=&n!CIVuh5}w2G{uR;o(6?U_mR>gs-9+#f8zwqbg7%n1Krx}; z3R0_D#Vb0mBdsqUYPeBON{x}!EZGDqKm>(!&b7>e0h%b?e=OF!o-WcJonXHfc)S$D z9z@~^t**XL+7p6EUiH_{vux+)+Ku@ZUpet+`Jk-`3rBJ&prJtb%G3g9MXgD}zuX?_ zm~fR_mZ=XqV!u3{gtF@jAF^;8 z7Hl`j2X=ySBAa0+54~MK_VT3Wym)~cpibmR0~aaoPV`AIuyQV>RQKQ&!rFZF)9~^1 ze5!eM&ajFcsm^QziZqK&v}?D=i0u;Qc&iu-L#(P<%1dinupCwdUQuq@>-uwt_6Syo z_TaM^f11V?t|2Q3Vx*Mjh^5}gHPAM2>Y<8tdqN8;+?iYIraeIg6+D<0^@?-4Kfo&8 zHho~vkHJ>`m{;53e+t&+1ZD6Atq!5&QVfqu$Um8eU5X(cPAjQ?;p8 z)>r zf17{Z%Vw3Zp(xY1}J=tQr@OJnf0Z@D4>L5blHTA z5C_X?%qx=K-n_Vq`9W19$o=-HrNnste`gNkVtFNy$AQ_YdVm!mmplYuBEO1zd=7TU zh^|OQyqyPJA^~VWGO;A9nwP=?xm?x3kOd)>GpcvKYnrow`aUv&`gvW)ue`~?= zV4na`Wn60&%SaY>DeRXi-Df!X^t#meaE*GAR-vs86I$K`FNW%G)wkcEfvZbuu|Hjz zLzNNE8e7!&+pIEOwI8Q%4iv&pFT&mlWU%qh(9*cPf(8<9o1KlXKs4V-lns!UCqee{ z_3G^V6{+6I7==$qf}_N(Abpbte`2OTKqtmj`z#JC&P^ zUBWa03ji+{<2+szUugP9p*~yp;vbLJVVe7vNKH{`S35$nY#wgj!+pz+V1lwJcndE_ z2g}dgVXFtH@`+K~;!kC8wlz^1?W?1YQa-QZYo>b{TkV?L;YSDV&*)&ie?Of#uZbaC z*2nGa_4FMzV`+l4KI%r6p_kQ+@TadS1Mqu|_c+lFW`7l+4-!NXz3cP6>cTo6@o(S- znzcIq;>3t_xsZqL9jtx%94jXx&)?oxqFWng*{B9!yw@3AnZwH*LGUCZlC~3}mtpl} z_yezCZ;Z;uZ_KLU>;QR~f28ha)gSo-zn-IzDcng?OdvKY0B>EjF+5?SrD~pg0b$O+ znMK`Rx#gC9c|Dy@Ltt-?p*r(|l!h#Azlg&G`v{Y(fD-Y|QuWwuskOGTS`ZCcl-akB zpkWd0BB^(`bbL3Wuz{u38XWwaJOMR;$Q^!GZHu-PhflSA(&x%7f7_;4rGT6R4(`5H zm(fvlf&P({iv+S{tdTwHFh$p4Lp0dB#|Zxo{&RC(Lg{mCzm>iMS}xSUASaQLxHyay zSGFedp`fIjmDg|nHQBN(bW{k;iK#%%XIrqq5&-vm?XTm^ut1dX&I3waQL;Oc zC6+WsDnH~v%j@ule{D*B9Ld10%&Lv8evR>kzNUDA5JqahtTGObdLbqD&2>}Z7Kpd# z0Zna&LllL$+NrZesYyf4XUNYaJnfqL7&bQIUa?1B>bvBqPXCZVjb{o)k@7KzMVwg+ zVERC>3x5_NNwAKnf6l9h_aND8@1Y>vJ7vtL;n9^|W&FL@e_#*870QYaDSxi14oST; zrgu4LE8qGi>~3R=t18!=Q;%SA)*WHkjkBvYtgF#){jBMbjnMlDh%T6J5mE*Z5Y@d=80uxE)p!QFcNh%921 zBKr)@^;)TeZrvi!pwemoX{-B1{Qk-PxT|IN*JiUtg7i9l3PqUmT9BF#x6wq z({-4Se|Z<_dn%VOomeLK8l;H6p`mJ}uB;BE$Tk{D#4vcgtY*xx44pCjNllRRG&*He zS$L(o2{tEYIie_Fu5}fOmMXohxl!4$X;>x{W~JGt*P)sN5k;+?lf!NXeUdqwRwHUT z+)BwLjw=k<3tm~ssMAb+dD2Q-RyoetK29$vxLgJqhcu32nst+anT=MnQn5uVkwi>gD7*)`_fhZl*9%2tWr zQ|)7(0-GSzoBfQO>Z&hU`fALPK*@dBi{}$x5+Tr3iWPG$d8XidB6rq`%q+7f8-F)2 zs+f8ffnXskiw>p!nf1$NH92$VF#b(1e`PIH$7OiQG6W&xC+C;z@>BS<@UlDS2}2Ic zl*{B7*X{8^ii{o=!vRo?a7K3-wV13x%-=?W-=)qj#nS39m|~1q2irXh+&>DXKnA+2 zl@jgVJZ6#w=kR=_tK7~R!dia`()vdUIhsu;KsWmQd_%n+L{r3)DwDWQqX3&}p#pT!E zK{$72bpn|eTNo~Q(}Q|HLxwcd*6f#sXQaQWg(zp!^^^~-LJ%{L=+MaMibN-&4P*?Tje$DQ@apU+3gP-{KoPW<(TySJ zxQih&^eZrf_0`(1Q-sgdWT{!xX;fAl8OJfC-$)G zL3_AYKIh(8$@F+lPSvP|wmkf8@f&DKD90OW77)i^bU}37KXRA$e->r+nN)selXmC; z5qnm-gTTc80d+Fu1U8m~mtQpAOTF77ay89M^!?WB4hR8lncjMJFUjkh{oCIhygJr6 zZM|W_aJ3lISu|X+coNf7$)|E{N|`AoZ=|Zz9Z%o;*bwCMwbH5GKdSDBX|RqDXI_!TUel z2llswbt}6i$u3kQa9Hwgz4SYp2Z0A*6a7^B03f#M>fMg6v_3gi)N5gvX+L8lAnAJm zb=v(Hvc*Q3B|Gg?N_cvfx9JL{`J)mrEN?-HMfXJM8dsW|e`#hyDQA2Z5kiyE{>3~$ zS*E_=h4gjZ;>$xf`@`pBicykAyU!o?fhGB{g$qU{UZp8gbeGGZL{^J&Q@(@qb|3_= z_6W;jqg27gXS`VlR}|OJPb&t#cJY#1Vf+@ZmTj2P9&Q=pTifYO8tPDMIGsE-CdXr_ zC@**D(S)>1e-m*96}P&|t>A<+K^-;P0Wz#sZfor!J;k4DMcL$ta;`d_`Q3ef{e<(iW{UOsZhgX9MDwQ_;O#Kjh zJ@~cqu{2rpTH*}q&RqCPmuJzJxZ+6BXfILGmvw|diDsq*KC)P^jF(1r_ae@c$CyYfu!6ZMW&MzhU$&KAXYPB2KHPZC z=$f=avCH0sac_xu*GewZJG-0vX|bGa>Sx{OcS<|xT{k_7$;a9~r!qg2MbfzQ!nMeY zIY_imwPU~MsY6QNljngp%`&_0l27QCf2+&-ih^$eX9@~#%%&d4w@^F=$Ivb5N*6KD zmK~HjXzz_bt||&mjveydcqi*m+O}n0A+dS$3?Z4P&?rT`XiF%ExZl3mnJi*t@(}UZ zNM-#h4_%?=%;ksaFK4&0t+DC^WignI>6fG>`Nkp-9DUEj=SVRZ(poE{AC#^Lf7y~G zBK^}n@oadpc|Gxw2164pm{NIl4EDpIp#G2F{Ljw=Y8lF?a1l%UH3baF>Mzb=-$>qJ z>pwTFro}`xl&O#} zP&^))LG!wi;dRI-wpW%m9&p<=e=tNbd$Ip z(Iv<@`xmQvbpl;Q8_wlvt08x@_VShKc|J11!plF8pJ%ygLeufDrfAnFHr}^|>%G+$ zw@m|5@0idnYK)J zMBN{gZIZ3PbtW?1CnuCsF21Qrf<@S9s#uA%?Me#7LfXT~+3bCK zEK2fzXSF4J5db=-da-44aNheUl=DUP%fop2@^*Eb*AbN1efqgjXdsT(OQlX1WVC(Q zGnSX4tzR9j+p2DRHIcq3e`1bNCb6zNj7YVQsud+Da`0-tOs1O!v|t&(IIG1^Rg{ei z@Ua@iAW?Jy4Sk=Q!cqlv6SkYOnoz^NdW<4Z$+iZ_EMjff`2>`UmhIyTK29_5;hM6= zrGuJ>C25WiJERpV5=9hKcX!WOZR@0j)8F0e-sAjc5_{Ew-Y+5(e^oYt4T3F$lHy2; z@}%8r;5m*jCl5Tm{MSoNwu#(9+B%X{vfr=vqU{>u7E*&wa{5PsbGa^nMs%^X+X2$X`N-?p2O2g>ln&tiRYXpB=r*X(1@?#iUTe`oo{CU;7>0F6KDvKURg zD3W=dcr}F9wGJ$cUGRF9m?%VF*f!jQMp*HSZb@|witL8`gN6Z9Zh|Ik4evy+s=H;( zHH*066$2ZAga+3Fdv5vrRX9Mu99ob;*3}P8|9IeD`hJ!3*K$< zr?9~GE^IsKk3CO=mkGhM()z$3n)mL+bPKC4m2)35&c&afTzp0K-i3d3NH`bKkI%L! z+UK5X<8LgLdcRREeZ&~E>0f}nL|jykX5C+@?Sb`yf0WQ7f@nm47^zKsBpOD&882<) z3~1lCL-XBxLVWO}x)|ZchPocDFBMNUy5#Uh1cLmqIB(rsnd1!LCC_M`R(Y041@c)icIOA_uvocC`m zW%S2+Fak1u*w&GyKtu$X0 z=E`HRq7+PRCW|7G+|4c27k9P0ckR z=MnYTTMYl4w_MAL$2F91wm9i*0+ZSe=F^^0R(l}5+Y+UzIlgZxB=trUKj>E7`Oi9h ze@Vv!0W`2Z1j*vQOd_xbqo3TUuOf0dW8rDC5U#F4oixFYn2r>uF^i&!WugRhvhwy@ z@yt@YL`+He$)A@qSWkB1S8b^MaQO~m(I>d2gznttPCCcfC zZ4^uarC6`f$dfo#7-LdP58UKFPefQv1F`|J=lJ)?3k=+J-EtC7>rOwpfUW6oj?$K6 z4%x1Xkl)QJEOhs3aV{y3DCrw|i>0+K?8#I_^$;Qa^1S%5@_(D*#f+mlCJb)Be;Ivw z7DirQ)jM+y1(+e4u{IN69j?RwbUE1KdbeUc`jb;Y_QDdQht|hwgr|qdx(B%cbWFP1 zl49EiuioQ5GJ6_;e6Aae-n4t)l=}qadDM&SHV&qNJ7#q!>Qza)DhjXsNqZKM8|r>X zhWTZ|aWa4EO#dpm7b)(UnG0>Jf1qtn?YqYPwm&ZlI7$ZtxE=cgSb>Fr7_N64*D5~f zUU`uZfA?VCuO#Uy_>-pe~T9D#j{x|{>65(=PMlzz- zolf770(?z{MJZzr95x@4sNiiXhNYp>Wrd~p|%sT2y(#1N*vIp zC>=;(PCobXvnF8KqnB$%%bwC{Q>58GYPoG`Uc&`?m=T}o*}zrIimWG@Yh$Wl--9@NQ0?i8LeEO? z9o2GXUK!j@wfkBDR_4tib9Z#Smb_G&4K9(vD)AoQ7B&wl>v&g9S5_Nc!l-Y(TQ0pz z?C~|qtlq<~-V@@JEmMXx+xy*C-n|Un{#1=W5^bls8o_i{f8Q;TAyCfd~+w9{Yk$K^!{}3{^?~Vnb_Nq%Mne3+q-nY0M zn*`^YY>V5EOpDoZK&_M2up@-tOfJmqL9xz$y0reb!X`UqeX_YY<)OezJPi_o@E?<0oI9HH%|&!kOTDGU{QO`I6gjDIpM_W5Jjrhfd(Aj*%O+tE!he zj@LrNq~yRynQTXkNkNS4I^kA_68G1u*`6wi#ICps>n{K4Urf)?wk7WsTdLEpP~*8W z=!IG}Jk5mvG@#cVHn8Gp46%dY?nN6`w;B1#Yll;j5^hj&mi4{lNb^Y3fBnjAY}+NF z{8kMrj+^?XqLD_X$0 zaZtKyCPv(;0D5$ICgcFsA=S5tHV*hJ3V4Hh{DgFjX2yhI5FM)T1>)z0^v$av1ekKX zNg?{S zlD{r5_H`?wU_4L{^LdqRze@fdfWtt{07F?Gl zi4h4yO#E^W?od;i`Om0uEjFxQA`*QGsN7*Dov#mD!r`^>*0*L6Oxe^m)^lR5jX=$Ars(-H>lmz4SH+YaHiW8KowJ50m8sw&(*voz33 zts_N_OquwIk8Ev?Ffmmnc~a=lbU=IZqT5hFG-a2DK$FaOE7D$g$di5s%=j_6JyvIt4uP4PrV@#Mvu#&;@(Se#HZfhX4(_Iu!|;+8TOBv-tEC>wT2EyKy%jqcowP1c!%pm%GVj z3_$K(^?P)l(&1-3ZWDYT2$V|^tPkQ6Fh+*E$7NTYf6JM69P*nLyKynU*pF|GyZBa8_&9`; ztU?-1N<;|`?d(R@fmDgRs5fO}AqCqvsiRt=-TX=fh#jQiJ^i|QaMNjKy z7~3b;^HDr6$XSFLVedu>RT^1sM{*to3L8CPksGinL)c0bGodcd953DW2p)`$FnS_l ze`3kVO@2-mn6Ls72U_w*My51}O&u)5+vAOAkcJZRb{Ok>c2F3mc61|Lxhq^qwMQ8X z@2VUaC%`By+v_lm@f>m23?r98tq3dO@m{P`0G)QK`$uLIXn%wq9kix4f;rEPJ1}5Q znEUoeu0oI244EO_B&RCD*l_#|7^sX4|@oGg%#%UdmZugxICeP*A6?W*^)2Os>?uQimWHRcfzFuCCftUX+~A6Pn?Q zh-8yPr!wezrAfc^) z!fsc`kB3g zGt=n}hL=sc-pK(3K<o0igH`?<-(?5{L+7zqodPyG{VgUtBXjZtorm*8U0{_q^Z! z1>}Db{JsMP<3%9H_uy4i!RQO8Sht*>fwhlq9p^RAI?;n`zZ+MADEa=q5M;zhhCf9r zbTtGZXP_NiO}xoUPAgd#e}OTp*5v?{yPF!D=vU=8&)24v4MjWTZzdj9y{@{SdOT7} z|M_)0b*tukVtyP6-Jhcv{z=o0VG+|Cox%TIBi%~@KnJ8Nx`@gz%Qsg72L4;=(Kwhp z2N(#*3M2@K%>U27kpJtpzyEth)jtZ5gwZ}Nbl2KyT10A}c&&tue}{3YFwURbFA(`SM zthJ=pq_a1Qz_E^miJb4*e0P4hT*=q~sZ0OPu#-Hvc1MaNwLdYzNCja}5C25AS& z!9ZIQJS@{cD>*DUe;p!zX@QivQ$%4caj_u;TyQ0MRIT@mhsy z>r`A^b}YcZ-+nMrU3gqGsS?)EOJ_;$F`kDj{17f8%GqAuf4cVEHYupi9+u$r&?*d2 zl+6B=R$~u+RTp{XMNe}qo!jKR(T|-=9xXV;d@m-#2)v4h6B|mTOV>@~y)gm_f#Y^b z$^D5*v+GFAa82KJZw{zr@bOui<&SbLmf|tMdG>y6`20=mTxDD ziy{*r)%9o=woX}1npzxmGewlF?t?pW9l*VS&maBRIWR3^VQO=xl)D-3?rpxsG)1jg zyogiXJ}aV|p#?hX?Z@lO4;Hj&L7XyaBhI=6C-gRJNsh?Me zN7GTxf9#_tYU?`qa!lD4w|}9KOp%srwf0ObBxK@$N4UgC@Dpyc_ZJfsofJsk7>-K! zW=L8ahA_Q30P2=vFy5HhMNmmfopC+bk!ZMqTC2FBV%y?DTwu)Tv@@H?A9lGT9`3_)4qL&ojGw3_jP>t$5fr~A@ zfA?u4>#iRw!Pm>%1?P`bFTMnBH9R%{B_+$X1b2+sP@FZ$Wel18#ZbCDWERu%! zr1Xe$IVeh1Z1^xHe`*23KWxa}Z|kbzUDy-F@)Om7^GIF-y(wORA6=j2T0VrenGU$4 zI@vN2`fs(70ugPjA~6L!11a)p2GO$Sf90pSzT}Yd1Y8WeoAY-pjTW8*mTg?z5_N4o zGB`(`)%kagf})MZC?hS{GL+H7OSPk$XKR`KW2I5Pt2;fNw=M0~!3yB2Ql7vGg6N%8 zW|4w|*9@z%n8IGnE3guKg@;&Ey3QO$j*7PdiQJu|=ys~Z6hOj1V|uHjGgG_%f6y)n zgsB*LQqMgPhE>RVUhAVs8ngPt!NszLG-gBDaw|Mhbvky0X6WLSAa0D{W{mYNDo#5u z>#ZF54bl2d{}oxQ+4`xVh1&f$r>t~It(+7chG^1e~#b%QPX zh`w;i=J>;Y!4|HSQJ&>`@0$Bkf40dkc=H4D5iAC?F#kbwXRykz1N`z6%42@u_xC-F zD4OexGsFf19r*KeOW5yz#_{+c*2Vm9x@HF5x0n8@OEPhRX!-vC z>MASDO*FD~Oo8y_Y~tLXFcdi;cHV;mlpr-Li2IJ!wjSk;&iLI;d%d6Df7I`Sr(_c8M>UJi-srVc4AgZBF3mpB2@vTD@+1~h5% z_>uLfv0Y$FD&J&My!XawXUk(&vq^;FaeX0=|CD|Bp3+}l@!tR9b?}$h2J%07DNymY z{0}c5pWM-dw3ghQ<_pJwBUFXBn<}nl2=rW*+glLCC@~4q_J00BfB2x9Hd0)|@?4+m ztlR@xgzF@#sUC*EBY&Y4c^5S!tn!|KeXp$Gx9{J6eU(nn|N3E`Oj~-D*g{Z$cf_l8 zN_lQLnR(&1(g$*iuOV%iBaze%nyS;<-7D>rR`g0vbco?l(BDHeNzsw#Xe8L+g>bIj zdq?1YItXF(B-ju`e{r1)#wo4l)GpT>@vvZ{q?sV22v&>Yq7$3{Z>dG50h`ACUtZ7u zL0&BX!wZ!e>2s^QZPOk{M~7fv{;w|gpzjgIugi^{934Q*1uB6wqWS#)bC_$&OESWuBHtlc{FUS#5zvKJs1rM z2eaq(>z1yEf4CR?T#}f(Z4Jfma`?ktR?UKq$&+;O6eK7I0`@4Q6PJhXJI|eIfBQqG ze*maI(9J3aw=Ar>F&(U$OdVdNxQwIx*7fk%2PJs-d733GZc~d*6_rzG%GvU{ec_C4 zDB2izWDH$h13qgL{3fby`L{JGDngrONce_G!(Y9ue_8-LRfq9fE1OY>k?0lWs+QD+ zR3uzzotvDUrjZD2+fj7~-V82$g%^Z#vPN;?fgq*ybG@PJ$+mxS-Ak=`zv9>2p|;kC z&ARJU8wrh@GZ4F$pZmgQU{3yJGzl2Jkl@?9Npr}kM z$BYd5e;NYK?r>GuB2ymOCV3~g#?;8`^3fx5Z-JfAW_kSt{olCmz8tBZ|HHUg|DXP< ze-qd6D|7916(NAi%~I)7=<@R(SU469?07Vp?W=%Wgohi?;-!ME9NR5pmY1|20P49U z*0N2^>kqD7lk3dON$!oF#mVfhVJ|4(aESL*e}8o`T5&AwpusF$Nz$BuyOjVoP?;@# zUV7wBw8)--+sN!FNPu~MUX22b*iJJV@lB$P#8x0+K&cTdi<6MKJCbpx1HW(74_!DC zA{0)ynW|RJ`(A=lXnrG;xIui9ycA2{hhDB08s)0_iXNN+tOYMUBNJj$%&U|BhX{%&XQGW;pUxJT7SBXLcfoS&gGeWEQy( zL$YT!4pTF|5Aljz>^&8}6Gy2|I?|E8e;u<*xbU$UGrWykD3dz09-v7FOKv8tuvF0i zL~(~Fc?awPFnQ1760iIiJkPV&w|f+=-`4~n)~@%AMqx)Z*1Tl+C@q8mP_|!U54QWR zVJom$d;UW>XBVoB$(lhTw3u(JQjDyry-VXA@wgQ&v*RwH0dKf#h;;c$kO)r#e?{m1 z0+N?sl#la$)2s)OQ78`R`|ZvZ4K_>55O;s0x@Cpo=V`p=n*-lT+BIb;H-T zUh%OCF>k+?)q_qY@2mtdPv9Q$f86agZyVeR?w~en{JQu(uCOY4D2MejN-%7Cfn6h?zH(M zJ!#*gG^J=HZzXR`U?IcHC9Dx?g_w%8v=9S!a7Ttlf7@xvn6)fNJ7g4|f1f{P4nHGj zi^4JfPx&>0d1Z84LKpz<+&mP$W;9$q_3S*djQhGUmI7kd1aVKSB$$o1ixx_EC#@*L(8h zT<+Xdto<4GvM!50`?aHYk2u=pfGeDCuC;Aj#4o<9IzYYTDjeM>MOPU@(YRuOSm=k!e_-a^;r%aE^+b0{a zkF{=N=#h;9WgfzQ%|~E@+ZVo8(9J5fu;o5KevJ(kNxLkx-O`jOup%szw zddjvAk(r!&g{Jb_r6rtLpMU4~L=QIGM)KSWki{e2l80Y*wx_?DSQ|G__B`@q#2 zr61$`BP$Z0&u%34I6&4lei|Isy~-<+&k^1pe_3Zy*@IV(h#Oy@PL2eC+twD_-Xq~) zD171JK$&+&y`*SkFgoQ6*l@+9_r(CbyR$8<)Dv|rnhJ0wRJW|RMP}5O3}!6qS;c|E~)*iS;&_jdn0&ysc)DFHusa+{LA+$?FwzrPCw4w{S{AMhD zgmxRV=8nuM4lQ#Q3CeTeaxVre!V{-+e->-0ed{foUVYm(`hu`i=J})i$oIKV*LwIE z49PQ5D0%-_NpY)6iS!qhKmnkNH|5&8 zPZG6A?vIYq&*LJVWd}#%H&fy%p=d??D_@ezYZkI;t?*^bq1E3!#;h@HEYxQBM|(_{ zbR}#Hh})*i88$~T>5LJCzgXBrf1-Z;^d?SY^M$i*eI*KUw<}e0a)K8R|EOLaRVs%^ zUdvaNi=drt2fU%P8D7yBIh-hsJfP7aIIKl=zbSfGvev$u5=4GvG3$uCq7w{OZ_v!N z3K&JUw@_knbg4v@tRIPiJ3dD#N;OtTY!L#4bl&h{H+_el8lwBJIj~{tf5WhC>qo%^ zkR`x}@>Vk#kwwc^%8bEve6DkY^(T?kXHEb;K*GP^%E$%6?F?swi?|Zoj;4>#JOu#U z6+N3ae=ZVH7-*aUO9WQbXeU?q1-5c!WeH+dJUnc0Gesmd$9GI$U|i`gW!5;J`FE0+DLjM*r~Vz^$w0yGDLW_k3>1QpNnbhX|0wwnU6O4r)J;o|&2AEy2o5n*K&P(y} zd*%k9g5RVQsBLU4^F(+$LBR*;~)srUEK?=-u9wn`Sl0!&VNF_(b~BTdAwx` zDsuNBr2z489f3<=ADH#kcP595=zS-A`)x-Sv>j;H6@vsQKayDJNZ$Gk$;cv=3l-XL z^!%O*{dMM%G?uR63$TQuZS|J@N_aB5z{m4@--74d#m@i7pMfPcTDVRR-;kQlt5#@v ziRj=S9`%5Z0HUaHK7a7%uR$=Mb!(ra8l?uuoEEGP?kzI!m=>^PjByT+-XQiK(g*ep z*PInHtSZYjir-CZVZ0sR#dJu3yQKX6iO(uThXJWG3vJ^~pf4lbYurFVC6f-b868Wx z{-`tZ$9KU;J`VsO**`)IFQFJfLm;_Akza^GoKu-XXMi^pV1GVq@lix*8QjNbRDmdi@itH<;vLF56r z(&wd>9jWJI|9|j~tg*uP(C4lU%9@HKF`A&35V-%+=M&^x`l=GgKMyzph-yMgQ0=R- z&;FM_75vh_`oLWf>WF3m@4yFUG;2|44otMg6PqLL=WQGW!|U3@I!mRYWpEjUy7l<( z4@GY*8J*T=k++4&Len9(%Ni`^?wXoIi)yfNE71h-L4OTR8fUHog707Kf{)PSo)3w> zVAry?1wqQZ+Hke*EgroyiN54hVhKK5r>e%Gid)+L&astHX$-A{t1d?jRBNqp#>aO3 zN?QA-Qcn+Cgwg3OL}$0^R!jU zjv#R^X_sQ4b3H)61t~(0@p_X;U>fN^ljO`PXK9^dw*JHJ3hfeY{f3Gum$jmn)nrfX z1aqx9aJ_l0|HJhWA4QoDdT`PUODD%GR3_4{Sbv5k&;#iW9j1C%HSpis@06%QULSyh zfNX>P#{_cx_x?fhKR2gFzZCA)95}753i$?d@D_;Nxzj|IA;4uw!&ImffBkYs9UO_b zqa^ANst+9!J?Mkl6D1zWiN>IA_b7XqdcS&^e!hL1oizj@C~l0!OP3jwq$(T((9Iuu zk$)`BAx6)R_@OA8`F5&@pm;OGF1=w*|D{|Ma0G=nBs$uUvBvdblm_Nm>7 zk}lII(&POSnTh6W`bEs7W6v?G!dpOHvYIXp*A3YKexNlw?N-isV7pu`#M?j@zkfZx z=#p}2tExk7Lx;R0U*YM@PxY^f@yYq#VD=_iL&gDdrP=|#SsRcEz{{<8SBcg7@@topsmGa_0E7-fOzl4owbK`oiRnISh?2XCk5wts8AVah&3 z(`Mk7Ulsd&VS;;eVGH`$LLIu-C<;^CIwLG+jLGd)eNtABvip4=)biJSSY^Be7&8{! z?P>S8d=Bb~&uu5wi`!1_vDPQwV3gTUBymI^_aXRP5yHWNdF;6?^?qq@jpX=QddVz? zlTKBSGIb6^t>b9GG~aq>&VMPR`5@&?g|o!ykDz9*Q6{$^jH0P>+Q#ZX1CWFj#GQ8f z5{n5@Tf4qkaPjJe7;!p6jl&H#P_K9Q80x*@P{)@DW#kVWeu8M|uUAq&^30rLnM)A} zSrz!Akz#Qs_L+B`*u;=cQq!P9CQBis-x$)29~EVm!or^X43d^(zJJ#o;N5iz(_-`) zu>WaGV2`Kz#R%oYs^=sw&oSK9Y%@vHE-KYJ#UayrDZ82P<*i3Zv=2IGd=+2kZj`}eKZCC^DL<+zCk z7q|*amgXf&+kyHCmw!aV{qGqKzDGToRnh0QG}44i!f&);MZT&WTgh6DXjes#XmwTN zLXC{P)BG{O}l56IruMZ$cWsE`$01-^Rol1vB^be8un13;!dC7C7U=95Ie1+d5&!;y+ z2xEx`mC3|hyT~%;BH8wgNlz)l3o}K}FK-egvu~c`mXN?dQ$@{}GxrrT^uq3XPX#)IqpxsuiOsm{El`>CfE8Ci;Elb-* zrefpZ5r3f3Vkp7c3lF(6_$?UZULvT%shaLFx`LCpTA{UPf5>yP`v)3Lmx3bbSjw7* z0P$C9K;m{NKW)<4cqyss@ujQfeBS?I<(`6cYq|shmu=g&%~Q7Rw|vUBZQI5v+qP|6 zr);hosoH!PiCyOcjW5r>wjlgt+lg(RozX%Pk$9Hb(Bn1He<|~ z44XEe3onjUDLSwp7%w0_%882TyNKoo?zI`Qj6+DaYUk+uJfY-H;Ct!0CZ{+IT$Bgl z8$k`&i|$}(u_-Yf(I$1=HzM&kXp!UQv+L(Aog&DbavVuG;hmQ@NmUA!@c!WUg(}o` zd4I`k=KjX4A8<@*#!sC&s#Pe`+yQZ{PQKYS>n2lt zS2jIFxXv{;Xgo&gI^hf_)a>wopD|byX|MBxzWRdnD&OA$ZyPBL|L}MR<(sO8QFvl| zQB|BxSOk22f&N!q3i#qI|HHVr{{z>*f`0_tM6=HA(t?s>13r%J>*PwkTib;jeqr> zJ@#4<5n)YVfiaMwtY>~{rk}6tQJA13v>58-W zu|sZld;5W0iu)DYmeT!=t!C$`RjBXtJ*4?BxN!b2T&(|wYX|-Rz@_;gxT5}_xSsz{ zTvppMvLoPSIbiPL5+ME5E_&9R(tnfD&EiJ`gQE9CHd&7DJArPZ8T?Ec$I&9wZiOjh zbVYE8ug_keNTSUb*Me3~pNxQzV;U=7x|~rvfiHyl&xrd~z7w9>2P7dQ!hhic`ZruA z|H6e~n`dOu@E^E%!v4YK9^|h9&g{eHjY5pfs)2bak|d63@!46c8=|E){R^`9A%Mz$u_rjGxr6q+zC5Au(4n}B?^gYzi!@?bqrk`(2&IbA6P zteEqMGzsOPTxN;}chO;qomY&F=p(7ZF{)(adr&2v#shn2C$0neQWwG&l+en&2AeKq z7+VMaBM?uh!&`#(2+Df72^bi1y9YdpB)(6`@X8|6qn1N1_p~j#Gk@f(YwMbqmp41| z4lR@&;<@ede#_yLKFutJF|qZuWGrnwd^x;=pb#a%IGd!#pcX7=pMDo`l|Chk5{bA$ zBR=jhPR0r|o5v8cr=hE^TWK!1SXquiEf! zbg8}n?Hfu`yU!aaCw~x-Ulb6K71n%=*9ADbpkLqd}ao&EABOP(u+ zMfr{Piwq5zonbt*imcPYO{D%Mw3`^f&tIQ527%<&?|V^U{&Ho0lM6oScj9&Px5vk0 zzwglZhqv*j`_1emE92(F?1c8_Zt3P_3lYdT=E--D$eRcqE0^R}9u!huh)z>EQZVXQ z|8gVg6MH{ZP_$HmJ(WO4f87AL1eiLw^aZFSo8237|HbPNcYwVd8%ia0MQre4zkQbp zj^64JB?kROpzPRvfPpXv6+{Wa6PHR?9vdj@qI#E3!)A}=aT8QR31@~!*Pp(C%_BpU|(s_=*?L)L}^d8LLtQ+>~u z?^qrge;@g>{lH7~Wq-kQ*Ic$-t6|yMz=}%6Sd3x=+f}vF-ovk#DVmGyW&%B6X!eL8 zz!~HhLFO~n#zqdf3Og87<9u9N(&*;`z$*_6)C%0GuxN!1EyRcjB7X(OSI}F`wzB}?29qt+ZdGUlA-Q# z>o_yKwd?WW!>G8>5RB&*w_iQ2v%XEyJU>)V;n+AxY>kPok0DCWQL2~sVL*o3S-Epp zCAwcM(D|^;T0H?zeRsD{4L!a ze=F5B4G2XSK3K^os^V9Tfeqk8X0}$fCo?=dpT`&kx0+Kq>EvGrfeVyMIE2Xzm!Q-j z4;FQ)Qm+eDRbCEwe^2Jf$XDah?q?`qhXfQEa`zFys$B zYn~~4w!dl13q2DQiSwYn$m#Pbf;-G5N#f9=x&kW#DJWqkCS%4^9V8gCavajYq zN@)vjlkb1p5K=Xhu@4HA+Yq7#*%acWZqs_{+<2EHgZ!0lh0t z&)Jv#aVl6aNxZ*7>j5jkeOaf;~rDD zX{4URu#O9}Q+&PHoRX4NSPyQ7>7~;z$c~`AIWtu?G($?@?}pwb!PUK)e>f^W9gK+P zUH;K9JVQrG@uPg}V8t3kQK*3KEiMKVkw`B35E95J)!b8^?MO!er2)Bkb=w?h=NzkT zoKlK=$P2!kWa2S?(06axUCqM$+8Rg*T~rn`pUUs6ehW){(t#W?SqtM^G!Q#8kc|D^ z2Q6#GdKHx%O-oT;9wc|(e+15oHaX|50X`^K9c-QvX{zMV!(c1om|C5_Fr5@C_V^cl zvLG?rL`vCgMYuk;+LS=VBnN$xH7cA=Zm%ZNrRbRnzk)T5Xy7{XDSrV^qGDOKDh<%x zTxph}v)mK;w@7Vy*rsB`pgu5J!({zNE0`1Z>9m zDAtTT628oPDQ9wDGNS`VM9$E|M=?$S27k!87*G_Re|jP5Ox`h6$wO0JI8|A>k)TrV zgN`c_4yv17c0i_4R^o)b%uTSyH9UeU*6JT~(C=CZNP-&27k9S*J?+#0P=VrSES}`Y zl2@x*n$(a*B$4--e_BUaM9&f~-~K(-K%=cxPBN&myzYd>AydCz6)kLp>kw;JhhfLN zfqzR`loO=Ja#9bvjz^gFN0VFZYuzh~`8d2^(}is*J$KElfm`)hIC6Rwl&B7m{Wm)h z0!emABt1*gG#V-8!mnT2g=@+vTiZAfIExLA1A?OUBG4%vf3|8x5jr6}>g*wvBovfW)Puf6$O+h@?*yVAN9LaLmtU02PflVS>jnL&mb0Ppe+VInq$6W#N@=Sbo)a zLV6khJ-1>_t5|{IxW(3VmMq!{jaOr}nt6*RM}!KK%C$g#{%_SfL$_wVjB}E*uvPym zt!qZCk?NN8#U%QsWC^#c?+wz2^l;6>G+KE@1cWhjf9sJ3%0hGGmso39%n`=7_Q3le z0H;N#j;4GtE_$a_8L+yR6}qj`l{ya8bydU>eN33~(6Q_AHBq)MD@HM5bSIh>h1`ZQ zIxGn*=pSY2EwN+hVeLofN{+h9s*OyjwR>_X<1E0-Sp+J8D`ZzZIl1+eJ7b8ju!wB{nikQD<4V6qYjjfpNj)1bO4Bbn7 zlL>y7`fTy2BTwbZgTGGJE*C@cyJjt_BPrALocYLf_*?jMyAkxUEY@YxWMN!i?TVc@ zthzy)Oq?o~>pm1<*U-vj8NLi&D12n{(PQ~ke{hk4mc|U#d5X-ut(!)@a$=94}aW^{2KEe*cXl9 zf0W_|U2J=`Zu-SfKgeilOmD4#@c>K1r>XD=YTirLk|g>7iGzE&%1{o=0oJ%?cjZR- zA>u%1&a_nY4xw5l5Sq{;fD)qyc5xYWXBa^-BKnKd(=y-lIMSk+TDK^n)Y#jMX+#EH zLI2&-C>%~xaDEm%O~95ax8Da&{0Ex?e~zV|u^MKH6Z}bEG$YU4p*PN)w#J=TwtLHq z_AFHvA~_Y%7HK4ZxcK<+8yk*>j`nvm{$eJW*zA70z>e@;EM7GqAdVB;-g`8AMOTPi zJ6$-WlT>J)#9BVL%pLRhqesjyP$ON=2}Q!eOTu21hdeK z!=)!kjMOjl@6u54NJJv|MoaGz&{8uf!eV#geqJ_lW}Vm?x$50l4`z1w*f*c=Lv5;a zrerj%5h1`L?dRhm@k?`}d&p2CTWx3}MLS)wz(cD29Z36d4Nc*Gmq za9Np*Mmq-vA_p0=8I3>`lJk~~N|o##XnC4kKq4d)e0e?Q+aZByiA zvwYMdx?E-YC5etgxQq@PCFW)dYx1cHDj6$mU@qD35+^83 za0aO2r%Ai!N8?oaq(2(?T?3+WQR(*%9h}srIxiww8XW~EI;8KGy<@mxptP|KWQcve z3p9u%Df7D^!d5AZqu8^I%##-?a^86)*A8Sw7nCVNp2=>w#|GomxpT^H zDuQy)JvgPblt4N9HO%NJDL669xS#g^>N(7Kh}#vTr?lGy_}x|tGAMEU2s&RI3NSMZ z_>w5YsK++K(Prn_f1)qBYf!qQ9V2XtQnE#YrAJ&2JFv1uvUz;?^CnK%8`>YwzaCL| z8``vbcj@z48@Vgg?Q*iS-ce+ags50(VpI9{8pDR!ibIV;TfcxMxI1K5>V%QQ19Gc_ z-W#(U%OjCB0GI07@<~9UfSN<<=}D!g___cZ{A! zY|D6sZTI+olUV9X;q-R6xyRl;Xh;rmV##iaxS}VFgv2<38sRapu^!t|e{=j$danL{ z=t_2iT=z+ym^C=PQAYGZJT$w6+Z5NSjMKeCMEi;Ne+y2!9C_5nzG^MY*_0BfCuRDs zKghdPV2%n8Hiu9bD@+F+o}fZ6@|C$Z9n^QU{Rznje|CB|Bq8;!dByycagN|3Q!#d! zCz$NQT~0uB&+)5%<^0r{O0`Ig(Ugm^;EgM=%S}DprTqr|;e;4G8tB4y;fvdEqBeBg z7j!ARf4qIjdz}^djymvk{p$i}uHaEfUDW@c?_wCQ`YLy~`$pJwWyxdLU1n5B&?ceH zbuNR^nJ)JTOVOqPMNUReYU&lkN-A4qeob z#AHyqoY+9r-$r5erSXHb@O|lMBvQ*f%HliY^jiq#yis-B>t%~{XNaQafD5AOmIdlM zgE%v$^1tBSkt|Ni#tf;E%z!F|Xca(Lf4U)qZ0C63erc#?gjA!U4Qch0+7xZkAZ=$r z^fbS;?7$x5v$5jYIG1F)xG6-l7%|AJm^q>^i;uptV=}Z{_C4I_yT9}hes+D%3h!6lWg*@@!Z+x&EnC(}r9i`}? z6wO~OCgkS7hRici!jK3}@9SZZzL>}>p>psXOkMQqN-J_x55$BbjtjN(3MfF#B>{6w zmDk;v;;`1#RU$^QN8rQoG)giDe=P>WSxe*9CcWjT#Ccr5B2o%>KG*{(_=8p+ES%|R zGeM5{9}?uaDL7P;>ZGk#F1Si!z^mb}>J!NaNDfeAr17W=cSx72(p9sfY^QuJg%+?4 zAxL31`HI#%8X6i(OhVc$?jzKst4ireS7So7gsDmqbyQeu)DEZ|nlkh@e@^2cWp4zZ z6({#bX&msDgRsMM^iX$Elev_#gHi8GM{w|RRF_0eJ%w{teA6ykv4*InvuWf9pDPz< z9OW(4=B~a~TqT0_y2cWyXAFVJ_O+y|P|b}M#4gp+qgJ0sP=g9Way>e`;Q{+vqxf~~ zv*@R9LvPZ$LOE3yt<>{pf9eV(5e&))059yOz~|SBX$Ca_KQMWVGN_S_;(;Rw68VWB zEwpP0ipEAVtHox9zXq*COxudKT1k-1l7FXi)KPvw=)11OyRKbs`Wxb!>N32vH40~@ z+H~=QI2^=H15M0P`Hh)Fl)_f!kWKM0!+{!3j#l0dep!Hb7>ZkDf9Kq(7DWzr3>zL& zRIp30O*hyTJCz;AscGai+-rP~$p;2`3(_dumBexYmt}`sgx6U45k(m|4o((8)TI{X zMaga!#%Qkso^6@*8uUOo&s{PiY?w3_9!?{U?d$E+5H3uZz1`fr@?y(Xx=?lsB`yMA z;I0itVb1FpKVLL^e=m_)%(-`*6T@=qnnFaG&jB`hF1nvnad~b^=KDr0NgT&1AI51| z)M<*l@F)I9X)|rm0k>RSg?bZTFZ34$@#ehKN%D431)!5JJ_yKsf%*JSC>WcqY- zp|SWp+Pjcf6mZELCKmkKQ;LY^Ap_bw_=Gv;XEI=P@3Ns6)j0+as1b&@Run;HsT!Ae zGOaUI!J8bde-*CY*9gG_)ZS}+*TXLWW&L3LcXW3>9PbvRuY_;n4Y@DrXX5<(u6@ru zCF?WFVuG(_e7u%d#4c6u)KQ#?6#3?xi5K~kPINb4w~8EF-3DK@@)7e@{i^CPsao@^ zDsE*h;)?2g6tM5Quq^q8O{;ZL# zZ2S4qby2l?gdXB$;t*Q7Tt9Dq6?2W8k{$PiQZ5u)p=z(irg=x+t$+>$K(>Xatx z0GGMlQ+ihC0rR@fxPZyK5<#hri!&9Db$Atw`ZA!LEXWu$=_4QUbg&%%gH}r@8{(!T zA#)(se~bhgf`&W%Ec9s7Fm>!V_l-ik>X7Rf$Ic#f)JemXUjlW#C}f3txioN zH4c2}lhP@cjciNvd*%_!DyNxaK>$T-gs&D!*vAnRxkO?k;lt^g;h)2*V$TxLqqL&q z9szFg@p?zR84S9QWKDD;yX;`)wtR6p1~<2re+YRxUqh}29_us~tOyuSrnx|(tVl_^ z;#Oc4JW8{1XvabYd1XgIsT<)NY;FpWgbi)hJEOi-fHc{Qh9k`|4*yhDd!T`Q(xQ)J zXd>%zRnz*&qh!+c$GT_Sj_-Z6;9>=93bhB2OR0d3GsOoxNM3f5dfZ!Rqe1GVhk#Z= ze_J9X^I1F%<6uFx+$K4HR{dT&oB$CmGj}4aMRlRI)@52*wL=|8X#Sc zcnW^#k}0AVA@ssBleOD|M_k$?JTdIzT(Ma{n8Ynp+Sa=PrtFd$gLOp}a$4&T-#^KU zu6z^>cZ?>p3;mVJJP?k4Qxdy0M1+;Rf8tGe=Ag8#Kzx>H#SGT`XhJv;nIwrsvciYLwa(mdr9)5#L#J& zuO0V`80agY*r~Nkcv})XWycgXJOERPO@*9X0tLmZKkrv)djRo02pXO%pq;&^|%yq6-+E9{SG6zX2r zj_6MBV#VMuI%*vMu6fa{7|&C=_Xwm3TtI2mckK`CrF|6_}cCF}$h=p{vlZ$yN-21%0>5em!$weB&CrEb9;6zzf%&)wNI|AW!3VNG|g_iH|Jm z8ypzQrQP5`^tduDFhQ)YR!ZMLeT&9uR!x}e?>C{c<@Qram_f%sULNz`v8y;w=7~Hl zxhiuK_=$gpfAMh_-Dud9S`JHoHTger;6Jw$(NAkl`eCW6uUmz!c~_*x*5|M2t4Un= z$6Rx+M#$O6HY17<46@x2 zF`r3i)Y3Ch6Eq*niBpOHDmZHixAckYFV~AvtBuICO`c(%rOrO}2-dqR1d2FFfdCZz zUUZY)F1fKU*~`7W$12C2(ufbef~Nfn$z1y7bzi)p-59|%(v~D_UGf;;-ZGDng{s?@ z#tc2eLWbmU6p5>2V^ z(@dZ26%#@QR;NA`;?by@u*bm9Q6~%^f3|RTd!88b8BvOLo9ENl8cLAbnKQ@B^88!( zmz`qDN*5{50VF8s`5pN;+-RK@x9xh z=A_Y!ZdmV;^^;Lf9UCfuVjUu%$;OAdz@hgj$_s<*J(JIzMxFz55O61ZsLu#Fe-^20 zOe9OjSRJAX$SCy>VDFIww0lXEvG}l=)JF~@{WHPvp3-~9f$t|;)u#Y+d(lnm$ps5; zWi^6H-k?nTwjE;!giF#OO?wpxue8<$X=$}iY!^()N6)xFu66I90WKJyAh10J5l0?}YC##^@Pr z17;9^wNB6R19z(^e2^ImT~sguizq9QXBnx2jFbUWkQ++l?N}GnL@9nL$r|qYm@=(Odd&qS|ZV7&?Kp6a!zc!@W@MDRExi zf$<%O@@M&DZq=os+(zO)dxGpZ4(>?xeb}x^K)(*bfA9etv>WYG>_Ku~m4RJ35Be%F zodhyx7z%Js-;k2ieSs*42s<2;B#wg%w5+5^)$3B^w}1m?8%2n64*+W>=Y zH2tW?{DcedZAbYwOt#8eon`2 zA??p~9?X@lGha0Hlc{U!AJ>UMY)SO)+_3 z&}dDp6+33!4j{TD8fl0Ha9q+M7t@l2f-(3)D_&zbI1xzh)-y&Q@wHH+5l~?o=uHlg;-}Z zN5pW_f2@HOh01YcuAyZk%d)RDDj$k-Y_E-&VJXySjNn?Q-YIZwy62^wD^^Wu{tf{= znugXLe3(QxqJ^?XLQ<|FR^-e7-~rchW7VJjM$nV3GGUsX(_&a8-ZG3%)D|ZcVHs?l z>R*dfyElkzt;@?=ujS2GxidS9aih<+JIQmmw0*}9}IB!hE7@5n)UXp^VXN6dLAVKO_#}f9xWLbNuEbv2=keP7ev7L zsV<4VP8P$=gKp%#mk)a$DF@ozyrGx)5tl!E9v6S)4bvGtYn=8VvZmIRt2Z5Iw0g_B z{^SkX8L->Oafjhb>X*1ZWMItsFuP9wY3`~sF@I|y%V{*%)dw`sAE!TVV8jcVeTo%4 zLKE3~Ysgx=IWh=GaK!vOvAU}wqt->JXDQy;TJprl`xQmFsK+s)m{_lUDF05ooh%5# z_!yVfdma%&T^N-)j{@K$d!?dd)N2R0VXNQFSOb;4V#OnoUnHq$%)4zsyJcF*JwWvwsMl6Z#88vV}w&7*EK z3N^U*lKB^$+)#dVY_9u8Rz0x*T3;U7IB0VSo8?59uTSnXld^tx?2(AzfWmh&Dm^yN z9VyNYwf9mA?+NV#o%1d%cW89tkS~1K4b|^Js!O`&ndo~+?lXk)4qsnxc%&nu_lc}d zXFj6HO-S3>@doU_ppyyDSZ$ND7pGmF?2VYx50*run zoDwnb%63WMAgX)oV@x}syfrX!hLNyI6%2Bn zQetZCQ6b*0zi|*)K=^M$XZ?`E!1AD>_as<@QAQwyaEq@<>4RYdzXaeA4$12R5#7#I z((n-1rF?3d;F_XG23^1RP~cn2qWYHcYDA`_MlMQk?sriK&0Lu;uSK; zL{<(-t>6&_^ZVbw79RZld?FvtdduQ(xphPN^y%^;#C#ixxKk1 zC_{X6wnVNI#yrRo4(Y|P!^r4RG--hKkuR!b!bZN+ioId+s*P={M5%vl)E*{|u#I<+^A z@G;YLl?9y?<4V?qu?+dCaW)MB!nr{il4JbFU6t}x2a2ZG5&?j)ElU<6Z8r3>b-*eN z8bso%ofMnlmYRXBip|}nlXeww1sSNcZ3bK>nbgC^1{d~mf zC^*c0BQ(j|(SC+he1=qd4s)gE^_eqD%QkO5`J{66h2y?iLpL`&!oilIlS*KBdPgeQOwUmu) zI#yk1WDym9o@@KoA~yze1K!SEtR*5i+7x~m1-Ynbi%eOToB@rmm_aFgUq+NA7<0IX zeKwO9;`?c*IFuKZ@af^~#wbMXhkWvoW(e(v9r%fEu~#dc+>0P_$GK3$V| zE{K8tptSnn89L*{hm}NbY(hfn+7>zDlkPJkK1NJu-fe!^BnZUv>MyP#Sc_s0zCX|T zTuLp4$sr;6oq+Z8N7ir={lPfK-4+E_W?;9)K)9~v(!dl0#8FX^*USYO>Sr=HJUjE| z@y8S{Y6u1F+q!cS<3r46w6}jC{}<^pZB3xC#j{(TMpu;0JpoV7OTD?bzsRGA^97;N z%_}C{0pTFhH+1w~-ayYM>tk}>Ajvnl>K$W2tRFb#eeFKnH@xmtZ-~|Fi#_BIaL`Ea zzR@=+-=JS$+S}|c#}D|g_m6krhHkh`&rf_YsbH z?*8vin?JzG2X@e3kK5+fN~MjbZi@kJdGouDIAjEWGpa|`eSARCny=Xia!L%{cqY@v z?()=c`Ziyxz5`kbwfVv91WR?UUdMlA*950rv>k*hM`c6tf4ctqx7$dJq2~}89Q7;C zqfQSCP$`e9>hg! zi%mAnjM9LZ&EXphSZK5R9@|cnN2)68ZOhD{IktzFpM)MS0dJSjgdQXd4;ypFZLnO~ zE_F|r{)8Sm7hZ!oGTT0W3L`o%(JqIMqHk;_*(9FUmrjKq8xKAIPVkxLMb&M9rYMt6}ZsC&h$e^5CzEtA^&=I7k<>zM9u5%cy57Km7$Vs(A9IVd$L*9I9DCno>Pmy?DbD1ZLfPfY8(&y1rgS}GMvyQi>VYB7K< z*GGJuvG1oZ6=j@cC^gLGoanFXUrEv&{hHQ}2kz9-3x!ExevV>9%M&o&>&&$Xor0h? z`1goSe4jsl%FW*+;U>E@VBDk3_vzf%6ZnU*8AUUxj$ls$o?5$!4gHA?aqSifa%lwg z4SzTxzN&%)MX#Edu6ff`U)%Ad93q$reH1$f@l6WK3j!l!#l>7LP8*xb(M#MXr5}VfRt6ASn33%Rf}6uzp#&Jl0Ly##dGAt zIxtml0c}U>m=rb7P#$&=b25jTT5?5 zEk=YfvHM}EEaJ}@@F5HzK+DeN4M9DksYaIVGu_dF4LhA_=Y^pT!P>{Z^6HZ42Y*`) z(bhpXUTzLw-qyK;=AzmS&>qmcD|8{|g(L29-Vr}U#c4|1F|O!&&p<@%s%!_KQ&3uj zjA$BXFXL|*MRuT;X8y!9Z+chRKHQCf{W0H(#v5x)E;LKq+ckX+tH|j3{ih2fCg8hc z6$wA4)3EpEJt6to^Bzu4_K=*Y*z=;W8S#njuRnMG=sMNSvc1iz z-0oRj8U4phc;H=fwWD^Yg6G34^!M^k84tXw&$b;X(oxpT%N=sHCP~r@1r5p)x8w42 z`X|B~>)>CPLx~QV4w;2T;ne_MG-8Ath+3cy*%z-6DC z3&*Rr+8DyIbfE-}OlV`oOri)bY<+XZS0XW5H4sE&)-nKK>u{TIEh(c(rbxa#-G*#C z`ji*vtE4(17C$)%?$P%yJOnLAFy~}ar5>eN^r_r&pL9(Ax4evODhl(k+|N;>pZYOB zynDi%@gKt6e@{*dbDeSORLUQzF+ag0LF_k$y90$E$8482!^q*E6SKEl2(EtPG7Hwu z%^r^|-I2qlKSojmySuxp|^!L@OGyrwlsvN3CooUFc!Ui;!BepBKf5n2V?0}u$6ljxLOwuzW1$q#W z6QG6xd`Ji>PWkFH!|fv6!N+{z6EK>zh=EDRAX5mK1I>=eTV#l?nwMsyo-P7dy!(Ci zkRPuor)CEzC!;m)LJjqSsmveef7$IWyHuvCl8j@k#25zq9iWcJMd}j}M93@g0v}}z zxNb5gf6vK@|4g(Z1v^ou3q#*`j&y&wA2H8`ba9HpW$}q3;F2P9^$P|007gK$za`r> zjVX8?;{r6N)1&z^>?FJHl%({??B}j zd|RolwDXIZ}(lCbGss+>mC`D4 zhxGhe!hf0D2IRaiZub`l{8jXF7K2YE`xv#b`WdR_ls{@c8HsR${UVd-{E*|0A5^~i z`fX&Rp<@hx(mHnYF=1^V1qA{sg8~AQ`v1IWCue73YW*KI z>Z{c@9dX5w_(`>PBzM++A^j7;ppf8dg;rVrYNHAsYsiKolaXx6hvSRZK=l~>Ez#V` zl13Rhy9eoxkP;OIDc~PhxWKABOi~V$W`Cn*S=w6G@$q<`d*1u=_P_{42;hu`DugJN z9b%eRY%ra@fUW(55l8s!zKg@P0-ERMH2@1LL;b!`;f`3mjCEZNN<7d)>RUb@YtL#0 zx40jGYI1*6<7wsx9&#HP!G!{shS;9v5GY4*Uw8?-^JXa%{2Xw`RM!nAtINh@1%E)0 z3Oy3>9ivZExqAN=F$xR5Y&qoK#}Bn|Ey0(7sl{=h9wINsjx-mSCeF!UbCce3xzyL- z(N8mKt~7%CHQH=_z7D!eX@`MmI$K{|xWiHG4E_QGtvk{c0FG+62QxSkK~G&Er0A=% z-kstac<;G5q|-JLzt=(!LL-(Nd4K2fj901Tld(L&bg)TLLpsQ$AT*||R?Y$S)kIU7fom;MoxD|56**fJ%hRM?%)sbI4-0v&1Xk4&basj=748bWEypjmL zq_ofujZ&rf_`tb|+oKH=p?{g|Ve|==S+D=I2;);}EnJU+I{2{U7gte9&wXoCe@vAI zi`v*(FcrSsVBX0>)M!*l(Ib?C=ltZNYPN*BPV>Uk}~+@c$AJli|RXmEKCFf3Ljd6>cXiN`_c;BQGeMgzuK7mDWezl zhmBR1$=hF&r9vE1h*ypa$5ZKjcK$5tfHYD1_cyhi?Gv=-^#m$byLq~YXeE?DsY~V- zkc;;(t4!yKHvdikRKWYEO5!2%kZ*w|+G#9@{6fF^SbXupr*tRF%qc+-{|N1TnR|}t zA?Fm$^aV18-)J;O-hV;n#!ue@vO1yV5X@Mh`0fy#w)2f!UAP`y0X(chOu%F>P}-;- z8uTE-hair)Bjc)_@LgE9|Q>K z80>%Qv|#zqf)M|^vfk*=pp8}}{X*16q`DaRZ{5YASAWZ2l2Tc7GDEk0n|<;|IBVp* zpzmiIEO&{odyuy>>1R=S1MX%8Xfccsoa@}J8N1m|W+#)g3VFbMgQU2~qVz)x;iUbF ze_uh(sk&;g`F{imZVOlwXSDh{LH8|>u}0_8!gexlvgJ*RD1&XK?=HsN!~}aM=t(Zu|-!&y$fr*Z@+kEA|yo!M+&bUl@Cm_=cS&0r=q>*J*kX&T^C zLQoAgHGZwWt|1ml~Be?1hqiv-@E4Vt#|D1e^DS7*O$$tbF+kg4Rg-kq@E|o24BBjQzO0#Ss){M zs#U&8)7H@HLdaBBjA$>N@1Axcf%;hkT2xv2m-7uJmWrjk9%`xiINXAzcVBpX4E`5u z=MW@Zlz(OGv~AnA@uzLuwr$(CZQHh;f7-V5RlTm)FS=$O-NQ4ugLChat8m;{+rHa*}~KOin? zH4wFn7zL;U>e^)wM~%^J^^qZ3+%f(V@y;UnB@rHyH7Z$~M7BuX_P6rwO_H*rg7qrs z{yiOkiMA#V(@HzSfehVZepo^f?&W{{ViYrC#wx;_UTBpVwkOy2M1K{u!t~&Q;hmz0 zpMREhV*g7Oxh}EZ_ixjuv>T)0|HY|MQn8rU(yE1uO8zjD zWfZs+l91F!(26(|xGf-OkfmPA73}G(&-fs2ILOccHxeA)ldV@HzVP1AJ}Kw*q$gwU zlaV>k&-)8x4-#)ZoWPPWRrDV_*IdKrB7fe0p5D8kh>y!|aGnL)#fFlj9>Wmr<$0L( zK6R$b@*#AVicA~pr3MS(4Gq4LQgIh4UlC-BnHpzQPLuT~tP8GvjKCMCMXB+i3;hvphiNeET5hbLwSRx3 zH$c-^NuY^mC~at9T#ouJuqZ(@Q6o+eXFbEa|r>n7*XA0`;(KX0W-tE%auvm_){nK8NvgWXq`;kKD-SzDHQbQRgj zVqy2g8WMJrD1Q#F>$XRI{#?3I?0wV6p^LI(P zT8a4~rM6jyKZ#uMTu5&rMhf2}7s3*_Hd!8R5+;R|4&WXwY80+#f~4F)f1}zX?Mb=l zsZKwL$7AtDLR7qTvg@{g5?{ZkKm$b0TzX!154v_SJ+F3<)f%V(4gOoJcz+D@pstCf zBX%3+lOq`5N^Wxv6f0|~+@#$>U<*!${j~XlMxyHr&H9p;PDfs;;1FBo-6z0$Zi4Mu zKcHKPC{%0zWvd-|mWg7|*L)&hoQXZkw3juxKC9jj=)W?07?GeEj1BVJHHKuAc_mMBa@g0p}?frxU!YRzWg(uDmAAzaf_ zRimb*MZLVbsd`=_0!bOmKnSby+Rys>~8QKm%b zF`p97HnN3WaJ|~%qDPXriyCwFH`6?77y?-_!P#lhI%V;?VO+<~E;$qKc zKh}9}@>UP=Vt>Y2Y;#I|Tds{ht);rtgmkujS(RMOteVv;2iu%!8d{cB{AGZ%O%nFA zIL}gsp`wgn0c(Op=!TS2wu4xx7}FY#%7uMwtP9xei07c7+M}(wv+D?vq;wY3xpX41 z2w{_I-bF+h>YcDq=k)>bTB+_na?c^K+ z5~`oRM0x?hTBdm6NMNR^ka{+`R2l4qF)VIoR}gsRX|0NtpybN8MA_Pv;34M7Uzm@w-?Y5L}#3Wp(8 zW`A2(adp;45RQ5_q*O_LmyDuR=!lr$W%En5jm0e3ZqPL+*!6@OK(kjZJ=;~6MH>LS zkuB$K^F6Zd=~1ph^;s^YxoP##9aG1VgMyKgSS?5=vG@#=O~CCyHw^bO@%1T^tWD?c zsG{3n9Pddr5PNLfw83lMU>PICSrWJDF@FKzushvZHEk`kOA3%yyvMj>89q(PqykNi=O!?|usP;b z+lpw#7)Ur8RMa6EYi8t%`P!>-O@GLWG8mp%`iD@lKO&nm($iFp5G$x=Q0bQW&r>01 z$Zw6Ybr^3{xkoxyyUdW8!)BILgGz6mv33}5WW6JwS>EdPgWa7igWeh-{{{$oJd5r9-IL@@N<{ZU%+YtIn`jc#(!hC5z{2`!DE@fj()Wdp1 z^___ua*fz+Piwj#S52%r!JYvzEBuR43a9HPM22M*MFQ-O$82){7yB)UhEEptVAWdV z*W+uVKkptrFiz@Fyjw<=H-9tq!C1=BAH(+?dRXYyv8`PX7k?~UDT&3W(wCtJsc zO2i$o%%$6WkCcs1&88!K@FD36*lNnPmU?vmdV+AQ1qoZw#-F8Cm`cBF!VAeNr5o&B zysg#8^*UJ*p-OD^>IHDf!-F5xnd-n@0<6HDf!^`qxUgoE2ulvxnSYASoG7K;$W3p- zk$6gHEl$yuu4@%9(|R6->bMrSEWk|BJ68&Jvp<@n?*y3LapBesMOtpJJyW49!CGfF zW@k1L8+^flW<~x8mwyVDvWOH!)sC>CN@s<<*5dYDAT+C{T578jNSqm4BTW5OF$`Xf z`#l_@`gp!cbM{QoQa+{>tIII*gm{pozS6dHyV$f*i9nTk3o2qOd1kd^uR}Vf_TJip zh9dIzl^J3kYk8<;N3l&DnNs&0B_i*S6>3@t*vwKH9|8Qe)|;ZN;GJdu#xUJ$*AGg{JA)VFwYI}nU z$A*DCwN5`~dw&kGB0o0p;6CVQV#Ie5uV7V@x1tz2mNVkDsnvw!CpgRP@ywun&U#UPPl{Nrjod{pca!@HiNBvV1Fk`Z#{s_jc&S{XEkbSPcSMmrIXjvi!fE?3(PmlhLSEfSytaMU}vl@y`oPL7b9kn zkptpiXMfKm0lU(+dff1HTPsC+{9JF1rE6 zHEI`PQef(w!|V z*$;P~1XX5_^=aRQ^w~#wDWcuP2uQHck?@x1O_srp`P?tsxXXUoQwB~B8VNS?1cWuJ zB!5nq(o{S(WpJNhwbbXe-IIPw15Hxy%jY zPVim|1J)4m9&Ey7xaPv#+G^63;|}?q`E){4?pPlx?_<@bDYDm2Mh+J@m$vRmE>MX{ z0M}ph^@g&=+H6Z1$(w3r-6ZxxLY1y49)D3KrdlQWD91>XK@}sSuCGg60S3;cmC@2P z-r;6l)TS=D+W@a*qn4~4R~kMJvT{Alcip$XzEqsin;_M0M<1=f91mGR-c1q=tY1jb zI!5yZM1>S`Sy=r1ar-#YTp#e~pZqxSE83V?Uw}XbY;^%cCH<6?ug6m01C9LZdw;RZ z47kjOrl-4XP20z;4(}Ql#pf`l301aehD-@(M?Q<=V$B!RGH6YKvw_{QWRND`>fk;1 zbb3j=mn{^t*ZAijSiRY8e?vBm_}`Dnf1N6P6FR!3X!S_{Qbj+}8J=Z;jj?f`X@XtG zF>7sYu2khsaC)x~)OnXIuMmSKet!*RcJEK~f+ftwX17HxeXPySARbdgut&dt?%-%` zj%eo)p4bZvqx~hM>@k*C$sbnb;fO*c>yX^tvhZ_XwJqaJOv*A%0}j&UL{%E&rpY`Q zu!pRv`=d?P{Oxz)Px)QxDp~h%986pnpQ|U}b;nJbi)>ttZP%s3r5rQK4}WB-+T>!q zuf~qXxnpf5)%be(BsTaKV7{^G_`T|wWujOeH$twPT{$}DKG(;)*|)F9wkbpDWEx89 znL@8MI!=exRp$ui3n4iVN0XFy{7p@lhFXW0gsQh1R{brm3Xyp7Req!u1wzAX6Db+P zzk~X!h=?+_n<`G#!%Bp$E`Pf-lKpq7!g=wk(KWULl1~QO95hpGtvmE&$$7Bb7gFqS zCxW^|QPFjjdD@jZTXmwkocZ;Jx&vJ6g~Td=);h95JhCLIooR{nL1NWEqLI|oBWE>{ zcut3>S&eVbCdCdVlF=%#78Gc{nJDN-*pF^?6qf4-+g&jGGu%uzK7V5b>^sm`qdKMB z?TVg$w%(Qux`q?4FL}ika=Y_S8U;AQhIyW9tRn&5M^80Enh6=7(-UpV}D1-9tN6YQ(~4>Y(ZyV zM|WSx1z^in*P9z2)VmvLH;fsPssWg)5n_;5K$AV(>?m4wiQ8kiA~e8`>@A@3B^=i{ z49-Do+8LbxE_LEwW%$hz*uv-8cXw#No!NzMFPhqHbtd9dw*KOo&~?Z+1yJM%nrVkj zP3t7qZMCYj+kXPMI>}-uwp``H$df=P5NPEy;Rgc`)RZv%&PdhY89)4^K6pr!cY?K0 z#W^LD#=gdC_~)^D4~9^TsUqeuqrRX4x!1c%xUp9XvfE?G)L38QU)Z3!m=v*wcLx;J z)aQe*Nz$J6RieHcR=kd@%KHz#n9d#0m6|SI0l7su zT)9}!m!=S0eW|X@>qD&8I4ef*H3MGVC@}4^{@SKh*M2rleU(dwDA~gd>NDae1vGU8 zl_y49k90{+pKLAN50JR*A)nRq&uoQP&Z3(`h1bV&p!fpgy)|Jl=k#A1>K~G+!*Jp_ z`Uh!+1Ak3)k7Sh>qQxlln6WHsm{g&bbg@$c!fC^ofY0~WB${AwjH96Rh$8EXv30?? z6ZL6LF#s!Ez-kwe`f;>=>FIoMVSvbM#eaOwvRi>0Zsw*u$8?*-->9Lr!bVc^dD7J! zz5|R@xq-LJK+Z9&lYSb-6Y0tleN(kAuYOB0kAIe^bEKb?71f|>N}^3&oUgWX`Wqy0DtYQDGtd6Gx7RTWGr#gNekb?cy}RxKhZ9)mY#nu_!V?HJKH{mK_B)5; zPJcBnCcd}{2*M&qi492ad6jYcBN}rKXslRT4B!wR`4S(VBb9Xndbe6!%1Ejz**(0r zm2wVp*`rG3hO`)DH_j*g0}1Y(bHCw~pXP<7zVU*-*jr;m{|Ue4l&@@@2f#3IeUJxd zptUV9lt!ERsZj;qbVrfcXAjy*wuGcBb$|G!vM^yIGR2iBIhe@NW{?nNUTGHJV7?{z zM?{mqaf?QDcd789ZPx1Uc_u`8Lnv9|MX+-SMA`Iw=YjU9mqspdgE&<~l596Lg0c;P zcaOCYYOtd2FX0eaP7v>!HeBn z7`u1js-dYr?He;>jvDy9_bGax5PC}uE)$h7#xRe!eBOQx+@*4P4`}#xO&7FHt?)|c zzq0G=S81c!Ga9)FVQNxDpyt^M3=$j`e3` z>NKjWtgBI@pRJyh=~h_-Q&_O6Z>_DX{4q} z6V0r6q8%0mrjMqUl_*lA=w4O;Cj?2c$*XY$)49Q?SI>pNg@?%zLpz0!Kp5>s{m1%dHte=TtDdJKuyXTHN@hX zHpIiGwK=iHy>6y9w#K2^tgJSa$m%Xi!PMJx{XQ=)3Z+{%@#-}62o7})Q5etQs)jDOmAXk$?K6dC~5m6zs7~ zVz9_OFqrNpX{K9HLJLyW=%n;CpC~-EDOX(bAYLnQW#uiqm#Dl_cv^aspKH^tc?;Y+ zRNfYi64SyjdWJ^btc3{7A(Aetz*t781LB>0oG8GF#(z0LebS(}=ZP`*`m1IuPV2(($JLeIHX%W|t8#w(`;J$qIyfVa zxMv75eurm*5ohAa{w4$4MN*FbuSe;JZ&9> zHOI_p?e=&0nqvEg{wN{kzNQo<)fzaZ$!I7}U5C|c*_qd<_J6X33JNKcN1@@7Orz?n zy61-9tOf`Cp-v2IIyM*+kcRz`Eg(5l3dM)`u#AK=N`Zl>01T@a2b*pJmxc#hP9c{r zr1q*%y5Y8p6xI`2XS*7T`SL=xGq*Fr?F)PM0?*y+ zD!bG5hIc#A=$5m1M}rge#Zl9IVH){7SKEGI-0?bF+g{B0(0Std4lU^gYMZxv&&X5r zg#C`y0@SSw^PQ_9D%C8u?jN(7QDP&Q{mDMOnxnKLSbs^BNhsCCSNjC9h|p301es7p zYsnibtKJ8P=pGimS}Qm&Z~9%p=Rh<5)fr`lW7q9>|4CW3plSX{?HQ(A#4spb3e^n{ z`l2sW`spEwf5_B3}&9DFN+q_BjrEYSoJ$!NeHBk?p^2jrDoWN0CZ4kk22RWyIQgg9o99X#Y6sx;j zIR~g%)v^2~r-e)atu)EO2uFifV7PHKXm5}I5r6e-87P9_FL%NIg|f!wpDTdVMcT2NYH9Igm%`{(JM})={@Iq>DV$xvcraA z6%0@SF+XgHaJ5R@p;{@mT)I}xV4Jd?Svc9MaV%>I*Gi#cdOH`z&|LW-uvIG0 zr+*#rwyBtlA1^ur^|C2i3T|E#0 zKp`jqfY5*6=$E&%SFx8dur)CIXNc;*#!de#xgxZchBivs_Mk_cnw9|Cy-l0NzoFre zQG@8;P*)1#t&JJo$nN(v5-J5`e4jfp%zrsL^LT3*$gHc3jHXlWzwBnG({p-yeZcK; z?<8CZO9*QTf5?ZtcPuem1shsZ+lfb&n(2 zLy~d~&YoIJvT{m=kC~0BO6Nn0Lz81|&tQ}kI(RHPM>{JeS6D_8DKEKA&OHSo!+(sY zB}jWfL)Clbr4DdBS&Ln=#qfv3g&QN!+4IUpM~=K!j!$7Mv}&7yQ>F${WNsis&&y#Y zjv>vW)Q98e~J3p%IR30uEPnAFb5iJ{6)5n?;U+WVg(M zF(#v^8R;G&enV^y9wzZS^k?l8gQx$PzFkxRe}In|JAOp4kxvkSkJQEpqiY%SHWtzB z2g!^fYHQeqT)1(cAIj7s{Lq%-2XCi)fGP}}A~YB0L~wy-T6E6tzkdp%OdG$7`X7QA z1Nol|;y)9s|09*JblX4*k>XjGzWh%LtIs`P4cV|Lk|rYsS+C5$Liq|JBGUSd6ZMCp(d1l+j#DnyXmjn?Cd}E@YfHZ9h^IaR2V5-Gn{btF27FfMZG+LF;Y&<+gh%; z=k|U;yu7~+mSMHA9WGUsF-R2xz5HfDFojwJo6@w_nl0Jq;6=__9!)P1}nq@Q|OHvGh z1+y%?RlguyCA8R!W=F^P?ji51&I1dxdfyu8lqQ=UndkEs3V(*QruALfiwVJ(8lkA3 z1}9W3CB(IH(B7p%%}RJ_J2jXRdU9gQ!0zLiM@nl!AS=bH?eO#~DJgQq@u_b0szokyx8){9P2pgRE6D@5bHCELi z2Ln;Gq24#;07K}?C^pfmov-Lx-jt7G6>gwcf1_RKsDH0u*q$g}B>0M(yia#M97xeqvHfB1nBh#!qQfh7mehI5JL#`eVL4~V8+1nbhRv6nRMEU ziV!#sXzFC6u1ZysLl_CCZxG_pe(bM29QOKcOeI5-t=72H z?}Z94ft&{d2XN2^xAWDJfFL*gBQUOGiyK_s*t{Tu z4}VEyuh#FcN%-z^s*dcjq!+NT*BmylJeE3m`_oB&CxJrR5!(SgqfMRE_)l`fg3R;}Mc=9EfBM ztMc1xd&_W^45%;UxPE@pSrJ-^Bii+7g>}kU7jHkf zb;_1v@FH8a5Uu)SA*21VCDzF$iaKW^L5ymVpDs(p2m6+`EZG>8>h%+MEXon4p)`nX znHDaEKZH~VW8WEoQ^-#A=|(W?k#&gggK=*fjfQ0V(W=X>u#+075uJ#DXP#{iM}Nq6 z-UCH2JBMO@2LG0xH=9l<7i{(mB1hG$*O&N{1*#5SI1vdX5{&K3-jL;php~ExN7`>* zi#vw3NvRZfpyO0oWd%}c^xz22O!}&&s|S`8Z=@CUK0m}$sc2gqP%R@-vii=uSS(px zTrekQD~Cpr8>S*lxUW9s*#`zIhkr`fc{y5w{o}z1E&-3_7_uVXW0ok3yjr!5#@NsPdkgNJN0aY^9L!JYPg0?yK zf)0M4gskzF`th@dZlu-1Oua*q*Umz8yq%S`1Ro!G_#>P8hQw?O1}Z$~;(z1yDvEBy z&^1;vEJjiKn&SmaqRR2ksEsovqv|%Mz05}-p__~16&#_DgD_1k0NtkR!e<>;|uIXg@3pVA=9_kZ5oHT!@eTWkw; zf({1Lv7HUWFXC1_xy@Zy<+x2qw$g+O9AGjWP}a71>vW@r^GUwr!s3+WWbpdkm8g~B zkZM&-@Jw2WT}}JPb8i zTK9m!_$>E?+o~J}Pk&uh9ItmC4-tL*m+932Z>(+c6+C6WhtT*% z;j`IeCgY2mTYsqLXFp}c9Cl(|tAVN}>utPIgz#kJF*NB^NqOW)+FW+Q!N`6;TtmY-vPJt6I)??geTN#lC;es zmNhwPrX$V6S%o2rpXuSeLwb-DO<0f5&gop?|Em-o;1$j5o6{Xx^aO*j6gfU#fP)YAP2JAwomr!H8=<%=)5>=m7l6Qqr04Khu$LTmkLB1XF47 zb_MO(aenOg_-~9!V&gYvudcb z&lh@f9lQ=J3(jIT4BXaluHzg+B25L7u#{@$Gj_$-XiO$bN@CUa;(}a zk^t6HkKSr-NFD*tT6{H(#x<2{SD|u&QW+V`iOZHaCuAc`WLL8sW2_P01gTJqqui7V zy7U3d6dGjtJ*3z&8Z|~tGs1S`Pk*wrdPE!8O+DB@(JUBEszx zKV#80Y$xHKW2PWHLFdT3jN1skq&KR>)sAs(+)yWXhL#)B7+Wt-v?R7IC%sT|9|Tr~ zbtEm)A{sDbWxP4ZiIMMrxhNb3?&Tb3x8_0=&Ic3 zNo0APa*Qr`20=33MN_@XXrEFd0HvbfI|Y1Z%+PU&xtB1pjY7&!8zr|$@X3-ZP3r}q zU|O^mnwcVr75LIxWpt#+8)24Op9XcsHmc9et3F~ApJPCi-17*>AjaO7d@yS&v#D%W z-a&WT#aMYeH$7B>m21TH=YM1F8!b#BJRKN>{BG|0T@efBfTi8qWwomaaL*?hZB7{7 zf_pI<2Ym#pT({E-H(M%&X!@15jC;4V<(kqqbFt~OajYE^t;Su_Wa+JkEAl!HX*x7F zLS`2PcDHPfHynh-ulj$x+~z6W+HD1W=%YP%G4oW&$h{pEMPWEiCVy!ke02v#zlI}V zx`fz#v>->3Rr^rI+Ziw1JUQH6uD9g|&xP;;e3aG0RqAG3!V(uwBJ^U(xz~A-TKqa> z;*OThF3E3hj%-?@0(P|nm@JQjs1$t0QP53Lkqj^I5L@iKD1`>4syDC-_}oIP-L+9; zJU~}$#&s@&R0rbxg?|%1G3VpG(jWa2q`;_Gf?0)b@VmBTcT1R~Vzn5L3MAlSAM-R0 zRbk$XKa#cb3-l$&pNK+vG9MY8BWuG0Qt_s`U5DezL8j;@T3|e=>h$P9B)jn#Qtv%A zhOv)e__7*8>_jeZ89lWFOFXxOdOWowxOiRnJbCd31$cLZhkra__S*4sShBNrO)UyX!=cv0EXHQd-fz`#dFBM{~7{IaXA+Q^Ovg*OIIvi`95ef&2$UaMu zFU*2cRi8EiIe*1%Pxh$J6KzqZ2y0WRUH-t`sT7OZiZ}J7_)FTDL>|u=S-(A5Lf2Vq zv39)UDW_^@s5Y7}mkdTMPKiF0FQ8EZ@EJ=Di8SMsu1`_#R=A&nTH}w<)r35*vq!c* zUH&LIm*{zkI*@#OTBE3buyRBOJYCKdL6qqg6@{1Sg@1`LI>O!hA>yNTM|QQl9|7IW z>P0w(2yJn0=M9q6@7<&1s!W~UQD>Lkfy#<9CDqw8?a8nldCU%>-wj$|jF`!5GSY_V zsS&(O^)1v>g#11Fs72^q`d+b5^$y}<9 za#xc14S!HFi8i!}_EmoD$U)nQp*|aVemZD=vJh=#?nkY*V}HN-w>QY}2lyqm_sYu3J%+#x8%ybJ zjG4kJtqJ{pbszoC?ph{hq)P0*sB{zw&W@cmXDkj&@vZK#=&d5NduD=rOrrRlrs9JE zI^|73Q%&tMy)S3M0o?88XqR`pC#tgx`_Z1>(jMQ^fgh`)M8-WH%ZCD6&T0I}fU{7? zr+*G-WkD}6$1w?qI0uVm+^Zywf&GF<>5KW!(963n03XFo31Z(OdVg;tJDxuU_Fc))gg0Q}TgiGW8F6b-qeKoU zcfBzX0Bmh=@>;3!%VFK(L`l(2SG8^a12?A1{8fdtianV{H{N9}RW+^D_%O85gEUG? zD9@zvXkj$cWu=6r*Rz|qjwU^k)~w!sJ63!Ib*zJ#?A$Wt;tq52lT&&BQ9YWzo`26f z0m%8@*b4-nvY34#1@iCFw(s+sg+MuO(%fY(5WVvyiJ1tT5s|( z%f#QxL~^*=caTXu?*6F>N8}c%XTV>6;SW1vkQ&#XPKl~ril=0ioqSasIt5?KTJzGD zGFhE;)h&zn?p7-!rr8BUr#PnGsDJfne&WE?Zwj7RW}M-;HIWO%QGu;gk#0VMFK|;6 zN^~MK1*I=tRG)N^4=wm@AWnA)MP^$}`q2r^5_owljcMa10o7U*m6tb$QHcqkTo9un zgGi=(%(h>WRh?Y1vO=+D6U&GHha4sjb*5tDk~`WlEaisUgErh)N+(gMI)DGrFmgd? zA=atlt@f%cDp#XOUkGVpteK^yX^0$am_^{qo$rx{O%7wuQ-N@yX6CCz^dZY)+@VZ2 zp#;69aXNL|B=}p^u5A+h<15?^?trtPY*Jim${|;W65r^uJG#7SO}Hd(Xgxqw--w#%qwe-X0lvA^86-_qBAzmp^cP=CNYOTujSy5sh@ z?sUVA-S6vhst%yG03$eVUv#4K+=Z^nGG4UGbose-o*K4D^Kh}jrKDVoh?+XJ*D_)d z?R1vtFO%k=CCI*+cm;&YRAr_%yK#p>1QRD`HzAA?y=JV@iuG|Zedj|1fB^^s3{f#* zG{lfM`v{3CCeUnZJ%6$qrDAQCd<6tcHe{jR5I`Xeway=DoP`qDB^s;}8>*+!_`wXb zGYMTy_#nbk0|+xru*k5J%RqiZj7i*L>jh1<$>ax)G6Rqzn8QK7%t4fr>p-EAk~SC( z)W*qvw&ZUqEM3v;gN+=WT;$dvQoC+{20}=q5ekP-ipD{SUw>tM-2rz5WGp)Uho{<) zzXKSfG#;H283TFKt(a2g?yyQQ-_Ky=g;}juX2{#so3fVe#b@W}%?2xLScRI$uv#`V z=IzmI5fKLyhlc4>E)JW^oV@d_+Mq5*8cuuSQuV3$ZKkt21s3uRXp>8NDgj>v! z@+P;I?(l0B=6}Z(2eryn&9@(BC}Zp_)0B1V4x!QtCr}$Qux<7I2&^@U`w&vKZ=C3`b zPP5A-Rl+J-T*&LmD~;AnsG@=64l=&Q^KX^v+ET3VW7oSs^t{peSq1c z^BGHImTibR8GD+-_bl-j*`=xSb;}v~dtx}#-z>P-+JxYw0;(x4U_6k#G6nZVE*gSX zq3DKu$4sjf#+;X(m5c}7=V`Y^=>h_NjP}T#kAJ4<%;ANue4!Zi87(Fq%-QdTx!)oS z9~O|GDP6qb>F&4?S1^$y7T$BkP?9(#*?tn$EVc)2y#YwMizfy$EYy|*8w9z|bt16a z<0~mU2m};t;YxS55ArnvTmxENlMaQ|QV((QJ>>sf3+z~+d*3sHZ7n|W)xP-!`?dAp z_t9WY5=AYme|G6gXH2?wO0BH0TXtjOMb9Mlyv-q3@-f0&;uFaQ$g?b%T;0g7qz|h6 zB<_It-hjUp4mKnjL>^K@c+>1=y-&G^-oH;z=>g{M+(D((>535Y!;yrTS1nl3EPvCn zN6IMi#gH*`OuYYDK_&wm(QaKxi;-)(iV3cx8xEH#nzi_ZCgMscc}Ys=h?K*5yQ@u&ai;E`-j1(2&HUl=5$KY=92i}l9w z!q{+IC+gy@BGLoZR(3vRr=Vj(;SWpR92=V-F8^JJ;uYtG6&x3ZjLObtUgwvUN?(k=Y~) zj8xSv4EOg>q|yf!1hq+BBqEYjpoxTf>j&?>`}XzX!0YofZOrJlgnwr}ou2J+yZQb2 zS?lpQ;RnYDw@3S_DHIm4+P;V*qovMZEA%8wXqpyo)|;8gC+Et~N-8&~|2tjPdblO|YBO_#RkcOtXy* z)hwubU2wr1eR&SekUo|$8L#yKQ9!Q0ge5N&7`VFWPT9$3PLd!tYlDA13bqLKbRIAD zz&bGs2m~#?26ocfjJCU-OJ9jOvDAGwnR)6eKI7CS(t@(Jr!);q9E$?RKJ- z#T_hC6`G zHM|qyl|5t^OE+W|#`#M!Cc3qy+pEp$ovDGct=C>vdpsU@uCtvsnjn0uc*{oR-gaq4 zx8L-%rVcCp>Yab8cAhQ-F)n zNil;WLMbqtX*LyeDrZz_c>5@1m*x%t3#&D70K}M*sJB-d|6+DyuL|g;lzVcHiP)M` zHrqPxA_Z*IiZQD;7!>Rg7?a2!y{^B8MmDBP0Oyz;H6?%cKgno_T;&Gfu1u{>sX2Dc ziyw5v1^KlWRD+LMZIT$;wfooYfeV>Wg)59T#M5#b6U|jD-N?6wXdf5Z(6`l;ifY}C zEupUvV^EIHN#d$*R_=M#sSYkpDX{yR+GPixuJsrHk z@Owd2wu^svgxk}Zj4}%blS!{+L#<$r)d5hlwwAfd`HnQPBecq|Xxo(sY_RwP*H9<8 zF6=?kUt7}LQrg@x-m}q8HUV};46YF%_zL!Iw}(n8ayLiBuW#8LgG{&W13iCX`fZt}NXA5>yeKSG?j=CUV;?s| z;67z}i<*2?4|KgHhkV-qHm#g3fiD)3NfEHdy>`5YM2D5cyXPfx@@5tCA`M`2{Q@S3 z-dXSz9~i*q4VY;NmK_xSL7keOvXCEAPmMhtU9Kh=LWBhkP$FD``N)%DO1fQG0v7$_ zC@_DJOX+mI&V5w=mV*TC%2$?@%%utZeg?-Zz*}?~dC6$j;}Yqd-pl_|Z&2NY#L~iL zY8nj-{M{pJ+q6|V$e8Q7$jdcFbGmEDkjHdwf%V&vhVapnM|q;oK>Hs|pEua5C&cZ?BBXw{-v1U1VUe!P3|itmayj<)r)%R1W3@Md4`5_s<5RpUPvnHlS@@3${^e zix0sTSI3)-Si6VXs=E!oPJ&pOP40h}N-W=w>8^Q=fJaND-bBa28kVl3X;aRlek41ZFA=nmc#F)u-%VksNL83BbW?i34KquX-?s%M3fW7I{vSN9Bu z-QT>Y71k7r!xhVd!VjWzi6%*lbpwWQKyj?8Byps36Ng%~g?XiINwEnn<3L8nK#Oh7 zAW&LrDTx)m6iBJPXP8FPU?oH632yfgOeeaWAyOXb{sObM zqYw1kD}*tHSRZL)P-=?G8R6)Ml zj?WaMtuZ*(nuzL*xpxLU?}_5W*zjQh$y;{3!PMTNBr7M$9OudoiCpUN*gY^(y<$+l zSuXV7dSQ_9e58LEo^6MIf@aZ)<=X=pAw)yC*_;=LTP32J4dkp%{2$i7DM;5K+p)C#B6C{-SR1qDtwBHsa+Qa=<=Ah!emu_)yXSv>Je}dL0n+s;lg_!bkzjLq zPUG2^!zDQ%3LjM3$>~cghaE(oE6vOzn*ys+J9WHK%15gGo!hIPh#lJ^>MnB=`29?u zl+Vb^(41>rGgaUC6bJn8X9dL=u0Q^DoId{5V_ugmbiO_5=%HcHUy8-p%Y-Vd%gJyB z-32y|eC>ZOcEPKt-fVO9n>=IYPGG=wg>ng?74d%A9#D@=dv_kQgAUgQ6% zXb+qP5f`M=5NoN_n7-0{I%`U2ZWURX)McW!hw4Wnjn~VwdR4 zcHSFq8*hu?J@x3`e}TI|ODwj&C+gL82IOC>E?2fYO;~L5U5LE6MQYeTTFvVqTs;!D zNdPpsbWc2H(kN?wnk06hs>6hHpub)5IhC4l}UCMS5s0xOtRalamZ)d_~QmVNY$j!pl)sR*HOFxk69Yi za(}5o>EzCE5vh_DEl%8>NLu1_&`-R)XT#Y|(98bGudWl3xc`cjlWko@b&i!eA(kdi8OzlDv^~qW=rlDcQqII3*g@%>g)jtpZ;q4Wo~?K zJlqua+ba*_z@JfsItsvn5FTk=mS4NWL-)svLJc{JO{ z4#NIGfq~&7Gr)Xof>6?g{-8C zMW`-B0<9A#+LscfHfdX>s#wSR;9N{uq}Rob-VmScZmO3m9kpjU)- zaN+k(mLV`6P!V-JBiJS6(U7*MRWqQ%(Byi87L{I zJ4Pdt8UQiX7YW0j2`&(GsL~UDDWE2Y)`*VsVvj>tx9YV&Hmo&PB)sZ-q#SF*9_5Fg zkFTgaD*gwX>mz`3NX3U2GK-%r$|m73~djB3{-BG*ZN$>rtg*c!#96;onfAbT#iMFRiSn2&2wT^5jU5(p{TA$<*_#m4i&MomkQ@AcMe1c ztLvd0zibWC@~QMO2sT6*h<(2CxR*;9_976hoR;Q3vGP<3Kfbcs$CDHfFF_}<@;ytnSbbYTN;6vB)T8M_2=B+sKU#tN7X9x-#vRi*@V|!M%g= zL~3g~t2uvHXw$V)u-~!5c5f-ew_xbo=c^v$xUS&F_B(KoC zxBF|z?1pXvFB$JtY&Iui)Qp0b%)_*^t8925YA@M9+#u1i81?MHe5J0_wvaxbah z?aDnTNrBAbb1!gRD!Og^%4D~rWtQ@j48gGmqAP#var&Gl_Bqgg^hc{22Ie6(cxD+Q z0O@H(@riuf81`B=UV}q|+gF=Pyt9$Q3Cyfh@H(%1Ox`b$z!hTzRFC`v%QHb_gaboQ z>XxG^VvP^I=fgY4iXds4>sgkw2o?-_srgzh5InktaBCsV_)ZtFcYT zdTf7Pk~Gix%nluR1{hGHR>iXw((=je2RT^d>ZX$XsM)=;9jR)|?!iFxSsqAvXf@t) z5rmwS#)if_S*Is5ykh-^hnui)rd1G_i}aB$hZT`6-3DVuqKCLjkjG?r;?OmmEpL*c z-V-zi<=nHtqADNFUT!tkXJwH&z0#@mhNXYO_1GRvyNTKl<8-f?T0@i^Xbr<=VbIRN z1|m$V^?;Dke z{aPNLyMM~g>Sq9(pShr@`Eel%lljJ@-Zj$CXe=V!qV@F+(8qeyM)nKqGiSoyNqlLL zpvhe~5+!n7gm1lV=*kF?dMUnz1=)Xv0c6y?qhqf*CJ2vCEA9ItoW}sqsR)%%+Jq6YfoBoBNq{ywJ?;(zov(M z5B$wQ=oZCsNsd)Zw&pa-blPqeqis&iADd~S5rjyPC8{`P&zc^*(*iT?HF5aWdjt;=KH#KOCv==)4 zvniY4IH!_1sV<5Usmt%->sCrJjF!_nN>!}5C`!UM?I;V1&N3ZyW3ddge(PFHQ#8)|g67Rt53)a1{ay^CaxR0KxDdXHVJ=H_?m*YGS8JIDktDNNheIld=fN>ZG8d- zWfpZ~iR)U1>;koZpo5rpR^i_rmXH*FsV2H;H;L*y{fN|rE?R#qEEF0n+rSz>J(&eD z_SfQBnYUO@-PVDthz9Pkm8_^h^*fRgh0~?#5+mo5bKJkujcgZ+ z``W$At#cx#As&C#vgt7P&-Xy#F<#iM%fzRKICFb26G8y9SWlEfkgThtJWcmVr1nnh zZZu?}ZG}amMtQehWH8gHGuyaH5M3dM9WVe+}<>qVR^;mZw!}wBst0Bo;DiyI(5>IV~zC00`-1VF^yZ&L=%pQ8a}2X zz04fEhE9L(LA8^5^|eW`>FkN@WQI?Y1bu>@?Zv~;J-FCG%S!-tZXK2hu#H*Al8H4- zu>!ItE9r~Y?omj-$UBDz0YP301f0isa@dKJOk$9kOJPp~T^3%El2cgA7IXuLNef#q zciZdBwsmCRgmHZWM8tZ;72R`{f& zFy4yQeLZE~Dui7Vp%g@UoJK^j-b?9;+i&4q60Ap4tpScXTG;nOgAGc)&V`Q9XE+bC zS3LXB$I5!eJpFVf@#yHO?E+~g(O|;4CL0`NSXjDGi?B^GO|Gq`*j`nD&^O`U&8Ea#4#lbSh4W?nnHE3A%G?i72=fT>rk zJU30j&^DbjX@-roePN12gfxXfO_20-^gktWfs+tn(8W8rM?`s&j9V>`^V$mD$jHohaR)6~Ec5PAs1FaYruPhGWf6bQ z4GwchTdXJjfx#0|R_4f90|#3}EOgwF$;`9*M~qb(`q~V|?9ma{r`W^9Ob<(&Q;`t4 z(gmh3Hl%{BzpUrOTh=2zn+XtaKH-a|?vx@v+xM+p>E(|)$?V@o3t9MFaX#IsCJG0Cc^7WvrRRT*>iRx$ z+-_XhcFCt9u7xeWRkOc$WTFEwB#tHoedrx?>VF|OK&7;UMm1z`ZHwKsI+}3%ZT=pF z@4PQ*hwB3H+aF+J*bS<6$l9G<2zSe0r*Z4F<4s=v#NRyzaq%8ss_5ikQB-H=({txm zb#lEtzeCmbfUh~?zG&w2NmYMMxZY{Zx#yjA&j}Fsl_^$@!3a?Jp7b-MOyb1$y7q%* z^+hH5)mBO##SptQ$J~`Z82i0J{*cA^NgS!`{blEiWBFn3I%RL3u}3&^N&MaeX&=W| zG3&#X`^+(H-g~jYAN|>EMv10MLOI)WQ_4uq4P<~07D9*g+M)2po^gNV)&=nAoWh58 zaXaAM7IN~OW@NnNaScN3Md&dElWp&@6KT*r~00>aR*-I(#iNnY*)nQ+E7~hWzw^ zKauRc)D$vz_-!J87AZOAP9<%U&HXl&Ju|X<8Ud!2>Y3$XRoCb~7B^{`;rE-p6IWA# zP*IyV=F5|^c3ScV(DlL)#i(_U!0>EXHIbsth&V++2|umL~bh$=^5 z)dMhJw7P%g13Q3McpB~v%x<_2fV?|8vyt5l9pf0cEzQCcdE*=9I_~+G+Yz4{a;|Ms z@fltNzz(r1^uC3XF9F{k%17~P9a!w4pDdhPaKg+peRhKQ;}=bAt@*cid}{pYNUA|3 zH@=KPxVL}#t)x)NBXf`Vi!Uk}2e-_R%Ux(O`)+^V&417MF|a!v^Do4|renZG(DOaO zfq+sGfPhs0f2Lz3>}^c`_avR#g*vi2%3oek;D>-h3e;_dWT2Fab`&@;!e0^KfuW)| zMqwuY0~4@0G8)&tcb~m?S7oWh7M}%UP9HUXD)M((!PCD>Q&#DpPIukX_H=i8uIe=M#cff|i25POCa&SajZuH=8)us4}*W;rF=2BIcIz3Mj9Q1loW*MMCK zC~Xn&Ss$FgIN+w#er&HKpJ+s3QW9>?QhX8ga21ImFHJTPQ=ZPf_T{Wpm}!99!n{PT zGVL-qRZSXW9SKEGoFN(dDX%7%6_%ZqhBBH)GP9JEMbeRk495sONzUQsaD~i5rPP01 z5e~ImC`=#J#vPNpHd@!+pK(P}lTeUGm{XqSR@15Bz)(A_=?>z>@e0YPbfzox6)jy( zCSAylW z%@}TD>2iKQK7QXw++^IIaFAH9L2-W_8qLn#L8c>(?E<6+bm=lJqn(l@CX%OkE5!nE zP_Neygnq4hkdfF;sEx`EL&YWu)jE>aP;0B6@3%uZoBcse=cpq=Lt0h@ z7S+g6y#e3Ngs^Ipz&oIfwKE(}o0fteB8+A5#I!P69_(1!XPcZqBw3%fZRdZUqqXtk zoLQi!aa?L4mV3dBZ8}u>JjuYcHFS@Jci{wQI2VpKhCIW7_sA|wPEcuPSy5n~evYrU zj4Y98Wg4n&7D|zvJQebmQmn?~bTD0HVe(u|HRHh3trN_`QiK@Rn~&oN^}#s67{M4? z_-hJeg+iO3ZD1ZF zoJG{WMrfY?ND$v7)`8?)t>Yv_5Q6$w3nthRJoO+0y6fiCbaNL?qrV@Y|KN`jzLyk+oj)_!L@wU&rAx*vsURNt z8%i%rjBl3PR0hs6M%7TJMEo z�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%0AQ2&BvzY&pS>@-Cw43(tw!X7vH!b692vaa%*c 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 Z~ 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

YS0|_MC}@ey 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 {(@i|MIZd9l2Fryt~W49-&Vf1nRG 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⪙P_QZ?+n{qhxF)mdd1HTvdDk#41mJ(3NA-+3 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⪻Z%y!Dyhw!N{JXI; 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 delta 1004023 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

i3LVIDHeP=(J1yoU|fZ4eb1-&DeoxG&?~l5DMgQ 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%0Dq~Tkj6)}7JYvd3^id`eN1j6B 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 z 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�?_{jph7S0Oy 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%0DNIFE`d9Z>wPw) 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∓U*kOZTxJ*C|Ewjx<8ae=3~-c zQj#oB6Pxs7jdXO!j2$EbOFMKNFeH9V9o90@3*n^RZNRR=+3;ERy;C$hxZcvaWYoXx zQQtz39|IxT*U54ZGJHH1<}85JYo?2s^CJ~0qmKA?l ze?o$ShNJ~hCf)u^6{F@r*F;9b*gwqVp2ShLpomg`>;~+14Ybe{*DV5P>JPoXZbr@{ zzOMf5f;(4&oS{|%z2tM^6^6BHenyOb?kqD0Iy^aKtEUFUP9s(*g3n0NZ)zSs7zpv4 z)ph?9`l2G^_?_M-;6iQp&$T*=o#p8Pe`=o*_t%Sl7MzD{aJD%^NoT7<=di;qD|NN6 z?*k)w{-6LNZ&3O#&evQ?=o-`uP_kEC$ls#+2ev>Yu?n&8UBYK(2vL;#G4D+4{Z-W; zoNTm3uZGVgU2qrVNPqfoW-Mhs2ocToUIb-KV+YX*Oe(nMxU=4%$(Z>DhBYp^e+LLw zNB>~=-3{l01%Tnsv<&YO1P3Y-3mSnE)rBgS?u-=&ot}X%FbA)NmSIB@P9Y&7iS>{l z?-WwU^C}xqFk@UGtPfnF40RK+9Z?f8yLEz!v;2YBV;XIVpN=s$DyEFm9yevqegB7D zXKWIU5`z8b9+CeYyJq>ns{!Yff3O1-1e2OAsw?K)?`-F|baN1q%&?-hY$65%jGKMx zD(3E&EsCYNrD;DwzoM6DA|nwx9wei#Mh2sqei}jZ-diVZ$&swgtasORoEoXA2=cZYn~AaO`cWe}y7^lRXGI z^!6jNOcd6Toa~0gMrdNqE~$QyxZTluR<@!hMc3mYi~08a9hIf=99uIXzjdP4boFX| z7^msE|GTg%Y-Y)iLuZad?bPo`xY{-Y;@~mEtl!&nphOS+$jb~c5%hXlLKF(mToVdq z4#MMU5o{y;2I&)$b$Dw_eF6o5KHsE!gdA|d<^>s ze`;^Q8`hiHe}36dWS7(~LauW)AP4(2f@zi3jY%`5K^@q3oAHms6OV`TPmn=D zK>lMvs^JG4xr~KtS%iv?%)Pw+!0lX2Nf_F7pLHd!wz!RT0EWm+Ofn1+KBy7>$t0AeA z(qql`yGcy6d|*iK#GK(R@f(bbHm#L#GV{qLm22B3mp71n_|&YgeK=GVaS0AGxjedh8c|VZpEI&_H=^c|3xh;M(T&;4Y0P zwbKQaFE!j}Wdw2#re5G6Z1E5N=L0l7w>HCn6#?IOdtu@4NYD)l0;2W5B7&Twv6;Ec zKM%GnQd?6{6-L)rjV_^Aw^B!k=*VyWg@2Vfj}6M6f0Pmq@)+E5!c7*NJIUr+tS&IX zc)ijuyBk8ZT~Znq5Zrd81V=+b!8dMxwbHQIIi9O1DBuU-1mEH+l|LoQlMsM!1jITn z-a@t6kdOAv>^O*6zYSN*|9;Woz%XO2TaJ6h2Y}aLtH^9GXr+gTa@1coucGgZQ)wMl zw`xQ%e|!$ssAJco!Ml;)X#RA?Ng^k4IID>2OcI6C{?^I|_0tl#Dau5;j6iD4qr$h< z`DcA$L7MZVSds@W%$UnblE(Uq1tG23|N8&1_RhhTKwr0DI_cPU(y?uKY}>f8ZFFqg zwr*_OH@0nb*wOsnn>SN6->aIcnfj{EsXF`be^YC(y=$-9D>-_$LZ!}v=0?;D!6d?% z^i`nhJ*lFGGndNKibRI<bTHgS!)3Sb${dN9+CD=k3rV!day+ z9kesNCi!wmRM8v!N&uJpv_n_D$x{i2N-`O55n~Mz0$WDZ-yRN0V_my{LHVhJRu@GG ze$p{ePpC6A8^}iBe%#Uvq!Tnc@T!Zq{X0Y1S^mMn4$7Xn8F@u-D49Wi5@CLYe-a-u z3H^5~6gdOhzt-gs2!7<3`w1<_rNOiFPqNCu`r)d&jwwemnmJt{!ciFvUiyT76;AUJ zc;xuOmcI)Q^cME_-X73BzeZ(@ii`B5grrt^NA>j+?AZ3JLo>i;cJQc{%u-xkDb!}?+zV}AD$ z$i*=c>`P!2!ANssMHZl7CWE0NN>5W-@<%0aOS76bp?jD^%zHncDz{iKdt+Rx#~)~O zBtc@#>D24gTVE>2TkE!@*J{+Zi0o!(>Wef+dfo;5?Y`Yy;^%Gn-$H;Pe-(`KoBmQ2 zO%vgiKuHU)nf;xPYL}c}v9n$20Xf)N+?Fv9oTygUun@Q%ow2Ol**4V>BNY~n58b$A zXxd=mrRxFwtetVhqn{$7r)R93FW%2E3tNR2(O7af>BMy-^^V8%0Kc4O&NpqIc*67O z;Ya2fUrs1bKo(yU3MDZQfAJPUC0nt>yG&}s|7cn6<`nhU&`AWMlErY3$7IctgusqS z6M^4|^Qaj#@}`FpS2DvD!;TaR7csD9W&uXLGX%mj*-Vz_HKLWCIet!xlZ;y9lrtMt zESJu^Y#}s{KDH{5U9A1k2I?hp-u5eigiOYUr zlFb_tqx$rJF~Awqf9$nU1@-*#Pe`i%q%f!zbU{^vQFovR&N}0E5g5IuhBdkkk+H>MM85oZxwALiexj)e;lD$_No~3z*HEh%*%cRuvNF~ zAnb%LV)jxw$2TEzs%gbP{q(V&b-Lj}v~Zk}-soT`^JvK?$q$_-TYt6un57Qr>YL`3R_th)d7YQXkAXWG$jg=uD zJ_V<#f0z$1{Zj(bLY#5A?#Qh+M4Mi3Cf(4u)G&zHs$FfLRZn5onch54KqezhC#WQl0Bn0`rt%nf4^|Y78={0$?Uvpx6)$8bbICOttZ4M zF;r`?%Tj^9hp%_zC!>BXQ88qsZ9j0mfV?f7p~|1|@T(>AFL1Z9?&u&F&ST$xHs+JO zB1)^(*oPtz_@@+C2lD&|NQ`kn6e@oPFl%tTaMY>#Mo#oDTe?-AU zg2#Qqr73#>n)?E=HW4wT+bx4Rx(CK3sTHJ@~O?^gFrc40iQtlIWI2e-g(99uC*_Kh2Ha%25mUWaK-bvjAJI7shl!-r!hv_n>HgHPTu zyQYH>eMNW&%3k{Fl3k^YVlhkR;_TKubwisEchYWx-qr$2HsUsiiBcVpan~!Ixt}6K zAn7`DC3Sk@GMx9%2%9YB=Q@4xLiXC7MK_G;gYly$)3=;&^=vQ&e~#QrI1Vo<*mVwh zzVUwvtKUXe9hzs2a{ltSVQV=%neG*U)SY7=y*l3$SnsFi-zhh}+dc6dhl>=t8hV`J zay62Ao*+&x@1T&}IZfilh^Thm=^q8Z9}r_C$#;|Wv<`+s1rc6>gW<=5N97IhF9WXQ`B)xEUSpli z7lWw2r1|E*lAn)R}GenT-9Yv{>ee`K*VWUd@2U-bW7isYh>@|YMbAO3{M zl|r8=)0VRcvOuOSLu0{-_hKYpK-9M6 z5c2Oke?BM`$>l_0I6#)fz?WFiawjI>{y_5PfGYI+m^i)v+cTj*4g)$R^T5c8DfTY% zK!8%F!%!w=sZDx`C~WP3yePf*$FYAi`>HJwO8$(i-?K(USIv-?PCO}Zq~DY2bfKz} zM0sJ3f+R(5;Ly1oJ4l;5Y*r#-b|BJ~QK9&+f1_Y-eD#^gmK65BdnZoz8JfKj)3L-8 ztFM@*BUw-2C`f&a)<9I;l_3@6)=aFgD0>cNU7lT$&AG7dimxx#ws`Cco!^;k;W4k# znY~lyb0)eWk`L;6#NC!O1aYpuARFH@6s6LECwd zIAuNn6M>kMN{H|tnbF^*fX+L-m4gkPCO;ECS`ei!32%TFIEX6bClH(xgD$<3^!@lt z?m#g=E03fg1*Ku*%$#t5!PQL+h>B+$f1%1aNX`&eG-edoj(_OJI1WBXVdB_RE1Rww zEHZ|9UZ^m=NsH+Ug@c^l5jli*zN2@!BXGIncew*s4M2rox2=2(6_<9ox1=HLWbsZ7e4&E%Xlufs`tYn>eTU2`vK z^zQY#0$C*Zl^D!xvY#2s(*^n;VCl0BCn@mR)m?n%ps3 zd~kDz=_nLujWrU!)}#b=_3b*cbS3A+b&G!oEPQ7+5n|I{=6ra6MI<$d9*obZnH}Na zU=efoi45y8Hz?8*)>i?~fBz0z>*-8xE*eA{DiooL(s0kOo->g;E9%vI%7K?X#=3jx zQCZOQlTtlK*`@_J6e0Y48w8vX?v~hrtyAf&5Xr|=H15qUeBI?OO`CAT!D+s{%fETb z(BJ_38Mu#QHF=f*ZXy$cqZbprvdau(BT5CbX_SXU_wm!lLA_Vbf46K62WHU|#=`mp z$W>Ff%zLAnZMYEz5q)(xmoRnw!5?&IHmra$MS0h{sK`acoIsf%R2=XM_aLJa9By>= zkgMoJjgow&D;RpqMsOVfYMQ*CptVvppe~Si8nBL#NRe}O4g-Yo+%EO}@4Q$VFfVPZ+tRAAZ|sWx}MHs~rb zumK64Z0*c{flv_8CaV`7w{ei5a5D*!mNgx)l}>TAXbNOR_cOManQ(M!wE$e`=8&d? zv=E3|@)-wmC=?E9@n1?yQNuN0(Up_8_4e3X@=z-T!0Jqsg&kC3grQAcX? zYqOiFZ2ethyE`T76Bi+x^?Zi{TzpUAgk#IlVOE{&UEmv4E^r-EhbgB8XDtL?t0y=I zk@eV^upzmXGFQ#YdS*wVS~KKy#N3tzRF?vp!a}u)&CKoEBsDLmC}3g-%KuiBLC;!7 zzd=vzg>_iDf5(Dw7(p65Dxp_$at#NmK_?#Za;{$+@1Lv7>W!fM znK2LGCi)xR8B_)bo>wQ;9`5MAT(Jj*Y6jLn?p~-HZnsBzMOiaZkO8Kv6i%1~Gx*zw zlP9lj{%X^tiHBFmSQRU=#=XqRwvq5>2wnB)@P9a2fA49tnr(f2SlXD%^uD><$!Bxv z0Q+JkJopFQfjEk>G(pYk-zo*P(&cLdF_dLgbhBaDYDy?gqmD$u(s0=?$pzxbY{Zkg_xZw-FjrN?&1ky)xg-DM3%zwGt! z?pW-7wx=>vC7XLWFSUu+#W-l@T!KklgWE~Pf41l(HIP$kY9NlO2(YsGIN=Lc0P+Jr z+jAFJsB@U#a(Fkl?y{i5R1Hg(52lGPn)PV>*7_yyl+D?UTw1Wx8|Fx`v_6XrAD ze@Sm88^FhFg3-%h`O8+YSbE&pD^UF7Q70plI|gdQ`3c@|+*xf=*_(`f#H{QV*I3L+ zCk%kr1pEy1Q9bA;KLqE^*U_bl&=pE!9Uo&%yPx^=6E@rdK{t z>=#&mbGziohNMU$5Ga>CO3P=HAOD3Se;UCiP}!RFoXsdHQNC|ix)&cjuNTsV@f_?= zcS_NXO&Mcf_jCW9qQ|N-c7<%XpTJ|X6-{-Y5?C)yq23>5-&X7%PS_0i9GqQ6^o7`U z9aPc{U~*v#kh9mbQ+Ia3iu-8_iJddIx5?WJ*z594WA-48?wGVQY;u~y8|;oGe@UhO z_Ja`WM-HWndyv5<o zF2t+HckPl`eo+>lwL$rZ@1j41l8)|!RMk^yx=eq~M+@!6^M0A`&Aq}$lQ&_vhR#^p zin^x%MLDLL$i1&v{NxxVLzPuue_$cf&eP63S2DR6KyAizEocZa?B8|mw%oh*j07GH z_XFuo&Kp%yK4?HA?gnduO<$S*_QWDqN})3vU0RxdRI@G{JeS!1kLw^29Dl2@&}US}8XR&Z2L`^lPPcIsF2rl$9yWq4}BizTo(X7f;{Oe7HaWMO*D^d-3L zs^yCaS>om8%P2!KObSBue|Iw)>;&F+A47k?{~%rDu;3fM-J=~%V; zPbMqq($T&;hun?{Kinj@cJ@lGtL7_L3OYz<&H+V$0hT}{2hubzsJCGSXMnK|Avr<=s4Du)mB2aBIut|kF}-PB+O&~te@1P47v2?HGq~cp zE7Jbbe7}=KxeKC>I3oRm{VaO0#FqO58!xn)bqQte3Qlv{N^XjbEs3#}*(DL*%6iYh zRjuitRB#|GByd3*CN&c+@|m)4e9-~qg|^`KWfVSLpfE!)8QL1>i3~8l>I$MKSYb&o zS6(+)d%Cj*$AI{_-&2x85K)P1Yr?&`q zL0kTB8NV4@{cJJ2@a1nJ*E~CpHrLefr)?kswt6N ziooY1)q#%e?5L~JeuVCFk1Ljvyulg(@~z9#KOr4|D>r{-Gnz12z=_P)IhKS2?OX>p zlbYl#ARGt(!K=h8kOU7dP3`0uKk;@re;7&b(F2`p?8*?T^?ieJ9ZZaQr@vB-&FL7tfu8>k8<`hR^DZ&`-C} zuN1|B_fuZ{k5bM4*}|H#&5Xcg#Du6)x$_n%eaTg}#Vx1M<-Em;Kwmksh)mQ>2K3FP z;;Zb1O+@eTM}s#~mGxAU#}Tk?OQRn>bjQ37HK@I0nHw_1T#F36 zJ(~qDAfJwS+?=UlSKiQ)tCL5l+KiCSmU}IJ(h+&JUyod3@1j?)msO);NeY8nM$2{M zb7Jgmc#l6iW7#|$$fw`9E+l-g_3csvwthu-6l_|6{5$olG8EQ5D1C1OmJaeiQnICI z8|hGPf1Og_jDrP5h$%b)+Zq)E$6QVRDwmYMvzF9rHVG^e=uxqr$Ik6@k?&Klt?Pv2GG9WDQ0tLY}S^Y#<;%kC{+^g#4Z>rK}V&eY`17OZ~% zln+raHh*;LBy5_$F>G>^+-#M%aev)hf3Y=k(Zo+Pr!GrLfmE>9qd=Oqwzsl;aL}V7 zZfyT&-Qp1{N7a|ZVH@r}!fi4vLpiXBlQvih%%q!&z0X6UTR2fW8=2WxU|X}7u=VnQ z7HF`~o@u`)A7-|PT32LpMCy#@)M~hKG)kuFB}vXC{o3F?q8?Oj>FL~FZ%F)$f2vMU z!6^|ZcU;lNMbJW_)I_jcNzEn3xZQZn_;C7@$C)nQ*n2InXaNioqW0p$_d)3fHx~Z< zYX5SK%2Jq=syaKVFI0>7;K-yKZ%V`B7DWHe+a?ncJ@54uhZ*8$X$9$kUlH!XyBkT+4W3X>vJ^z zuD#%bqf}*&$eg`wJ?32{EZ3$S2~-~M^;@Q5&lIQ0jI3LcvpQHqlo}(h(w{D?)w_O9 zF7}->Ocei67*;HGNVA;Z2_~b+QOZ+VbN8VNT{X#YntCp-br|r&jXM!vf6A^01IUHM zl9+5z;K(t`-425rKIa7H4$luONz%eK>9i;I60r`Gq>C%7Am`etA*1C>D(hy)8s0iB z8J81FD!L*3_O{Ue@`s$UL5zaQ9zURo#e5t;kCEaT*Z#^Q;7T2j-G>+4+)PJ^8sEgj ztft|6vvyR>Q<=pT7)COkf2*~h5P1*j@aO(p-vY!4S*mL4e0giROG%_Bo|rCTmRBKo=q z;=Qd)pji-YbhBBA7l8N_iK~mW)<1Y4x_RxhAfb~!)JX1^?Fx{jeOw#u)*7KcGKeP6$HtQone|z-EVk#lva$ocIxZB{y zqCjPPP7HIG>Ti_o5pzlYy)IYdD`AG}UzCaym`6Kgl3V6(4()Jd@^qCBxk}vMBgWI- zzxVy)>e&kZJ`s2VGb(k0ROroor#yWr%n$Yc@dR)Xj6cHvE48Kx2qk{79_UP}M6GkN zwnhd#|5B^Rf773N94|%@|l(26lwVL%Hgbyte>@^bZDT?40tK=!$%;R z5%Sp^^4a6j2m6YHacu;%t+=A-1f?6fILi^b(d8z!Eh>C}@s1noTJ(PJlrQnRgX`2_ znN6rX!TfIvW->4|(Qd?7FCug;PXcs+Asl_~Rr)RjeQ0a%(!2z4|^gHU0%fj+Ra0~LGEuyYXE8$>@4hMkB#(l&8E2}>$n7hBe~JCdVnzNM9lZi(Mb~r#v?O-O+XBqZ34H03Zk9b2vI0rC2|9!C^i_%WVKm8`iCmP<~ z8g5G&ho*w`06J`a(9E|dhr}R|wL7-w^nx8he^q}_oc^lNEar&fU-;A)B&YaY{0 zQ>*!naSm6`#U;-3lkF>42@SbWX@V~%nUsJu#(YZuUv{E2ASvbZ90p+ZuL;YXjCq-* zP}4~wD1nu2ZuTc9k(j-U9k?AbbpfU=VYa?T?r$eD!`+dZ?cv>>AwZiE<<3mtxgX8n zfBcE(XV#vg70oi1IZovUoiTG{)xXwJWj6Zh{Q8y~;jC18rIs>Amr7BSEOt2JZTC;X za`S>;&&FTgd}W8C1aU%1MV8)p;^oMt75vik=$=*?|4z9vFcBwDi*1c3(mz20(EAg3 z2=H+;J1ne5w0gY!rEl8RN2iS6MFDKWe?b>)H7E`Fkkh-*Kd!d8XI#L{+*-6D&U9{g zg7#XS=R{$)>m?Y|5(POLU%oI_Dr2yXaQD%v`>EE!ZjBLrv&b&|qLNZSdJqhFCBBX4 zgj5B3Mipb&&BWl(+M&en!DEN3adleCtOyeHc;;EAmyA0{#m7d(-sTR0wJgXwe{leh z3-K$3#TGrPW;5|j=@pFYdOv~zKUbS;0E|6`w1VpWGYh@WO{MJK0xyy7R6r?2d(l>M ze~VlAox7LkD%ehLKlJO9sHCHjZtVEp>`y@hRVqWFk;DANaAHSmG6@?-kwr527o!r59UBdlcxv(r4 zCNzxVO|sy>%K5EUNIpLP*dWU`UQRY<`deH(K;3m02t@e~e6D_aeuI4__V>LUO8mIn zP}VEEfha*#x|xA+oqWjY6jeL$&+!YPbnuB#V3?Cu>X4!mUL-DILsJ{Me}%2$i^xIC zs>dlys`<%q^j<{X1FO@C?7bpv%9gAafU=l&%KWQ&84)Bii#98tz6nwDx3)b6V$Gbk zcNwOk_$CXxgU}l}9&mew z9Sh5EJ3vAf6QiORHR_7MwrM>;l|Zi)0Iym_y9 z(Ld$N6URbP4_fw2weRmclko4ut)H(IYmRSB_49DD?2c**e)ZrK%_~24a-THk*5zPI z$KmPbRrH$)6y~ye%NkJ76xOta+@QIFW;#@;RiZ=VD*2R-FZkRbf3MZz4;stU^iufP zQ>7N1MKHe{Uu{8KKwWBp@!ic)EyE@jWvDf|4Rb7IN74(^VRi zp{Z(*BS)vqAjnFje@rz_i?W7v9JySQ$I>eFCZr*eZe){JBMbVd1gZKh}bXsXaiZv}nO*WU*r&bp&q6x z#ng$qLA~w7UJuP%Lk+q+C!Jvo^(-T^>BPmd%R|ck6|%Tq!unAD>ZOXy+_BaTStlj} z%f{$4e?y!P#?Uj8TnxWMu$)P{aaKXvGFZ`sf+~&eoD|VEsXy7Dj>P5`Q9uf(YZuBY zG-8~qZfc$g%f7ix;Jl*MuIep2E%z$ng;eN|PjCv($ct=vqpZ&h7$l`}4NZl7oPxU9 z#Wxn#>XWXGm8gC&*2~-l%e*JmGsk`68`>M|e-~CAts;Dy0vwjrZw`oa7kjB$ts1(w z6Njm9SwfQjpZWE#w#=l{6||KFw#=2o`)CdgP8;G_*_HMvNN6teS{T(C|#A0xH1JG{VwBHaJtoOQu_@F+d z+Z(x>r}SI&@^WC!t-p;|1moh41fh7!%F)m*XjALd%BoMOGoEUgQCQuYT5_v!YL9yv zcs42^rIt^x%?zdOmR6Z??;etSO*^8>$?1m_5e8`F~Zx=o!XP zad1l2%TQUEo1t&iD)Dl>O_ddGPHAd*llL*7t7)sNFjJyX`OM$<^jB8v9v9}4cUd@V zyk}PL=@xv7&Bn+4MU8`$_{L2A?NP&1WL%g-*1G+jtS|e!Aky(?xn~5{-w5sUe?WJz zUio1?d~OksXn{vuK*%x?RPF445vhm1ntsqjfPw8nfr07$cm9T&vBm!;t4q~&S(LyS z`=-Li;45Nj`<=Al$WnV<5|PG-1R6#$VGbLhTpY76X=#d~?^xj7ysnM6XAAe}zdGOzX`HtL>-@*o7Av6pdZu5!qZ({g{;Ob4>5u#XS zb_AoSgS~TTC|7B4{A_yXngXKA3}ud58OK}1*P`;oY?<;O^LK<4(@VX~l{o|aaoXJW zhd&k2PE*EERYK$|q%LyBb#+J3K zLEL_!*mowmcD;6GD!*~YVtbt#y)|mVg660mRe{^2rpqR^9`EyEe|4nrLHUxIdG@p5 z!Hix zk8%hMcs#;ybuU| zM)U78$dqDdyhBINCH=x~&pk=#M{Cne9N{1sAf`4B{l@7Bf0NeI8#MccoB5a$Q&%vJ zn&z215sFr-zBwpw2M1IK)6`~V2<`252&k+!giIJ*cq zglzY9x0(m^q14h;74^=kG+$f()=A8BT-Cxlscn$wf4bg72^|VylkHR&IVe{K8*nBp zC#pB*eg?iOt1zRLUqZ{uSouh_ONW216&wE^lU$oBWh1FckRTNx+)|gd} z@#iT+SIsp1b-Bn{6YuOkKk`a#`9gkTw@N_SA*nBbPCIqmMVs~-kkTf+ z`PI{;LD9sG+Iuv$zNxsgLZ+ZQ7QLZL1MZi*%yc754eQL|y)X6{C= zR(tT*FB?c5Z5?P?IVp#Enq5}?Cdy!sk%ngi-jk|_D8@`iGSs#AvIm$)>R517lZ!+G zHyo+n!!o>9i)GUtgVqZy0DjwgahU}VCxBPU(m>c;)j^K;*|b=v^hv49jja%ie`|gO zSZFS!xB5uW<0iZB6ywEHN!llo|7Z3kI;%HlQR$}y&mG%^BYlSY_nS%8-3_+Gr5Nm% z|K@mix^AH1SGcj%+*&xPj=Zk#hE+So1mLP}AWnk{^96j9%4|D3!TRw6&+~T9UR$eB zEtu49S=W1~Y+8NBTOTdPF5TZ^f5Ve2{EM9){?ViJb)Df-^E(bp;Wf+(UScR7oa|QB zE~%?wPg4}R59Y^!q5pugg7b1{_7eQgS{o>Kb7@+oe0GG5iG+21x3Fig3Saf(y7Z@z z2G{DN}Ae(}8%-Wn6mQvjX( z=rseUjnTqJ{-fLP@e%!SMsPf2M5jev<(V4RoN_K|{Al4H+!}yb$=E$OF>w{Cp5r|q zL-*^9`k3WP!dlh#b7t+If3e9-I&kZ%ngxNRQQHTBzKkM(`<1%emAA z*X8KXspe~3*2i>*k5L>*ZEFNW6ZM9$;g~w2^!O&Vi*f)1vkoHXe>O#rZzUYcQmQ67 zZjFPyu}bdm-KK{7<6r7}e)FTUMG#Dv-BjZ~MY$gTnD&&{N{0#q7?Ml>;?M0K=-IgW zr^nq=?QA$EIx_c4E~j&>eeE;)r}MrJIF#Axb=;9&d`CkO0f=9`??QZ#j%C=x%D290 z(BA(`5oRunp?3@pe+G5}_5VA)|DS1H+SShGe>a9#vs3&Z#!{^qGE>U5OpqhkpeQ?K zBr$O-3Sk3q9neoz^gf0$WvqISnQg2gXmtPZK5&GB*MZk{VzZphRyaFA(K$sM8z0~M zbQ4?C`{C)T1DN?8dkoly2#mF*B=k_!KE_j$752x#iI2F!f5Mc=uDe&E<;KFIU$BMq z>e_r;D24p$VtT4xsyGwV^oz}GniWME4)0Oi9a?forVXMcWspLMXoTfi&?w60v5#IG z_kQoz76+mpsesElC{%#iGiJunwVpvk~X;D zGMJpn_z3tFf6^W%j4&S-J%vEB&wwfGY8J89tl_dmSp6aC)dLG_s7?GiUo%kL2?RF4O@Q{B9^;a}v2-oarA^ashwvw67Qt>I}Hl{F*RdAX$l3jAl1;T-Tq4 zjpcs=3!CRyM8lRM*hzbSYr(WvXH>5Fh4K4jf8GmYM(hG3$B%{e`3D>L?otZEm<$RL z{VYy=17Hg0wf{usCe}O7iu;P=075{$zfHh`bLz+|weU$^u3OXZV6h0~+>-3jwd9eRLbS8WwFxtR4YV<8ugCQV`-1W} z#p%7hmPj`no57i}e7WAdeS0%-2zc9_5(0Mw(|_zl6%G%ph*NN7A)w(kD<-}2@@jZ9 z$<&OgvYPJj?WMQfWjhL^YS-0cK9QTkuCtJv{FbiFb9TsC?a1&s8lH0H7@!Tc7nSv`!TxU1c;YdrU} zvoVFR?NxK*HL*#!ttz-MyOPr78?rh$59j*-pT5H7idP=<6FuO6O62; zN!LHioiEW-Zy<&Q3EPH@&W=)}T84p--{Hb`)9QAZ@BmglYW^D#OOU4O*(aoNynjrz zh~lk$-9(pty4h2=#F&lKALog#tb5tXgI^qNl$sg(XQRRd3kfSuI38><&BB&xK7%;L zvV?zfhGfeG@?Sa>jTaw~O`Fi)_=j?@QF@{JSU=o&Zw9DE`!t!B%_*QaByM#YRUr|z z!+L?vh+}MVpba#81oVt0$ND%j?te)~Q3&x_C)z=?HMvs$5&8Fvzt7&Q70HQj0B%M; zy*OjZMnvH%kfgvnmb8b+n4hPBX!C*R(&xWTs<#+1^7=!6eo)MK$R+O$tVfaFJxzY` zL}r0S-oiapPT5kDUmWWcy>lin0t6zIDk=^l)5I0@y#%7e!o7KS=u(Y{q<;aI>L~dZ*}$w{ zrEUge;BsO1L?z#^^rEyKcz{UNj6o6HQ-w}w3u7zlOW<+;MiV2Wii8)HuW+n3T*aAZ zHvJ%B*)?oiB~q~YEenAUZhtOyy}f}!d$hSS!pdZ@DXi|v@qMhdZAw*&hPKWEXgaes zqb|)N)Td8QmbNHI^++SItIQXPtM~!*`^#3(rqpFHlzX1V6Mv0Xr)nEU0+op; zPSeRh=EG^Un#z1jCX4&-cc~P=TEyVNQ>3}r>dpH1!%kERoK>c?E19t76z*j#r9F0X z+PwC(%P{BDjnfAGbzM>@X~0-jV58G5WPO1gVGkglM$)KSjdC3>YOK1usx-rByTdN^ z)a`~*KHkUC2Zdz@xPM7$5fh8-rEdMIqRtFpblTy32yCO;*y){DR&5Jg8BMqJDowmb z1w5h6u2)?-`?)JS1OImf9>G1!*uB8+acVz|gDiG0&QSVYNm#k7FRo$XqBSAjqJiry z99elc6_VgsbnoE;!Z{6>;AfQ+QK(#CkddV~yIyY7vJ4>Rp?_Cat3(r!A|2qz1d(d< zw@jmV#(8Q|)pF74?2+Z(HOBmQ)r~(4!ik?w@ry40$WGyW_)UJ|je(GOWbEJ-X+N{u z+#GH7g?#nJ%~wSM?6X21k=Mp)4m~gIbW<@U)dJ_hmVd<3Gja65O%XvReI>JSAAG&B zPRpi!*l}^AM1L*u2a8{c*jaY`0A%#oF*dDV%y`93 zK2XnGQ-AvjsDu}CLVi+)nBaO$mSa1vva-6p`b1*9LT`UZ=DwysC?aP-d>^1{BNpy0 ziZPtO*Bf0uipLoCHx%wqWh5yn zq*D89l)(hCaIjA~bzB9&rMe_~q#^$ngZa!{34bW8_-rA`gtDfE22U+HYse}JRhr-V z6%03((Gk(c2)IF;Wp1`tVdOz=HhJN5et5wt`>3$l)?Mu6a&1P>SMkjswNUGQI%s+g z+BhFMB>Alf`mTP(`#iqD^@Z3)dg+z@Cayq;rG0zwK$+VQ^+8i}7aEq;-^K`xZjTxM zuYaCe2U&+_;>ciNI1FH5a{q0F{=ev42i6E<)$7Y&+7fg@f+YT2ol$M(iM@vbr>(N<(F@Oy;!8E_?Cg zvQmAKS$vmrc?@7HUSD6nB4r*mf0^Oy{eKqRq2GO-FJ*#Q6PXK93Y39V2ZvXZ*Fxt~ znU6^$N+-5*V=Xl=Dz2&&f4Lh2*5wj0qv<3mZI_n2*-#ZyEYz2wYl|w1Ez41E?E!$`PW_z|3+x>tdN+T`|iUxv=GXQYshi zSR(Kktu)ZBJ{DhFC`PYO+9*_h#D6FfDt0lB$OP*)ZHfzii!?oZ>#)MWZ5+Xof(JI&jD+zq^K-+d7Lx%3Fb z*sP@XyM(t=!X+&)ChmB_>0Eo>@1~#$%fqNA2oc=Fge-aX_L@Znm!n!oB7aQ@y^T0S zd$3GO`?pXBe@N}Y47e^Z6-02VbS9gvv$4d`8kn!5dgo+ybq$_-W@647W`$TiLBO}6 zlAc*IS;xultrD$Ez(H~~%m~>9+1U^dB=0keHzw!ckXNFl=m+7b#>6x~&8^SVh?Z*_ z)g$DJJ8=-MCP_BGyJT5S{D0YHa{OJl1mvsK9wWrwFX$)X!Ed$b()V!1hW-h4e1PWD zV6if_wLApwF|kbP<2HT^aF!K-VF@he9u4HL(+;^GUmn)VJiA74P0&&}A(6NK;@&CQ z3+ad1k<-fF#phbM*W;Wjv6ZFZ;H!8(uF*?lP_>Z>skC>YC8WASc7Mf-kH`;o2IfB1 zyt^fp`atdky~DVzgrwc{l9v8{p_i2&pr#7$HoOu*Uu8urB1)B#QnjQgo=UDJQjb`6 z`N~BBIVCmq;-xb?w7+@BG-t}LpU9Gy{$eotC8|XzmZF%Ytm`*+l<=#uqxsWUjYARD zJ%!6a`=8y=Q-y@aMSpalq9IqMpV+(GVrLNgstfa}sdSx~YJ1j{nTUT#s?mmj)EL7h0)q(RuYi-XsmfydB+ODE7iu)wmK!1_F;8$rR zqjjI@DCvxd6w{*({1y$xSb_kZjkqV2ypeFskCc8%$2<@gSY8r+_I%zTW3=6L75>p^ zIA2XrKd_iDB!7PY5KfTfPTDsrT4{pboQfICoxePeO|1!j<9cSKnfwJtCx~xIDw4pY z{5^xBi_ktkZ^#0JpXpB9H?CTKA66vQ%Ji+82W_i$9O|pwVk)9%EqA6$^}!Y?o%1%U&ugxH%h)?3Rz&XX z!@qNC=T{%^%(e-HVxB*nWn!W`fQITNzhf-bkaKFQ$0SpBns?>9c@;a3hyr42AFeLF zz8DqX+D?`DxSNCahSW2~FsYr?6NLJ1e+xw#ta^(Ktb_V0eEKyZd2uLG4ZrNvgU}mV zL;Y&(uYcQDd#6OvUmG@m3O_KO)*OwWiI0}(MNM(NY{jp8@#iF2(L;VC_01`nLH{ry z;$WEttx{uwXcLjlku49!;L)z{QR4ivgZld8o26xIT1RI<)m!(cFKSQe?i0w*pAQBu zSYLR|3?BYD!w2$$)T`8#NJNlL_~Udq^r?XF&wm^81yZE#CL18fs~M1AY@fdCvT&hr z5jWxWj~dY4U>hWr`yO?T?Gp20r%lCCC(8h}W3Vk9D*dCy)*nK$2p_S1yL(J8_OgTA z4m28y18l;f#^A4>e!lUKg5lWbr>mF|;&nbqZ?)5>Q*QNz7AegSFQDH*zmx4Noh#9t zLw~JN()XKf{qG;HAE5z1sIRnX3xN)@{dA?rM{N#*U%odz&^@#_zKG`KJjO&unubn| zIhIW30&aXd89tOZMBnMy%0JKW2LNLDNXh~!jdRk(ok2uvVd#s^t;w@`-b zG|aRnWfB_`zleux8NvxfUCOO9d6EMoO1U^0Ya3SPYQ%3ZR%^HgWcBkpIj-%0p6@Wd z1p9JV!JH}-XuOmoM_Fq2!mB0>SgNMX+!`k{}MWsSGO$`4X@i zWVh~(-^-jxT7!uB7Rfo{X$HC3IDc3lrx#Hg__3gZ%_y6)+Pk8lEmheEv>MdPOSkN+ zBvUyk5&L_26B0CuKeln=$S%Wo6 zQ+uW>_#9GI6tMVtt8aH6Nw$Lr*)~&W`HspyoietnOKy7H=n#XG{WuQ`=kBLc{RFjZZNx-YGJYxy#$yMRdqo_&>5#3A__VZL6=hXu>AB??0*nBl|=)WCqK5_ zZo=hgGx_@@<9A^X&jA8w-y&^Eil%#{OuNLv#x04H40^ly2Pg4lu60J|S|MoyJ*$#Q z+NjYAx?N)~$M9L^t|Y}-pr@H_`uAwjFhtRjmgby&Hq0THZHJDmF)&s^Fa5(^a5u|B zab7`J^*q`;6A2~hvwzF|u*UIFKtRZyCVI{N@Y?YZClK!5B4n2$4;Rt7-`6wE+f#a8 z$C+4Kj6LAFWJ$A?tRl12TaNrICPvV^h1dOC7rs#nRgU6`m@L5KJxEXvQ8jsQGNXSZ zTI=ml8xTL3X$H8_inwsmF%|uAf#y^z)i)KDQFuBVo@8Wv4I%EDo0hx3SfNFFusOFV3mG+ zlRsW%1YgHQz!nxnLkXs_iZU=v7ya0I{Sg#Wm16@O;M+{+@Qr%Y5cth9mVmYiVg z9K0UEhqoSc4O0B469-@s8)R_~A2#c+2Vnr8CIzj52;hwVws$IwNIRR-a?Hxs zdc@sqq*@qFmJEPu$-FjVJIQNKn+Ny4o(aIpnk;wi3Z?<-}o1|IPYnC=hlE*AdGB))}mDTij@ zX%2f@nSGhf(HL-o8YqEPG&irE@uql|_OULShUZ-7$-u5tV$WGJytey(AnQ^p_nRq} zw-vs7F^GHSK#WJwl%Lt*$G0h4G#X=jx~Lq3{eK@Q>AX3*C&M%UFo*FG^~E2kmlnCA zxZjt@y#j7^WHRr4X0A1i)q9j6p8kv9YIyeuaPASS*kcK`hd;F>V#YKWy}?}p7TZn* zzetBK)1YU}mm750bJa%=VBFJ8aRq>9+%?SgsBH_bUVc$o$(#md)kILrYZzVXFKKtP7TsE&2!BVtw~V=o?Q_ycz}N4C`{U23u4Q$HqTXX+ zJXTS-V}BZh!-N`bTrzg|JI}n&Mb^|@O*&093-I+ma${<+BkJ3*vyB3U7F#d-PO7{$Dh3_199o$ED% z|F%5schEke40+F&E!L08r^9too@50?dCrT}B$fLO;Xb=9y^X~hzItS8_=L)Q1LE1{ zglU~+MBY---oUMSV1Bv2ond@o6|BeQKD{dh0Z;n6F9%sRsI7CN-S0h6zkko>9_5U2 z|DHQGiS9_f34FrbFFD|%er^+eeV50X;=nR}F1p2~ndDWPnjdJt;N?#7h7DzPuj|<$ zgIem8eFOR48782>JKoqYjzVHK^zBKzZB?OK&o(*3$K9S%d(xdz#*AJR^KgntFm89i zWZYz*%;pp>-JAn*O2KzH*?&FCa$n`npDS>R-I_vOTOT*s|8Ng-cbmB}DYgC1A8nuX z)pdsE=D#j2ng96xt6UcnW-;;x0strj{a?y;Cn0kSdnYAx6BFnEv9nr~wd9ZmP<})` zZ-G$jb?*YzOK2todEexP3PFR5^Ce`E3(>=_lVh#TGIMMq?0!g)mw(TL;&|VRqRln~ zg+J7@p0;1T_p&)M^!oaK0q)S_65IV7*a_hZ!x^mIJ5O3eIO_%PZKK+DVx6%7`OG0v zG1tJN_XF0Pu@>P)^tWSrY1vG+l(PhbJ5WQ_*ON)xq;aT<%rztl0*tXKz%AHeq=qs> z7ujy0RZ=ed(MrD$hEzfuybDr?K}e6r+1tY@LR%E*jm6)}%9cF zTrR?LynDcE2k%~1*@^5PNFJZWGiH3jbL)sX*!kdX1JNZnIe?_yiCQxmuwPI=gYoiH zpmc!eOt!5En|~)6xah$<2fSnP8)J3E`?tK4PBNrm8<}e`IBRoWgi9+jwe-r#2n5#D zbY0RQHa82ThnqU70Uk~R?L2Q(X0dHtlf;Io;_%R{{!ne0@7eNHe6(Nu=8$#5x)18H z9r&r*oGy=uYZBo*o#2f226huS!HkdmPuxH(!w+&3@PA*dQViK^DxXhiQ<^Jvcvh*J z05*^Yu@|jC?=YY@49pQFOc82)IrWg;HS3??IiLy%lWT=P4t-}b`+%ul36RzCxtQ2H zKc?g_^r>I}mSmjYr$7b+1^`$A`wyc0e>^5-o&Q2P4^hZNgCMA|0^)Kd4SCgDfO?;# zh?L?$aerw9I$r2CKX@zC%uQ=B+iyhQ00_&+ei8gXct6V70fl^OV7=&Ja+}@uI-TBm ze?I$!2Y6J!9D;NvNvNNX!3{-=t=)nxV2x4eRyl+1qPT{Qvs(>;^4 z`Ac3rj4w))&B~~~9~0W8W$uX!I5mhWi(lzci4S~$wT}U925Vo4Q{NBVP|*Y7F+1oH zgn!K!txfVm?b73OAuHObNRH!)<&bZx_3OFa0tn(?;xGFjls1E9I1AlRfy2a{R$ZKd_7YYWgMOYW=jRaF%5ac5P zBMR42f)hvQp&DWN#iiBFeP_7scQNnRih`H1q_zqVO_i%uBuG7;443W($xd_Mp z>03tcL;^2 zv)9G9Nky`UtA%sm4{*E44{J2j-L`YXVcyQ5; z{Wot+7e*&vu{mQLxWi_gcraGvl7E-J7yCOhwCNKlQ36)fwtF{r2XsPK20YnpI31bmL6;c|8GbPKk)v^UQ5u=5*U3M3+(fBMJ zNx2+=^wL7=+0Rv9&`5PZJ%3|N!3C>Xf~5X^LoIBkk$zVZq94}UwuQ$^s**k}yGoj)3Vt)IGQ4O3$;8A9qq zfB*M>LV0tx0?9dYiGOldKYcTquB6Oq#0y64S2WpLylvV|cI2Ht@18tq0yFejROLJ| z%EZh}stJmgp_o-nKGTnO+P~nt)j}&4bsLgQ#UR|Y98Sn=*HO4ZBM(hCV{U8M`AjEi z3-v|=sV?DDJp4TnvmrDobn8i4;1qwpY38d)5rAZlv-JAIIe#_~!ty3Ca0_PX_h?T9 zoDzz!{r1DT>J(ed9V6?r_YPH>QTn^<9;35WLr);oz+4TOScNZ^o<+R3Q@n1bRXL9t zjlV%ibY8(8LycUQw{3(=m{tIL%pC33QNj_N*IN0@XYS;4>4w$3!(9-L)amJih0rH z#e}aVf{)_0@e75t+>7784FNhnA`}>xnkFWUO zpE(CM`t#-Ee*oa#8OGt#lY%g3`e(+cpV!a=CttN@wMG&2W`N`MhcU{cNy8w?*)Ha| zmOjp~Jw6{jUgH4F?$i5Y2aU;(aSO1#@R67{h`Uq1kB2)%PioxY{0V_1^Cl(=8-1t> zxt2CI1b;^scJtB zaA}x)shcLr^FYgqPbfLAZh7D@BNaXrSH|pfW`71nN3mPzw6f6wZ~@!-l}|VBQXsY@ zLs})2DeIMe00Krr`AQ?ZXDa~sK?IS~3Pw84mtM%>wocf1(bDW{c9btzwrt%B`kr3h z_kXv>;I@Xv3|aiQgiKE+r348k06?7x0D$Cw=-B`JglDuM-IZ6K`OZue)1+w;kXq}Z zKqN>L5KWQ*i6QY5i18r@_*r_TbrZ>wGT5a6sun3VTUxSKDtD@zMQU2bX8;VfIxWyz zvUapuRyv*QbgGvxf3rV#ySp=_1%cjt{C~a}Z+pFNxn8sPG;V$7ZhPOy)d2J>+IOLW z9GUOL$3wV--v`9w`qm)a?&Z{P|1NlaUwcm9*;QIyvPQpkmhY|@1s_3pP)*lk=!L{9 z=`Ius@Cr_xc;?;64bQ~)abm8xtz|W|qcM+D_zT8kMkmn!86~KmXcQfMa@#C6@_)Sv z$M9rczrJM_av;KdtZS-m*)g?~W(cGwNe>sb@U6jR>m*cI3g1XVh`a<>H=qTY9&m>o z>HZ@A?6B0Fj^>iPPliMy9V8Bhd`XTO);BUPV*v(iv!Dkx5c%`tMTjFxep(k3Ot`R4 z%7emq7}_@hfid7tT&Cx30qUpn9nYbu@&*@Q5QNilG0TQtUxzEqTTU}~hM z9YaW6fky%8(l%nf-{6mCI)n{-DoGyX0TCq|3L)s5hIqRq1SzB;h%?2eC&;0UA1xJ3 z0}&0EwRHK=8Hvc01=|ZCq()H?>5zqFBvrl;#MN1tAiS<=9D}=-5dn(yHGe&vo}LAY zt3iH%&7MZhKF%C*%QQuG`D`!7Z0PzHlwhCDd>eR$#9F)c9b(@byfQtMjPD^d>SRgd z+b$|d!^hpigLF+_sMR&G%zt#+__HRd4vwa-Y2DDw9xyL|gS;pqCUakoaYLw85d_V$ zj$eR_IUc4s=qmEOYs+LV6}f-CQp7OSo1xB|j-WLzx?VgWg2XC>JeZAq6q-)~y|pd@ z7)fIuJh@3&5E6hn#=r29fD=mdHZos1zzVr_fK%+7wM|O~^8UQ5>wibNtO9;ynuoC$ zBQJ^1LgMK~q(BD8dT!7YWh6A>4+|?WmW#O`?o|=Y+8!-Kk95P_g`k?oC3w$N!2(QF ztg$fo&?*HX2tJX;_}(hZ<=A5E)LCF?n`dz)EwUZc5AkGa9}@h} zRgsq(@;GBc;NwOtKs8;uz=|uAe!z-pBb9EGir#u93^;L&G+#C#3)$uW#7+asB6V4( zR(v^_L!e_&lA($`pr@;r$C_f$?vGv0R$pUy7v9+6CfN>EOMe;`DN5*YQ_`JoQi=A` z-^J|S7HoCE8JtNi=qitI#WsX<%mN}mM=CWg+G7{BQB2&7tQNxpJ}}gTs5#YCoyKw* z>j+A+_l#ug|B4`aU17484Y!E7?JOAr2;ISpR49HHf_2cNJ<|<;5cse(kaePcn|25I zhA-02Yeo_5Qh#(`MW6vkKZloUPvs3Fpcr4VG9*Bxj0~St)9JV*+Y|)$o&BDo$kLvp z&W^L9ydg-p4dzB~?MAq45@NF~49QOC4Z~YIKt}A1#2Z5I0U?19X(Z}x)Xr)Q=4O9R zKNx+Jp+Vh2ZIr5cEc(_Q?1kPVNT{{5g|#WOZ*iBg1b;fmp}P+5<~{-QBGry|Q>2c@ zQY)UWAW3dO3%ZD!GAZ?v@0dL&C=T-wM-PXOL|_3j(_F zZ#PHb*dc5KZ53kCpEPL5K{xErY?TKmv}bC%IZTEf<-NnO_Jy{8z3bB4WVs7BM#7H6oQ?-;wQSdbxjmDHE)QEShairwL zjeiJVsspz>ZV$cjE9StiithDxrI5%D;E+TnVUcjJ#D~E>DR)F&LGt~PE1c<%q&QcX zdtB798rT%Dx_ME2XrkFqD7$!8X9<&?j|jc?N1bz|cb% z$gvH>vHOI<(U)|@>!l7%V=gbD!Qb`S2PM@}OK&Mfjj&}5$HbABrNpMm6zDd^>#I3z`E4J6$j`MMjXxAZi~s|fYOPZ5I6Lk>1%`$M-A!L zbm_YA8*l1jBwZM!DnEqEuvDP8ZC|t2hF(Cj%l3)G6YQV^Y!6}-GWBli(T;XH;GmU< zD96Cy+|6VC6-Z_G0-MxY5;?*N8tqUAuk=}*LuHwgV#;_6WXavuuc>|B* zt7`|Kn6+u@VQ6sKwlI$nA%8qn3R(ejHX3u&nDa~z7-Xwz4Z4QFkJBvDm*PvDz+R|q zlH0*(8b%k2bCa|&QqiP;iahk2vTZaO09wVjBhi%jBZ95ECRjNtu*$4}6Jo|tq$9^{ zklK#8)T31C1h2*Ou~KV8{+1wZp>yrVIpDOiV#WwZQT%PLkK7`u9)Hq)S%ixK12>{v zTYY&NbyMOUqK()wR}9EIFPSM#IFL_Wl$vBRQWue8fQb5HJ@nj-^15lInCiC*! zx|7YKpTb5>a|kOrWPfxiR%Q((BB9fr!S#U^eB5#{9EteSLE4)+{NtuXvTBUOHIg~w zJ|2F5=YsV5aF?84!{Q~GQ#m>jX0~`v6LMKV&2MrmFNcDlM@xi z!W$86+C*=So%9p+)g4RC>4%s6Lhwz0Feb}D8f+|JbH#|D`F}2sj?9Me6+X1-7JAM( z$F7Y*_QC=!!-eIGq_-1h0U%r8BH0}o@UccqGh_}isrq|&c>U%Ok=HLrc#Pzk9m$g% zspY6QKDjccxK-h`YPECe><03xFKcq zL-Qq-?o9GTJAcFpZ>qT>t9R)FZUYR~<(8`Ca`+4w0e^@_?n__yA`#dXdb3(2Gl~is z#A*U4)d`G*XE^jQn!Oml^CpFaH|k3%?!x<9E;D?XfD5+ZYoV;c+n7kx-zBac97c?5 z+Rv;du6u|WA$G4&DN^oEjJz;oPuZ-|GG8em2>;qh#(zTzwv3C`M|fZ59^F048{(oy zx60c_HWj;2$t2dW-WrKmIFPcpM&b+HCm}CSV0ur_u~pk5Ytwhn5D|COCIJs8?rPjh z4;2kY=ISkZ_<9e%3aM-J;g#A9oNchX zqHg+46o0{ID!Awh@>c~G_DlFs&O<-3NAR?YQ4)hM?G4)ZQ9*raQ&nrH`z0_YON%4r zOY*R;BY2hwez7CD2Qx3>pZ+>iQCnxm?MHR*_Qrib=Owo#4O0an(C!#4Yjl)Vu`Yn9 zubfpX$lVXqM}ALYx-QkI!d7ilZDniHtC#Qwet+u4{g^}fg|elc@+EPYcTd+H6yY>) ztRpSC#j>*T9U%CH^`kSSM)DIhm3}y&G=A6htWH!BeD))C*yo{i1gQiL9{DToodfJl zi-+f8U;PdL_!>I=>tK&7Bzu&tybxNOKXC>1_g*;JaB&hQST%YuNKJvI(Hmv1OoN>- zyMK<0?nRsAsJ;&1ff>aPgV3{VG`}d?#mml6E4Oyh!C1%z2sJEBpX{)eXh_ZMC6xiM>VKcI zbFS>48^`ju6rwmyl$U_GD|cJxCbIs`F}?ep}Hv+aG^zKT;bw&-Pu+wabPWl z=xLlxo0!G{s|z}76O<ST<6?)bvSB#DxgtOGNNu6byr4Uh2md{{{ z0hqSMw)`sbyf(RkUt5m0-ib1!Wkq*6Mt}I;~nxcVW0D> zJn>HQTaNGMRAF#yRw~Bv-QZCM>P9UJqgs0kwV?XgyTr3)aJbruh(|gM6%y2$Wrt=7 znJy1UREjenIS$voN3}gIbv~&yUE{Pd*7Y%Qf^AECZhyK7;i%6MEn- zC-C0DECg8}7lv70G=FX(qu>XJb$rbacb<;JrG=5#6eM`Rl#y05VVVjMKmekP`p^zY z_Wj`dgPx+k`p5tdvzGt7{ngm=I$b30eQ2Y�-XG`2l>( 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�! zVFJ6Vw;3uPy@tk;6`#}xM{Z=wtgsZN_VH2_ZLy+tOWOOE7+$2$FbnaYMrucOA{wtH z{F^A)ND z29J;Yco2mIfeN<|H_(+(5U7x=IfV@H(5JFQsWwtaA<<3*tOh^w74FKMbxO6=H@9`^ zEJ=~*G;z}V&mm1yu*bl{ttpP852!0LTeJI*M8JLDIdPK#M^l9ESqFEcKMmS(Jz#w* zc0KOmf**u31xn$8k+qqhy~q1Ye{^2hHI!n!1u$Z`QW*5dyB998Ed8!DT48P_9Ze1| zLn=no>QfHRHsk^%c2XTN7aX^*#X?n6xFN1!a#Gt!@o8-D#`{LO$=sW7tlk5S zZ*D5sX(qeHP#ne;?|wF<^?X0id^fbM$r4Obq>9BODLP>`?uVZ7EGYlB){&u70cJn7p4~w#3eI0F)y`OHXm%1 z;(+;FE>TG_ImK(OYRorxfAtzzvglu+WurT9%}Y2#8OuT~xWM@FM=@LZ$msqNs-ev= zXfpvEk_hK+J^sUj9cDEgM#hheN#^QNg*=xlm0`Jyq=*ZCCKip~qU6fah5P7fEF@{o z>pgwOZmp?8ssLO~3NUnz6FST^;gS-t^Q7=o_3U%#ycPz3X=q_Af6}d;(15MyN;{E( zJr!#j%2Q6X_m?lw(pEDX;I`UCzLTWanA3V|fMN+TC(+lIr-rJ*ad&*4BCULmQhH^ooIiA2)+FHg z(qUm){MIg7!Qy$@q7a(q7{3L|Y3)s$0qs5@^t8ms0G(ktnkId=e}f+GB>CYr;b!QJ z!DjRYl{>rk5a99KLHWowAYSJBIG_WBK6&3R%m{aQ(qcU#e{>I?5}9C^a=C@V z$5j3P412DFopR#gmQBIW;WWO-Y=;E*Ipq7F zrOx~6Q1cBKe+cLR?B8DM{%b0<;)D$f11gVA!lY4pF+tEhd7`Q>vpDWxu!wvRmLE9` z#e8lpKlNtV7{KJx;xdrrzd!U{w^CdYUiOPS;*UJHA%1+ne;ttdLbfUnfuQpwT96m? z&qg?-$2j6b`{qR=D{6PJX_3b*vt ztZWfL7VGx&rzZnUsIFv;QA`lmBb`7LFOC;g-zul^_8C@P1jhUz&sd;=OCBTMuv4yS+t zU}#m~4EoAxHA5&uo@v87Ve~TFPo{t>SFipu@EGMx3n7M>c#7>2=ir!z{b}Flb+JP<$j@nv zT3a<<0(hKnEWGVZ!snk~A8I2B ze}*@I6c2{?573_fS?d2@p#96VR=Ez@0e+;+i2+$@Uof-W+SRc1L;c7Xe|%0AYq(`#zkMD2s$u2y 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∋MhBXF!Wy7*~N$Kw^0vCe9a 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�cD11E%D-^-8Jh4l6^p`vScAgj(>Dq)aug#%2 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 diff --git a/android/app/libs/PenguinRenderer.aar b/android/app/libs/PenguinRenderer.aar index 2926e9ad074933ce7d4efba89305c55a2a4c1e24..b498726f914241bbde027c3c884317f5b87d23a4 100644 GIT binary patch delta 179978 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
j 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 Du$MR! delta 179913 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 diff --git a/android/app/src/main/kotlin/com/ejada/hmg/penguin/PenguinView.kt b/android/app/src/main/kotlin/com/ejada/hmg/penguin/PenguinView.kt index 6c7306d8..3925ca56 100644 --- a/android/app/src/main/kotlin/com/ejada/hmg/penguin/PenguinView.kt +++ b/android/app/src/main/kotlin/com/ejada/hmg/penguin/PenguinView.kt @@ -320,6 +320,7 @@ internal class PenguinView( if(clinicId.isEmpty()) return navigateTo(clinicId) +// navigateTo("3-1") } /** diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index cb2b71ab..e91536e3 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1523,5 +1523,10 @@ "bmi": "مؤشر كتلة الجسم", "yesPleaseINeedHelp": "نعم، من فضلك أريد المساعدة", "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة", - "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة" + "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة", + + "confirmYourLocation": "قم بتأكيد موقعك", + "confirmYourLocationDesc": "يرجى تأكيد موقعك الحالي لعرض الاتجاهات المناسبة.", + "insideHospital": "أنا داخل المستشفى", + "outsideHospital": "أنا خارج المستشفى" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index d937f6bc..5aa377d0 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1516,5 +1516,9 @@ "bmi": "BMI", "yesPleaseINeedHelp": "Yes, Please I need help", "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic", - "unableToSendOTP": "Unable to send Verification OTP" + "unableToSendOTP": "Unable to send Verification OTP", + "confirmYourLocation": "Confirm Your Location", + "confirmYourLocationDesc": "Please confirm your present location to view appropriate directions.", + "insideHospital": "I am inside the hospital", + "outsideHospital": "I am outside the hospital" } diff --git a/ios/Runner/Penguin/PenguinView.swift b/ios/Runner/Penguin/PenguinView.swift index 508fb74a..e683a35a 100644 --- a/ios/Runner/Penguin/PenguinView.swift +++ b/ios/Runner/Penguin/PenguinView.swift @@ -309,22 +309,13 @@ class PenguinView: NSObject, FlutterPlatformView, PIEventsDelegate, PenNavInitia PenNavUIManager.shared.eventsDelegate = self - - - print("====== after eventsDelegate onPenNavSuccess =========") - - PenNavUIManager.shared.navigate(to: "108") - - +// print("====== after onPenNavSuccess navigate =========") +// PenNavUIManager.shared.navigate(to: "3-1") // Present the Penguin UI on top of the Flutter view controller - + print("====== after onPenNavSuccess present =========") PenNavUIManager.shared.present(root: controller, view: _view) - - - - print("====== after present onPenNavSuccess =========") print(model?.clinicID) @@ -347,11 +338,21 @@ class PenguinView: NSObject, FlutterPlatformView, PIEventsDelegate, PenNavInitia let clientID = self.model?.clientID, !clientID.isEmpty else { - print("Error: Config Client ID is nil or empty") + print("Error: Config Clinic ID is nil or empty") return } + + print("====== after onPenNavSuccess navigate =========") +// PenNavUIManager.shared.navigate(to: "3-1") { success, error in + PenNavUIManager.shared.navigate(to: clinicID) { success, error in + if success { + print("Nav Success") + } else { + print("Nav Error") + } + } @@ -373,20 +374,20 @@ class PenguinView: NSObject, FlutterPlatformView, PIEventsDelegate, PenNavInitia - guard let token = token else { - - print("Token is nil") - - return - - } - - print("Token Generated") - - print(token); +// guard let token = token else { +// +// print("Token is nil") +// +// return +// +// } +// +// print("Token Generated") +// +// print(token); - +// // self?.handleNavigation(clinicID: clinicID, token: token) { success, errorMessage in // // if success { @@ -425,7 +426,8 @@ class PenguinView: NSObject, FlutterPlatformView, PIEventsDelegate, PenNavInitia PenNavUIManager.shared.setToken(token: token) - PenNavUIManager.shared.navigate(to: clinicID) +// PenNavUIManager.shared.navigate(to: clinicID) + PenNavUIManager.shared.navigate(to: "3-1") completion(true,nil) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index e833ea92..7ff24f82 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -681,7 +681,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/features/hospital/hospital_selection_view_model.dart b/lib/features/hospital/hospital_selection_view_model.dart index 57bd3601..24c7b9b0 100644 --- a/lib/features/hospital/hospital_selection_view_model.dart +++ b/lib/features/hospital/hospital_selection_view_model.dart @@ -97,7 +97,7 @@ class HospitalSelectionBottomSheetViewModel extends ChangeNotifier { initPenguinSDK(hospital.iD, clinicID: clinicID); } - initPenguinSDK(int projectID, {String clinicID = "1"}) async { + initPenguinSDK(int projectID, {String clinicID = ""}) async { NavigationClinicDetails data = NavigationClinicDetails(); data.projectId = projectID.toString(); data.clinicId = clinicID; diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 416d2a47..d389dea7 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1515,5 +1515,9 @@ abstract class LocaleKeys { static const yesPleaseINeedHelp = 'yesPleaseINeedHelp'; static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; static const unableToSendOTP = 'unableToSendOTP'; + static const confirmYourLocation = 'confirmYourLocation'; + static const confirmYourLocationDesc = 'confirmYourLocationDesc'; + static const insideHospital = 'insideHospital'; + static const outsideHospital = 'outsideHospital'; } diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 953fd4ab..3d62bafd 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -9,6 +9,7 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/calender_utils_new.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/penguin_method_channel.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -17,6 +18,7 @@ import 'package:hmg_patient_app_new/features/book_appointments/book_appointments import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/models/feedback_type.dart'; +import 'package:hmg_patient_app_new/features/hospital/AppPermission.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; @@ -40,6 +42,7 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:map_launcher/map_launcher.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import '../medical_file/widgets/medical_file_card.dart'; @@ -230,19 +233,23 @@ class _AppointmentDetailsPageState extends State { width: MediaQuery.of(context).size.width * 0.785, child: CustomButton( onPressed: () async { - await MapLauncher.showMarker( - mapType: MapType.google, - coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), - double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), - title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", - ).catchError((err) { - MapLauncher.showMarker( - mapType: Platform.isIOS ? MapType.apple : MapType.google, + if (widget.patientAppointmentHistoryResponseModel.projectID == 130 || widget.patientAppointmentHistoryResponseModel.projectID == 120) { + showDirectionsBottomSheet(); + } else { + await MapLauncher.showMarker( + mapType: MapType.google, coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", - ); - }); + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), + double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", + ); + }); + } }, text: LocaleKeys.getDirections.tr(context: context), backgroundColor: AppColors.textColor.withValues(alpha: 0.8), @@ -819,6 +826,89 @@ class _AppointmentDetailsPageState extends State { ); } + void showDirectionsBottomSheet() { + showCommonBottomSheetWithoutHeight( + context, + title: "", + isDismissible: true, + isCloseButtonVisible: false, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.confirmYourLocation.tr(context: context).toText28(color: AppColors.textColor, isBold: true, height: 1.5), + SizedBox(height: 4.h), + LocaleKeys.confirmYourLocationDesc.tr(context: context).toText12( + color: AppColors.greyTextColor, + fontWeight: FontWeight.w500, + ), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.insideHospital.tr(context: context), + onPressed: () { + Navigator.pop(context); + initPenguinSDK(widget.patientAppointmentHistoryResponseModel.projectID == 130 ? 1 : (widget.patientAppointmentHistoryResponseModel.projectID == 120 ? 3 : -1), + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID.toString()); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + SizedBox(height: 8.h), + CustomButton( + text: LocaleKeys.outsideHospital.tr(context: context), + onPressed: () async { + Navigator.pop(context); + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", + ); + }); + }, + backgroundColor: AppColors.chipSecondaryLightRedColor, + borderColor: AppColors.chipSecondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + ], + ).paddingSymmetrical(24.w, 20.h), + callBackFunc: () {}, + ); + } + + initPenguinSDK(int projectID, {String clinicID = ""}) async { + NavigationClinicDetails data = NavigationClinicDetails(); + data.projectId = projectID.toString(); + data.clinicId = clinicID; + // data.clinicId = "1"; + final bool permited = await AppPermission.askPenguinPermissions(); + if (!permited) { + Map statuses = await [ + Permission.location, + Permission.bluetooth, + Permission.bluetoothConnect, + Permission.bluetoothScan, + Permission.activityRecognition, + ].request().whenComplete(() { + PenguinMethodChannel().launch("penguin", getIt.get().isArabic() ? "ar" : "en", getIt.get().getAuthenticatedUser()?.patientId?.toString() ?? "", true, details: data); + }); + } + } + openDoctorScheduleCalendar() async { DoctorsListResponseModel doctor = DoctorsListResponseModel( clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, diff --git a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart index d1abf2ff..f07b9a4f 100644 --- a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart +++ b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart @@ -58,17 +58,17 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { projectDetailListModel = Utils.getProjectDetailObj(appState, patientAppointmentHistoryResponseModel.projectID); double dist = Utils.distance(value.latitude, value.longitude, double.parse(projectDetailListModel.latitude!), double.parse(projectDetailListModel.longitude!)).ceilToDouble() * 1000; print(dist); - // if (dist <= projectDetailListModel.geofenceRadius!) { + if (dist <= projectDetailListModel.geofenceRadius!) { sendCheckInRequest(projectDetailListModel.checkInQrCode!, 3, context); - // } else { - // showCommonBottomSheetWithoutHeight(context, - // title: LocaleKeys.error.tr(context: context), - // child: Utils.getErrorWidget( - // loadingText: LocaleKeys.ensureWithinHospitalLocation.tr(context: context), - // ), callBackFunc: () { - // Navigator.of(context).pop(); - // }, isFullScreen: false); - // } + } else { + showCommonBottomSheetWithoutHeight(context, + title: LocaleKeys.error.tr(context: context), + child: Utils.getErrorWidget( + loadingText: LocaleKeys.ensureWithinHospitalLocation.tr(context: context), + ), callBackFunc: () { + Navigator.of(context).pop(); + }, isFullScreen: false); + } }); }), SizedBox(height: 16.h), From 3c9c3032a586473132ce69755c0e65c3797f647b Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Fri, 6 Feb 2026 14:25:24 +0300 Subject: [PATCH 51/67] Services price list implemented --- assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 7 +- lib/core/api_consts.dart | 4 +- lib/core/dependencies.dart | 4 + .../services_price_list_response_model.dart | 54 +++++ .../services_price_list_repo.dart | 80 +++++++ .../services_price_list_view_model.dart | 87 ++++++++ lib/generated/locale_keys.g.dart | 4 + lib/main.dart | 4 + .../hmg_services/services_page.dart | 26 ++- .../services_price_list_page.dart | 199 ++++++++++++++++++ lib/routes/app_routes.dart | 5 + 12 files changed, 473 insertions(+), 7 deletions(-) create mode 100644 lib/features/services_price_list/models/resp_models/services_price_list_response_model.dart create mode 100644 lib/features/services_price_list/services_price_list_repo.dart create mode 100644 lib/features/services_price_list/services_price_list_view_model.dart create mode 100644 lib/presentation/servicesPriceList/services_price_list_page.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index e91536e3..88d56305 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1528,5 +1528,9 @@ "confirmYourLocation": "قم بتأكيد موقعك", "confirmYourLocationDesc": "يرجى تأكيد موقعك الحالي لعرض الاتجاهات المناسبة.", "insideHospital": "أنا داخل المستشفى", - "outsideHospital": "أنا خارج المستشفى" + "outsideHospital": "أنا خارج المستشفى", + "servicePriceList": "قائمة أسعار الخدمات", + "servicePriceListDesc": "توضح قائمة أسعار الخدمات أدناه رسوم الخدمات الصحية المقدمة للمرضى بنظام الدفع النقدي. أما فيما يتعلق بالخدمات المشمولة بالتأمين، فسيتم تطبيق التغطية التأمينية والتحقق من الأهلية واحتساب نسب التحمل وفقًا لشروط وثيقة التأمين وجدول المنافع المعتمد لكل شركة تأمين.", + "servicePriceListRights": "يحق للمريض الحصول على متابعة مجانية في غضون 14 يومًا من الزيارة الأولى", + "serviceName": "اسم الخدمة" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 5aa377d0..47f0d691 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1520,5 +1520,10 @@ "confirmYourLocation": "Confirm Your Location", "confirmYourLocationDesc": "Please confirm your present location to view appropriate directions.", "insideHospital": "I am inside the hospital", - "outsideHospital": "I am outside the hospital" + "outsideHospital": "I am outside the hospital", + "servicePriceList": "Services Price List", + "servicePriceListDesc": "Below is the services price list outline the healthcare services fees for cash payments, where the insurance coverage, eligibility, and co-payment deductions will be processed in accordance with the insurance policy terms and the table of benefits of each insurance providers:", + "servicePriceListRights": "The patient has the right to a free follow-up within 14 days of initial visit", + + "serviceName": "Service Name" } diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 7ff24f82..d6bdc186 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -380,6 +380,8 @@ var GET_PATIENT_SICK_LEAVE = 'Services/Patients.svc/REST/GetPatientSickLeave'; var GET_PATIENT_SICK_LEAVE_STATUS = 'Services/Patients.svc/REST/GetPatientSickLeave_Status'; +var GET_SERVICES_PRICE_LIST = 'Services/OUTPs.svc/REST/GetServicesPriceList'; + var SendSickLeaveEmail = 'Services/Notifications.svc/REST/SendSickLeaveEmail'; var GET_PATIENT_AdVANCE_BALANCE_AMOUNT = 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; @@ -681,7 +683,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index 0560ff9e..e7ac0515 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -54,6 +54,8 @@ import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_v import 'package:hmg_patient_app_new/features/qr_parking/qr_parking_repo.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_repo.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_repo.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_view_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_repo.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; @@ -169,6 +171,7 @@ class AppDependencies { getIt.registerLazySingleton(() => QrParkingRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => NotificationsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => AskDoctorRepoImp(loggerService: getIt(), apiClient: getIt())); + getIt.registerLazySingleton(() => ServicesPriceListRepoImp(loggerService: getIt(), apiClient: getIt())); // ViewModels // Global/shared VMs → LazySingleton @@ -311,5 +314,6 @@ class AppDependencies { getIt.registerLazySingleton(() => AskDoctorViewModel(askDoctorRepo: getIt(), errorHandlerService: getIt())); + getIt.registerLazySingleton(() => ServicesPriceListViewModel(servicesPriceListRepo: getIt(), errorHandlerService: getIt())); } } diff --git a/lib/features/services_price_list/models/resp_models/services_price_list_response_model.dart b/lib/features/services_price_list/models/resp_models/services_price_list_response_model.dart new file mode 100644 index 00000000..bb60094a --- /dev/null +++ b/lib/features/services_price_list/models/resp_models/services_price_list_response_model.dart @@ -0,0 +1,54 @@ +class ServicesPriceListResponseModel { + int? createdBy; + String? createdOn; + int? editedBy; + String? editedOn; + int? id; + bool? isEnabled; + String? nameAR; + String? nameEN; + num? price; + int? rowID; + + ServicesPriceListResponseModel({ + this.createdBy, + this.createdOn, + this.editedBy, + this.editedOn, + this.id, + this.isEnabled, + this.nameAR, + this.nameEN, + this.price, + this.rowID, + }); + + ServicesPriceListResponseModel.fromJson(Map json) { + createdBy = json['CreatedBy']; + createdOn = json['CreatedOn']; + editedBy = json['EditedBy']; + editedOn = json['EditedOn']; + id = json['ID']; + isEnabled = json['IsEnabled']; + nameAR = json['NameAR']; + nameEN = json['NameEN']; + price = json['Price']; + rowID = json['RowID']; + } + + Map toJson() { + final Map data = {}; + data['CreatedBy'] = createdBy; + data['CreatedOn'] = createdOn; + data['EditedBy'] = editedBy; + data['EditedOn'] = editedOn; + data['ID'] = id; + data['IsEnabled'] = isEnabled; + data['NameAR'] = nameAR; + data['NameEN'] = nameEN; + data['Price'] = price; + data['RowID'] = rowID; + return data; + } +} + diff --git a/lib/features/services_price_list/services_price_list_repo.dart b/lib/features/services_price_list/services_price_list_repo.dart new file mode 100644 index 00000000..4267d77f --- /dev/null +++ b/lib/features/services_price_list/services_price_list_repo.dart @@ -0,0 +1,80 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/models/resp_models/services_price_list_response_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class ServicesPriceListRepo { + Future>>> getServicesPriceList({ + String searchKey = "", + int pageIndex = 0, + int pageSize = 0, + }); +} + +class ServicesPriceListRepoImp implements ServicesPriceListRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + ServicesPriceListRepoImp({required this.loggerService, required this.apiClient}); + + @override + Future>>> getServicesPriceList({ + String searchKey = "", + int pageIndex = 0, + int pageSize = 0, + }) async { + Map mapDevice = { + "ID": 1, + "SearchKey": searchKey, + "PageIndex": pageIndex, + "PageSize": pageSize, + "RowCount": 0, + "TokenID": "@dm!n" + }; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + + await apiClient.post( + GET_SERVICES_PRICE_LIST, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['getServicesPriceList']; + if (list == null || list.isEmpty) { + throw Exception("Services price list is empty"); + } + + final servicesList = list + .map((item) => ServicesPriceListResponseModel.fromJson(item as Map)) + .toList() + .cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: servicesList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } +} + diff --git a/lib/features/services_price_list/services_price_list_view_model.dart b/lib/features/services_price_list/services_price_list_view_model.dart new file mode 100644 index 00000000..85b96802 --- /dev/null +++ b/lib/features/services_price_list/services_price_list_view_model.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/models/resp_models/services_price_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_repo.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; + +class ServicesPriceListViewModel extends ChangeNotifier { + bool isServicesPriceListLoading = false; + + ServicesPriceListRepo servicesPriceListRepo; + ErrorHandlerService errorHandlerService; + + List servicesPriceList = []; + List filteredServicesPriceList = []; + + String searchKey = ""; + + ServicesPriceListViewModel({ + required this.servicesPriceListRepo, + required this.errorHandlerService, + }); + + initServicesPriceListProvider() { + servicesPriceList.clear(); + filteredServicesPriceList.clear(); + isServicesPriceListLoading = true; + getServicesPriceList(); + notifyListeners(); + } + + setIsServicesPriceListLoading(bool val) { + isServicesPriceListLoading = val; + notifyListeners(); + } + + setSearchKey(String val) { + searchKey = val; + filterServicesList(val); + } + + void filterServicesList(String query) { + if (query.isEmpty) { + filteredServicesPriceList = List.from(servicesPriceList); + } else { + filteredServicesPriceList = servicesPriceList.where((service) { + final nameEN = service.nameEN?.toLowerCase() ?? ''; + final nameAR = service.nameAR?.toLowerCase() ?? ''; + final searchLower = query.toLowerCase(); + return nameEN.contains(searchLower) || nameAR.contains(searchLower); + }).toList(); + } + notifyListeners(); + } + + Future getServicesPriceList({Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await servicesPriceListRepo.getServicesPriceList( + searchKey: searchKey, + ); + + result.fold( + (failure) async { + isServicesPriceListLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + isServicesPriceListLoading = false; + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Error loading services price list"); + } + } else if (apiResponse.messageStatus == 1) { + servicesPriceList = apiResponse.data!; + servicesPriceList.removeWhere((element) => element.isEnabled == false); + filteredServicesPriceList = List.from(servicesPriceList); + isServicesPriceListLoading = false; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } +} diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index d389dea7..f53c5f0d 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1519,5 +1519,9 @@ abstract class LocaleKeys { static const confirmYourLocationDesc = 'confirmYourLocationDesc'; static const insideHospital = 'insideHospital'; static const outsideHospital = 'outsideHospital'; + static const servicePriceList = 'servicePriceList'; + static const servicePriceListDesc = 'servicePriceListDesc'; + static const servicePriceListRights = 'servicePriceListRights'; + static const serviceName = 'serviceName'; } diff --git a/lib/main.dart b/lib/main.dart index 1137261a..a782ae14 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,6 +36,7 @@ import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_mo import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/features/qr_parking/qr_parking_view_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_view_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; @@ -202,6 +203,9 @@ void main() async { ), ChangeNotifierProvider( create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), ) ], child: MyApp()), ), // Wrap your app diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index ce2c5379..9aaf1591 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -29,6 +29,7 @@ import 'package:hmg_patient_app_new/presentation/home/data/landing_page_data.dar import 'package:hmg_patient_app_new/presentation/home/widgets/large_service_card.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; import 'package:hmg_patient_app_new/presentation/parking/paking_page.dart'; +import 'package:hmg_patient_app_new/presentation/servicesPriceList/services_price_list_page.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -150,13 +151,27 @@ class ServicesPage extends StatelessWidget { }), HmgServicesComponentModel( 3, - "Blood Donation".needTranslation, + LocaleKeys.bloodDonation.tr(context: getIt.get().navigatorKey.currentContext!), "".needTranslation, AppAssets.blood_donation_icon, bgColor: AppColors.bloodDonationCardColor, true, route: AppRoutes.bloodDonationPage, ), + HmgServicesComponentModel( + 113, + LocaleKeys.servicePriceList.tr(context: getIt.get().navigatorKey.currentContext!), + "".needTranslation, + AppAssets.saudi_riyal_icon, + bgColor: AppColors.textColor, + false, + route: null, + onTap: () { + Navigator.of(getIt.get().navigatorKey.currentContext!).push( + CustomPageRoute(page: ServicesPriceListPage()), + ); + }, + ) // HmgServicesComponentModel( // 3, // "My Child Vaccine".needTranslation, @@ -302,6 +317,9 @@ class ServicesPage extends StatelessWidget { Widget build(BuildContext context) { bloodDonationViewModel = Provider.of(context); medicalFileViewModel = Provider.of(context); + + hmgServices.removeWhere((element) => Utils.havePrivilege(element.action) == false); + return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( @@ -382,7 +400,7 @@ class ServicesPage extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h), LocaleKeys.habibWallet.tr().toText14(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), + Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), ], ), Spacer(), @@ -442,7 +460,7 @@ class ServicesPage extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h), LocaleKeys.medicalFile.tr().toText16(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), + Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), ], ), Spacer(), @@ -667,7 +685,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - LocaleKeys.hmgContact.tr().toText14(weight: FontWeight.w500) + Expanded(child: LocaleKeys.hmgContact.tr().toText14(weight: FontWeight.w500)) ], ), ), diff --git a/lib/presentation/servicesPriceList/services_price_list_page.dart b/lib/presentation/servicesPriceList/services_price_list_page.dart new file mode 100644 index 00000000..0ee81ae3 --- /dev/null +++ b/lib/presentation/servicesPriceList/services_price_list_page.dart @@ -0,0 +1,199 @@ +import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:provider/provider.dart'; +import 'package:shimmer/shimmer.dart'; + +class ServicesPriceListPage extends StatefulWidget { + const ServicesPriceListPage({super.key}); + + @override + State createState() => _ServicesPriceListPageState(); +} + +class _ServicesPriceListPageState extends State { + late ServicesPriceListViewModel servicesPriceListViewModel; + late AppState appState; + + @override + void initState() { + scheduleMicrotask(() { + servicesPriceListViewModel.initServicesPriceListProvider(); + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + servicesPriceListViewModel = Provider.of(context, listen: false); + appState = getIt.get(); + + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.servicePriceList.tr(context: context), + child: SingleChildScrollView( + padding: EdgeInsets.all(24.h), + child: Consumer(builder: (context, model, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: LocaleKeys.servicePriceListDesc.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + ), + ), + SizedBox(height: 16.h), + model.isServicesPriceListLoading + ? ListView.separated( + shrinkWrap: true, + padding: EdgeInsets.zero, + physics: NeverScrollableScrollPhysics(), + itemCount: 5, + separatorBuilder: (context, index) => SizedBox(height: 12.h), + itemBuilder: (context, index) => _buildLoadingCard(), + ) + : model.filteredServicesPriceList.isEmpty + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + padding: EdgeInsets.all(40.h), + child: Center( + child: LocaleKeys.noDataAvailable.tr(context: context).toText16( + color: AppColors.textColorLight, + ), + ), + ) + : Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.serviceName.tr(context: context).toText18(weight: FontWeight.bold, color: AppColors.textColor), + SizedBox(height: 16.h), + ListView.separated( + shrinkWrap: true, + padding: EdgeInsets.zero, + physics: NeverScrollableScrollPhysics(), + itemCount: model.filteredServicesPriceList.length, + separatorBuilder: (context, index) => Divider(height: 1.h, color: AppColors.dividerColor).withVerticalPadding(), + itemBuilder: (context, index) { + final service = model.filteredServicesPriceList[index]; + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: (appState.isArabic() ? service.nameAR ?? service.nameEN ?? '' : service.nameEN ?? service.nameAR ?? '').toText16( + weight: FontWeight.w500, + color: AppColors.textColor, + ), + ), + SizedBox(width: 12.w), + Utils.getPaymentAmountWithSymbol('${service.price ?? 0}'.toText16(isBold: true), AppColors.blackColor, 13, isSaudiCurrency: true), + ], + ), + ], + ), + ), + ), + ); + }, + ), + ], + ), + ), + SizedBox(height: 16.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: LocaleKeys.servicePriceListRights.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + ), + ), + ], + ); + }), + ), + ), + ); + } + + Widget _buildLoadingCard() { + return Shimmer.fromColors( + baseColor: AppColors.greyColor.withValues(alpha: 0.3), + highlightColor: AppColors.greyColor.withValues(alpha: 0.1), + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Container( + height: 20.h, + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + ), + SizedBox(width: 12.w), + Container( + width: 80.w, + height: 32.h, + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(12.r), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 9cf0ed91..c09fab67 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_procedures_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; +import 'package:hmg_patient_app_new/presentation/servicesPriceList/services_price_list_page.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/huawei_health_example.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/smartwatch_home_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/organ_selector_screen.dart'; @@ -88,6 +89,9 @@ class AppRoutes { // Emergency Services static const String emergencyServicesPage = '/emergencyServicesPage'; + // Services Price List + static const String servicesPriceListPage = '/servicesPriceListPage'; + static Map get routes => { initialRoute: (context) => SplashPage(), loginScreen: (context) => LoginScreen(), @@ -120,6 +124,7 @@ class AppRoutes { healthTrackersPage: (context) => HealthTrackersPage(), vitalSign: (context) => VitalSignPage(), emergencyServicesPage: (context) => EmergencyServicesPage(), + servicesPriceListPage: (context) => ServicesPriceListPage(), addHealthTrackerEntryPage: (context) { final args = ModalRoute.of(context)?.settings.arguments as HealthTrackerTypeEnum?; return AddHealthTrackerEntryPage( From f09d478a033a5d9ef1ac67a4dae0818fd4e03d24 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Fri, 6 Feb 2026 15:27:25 +0300 Subject: [PATCH 52/67] iOS BundleID changes --- AuthKey_JG87SJ23A4.p8 | 6 ++++++ ios/GoogleService-Info.plist | 10 +++------- ios/Runner/Info.plist | 2 +- lib/core/utils/push_notification_handler.dart | 8 ++++++++ 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 AuthKey_JG87SJ23A4.p8 diff --git a/AuthKey_JG87SJ23A4.p8 b/AuthKey_JG87SJ23A4.p8 new file mode 100644 index 00000000..6a3c2a53 --- /dev/null +++ b/AuthKey_JG87SJ23A4.p8 @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgaPetsOq3tqUlswBN +BFUWIIdEg4dcTCGRUKbAEx8ViFygCgYIKoZIzj0DAQehRANCAAS6IKkZ4tCeBlN6 +DtXiBekCiIbgHxWk8AWppP0H3mJ+I2s8cIEaquL4/yeLDcHzAHf8tHcYhF/TvggT +nc30yDLv +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/ios/GoogleService-Info.plist b/ios/GoogleService-Info.plist index 633037cb..a9b1f53a 100644 --- a/ios/GoogleService-Info.plist +++ b/ios/GoogleService-Info.plist @@ -2,10 +2,6 @@ - CLIENT_ID - 815750722565-da8p56le8bd6apsbm9eft0jjl1rtpgkt.apps.googleusercontent.com - REVERSED_CLIENT_ID - com.googleusercontent.apps.815750722565-da8p56le8bd6apsbm9eft0jjl1rtpgkt ANDROID_CLIENT_ID 815750722565-m14h8mkosm7cnq6uh6rhqr54dn02d705.apps.googleusercontent.com API_KEY @@ -15,11 +11,11 @@ PLIST_VERSION 1 BUNDLE_ID - com.HMG.HMG-Smartphone + com.cloudsolutions.HMGPatientApp PROJECT_ID api-project-815750722565 STORAGE_BUCKET - api-project-815750722565.appspot.com + api-project-815750722565.firebasestorage.app IS_ADS_ENABLED IS_ANALYTICS_ENABLED @@ -31,7 +27,7 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:815750722565:ios:328ec247a81a2ca23c186c + 1:815750722565:ios:34ec03c09e02e21f3c186c DATABASE_URL https://api-project-815750722565.firebaseio.com diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ab9828e6..9c805ac5 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - Dr. Alhabib + Dr. Alhabib Beta CFBundlePackageType APPL CFBundleShortVersionString diff --git a/lib/core/utils/push_notification_handler.dart b/lib/core/utils/push_notification_handler.dart index 88e8cc84..aef18f73 100644 --- a/lib/core/utils/push_notification_handler.dart +++ b/lib/core/utils/push_notification_handler.dart @@ -372,6 +372,14 @@ class PushNotificationHandler { } }); + if (Platform.isIOS) { + FirebaseMessaging.instance.getAPNSToken().then((String? token) { + print("Push Notification getAPNSToken: ${token!}"); + }).catchError((err) { + print("Push Notification getAPNSToken ERR: ${err.toString()}"); + }); + } + FirebaseMessaging.instance.getToken().then((String? token) { print("Push Notification getToken: ${token!}"); onToken(token!); From 000c403f6b7ec238e6f1e61a340ae85a029afcfb Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 8 Feb 2026 10:10:49 +0300 Subject: [PATCH 53/67] confirm button added --- .../AppIcon.appiconset/Contents.json | 2 +- lib/core/api/api_client.dart | 4 +- .../my_appointments_view_model.dart | 2 +- .../appointment_details_page.dart | 54 ++++++++++++++++--- 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index 08f3422c..1eb27a20 100644 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -109,7 +109,7 @@ "size" : "83.5x83.5" }, { - "filename" : "icon 1.jpg", + "filename" : "icon.jpg", "idiom" : "ios-marketing", "scale" : "1x", "size" : "1024x1024" diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 0ec385eb..ea8062d0 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -188,7 +188,9 @@ class ApiClientImp implements ApiClient { // body['SessionID'] = "45786230487560q"; } - body['IsNewFlutterApp'] = true; + if(!url.contains("/paymentApi")) { + body['IsNewFlutterApp'] = true; + } body.removeWhere((key, value) => value == null); } diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index 25e41ee3..ce2b7b91 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -510,7 +510,7 @@ class MyAppointmentsViewModel extends ChangeNotifier { } Future getPatientMyDoctors({Function(dynamic)? onSuccess, Function(String)? onError}) async { - if (!isAppointmentDataToBeLoaded) return; + // if (!isAppointmentDataToBeLoaded) return; isPatientMyDoctorsLoading = true; notifyListeners(); diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index 3d62bafd..0e0194b5 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -191,15 +191,57 @@ class _AppointmentDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.appointmentStatus.tr(context: context).toText16(isBold: true), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.appointmentStatus.tr(context: context).toText16(isBold: true), + SizedBox(height: 4.h), + (!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) + ? LocaleKeys.notConfirmed.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) + : LocaleKeys.confirmed.tr(context: context).toText12(color: AppColors.successColor, fontWeight: FontWeight.w500)), + SizedBox(height: 16.h), + ], + ), + ((!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) && widget.patientAppointmentHistoryResponseModel.nextAction != 10) + ? CustomButton( + text: LocaleKeys.confirm.tr(), + onPressed: () async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingAppointmentPleaseWait.tr(context: context)); + await myAppointmentsViewModel.confirmAppointment( + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + LoaderBottomSheet.hideLoader(); + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + showCommonBottomSheetWithoutHeight( + title: "", + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), + callBackFunc: () { + Navigator.of(context).pop(); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + textColor: AppColors.whiteColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + borderRadius: 12.r, + height: 40.h, + icon: AppAssets.confirm_appointment_icon, + iconColor: AppColors.whiteColor, + iconSize: 16.h, + ) + : SizedBox.shrink()) ], ), - SizedBox(height: 4.h), - (!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) - ? LocaleKeys.notConfirmed.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) - : LocaleKeys.confirmed.tr(context: context).toText12(color: AppColors.successColor, fontWeight: FontWeight.w500)), - SizedBox(height: 16.h), //TODO Add countdown timer in case of LiveCare Appointment widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false ? Row( From eeaa22357f191e1ba35958475d9256afd088440c Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Sun, 8 Feb 2026 18:52:20 +0300 Subject: [PATCH 54/67] Date format changed to en-US --- lib/core/utils/request_utils.dart | 4 ++-- lib/core/utils/utils.dart | 2 +- .../book_appointments/book_appointments_view_model.dart | 4 ++-- .../book_appointment/widgets/appointment_calendar.dart | 2 +- .../smartwatches/health_dashboard/health_dashboard.dart | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/core/utils/request_utils.dart b/lib/core/utils/request_utils.dart index e57039cb..dd81a13c 100644 --- a/lib/core/utils/request_utils.dart +++ b/lib/core/utils/request_utils.dart @@ -210,8 +210,8 @@ class RequestUtils { List names = fullName != null ? fullName.split(" ") : []; var dob = appState.getUserRegistrationPayload.dob; - final DateFormat dateFormat1 = DateFormat('MM/dd/yyyy'); - final DateFormat dateFormat2 = DateFormat('dd/MM/yyyy'); + final DateFormat dateFormat1 = DateFormat('MM/dd/yyyy', "en-US"); + final DateFormat dateFormat2 = DateFormat('dd/MM/yyyy', "en-US"); DateTime gregorianDate = dateFormat2.parse(dob!); HijriGregDate hijriDate = HijriGregConverter.gregorianToHijri(gregorianDate); String? date = "${hijriDate.day}/${hijriDate.month}/${hijriDate.year}"; diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 673ef738..68838cde 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -128,7 +128,7 @@ class Utils { static String convertStringToDateTime(String dateTimeString) { String timeString = dateTimeString; // Parse the time string using DateFormat - DateFormat format = DateFormat.Hms(); // 'Hms' = 'HH:mm:ss' + DateFormat format = DateFormat.Hms(["en-US"]); // 'Hms' = 'HH:mm:ss' DateTime time = format.parse(timeString); DateTime now = DateTime.now(); diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index 8da3a2ff..c60a827d 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -669,7 +669,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { Future getDoctorFreeSlots({bool isBookingForLiveCare = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { docFreeSlots.clear(); DateTime date; - final DateFormat formatter = DateFormat('HH:mm'); + final DateFormat formatter = DateFormat('HH:mm', "en-US"); final DateFormat dateFormatter = DateFormat('yyyy-MM-dd'); Map _eventsParsed; @@ -721,7 +721,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { Future getLiveCareDoctorFreeSlots({bool isBookingForLiveCare = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { docFreeSlots.clear(); DateTime date; - final DateFormat formatter = DateFormat('HH:mm'); + final DateFormat formatter = DateFormat('HH:mm', "en-US"); final DateFormat dateFormatter = DateFormat('yyyy-MM-dd'); Map _eventsParsed; diff --git a/lib/presentation/book_appointment/widgets/appointment_calendar.dart b/lib/presentation/book_appointment/widgets/appointment_calendar.dart index 8fa72d4c..8d4bb4ca 100644 --- a/lib/presentation/book_appointment/widgets/appointment_calendar.dart +++ b/lib/presentation/book_appointment/widgets/appointment_calendar.dart @@ -308,7 +308,7 @@ class _AppointmentCalendarState extends State { } void _onDaySelected(DateTime day) { - final DateFormat formatter = DateFormat('yyyy-MM-dd'); + final DateFormat formatter = DateFormat('yyyy-MM-dd', "en-US"); setState(() { selectedDateDisplay = DateUtil.getMonthDayYearDateFormatted(day); selectedNextDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day.add(Duration(days: 1)), "en"); diff --git a/lib/presentation/smartwatches/health_dashboard/health_dashboard.dart b/lib/presentation/smartwatches/health_dashboard/health_dashboard.dart index 7c537ba7..f30d87a9 100644 --- a/lib/presentation/smartwatches/health_dashboard/health_dashboard.dart +++ b/lib/presentation/smartwatches/health_dashboard/health_dashboard.dart @@ -24,8 +24,8 @@ class HealthDashboard extends StatefulWidget { class _HealthDashboardState extends State with SingleTickerProviderStateMixin { late TabController _tabController; - final dateFormat = DateFormat('MMM dd, yyyy'); - final timeFormat = DateFormat('hh:mm a'); + final dateFormat = DateFormat('MMM dd, yyyy', "en-US"); + final timeFormat = DateFormat('hh:mm a', "en-US"); @override void initState() { From 4ce1e912ce3a41d7c940e95b706c88d95bc22e14 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Sun, 8 Feb 2026 19:59:51 +0300 Subject: [PATCH 55/67] Vital sign data connected to Symptom checker --- lib/core/api_consts.dart | 2 +- lib/core/utils/date_util.dart | 4 +- lib/extensions/string_extensions.dart | 1 + .../hmg_services/hmg_services_view_model.dart | 34 ++--- .../symptoms_checker_view_model.dart | 18 ++- lib/presentation/authentication/login.dart | 1 + .../medical_file/medical_file_page.dart | 1 + .../symptoms_checker/user_info_selection.dart | 117 +++++++++--------- .../pages/height_selection_page.dart | 2 +- .../pages/weight_selection_page.dart | 2 +- .../vital_sign/vital_sign_page.dart | 5 + lib/widgets/input_widget.dart | 1 + 12 files changed, 107 insertions(+), 81 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index d6bdc186..5b6e5cce 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -683,7 +683,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/utils/date_util.dart b/lib/core/utils/date_util.dart index 746d2a7a..d495b7f0 100644 --- a/lib/core/utils/date_util.dart +++ b/lib/core/utils/date_util.dart @@ -487,7 +487,9 @@ class DateUtil { } static String getFormattedDate(DateTime dateTime, String formattedString) { - return DateFormat(formattedString).format(dateTime); + String formattedDate = DateFormat(formattedString, "en-US").format(dateTime); + print(formattedDate); + return formattedDate; } static convertISODateToJsonDate(String isoDate) { diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 30b0f7e6..909d57d8 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -258,6 +258,7 @@ extension EmailValidator on String { this, maxLines: maxlines, textAlign: isCenter ? TextAlign.center : null, + // locale: Locale('en', 'US'), style: TextStyle( color: color ?? AppColors.blackColor, fontSize: 16.f, diff --git a/lib/features/hmg_services/hmg_services_view_model.dart b/lib/features/hmg_services/hmg_services_view_model.dart index daddbff4..5bf450ba 100644 --- a/lib/features/hmg_services/hmg_services_view_model.dart +++ b/lib/features/hmg_services/hmg_services_view_model.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_repo.dart'; @@ -17,6 +18,7 @@ import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/search_e_referral_resp_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/vital_sign_respo_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; @@ -31,8 +33,7 @@ class HmgServicesViewModel extends ChangeNotifier { final ErrorHandlerService errorHandlerService; final NavigationService navigationService; - HmgServicesViewModel( - {required this.bookAppointmentsRepo, required this.hmgServicesRepo, required this.errorHandlerService, required this.navigationService}); + HmgServicesViewModel({required this.bookAppointmentsRepo, required this.hmgServicesRepo, required this.errorHandlerService, required this.navigationService}); bool isCmcOrdersLoading = false; bool isCmcServicesLoading = false; @@ -55,9 +56,11 @@ class HmgServicesViewModel extends ChangeNotifier { // Vital Sign PageView Controller PageController _vitalSignPageController = PageController(); + PageController get vitalSignPageController => _vitalSignPageController; int _vitalSignCurrentPage = 0; + int get vitalSignCurrentPage => _vitalSignCurrentPage; void setVitalSignCurrentPage(int page) { @@ -65,7 +68,6 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); } - // HHC specific lists List hhcOrdersList = []; List hhcServicesList = []; @@ -82,9 +84,8 @@ class HmgServicesViewModel extends ChangeNotifier { List searchReferralList = []; List covidTestProcedureList = []; Covid19GetPaymentInfo? covidPaymentInfo; - Future getOrdersList() async {} - + Future getOrdersList() async {} // HHC multiple services selection List selectedHhcServices = []; @@ -792,22 +793,20 @@ class HmgServicesViewModel extends ChangeNotifier { }, ); } + List getQuestionsFromJson() { - final String questionsJson = '''[ { "id": 1, "questionEN": "Is the test intended for travel?", "questionAR": "هل تجري التحليل بغرض السفر؟", "ans": 2 }, { "id": 2, "questionEN": "Coming from outside KSA within last 2 weeks?", "questionAR": "هل قدمت من خارج المملكة خلال الأسبوعين الماضيين؟", "ans": 2 }, { "id": 3, "questionEN": "Do you currently have fever?", "questionAR": "هل تعاني حاليا من حرارة؟", "ans": 2 }, { "id": 4, "questionEN": "Did you have fever in last 2 weeks?", "questionAR": "هل عانيت من حرارة في الأسبوعين الماضيين؟", "ans": 2 }, { "id": 5, "questionEN": "Do you have a sore throat?", "questionAR": "هل لديك التهاب في الحلق؟", "ans": 2 }, { "id": 6, "questionEN": "Do you have a runny nose?", "questionAR": "هل لديك سيلان بالأنف؟" }, { "id": 7, "questionEN": "Do you have a cough?", "questionAR": "هل لديك سعال؟", "ans": 2 }, { "id": 8, "questionEN": "Do you have shortness of breath?", "questionAR": "هل تعاني من ضيق في التنفس؟", "ans": 2 }, { "id": 9, "questionEN": "Do you have nausea?", "questionAR": "هل تعاني من غثيان؟", "ans": 2 }, { "id": 10, "questionEN": "Do you have vomiting?", "questionAR": "هل تعاني من القيء؟", "ans": 2 }, { "id": 11, "questionEN": "Do you have a headache?", "questionAR": "هل تعاني من صداع في الرأس؟", "ans": 2 }, { "id": 12, "questionEN": "Do you have muscle pain?", "questionAR": "هل تعانين من آلام عضلية؟", "ans": 2 }, { "id": 13, "questionEN": "Do you have joint pain?", "questionAR": "هل تعاني من آلام المفاصل؟", "ans": 2 }, { "id": 14, "questionEN": "Do you have diarrhea?", "questionAR": "هل لديك اسهال؟", "ans": 2 } ]'''; + final String questionsJson = + '''[ { "id": 1, "questionEN": "Is the test intended for travel?", "questionAR": "هل تجري التحليل بغرض السفر؟", "ans": 2 }, { "id": 2, "questionEN": "Coming from outside KSA within last 2 weeks?", "questionAR": "هل قدمت من خارج المملكة خلال الأسبوعين الماضيين؟", "ans": 2 }, { "id": 3, "questionEN": "Do you currently have fever?", "questionAR": "هل تعاني حاليا من حرارة؟", "ans": 2 }, { "id": 4, "questionEN": "Did you have fever in last 2 weeks?", "questionAR": "هل عانيت من حرارة في الأسبوعين الماضيين؟", "ans": 2 }, { "id": 5, "questionEN": "Do you have a sore throat?", "questionAR": "هل لديك التهاب في الحلق؟", "ans": 2 }, { "id": 6, "questionEN": "Do you have a runny nose?", "questionAR": "هل لديك سيلان بالأنف؟" }, { "id": 7, "questionEN": "Do you have a cough?", "questionAR": "هل لديك سعال؟", "ans": 2 }, { "id": 8, "questionEN": "Do you have shortness of breath?", "questionAR": "هل تعاني من ضيق في التنفس؟", "ans": 2 }, { "id": 9, "questionEN": "Do you have nausea?", "questionAR": "هل تعاني من غثيان؟", "ans": 2 }, { "id": 10, "questionEN": "Do you have vomiting?", "questionAR": "هل تعاني من القيء؟", "ans": 2 }, { "id": 11, "questionEN": "Do you have a headache?", "questionAR": "هل تعاني من صداع في الرأس؟", "ans": 2 }, { "id": 12, "questionEN": "Do you have muscle pain?", "questionAR": "هل تعانين من آلام عضلية؟", "ans": 2 }, { "id": 13, "questionEN": "Do you have joint pain?", "questionAR": "هل تعاني من آلام المفاصل؟", "ans": 2 }, { "id": 14, "questionEN": "Do you have diarrhea?", "questionAR": "هل لديك اسهال؟", "ans": 2 } ]'''; try { final parsed = json.decode(questionsJson) as List; - return parsed - .map((e) => CovidQuestionnaireModel.fromJson(Map.from(e))) - .toList(); + return parsed.map((e) => CovidQuestionnaireModel.fromJson(Map.from(e))).toList(); } catch (_) { return []; } - } - + } Future getCovidProcedureList({ - Function(dynamic)? onSuccess, Function(String)? onError, }) async { @@ -816,14 +815,14 @@ class HmgServicesViewModel extends ChangeNotifier { final result = await hmgServicesRepo.getCovidTestProcedures(); result.fold( - (failure) async { + (failure) async { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { onError(failure.toString()); } }, - (apiResponse) { + (apiResponse) { if (apiResponse.messageStatus == 1) { covidTestProcedureList = apiResponse.data ?? []; notifyListeners(); @@ -840,7 +839,6 @@ class HmgServicesViewModel extends ChangeNotifier { ); } - Future getPaymentInfo({ String? procedureID, int? projectID, @@ -852,14 +850,14 @@ class HmgServicesViewModel extends ChangeNotifier { final result = await hmgServicesRepo.getCovidPaymentInfo(procedureID!, projectID!); result.fold( - (failure) async { + (failure) async { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { onError(failure.toString()); } }, - (apiResponse) { + (apiResponse) { if (apiResponse.messageStatus == 1) { covidPaymentInfo = apiResponse.data; notifyListeners(); @@ -900,6 +898,8 @@ class HmgServicesViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 1) { vitalSignList = apiResponse.data ?? []; hasVitalSignDataLoaded = true; + getIt.get().setSelectedHeight(vitalSignList.first.heightCm); + getIt.get().setSelectedWeight(vitalSignList.first.weightKg); notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); diff --git a/lib/features/symptoms_checker/symptoms_checker_view_model.dart b/lib/features/symptoms_checker/symptoms_checker_view_model.dart index 4180d363..668b302e 100644 --- a/lib/features/symptoms_checker/symptoms_checker_view_model.dart +++ b/lib/features/symptoms_checker/symptoms_checker_view_model.dart @@ -84,9 +84,9 @@ class SymptomsCheckerViewModel extends ChangeNotifier { String? _selectedGender; DateTime? _dateOfBirth; int? _selectedAge; - double _selectedHeight = 170; + num _selectedHeight = 170; bool _isHeightCm = true; - double _selectedWeight = 60; + num _selectedWeight = 60; bool _isWeightKg = true; // Getters @@ -108,11 +108,21 @@ class SymptomsCheckerViewModel extends ChangeNotifier { _selectedAge = age; } - double? get selectedHeight => _selectedHeight; + setSelectedHeight(num height) { + _selectedHeight = height; + notifyListeners(); + } + + setSelectedWeight(num weight) { + _selectedWeight = weight; + notifyListeners(); + } + + num? get selectedHeight => _selectedHeight; bool get isHeightCm => _isHeightCm; - double? get selectedWeight => _selectedWeight; + num? get selectedWeight => _selectedWeight; bool get isWeightKg => _isWeightKg; diff --git a/lib/presentation/authentication/login.dart b/lib/presentation/authentication/login.dart index 6dcf15fb..2e6869df 100644 --- a/lib/presentation/authentication/login.dart +++ b/lib/presentation/authentication/login.dart @@ -73,6 +73,7 @@ class LoginScreenState extends State { SizedBox(height: 130.h), // Adjusted to sizer unit LocaleKeys.welcomeToDrSulaiman.tr(context: context).toText32(isBold: true, color: AppColors.textColor), SizedBox(height: 32.h), + Localizations.override(context: context, locale: Locale('en', 'US'), child: Container()), // Force English locale for this widget TextInputWidget( labelText: "${LocaleKeys.nationalId.tr(context: context)} / ${LocaleKeys.fileNo.tr(context: context)}", hintText: "xxxxxxxxx", diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index a8460ca2..b08f75b4 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -1579,6 +1579,7 @@ class _MedicalFilePageState extends State { weight: FontWeight.w600, ), ), + Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, width: 18.w, height: 18.h), ], ), SizedBox(height: 14.h), diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection.dart index c0b5f7ab..f1e8413d 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection.dart @@ -9,6 +9,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -39,13 +40,18 @@ class _UserInfoSelectionPageState extends State { if (appState.isAuthenticated) { final user = appState.getAuthenticatedUser(); + getIt.get().getPatientVitalSign(); if (user == null) return; // Populate gender (gender is int: 1=Male, 2=Female) // Use internal keys (male/female) for storage if (user.gender != null) { - String genderKey = user.gender == 1 ? "male" : user.gender == 2 ? "female" : "other"; + String genderKey = user.gender == 1 + ? "male" + : user.gender == 2 + ? "female" + : "other"; viewModel.setGender(genderKey); } @@ -64,13 +70,14 @@ class _UserInfoSelectionPageState extends State { // If not authenticated or fields are empty, user will fill them manually } - _buildEditInfoTile({ + Widget _buildEditInfoTile({ required String leadingIcon, required String title, required String subTitle, required VoidCallback onTap, required String trailingIcon, required BuildContext context, + required HmgServicesViewModel hmgServicesVM, Color? iconColor, }) { return InkWell( @@ -92,7 +99,9 @@ class _UserInfoSelectionPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText14(weight: FontWeight.w500), - subTitle.toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + subTitle + .toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) + .toShimmer2(isShow: (leadingIcon == AppAssets.rulerIcon || leadingIcon == AppAssets.weightScale) && hmgServicesVM.isVitalSignLoading), ], ), ], @@ -155,25 +164,20 @@ class _UserInfoSelectionPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: Consumer( - builder: (context, viewModel, child) { + body: Consumer2( + builder: (context, viewModel, hmgServicesVM, child) { // Check if any field is empty - bool hasEmptyFields = viewModel.selectedGender == null || - viewModel.selectedAge == null || - viewModel.selectedHeight == null || - viewModel.selectedWeight == null; + bool hasEmptyFields = viewModel.selectedGender == null || viewModel.selectedAge == null || viewModel.selectedHeight == null || viewModel.selectedWeight == null; // Get display values String genderText = _getLocalizedGender(viewModel.selectedGender, context); // Show age calculated from DOB (prefer viewModel's age, fallback to calculated from user's DOB) int? displayAge = viewModel.selectedAge ?? userAgeFromDOB; String ageText = displayAge != null ? "$displayAge ${LocaleKeys.years.tr(context: context)}" : LocaleKeys.notSet.tr(context: context); - String heightText = viewModel.selectedHeight != null - ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" - : LocaleKeys.notSet.tr(context: context); - String weightText = viewModel.selectedWeight != null - ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" - : LocaleKeys.notSet.tr(context: context); + + String heightText = viewModel.selectedHeight != null ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" : LocaleKeys.notSet.tr(context: context); + + String weightText = viewModel.selectedWeight != null ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" : LocaleKeys.notSet.tr(context: context); return Column( children: [ @@ -196,53 +200,53 @@ class _UserInfoSelectionPageState extends State { ), SizedBox(height: 32.h), _buildEditInfoTile( - context: context, - leadingIcon: AppAssets.genderIcon, - title: LocaleKeys.gender.tr(context: context), - subTitle: genderText, - onTap: () { - viewModel.setUserInfoPage(0, isSinglePageEdit: true); - context.navigateWithName(AppRoutes.userInfoFlowManager); - }, - trailingIcon: AppAssets.edit_icon, - ), + context: context, + leadingIcon: AppAssets.genderIcon, + title: LocaleKeys.gender.tr(context: context), + subTitle: genderText, + onTap: () { + viewModel.setUserInfoPage(0, isSinglePageEdit: true); + context.navigateWithName(AppRoutes.userInfoFlowManager); + }, + trailingIcon: AppAssets.edit_icon, + hmgServicesVM: hmgServicesVM), _getDivider(), _buildEditInfoTile( - context: context, - leadingIcon: AppAssets.calendarGrey, - title: LocaleKeys.age.tr(context: context), - subTitle: ageText, - iconColor: AppColors.greyTextColor, - onTap: () { - viewModel.setUserInfoPage(1, isSinglePageEdit: true); - context.navigateWithName(AppRoutes.userInfoFlowManager); - }, - trailingIcon: AppAssets.edit_icon, - ), + context: context, + leadingIcon: AppAssets.calendarGrey, + title: LocaleKeys.age.tr(context: context), + subTitle: ageText, + iconColor: AppColors.greyTextColor, + onTap: () { + viewModel.setUserInfoPage(1, isSinglePageEdit: true); + context.navigateWithName(AppRoutes.userInfoFlowManager); + }, + trailingIcon: AppAssets.edit_icon, + hmgServicesVM: hmgServicesVM), _getDivider(), _buildEditInfoTile( - context: context, - leadingIcon: AppAssets.rulerIcon, - title: LocaleKeys.height.tr(context: context), - subTitle: heightText, - onTap: () { - viewModel.setUserInfoPage(2, isSinglePageEdit: true); - context.navigateWithName(AppRoutes.userInfoFlowManager); - }, - trailingIcon: AppAssets.edit_icon, - ), + context: context, + leadingIcon: AppAssets.rulerIcon, + title: LocaleKeys.height.tr(context: context), + subTitle: heightText, + onTap: () { + viewModel.setUserInfoPage(2, isSinglePageEdit: true); + context.navigateWithName(AppRoutes.userInfoFlowManager); + }, + trailingIcon: AppAssets.edit_icon, + hmgServicesVM: hmgServicesVM), _getDivider(), _buildEditInfoTile( - context: context, - leadingIcon: AppAssets.weightScale, - title: LocaleKeys.weight.tr(context: context), - subTitle: weightText, - onTap: () { - viewModel.setUserInfoPage(3, isSinglePageEdit: true); - context.navigateWithName(AppRoutes.userInfoFlowManager); - }, - trailingIcon: AppAssets.edit_icon, - ), + context: context, + leadingIcon: AppAssets.weightScale, + title: LocaleKeys.weight.tr(context: context), + subTitle: weightText, + onTap: () { + viewModel.setUserInfoPage(3, isSinglePageEdit: true); + context.navigateWithName(AppRoutes.userInfoFlowManager); + }, + trailingIcon: AppAssets.edit_icon, + hmgServicesVM: hmgServicesVM), ], ), ), @@ -292,6 +296,7 @@ class _UserInfoSelectionPageState extends State { text: LocaleKeys.yesItIs.tr(context: context), icon: AppAssets.tickIcon, iconColor: hasEmptyFields ? AppColors.greyTextColor : AppColors.whiteColor, + isDisabled: getIt.get().isVitalSignLoading || hasEmptyFields, onPressed: hasEmptyFields ? () {} // Empty function for disabled state : () => context.navigateWithName(AppRoutes.organSelectorPage), diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart index 65cf5a5b..f9f2d000 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart @@ -158,7 +158,7 @@ class HeightSelectionPage extends StatelessWidget { enableSound: true, minValue: minValue, maxValue: maxValue, - initialHeight: viewModel.selectedHeight ?? 100, + initialHeight: (viewModel.selectedHeight ?? 100).toDouble(), isCm: viewModel.isHeightCm, onHeightChanged: (newHeight) { log("height: $newHeight"); diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart index 8c837964..6e68eef9 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart @@ -150,7 +150,7 @@ class WeightSelectionPage extends StatelessWidget { enableSound: true, minValue: minValue, maxValue: maxValue, - initialWeight: viewModel.selectedWeight!, + initialWeight: (viewModel.selectedWeight ?? 70).toDouble(), isKg: isKg, onWeightChanged: (newWeight) { log("weight: $newWeight"); diff --git a/lib/presentation/vital_sign/vital_sign_page.dart b/lib/presentation/vital_sign/vital_sign_page.dart index e457023b..7d8ef384 100644 --- a/lib/presentation/vital_sign/vital_sign_page.dart +++ b/lib/presentation/vital_sign/vital_sign_page.dart @@ -3,6 +3,8 @@ import 'dart:ui'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -330,6 +332,9 @@ class _VitalSignPageState extends State { weight: FontWeight.w600, ), ), + Utils.buildSvgWithAssets( + icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, + width: 18.w, height: 18.h), ], ), SizedBox(height: 14.h), diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index cf1b132f..72cfdfce 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -301,6 +301,7 @@ class TextInputWidget extends StatelessWidget { Widget _buildTextField(BuildContext context) { double fontS = fontSize ?? 14.f; return TextField( + hintLocales: const [Locale('en', 'US')], enabled: isEnable, scrollPadding: EdgeInsets.zero, keyboardType: isMultiline ? TextInputType.multiline : keyboardType, From a4573c8710c0f17a796b2b45318d1b4a4a457166 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Sun, 8 Feb 2026 22:28:17 +0300 Subject: [PATCH 56/67] arabic fixes --- lib/core/utils/date_util.dart | 2 +- lib/core/utils/utils.dart | 13 ++ lib/extensions/string_extensions.dart | 131 ++++----------- .../authentication_view_model.dart | 2 + lib/main.dart | 2 +- .../widgets/appointment_card.dart | 62 ++++---- .../widgets/appointment_doctor_card.dart | 18 ++- lib/presentation/authentication/login.dart | 1 + lib/presentation/authentication/register.dart | 3 + .../immediate_livecare_payment_details.dart | 6 +- .../book_appointment/widgets/doctor_card.dart | 23 ++- .../widget/e_referral_patient_info.dart | 1 + .../widget/search_e_referral_form.dart | 2 + .../habib_wallet/recharge_wallet_page.dart | 6 +- .../widgets/patient_insurance_card.dart | 5 +- .../medical_file/medical_file_page.dart | 3 +- .../medical_file_appointment_card.dart | 23 ++- .../vital_sign/vital_sign_details_page.dart | 1 + .../vital_sign/vital_sign_page.dart | 1 + .../bottomsheet/generic_bottom_sheet.dart | 3 +- .../dropdown/country_dropdown_widget.dart | 4 +- .../family_files/family_file_add_widget.dart | 2 + lib/widgets/input_widget.dart | 150 ++++++++++++------ 23 files changed, 243 insertions(+), 221 deletions(-) diff --git a/lib/core/utils/date_util.dart b/lib/core/utils/date_util.dart index d495b7f0..2b134735 100644 --- a/lib/core/utils/date_util.dart +++ b/lib/core/utils/date_util.dart @@ -110,7 +110,7 @@ class DateUtil { } static String formatDateToTime(DateTime date) { - return DateFormat('hh:mm a').format(date); + return DateFormat('hh:mm a', "en-US").format(date); } static String yearMonthDay(DateTime dateTime) { diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index 68838cde..60925bca 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -987,4 +987,17 @@ class Utils { return isAllowed; } + + static String toEnglishNumbers(String input) { + const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + const arabic = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩']; + const persian = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; + + String result = input; + for (int i = 0; i < 10; i++) { + result = result.replaceAll(arabic[i], english[i]); + result = result.replaceAll(persian[i], english[i]); + } + return result; + } } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 909d57d8..ee5feed2 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -23,8 +23,7 @@ extension CapExtension on String { extension EmailValidator on String { Widget get toWidget => Text(this); - Widget toText8({Color? color, FontWeight? fontWeight, bool isBold = false, int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow}) => - Text( + Widget toText8({Color? color, FontWeight? fontWeight, bool isBold = false, int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow}) => Text( this, maxLines: maxlines, overflow: textOverflow, @@ -38,7 +37,8 @@ extension EmailValidator on String { ); Widget toText10( - {Color? color, + {bool isEnglishOnly = false, + Color? color, FontWeight? weight, bool isBold = false, bool isUnderLine = false, @@ -59,19 +59,20 @@ extension EmailValidator on String { color: color ?? AppColors.blackColor, letterSpacing: letterSpacing, decoration: isUnderLine ? TextDecoration.underline : null, + fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', decorationColor: color ?? AppColors.blackColor), ); Widget toText9( - {Color? color, - FontWeight? weight, - bool isBold = false, - bool isUnderLine = false, - bool isCenter = false, - int? maxlines, - FontStyle? fontStyle, - TextOverflow? textOverflow, - double letterSpacing = 0}) => + {Color? color, + FontWeight? weight, + bool isBold = false, + bool isUnderLine = false, + bool isCenter = false, + int? maxlines, + FontStyle? fontStyle, + TextOverflow? textOverflow, + double letterSpacing = 0}) => Text( this, textAlign: isCenter ? TextAlign.center : null, @@ -87,15 +88,7 @@ extension EmailValidator on String { decorationColor: color ?? AppColors.blackColor), ); - Widget toText11( - {Color? color, - FontWeight? weight, - bool isUnderLine = false, - bool isCenter = false, - bool isBold = false, - int maxLine = 0, - double letterSpacing = 0}) => - Text( + Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isCenter = false, bool isBold = false, int maxLine = 0, double letterSpacing = 0}) => Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: (maxLine > 0) ? maxLine : null, @@ -110,7 +103,7 @@ extension EmailValidator on String { ); Widget toText12( - {Color? color, + {bool isEnglishOnly = false, Color? color, bool isUnderLine = false, TextAlign textAlignment = TextAlign.start, bool isBold = false, @@ -131,6 +124,7 @@ extension EmailValidator on String { height: height, decorationColor: isUnderLine ? AppColors.blackColor : null, decoration: isUnderLine ? TextDecoration.underline : null, + fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', ), ); @@ -176,15 +170,7 @@ extension EmailValidator on String { ), ); - Widget toText13( - {Color? color, - bool isUnderLine = false, - bool isBold = false, - bool isCenter = false, - int maxLine = 0, - FontWeight? weight, - double? letterSpacing = 0}) => - Text( + Widget toText13({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0, FontWeight? weight, double? letterSpacing = 0}) => Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: (maxLine > 0) ? maxLine : null, @@ -197,6 +183,7 @@ extension EmailValidator on String { ); Widget toText14({ + bool isEnglishOnly = false, Color? color, bool isUnderLine = false, bool isBold = false, @@ -219,18 +206,11 @@ extension EmailValidator on String { height: height, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), decoration: isUnderLine ? TextDecoration.underline : null, + fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', decorationColor: color ?? AppColors.blackColor), ); - Widget toText15( - {Color? color, - bool isUnderLine = false, - bool isBold = false, - bool isCenter = false, - FontWeight? weight, - int? maxlines, - double? letterSpacing = -1}) => - Text( + Widget toText15({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, FontWeight? weight, int? maxlines, double? letterSpacing = -1}) => Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: maxlines, @@ -270,11 +250,10 @@ extension EmailValidator on String { decorationColor: decorationColor), ); - Widget toText17({Color? color, bool isBold = false, bool isCenter = false}) => Text( + Widget toText17({bool isEnglishOnly = false, Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle( - color: color ?? AppColors.blackColor, fontSize: 17.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle(color: color ?? AppColors.blackColor, fontSize: 17.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), ); Widget toText18({Color? color, FontWeight? weight, bool isBold = false, bool isCenter = false, int? maxlines, TextOverflow? textOverflow}) => Text( @@ -282,17 +261,12 @@ extension EmailValidator on String { textAlign: isCenter ? TextAlign.center : null, this, overflow: textOverflow, - style: TextStyle( - fontSize: 18.f, - fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), - color: color ?? AppColors.blackColor, - letterSpacing: -0.4), + style: TextStyle(fontSize: 18.f, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: -0.4), ); Widget toText19({Color? color, bool isBold = false}) => Text( this, - style: TextStyle( - fontSize: 19.f, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? AppColors.blackColor, letterSpacing: -0.4), + style: TextStyle(fontSize: 19.f, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? AppColors.blackColor, letterSpacing: -0.4), ); Widget toText20({ @@ -302,86 +276,51 @@ extension EmailValidator on String { }) => Text( this, - style: TextStyle( - fontSize: 20.f, - fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), - color: color ?? AppColors.blackColor, - letterSpacing: -0.4), + style: TextStyle(fontSize: 20.f, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: -0.4), ); Widget toText21({Color? color, bool isBold = false, FontWeight? weight, int? maxlines}) => Text( this, maxLines: maxlines, - style: TextStyle( - color: color ?? AppColors.blackColor, - fontSize: 21.f, - letterSpacing: -1, - fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), + style: TextStyle(color: color ?? AppColors.blackColor, fontSize: 21.f, letterSpacing: -1, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), ); Widget toText22({Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle( - height: 1, - color: color ?? AppColors.blackColor, - fontSize: 22.f, - letterSpacing: -1, - fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle(height: 1, color: color ?? AppColors.blackColor, fontSize: 22.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal), ); Widget toText24({Color? color, bool isBold = false, bool isCenter = false, FontWeight? fontWeight, double? letterSpacing}) => Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: 23 / 24, - color: color ?? AppColors.blackColor, - fontSize: 24.f, - letterSpacing: letterSpacing ?? -1, - fontWeight: isBold ? FontWeight.bold : fontWeight ?? FontWeight.normal), + height: 23 / 24, color: color ?? AppColors.blackColor, fontSize: 24.f, letterSpacing: letterSpacing ?? -1, fontWeight: isBold ? FontWeight.bold : fontWeight ?? FontWeight.normal), ); Widget toText26({Color? color, bool isBold = false, double? height, bool isCenter = false, FontWeight? weight, double? letterSpacing}) => Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: height ?? 23 / 26, - color: color ?? AppColors.blackColor, - fontSize: 26.f, - letterSpacing: letterSpacing ?? -1, - fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), + height: height ?? 23 / 26, color: color ?? AppColors.blackColor, fontSize: 26.f, letterSpacing: letterSpacing ?? -1, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), ); - Widget toText28({Color? color, bool isBold = false, double? height, bool isCenter = false, double? letterSpacing}) => Text( + Widget toText28({bool isEnglishOnly = false, Color? color, bool isBold = false, double? height, bool isCenter = false, double? letterSpacing}) => Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle( - height: height ?? 23 / 28, - color: color ?? AppColors.blackColor, - fontSize: 28.f, - letterSpacing: letterSpacing ?? -1, - fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle(height: height ?? 23 / 28, color: color ?? AppColors.blackColor, fontSize: 28.f, letterSpacing: letterSpacing ?? -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), ); Widget toText32({FontWeight? weight, Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: 32 / 32, - color: color ?? AppColors.blackColor, - fontSize: 32.f, - letterSpacing: -1, - fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal), + height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 32.f, letterSpacing: -1, fontFamily: "Poppins", fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal), ); Widget toText44({Color? color, bool isBold = false}) => Text( this, - style: TextStyle( - height: 32 / 32, - color: color ?? AppColors.blackColor, - fontSize: 44.f, - letterSpacing: -1, - fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle(height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 44.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal), ); Widget toSectionHeading({String upperHeading = "", String lowerHeading = ""}) { @@ -417,9 +356,7 @@ extension EmailValidator on String { } bool isValidEmail() { - return RegExp( - r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') - .hasMatch(this); + return RegExp(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$').hasMatch(this); } String toFormattedDate() { diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 689b0b48..c79e8ecf 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -75,6 +75,8 @@ class AuthenticationViewModel extends ChangeNotifier { dobController = TextEditingController(), nameController = TextEditingController(), emailController = TextEditingController(); + + CountryEnum selectedCountrySignup = CountryEnum.saudiArabia; MaritalStatusTypeEnum? maritalStatus; GenderTypeEnum? genderType; diff --git a/lib/main.dart b/lib/main.dart index a782ae14..e034cf92 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -228,7 +228,7 @@ class MyApp extends StatelessWidget { return MaterialApp( title: 'Dr. AlHabib', builder: (context, mchild) { - return MediaQuery(data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), child: mchild!); + return MediaQuery(data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling, alwaysUse24HourFormat: true,), child: mchild!, ); }, showSemanticsDebugger: false, debugShowCheckedModeBanner: false, diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index 493d15b2..49aad51f 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -26,6 +26,7 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'dart:ui' as ui; class AppointmentCard extends StatelessWidget { final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; @@ -39,20 +40,20 @@ class AppointmentCard extends StatelessWidget { final ContactUsViewModel? contactUsViewModel; final BookAppointmentsViewModel bookAppointmentsViewModel; final bool isForRate; - const AppointmentCard({ - super.key, - required this.patientAppointmentHistoryResponseModel, - required this.myAppointmentsViewModel, - required this.bookAppointmentsViewModel, - this.isLoading = false, - this.isFromHomePage = false, - this.isFromMedicalReport = false, - this.isForEyeMeasurements = false, - this.isForFeedback = false, - this.medicalFileViewModel, - this.contactUsViewModel, - this.isForRate =false - }); + + const AppointmentCard( + {super.key, + required this.patientAppointmentHistoryResponseModel, + required this.myAppointmentsViewModel, + required this.bookAppointmentsViewModel, + this.isLoading = false, + this.isFromHomePage = false, + this.isFromMedicalReport = false, + this.isForEyeMeasurements = false, + this.isForFeedback = false, + this.medicalFileViewModel, + this.contactUsViewModel, + this.isForRate = false}); @override Widget build(BuildContext context) { @@ -64,11 +65,11 @@ class AppointmentCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - isForRate ? SizedBox(): _buildHeader(context, appState), + isForRate ? SizedBox() : _buildHeader(context, appState), SizedBox(height: 16.h), _buildDoctorRow(context), SizedBox(height: 16.h), - isForRate ? SizedBox(): _buildActionArea(context, appState), + isForRate ? SizedBox() : _buildActionArea(context, appState), ], ), ), @@ -101,18 +102,13 @@ class AppointmentCard extends StatelessWidget { textColor: isLoading ? AppColors.textColor : (isLiveCare ? AppColors.whiteColor : AppColors.textColor), ).toShimmer2(isShow: isLoading), AppCustomChipWidget( - labelText: isLoading - ? 'OutPatient' - : (appState.isArabic() - ? patientAppointmentHistoryResponseModel.isInOutPatientDescriptionN! - : patientAppointmentHistoryResponseModel.isInOutPatientDescription!), + labelText: + isLoading ? 'OutPatient' : (appState.isArabic() ? patientAppointmentHistoryResponseModel.isInOutPatientDescriptionN! : patientAppointmentHistoryResponseModel.isInOutPatientDescription!), backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), textColor: AppColors.primaryRedColor, ).toShimmer2(isShow: isLoading), AppCustomChipWidget( - labelText: isLoading - ? 'Booked' - : AppointmentType.getAppointmentStatusType(patientAppointmentHistoryResponseModel.patientStatusType!), + labelText: isLoading ? 'Booked' : AppointmentType.getAppointmentStatusType(patientAppointmentHistoryResponseModel.patientStatusType!), backgroundColor: AppColors.successColor.withValues(alpha: 0.1), textColor: AppColors.successColor, ).toShimmer2(isShow: isLoading), @@ -188,13 +184,17 @@ class AppointmentCard extends StatelessWidget { ? '${(patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").substring(0, 15)}...' : patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital") .toShimmer2(isShow: isLoading), - AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), - icon: AppAssets.appointment_calendar_icon, - labelText: isLoading - ? 'Cardiology' - : "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)}", - ).toShimmer2(isShow: isLoading), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.appointment_calendar_icon, + richText: isLoading + ? 'Cardiology'.toText10().toShimmer2(isShow: isLoading) + : "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)}" + .toText10(isEnglishOnly: true), + ), + ), // AppCustomChipWidget( // labelPadding: EdgeInsetsDirectional.only(start: -2.w, end: 6.w), diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index 0e3ade72..7e430694 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -12,6 +12,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'dart:ui' as ui; class AppointmentDoctorCard extends StatelessWidget { const AppointmentDoctorCard( @@ -98,13 +99,16 @@ class AppointmentDoctorCard extends StatelessWidget { labelText: patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), ), - AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), - icon: AppAssets.doctor_calendar_icon, - labelText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang( - DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), - false, - )}", + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), + icon: AppAssets.doctor_calendar_icon, + richText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang( + DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), + false, + )}".toText10(isEnglishOnly: true), + ), ), AppCustomChipWidget( labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), diff --git a/lib/presentation/authentication/login.dart b/lib/presentation/authentication/login.dart index 2e6869df..9f64bde4 100644 --- a/lib/presentation/authentication/login.dart +++ b/lib/presentation/authentication/login.dart @@ -90,6 +90,7 @@ class LoginScreenState extends State { leadingIcon: AppAssets.student_card, errorMessage: LocaleKeys.enterValidIDorIqama.tr(context: context), hasError: false, + fontFamily: "Poppins", ), SizedBox(height: 16.h), CustomButton( diff --git a/lib/presentation/authentication/register.dart b/lib/presentation/authentication/register.dart index 71bddb38..2a26a726 100644 --- a/lib/presentation/authentication/register.dart +++ b/lib/presentation/authentication/register.dart @@ -100,6 +100,7 @@ class _RegisterNew extends State { hintText: "xxxxxxxxx", controller: authVm.nationalIdController, focusNode: _nationalIdFocusNode, + keyboardType: TextInputType.number, isEnable: true, prefix: null, isAllowRadius: true, @@ -108,6 +109,7 @@ class _RegisterNew extends State { autoFocus: true, padding: EdgeInsets.symmetric(vertical: 8.h), leadingIcon: AppAssets.student_card, + fontFamily: "Poppins", ).withVerticalPadding(8), Divider(height: 1), TextInputWidget( @@ -125,6 +127,7 @@ class _RegisterNew extends State { selectionType: SelectionTypeEnum.calendar, onCalendarTypeChanged: authVm.onCalenderTypeChange, onChange: authVm.onDobChange, + fontFamily: "Poppins", ).withVerticalPadding(8), ], ), diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index 6b2620b4..e9e79cb6 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -185,7 +185,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { children: [ LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.amount!.toText16(isBold: true), AppColors.blackColor, 13, - isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال"), ], ).paddingSymmetrical(24.h, 0.h), Row( @@ -194,7 +194,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( immediateLiveCareVM.liveCareImmediateAppointmentFeesList.tax!.toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, - isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), @@ -203,7 +203,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { children: [ SizedBox(width: 150.h, child: Utils.getPaymentMethods()), Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total!.toText24(isBold: true), AppColors.blackColor, 17, - isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar"), + isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") diff --git a/lib/presentation/book_appointment/widgets/doctor_card.dart b/lib/presentation/book_appointment/widgets/doctor_card.dart index e2009bb6..ddb43e9d 100644 --- a/lib/presentation/book_appointment/widgets/doctor_card.dart +++ b/lib/presentation/book_appointment/widgets/doctor_card.dart @@ -38,7 +38,7 @@ class DoctorCard extends StatelessWidget { hasShadow: false, ), child: Padding( - padding: EdgeInsets.only(top: 14.h,bottom: 20.h), + padding: EdgeInsets.only(top: 14.h, bottom: 20.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -91,9 +91,7 @@ class DoctorCard extends StatelessWidget { children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.55, - child: (isLoading ? "Dr John Smith" : "${doctorsListResponseModel.doctorTitle} ${doctorsListResponseModel.name}") - .toString() - .toText16(isBold: true, maxlines: 1), + child: (isLoading ? "Dr John Smith" : "${doctorsListResponseModel.doctorTitle} ${doctorsListResponseModel.name}").toString().toText16(isBold: true, maxlines: 1), ).toShimmer2(isShow: isLoading), ], ), @@ -135,12 +133,14 @@ class DoctorCard extends StatelessWidget { ).toShimmer2(isShow: isLoading), bookAppointmentsViewModel.isNearestAppointmentSelected ? doctorsListResponseModel.nearestFreeSlot != null - ? AppCustomChipWidget( - labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), - backgroundColor: AppColors.successColor, - textColor: AppColors.whiteColor, - ).toShimmer2(isShow: isLoading) - : SizedBox.shrink() + ? AppCustomChipWidget( + // labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), + richText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)) + .toText10(isEnglishOnly: true, color: AppColors.whiteColor), + backgroundColor: AppColors.successColor, + textColor: AppColors.whiteColor, + ).toShimmer2(isShow: isLoading) + : SizedBox.shrink() : SizedBox.shrink(), ], ), @@ -149,8 +149,7 @@ class DoctorCard extends StatelessWidget { ), Expanded( flex: 1, - child: Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown) - .toShimmer2(isShow: isLoading), + child: Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown).toShimmer2(isShow: isLoading), ), ], ), diff --git a/lib/presentation/e_referral/widget/e_referral_patient_info.dart b/lib/presentation/e_referral/widget/e_referral_patient_info.dart index 0cc5c7ee..61b92c76 100644 --- a/lib/presentation/e_referral/widget/e_referral_patient_info.dart +++ b/lib/presentation/e_referral/widget/e_referral_patient_info.dart @@ -140,6 +140,7 @@ class PatientInformationStepState extends State { controller: _phoneController, padding: const EdgeInsets.all(8), keyboardType: TextInputType.number, + fontFamily: "Poppins", onChange: (value) { formManager.updatePatientPhone(value ?? ''); }, diff --git a/lib/presentation/e_referral/widget/search_e_referral_form.dart b/lib/presentation/e_referral/widget/search_e_referral_form.dart index fa3ae197..33697d5e 100644 --- a/lib/presentation/e_referral/widget/search_e_referral_form.dart +++ b/lib/presentation/e_referral/widget/search_e_referral_form.dart @@ -73,6 +73,7 @@ class SearchEReferralFormFormState extends State { hintText: formManager.searchCriteria == 0 ? "Enter Identification Number" : "Enter Referral Number", labelText: formManager.searchCriteria == 0 ? "Identification Number" : "Referral Number", keyboardType: TextInputType.number, + fontFamily: "Poppins", errorMessage: formManager.errors.searchValue, hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.searchValue), onChange: (value) { @@ -94,6 +95,7 @@ class SearchEReferralFormFormState extends State { controller: _phoneController, padding: const EdgeInsets.all(8), keyboardType: TextInputType.number, + fontFamily: "Poppins", onChange: (value) { formManager.updateSearchPhone(value ?? ''); // _validateForm(formManager); diff --git a/lib/presentation/habib_wallet/recharge_wallet_page.dart b/lib/presentation/habib_wallet/recharge_wallet_page.dart index 22e854a0..78608e8b 100644 --- a/lib/presentation/habib_wallet/recharge_wallet_page.dart +++ b/lib/presentation/habib_wallet/recharge_wallet_page.dart @@ -98,11 +98,12 @@ class _RechargeWalletPageState extends State { isBorderAllowed: false, isAllowLeadingIcon: true, autoFocus: true, - fontSize: 40, + fontSize: 40.f, padding: EdgeInsets.symmetric(horizontal: 8.h, vertical: 0.h), focusNode: textFocusNode, isWalletAmountInput: true, keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), + fontFamily: "Poppins", // leadingIcon: AppAssets.student_card, ), ), @@ -217,12 +218,11 @@ class _RechargeWalletPageState extends State { keyboardType: TextInputType.text, isEnable: true, prefix: null, - autoFocus: true, + autoFocus: false, isAllowRadius: true, isBorderAllowed: false, isAllowLeadingIcon: true, leadingIcon: AppAssets.notes_icon, - errorMessage: LocaleKeys.enterValidIDorIqama.tr(context: context), hasError: false, ), SizedBox(height: 8.h), diff --git a/lib/presentation/insurance/widgets/patient_insurance_card.dart b/lib/presentation/insurance/widgets/patient_insurance_card.dart index 84fdee4b..c9ec7909 100644 --- a/lib/presentation/insurance/widgets/patient_insurance_card.dart +++ b/lib/presentation/insurance/widgets/patient_insurance_card.dart @@ -75,10 +75,11 @@ class PatientInsuranceCard extends StatelessWidget { children: [ AppCustomChipWidget( icon: AppAssets.doctor_calendar_icon, - labelText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}", + // labelText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}", + richText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}".toText10(isEnglishOnly: true), labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), ), - AppCustomChipWidget(labelText: LocaleKeys.patientCardID.tr(namedArgs: {'id': insuranceCardDetailsModel.patientCardID ?? ''}, context: context)), + AppCustomChipWidget(richText: LocaleKeys.patientCardID.tr(namedArgs: {'id': insuranceCardDetailsModel.patientCardID ?? ''}, context: context).toText10(isEnglishOnly: true)), ], ), SizedBox(height: 10.h), diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index b08f75b4..ddac1bb8 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -250,7 +250,7 @@ class _MedicalFilePageState extends State { children: [ AppCustomChipWidget( icon: AppAssets.file_icon, - labelText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}", + richText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}".toText10(isEnglishOnly: true), labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), ), AppCustomChipWidget( @@ -1602,6 +1602,7 @@ class _MedicalFilePageState extends State { child: value.toText17( isBold: true, color: AppColors.textColor, + isEnglishOnly: true ), ), if (unit.isNotEmpty) ...[ diff --git a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart index 3d3624d0..73dd1652 100644 --- a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart +++ b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart @@ -18,6 +18,8 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'dart:ui' as ui; + class MedicalFileAppointmentCard extends StatelessWidget { final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; final MyAppointmentsViewModel myAppointmentsViewModel; @@ -39,11 +41,12 @@ class MedicalFileAppointmentCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppCustomChipWidget( - richText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false) - .toText12( - color: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, - fontWeight: FontWeight.w500) - .paddingOnly(left: 8.w), + richText: Directionality( + textDirection: ui.TextDirection.ltr, + child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false) + .toText12(color: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, fontWeight: FontWeight.w500, isEnglishOnly: true) + .paddingSymmetrical(8.w, 0), + ), icon: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppAssets.appointment_calendar_icon : AppAssets.alarm_clock_icon, iconColor: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, iconSize: 16.w, @@ -71,9 +74,7 @@ class MedicalFileAppointmentCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (patientAppointmentHistoryResponseModel.doctorNameObj ?? "") - .toText14(isBold: true, maxlines: 1) - .toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), + (patientAppointmentHistoryResponseModel.doctorNameObj ?? "").toText14(isBold: true, maxlines: 1).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), (patientAppointmentHistoryResponseModel.clinicName ?? "") .toText12(maxLine: 1, fontWeight: FontWeight.w500, color: AppColors.greyTextColor) .toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), @@ -103,10 +104,8 @@ class MedicalFileAppointmentCard extends StatelessWidget { // widget.myAppointmentsViewModel.getPatientAppointments(true, false); }); }, - backgroundColor: - AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.15), - borderColor: - AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.01), + backgroundColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.15), + borderColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.01), textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), fontSize: 14.f, fontWeight: FontWeight.w500, diff --git a/lib/presentation/vital_sign/vital_sign_details_page.dart b/lib/presentation/vital_sign/vital_sign_details_page.dart index 980357de..75b6ec9d 100644 --- a/lib/presentation/vital_sign/vital_sign_details_page.dart +++ b/lib/presentation/vital_sign/vital_sign_details_page.dart @@ -148,6 +148,7 @@ class _VitalSignDetailsPageState extends State { isBold: true, color: scheme.iconFg, letterSpacing: -2, + isEnglishOnly: true ), ), SizedBox(width: 4.h), diff --git a/lib/presentation/vital_sign/vital_sign_page.dart b/lib/presentation/vital_sign/vital_sign_page.dart index 7d8ef384..af8f5ab9 100644 --- a/lib/presentation/vital_sign/vital_sign_page.dart +++ b/lib/presentation/vital_sign/vital_sign_page.dart @@ -358,6 +358,7 @@ class _VitalSignPageState extends State { value.toText17( isBold: true, color: AppColors.textColor, + isEnglishOnly: true ), if (unit.isNotEmpty) ...[ SizedBox(width: 3.w), diff --git a/lib/widgets/bottomsheet/generic_bottom_sheet.dart b/lib/widgets/bottomsheet/generic_bottom_sheet.dart index b6be36c5..fd79b7c1 100644 --- a/lib/widgets/bottomsheet/generic_bottom_sheet.dart +++ b/lib/widgets/bottomsheet/generic_bottom_sheet.dart @@ -158,9 +158,10 @@ class GenericBottomSheetState extends State { prefix: widget.isForEmail ? null : widget.countryCode, isBorderAllowed: false, isAllowLeadingIcon: true, - fontSize: 13, + fontSize: 18.f, isCountryDropDown: widget.isEnableCountryDropdown, leadingIcon: widget.isForEmail ? AppAssets.email : AppAssets.smart_phone, + fontFamily: "Poppins", ) : SizedBox(), ], diff --git a/lib/widgets/dropdown/country_dropdown_widget.dart b/lib/widgets/dropdown/country_dropdown_widget.dart index b6191edd..1cd387f9 100644 --- a/lib/widgets/dropdown/country_dropdown_widget.dart +++ b/lib/widgets/dropdown/country_dropdown_widget.dart @@ -100,7 +100,7 @@ class CustomCountryDropdownState extends State { children: [ Text( selectedCountry!.countryCode, - style: TextStyle(fontSize: 12.f, fontWeight: FontWeight.w600, letterSpacing: -0.4, height: 1.5), + style: TextStyle(fontSize: 12.f, fontWeight: FontWeight.w600, letterSpacing: -0.4, height: 1.5, fontFamily: "Poppins"), ), SizedBox(width: 4.h), if (widget.isEnableTextField) @@ -111,7 +111,7 @@ class CustomCountryDropdownState extends State { alignment: Alignment.centerLeft, child: TextField( focusNode: textFocusNode, - style: TextStyle(fontSize: 12.f, fontWeight: FontWeight.w600, letterSpacing: -0.4, height: 1.5), + style: TextStyle(fontSize: 12.f, fontWeight: FontWeight.w600, letterSpacing: -0.4, height: 1.5, fontFamily: "Poppins"), decoration: InputDecoration(hintText: "", isDense: true, border: InputBorder.none, contentPadding: EdgeInsets.zero), keyboardType: TextInputType.phone, onChanged: widget.onPhoneNumberChanged, diff --git a/lib/widgets/family_files/family_file_add_widget.dart b/lib/widgets/family_files/family_file_add_widget.dart index abc529bd..cd20c5f0 100644 --- a/lib/widgets/family_files/family_file_add_widget.dart +++ b/lib/widgets/family_files/family_file_add_widget.dart @@ -54,6 +54,7 @@ class FamilyFileAddWidget extends StatelessWidget { isAllowLeadingIcon: true, autoFocus: true, keyboardType: TextInputType.number, + fontFamily: "Poppins", padding: EdgeInsets.symmetric(vertical: 8.h), leadingIcon: AppAssets.student_card, ).paddingOnly(top: 8.h, bottom: 8.h), @@ -69,6 +70,7 @@ class FamilyFileAddWidget extends StatelessWidget { isAllowLeadingIcon: true, autoFocus: true, keyboardType: TextInputType.number, + fontFamily: "Poppins", padding: EdgeInsets.symmetric(vertical: 8.h), leadingIcon: AppAssets.smart_phone, ).paddingOnly(top: 8.h, bottom: 4.h), diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index 72cfdfce..aae196cf 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:hijri_gregorian_calendar/hijri_gregorian_calendar.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -11,6 +12,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/dropdown/country_dropdown_widget.dart'; import 'package:hmg_patient_app_new/widgets/time_picker_widget.dart'; +import 'dart:ui' as ui; class TextInputWidget extends StatelessWidget { final String labelText; @@ -48,6 +50,8 @@ class TextInputWidget extends StatelessWidget { final bool? isHideSwitcher; final bool? isArrowTrailing; + final String? fontFamily; + // final List countryList; // final Function(Country)? onCountryChange; @@ -86,6 +90,7 @@ class TextInputWidget extends StatelessWidget { this.maxLines = 6, this.isHideSwitcher, this.isArrowTrailing, + this.fontFamily, // this.countryList = const [], // this.onCountryChange, }); @@ -226,11 +231,8 @@ class TextInputWidget extends StatelessWidget { initialDate: DateTime.now(), showCalendarToggle: isHideSwitcher == true ? false : true, fontFamily: appState.getLanguageCode() == "ar" ? "GESSTwo" : "Poppins", - okWidget: - Padding(padding: EdgeInsets.only(right: 8.h), child: Utils.buildSvgWithAssets(icon: AppAssets.confirm, width: 24.h, height: 24.h)), - cancelWidget: Padding( - padding: EdgeInsets.only(right: 8.h), - child: Utils.buildSvgWithAssets(icon: AppAssets.cancel, iconColor: Colors.white, width: 24.h, height: 24.h)), + okWidget: Padding(padding: EdgeInsets.only(right: 8.h), child: Utils.buildSvgWithAssets(icon: AppAssets.confirm, width: 24.h, height: 24.h)), + cancelWidget: Padding(padding: EdgeInsets.only(right: 8.h), child: Utils.buildSvgWithAssets(icon: AppAssets.cancel, iconColor: Colors.white, width: 24.h, height: 24.h)), onCalendarTypeChanged: (bool value) { isGregorian = value; }); @@ -300,51 +302,103 @@ class TextInputWidget extends StatelessWidget { Widget _buildTextField(BuildContext context) { double fontS = fontSize ?? 14.f; - return TextField( - hintLocales: const [Locale('en', 'US')], - enabled: isEnable, - scrollPadding: EdgeInsets.zero, - keyboardType: isMultiline ? TextInputType.multiline : keyboardType, - controller: controller, - readOnly: isReadOnly, - textAlignVertical: TextAlignVertical.top, - textAlign: TextAlign.left, - textDirection: TextDirection.ltr, - onChanged: onChange, - focusNode: focusNode ?? _focusNode, - autofocus: autoFocus, - textInputAction: TextInputAction.done, - cursorHeight: isWalletAmountInput! ? 40.h : 20.h, - onTapOutside: (event) { - FocusManager.instance.primaryFocus?.unfocus(); + return Builder( + builder: (context) { + return Localizations.override( + context: context, + locale: const Locale('en', 'US'), // Force English locale for TextField + child: TextField( + hintLocales: const [Locale('en', 'US')], + enabled: isEnable, + scrollPadding: EdgeInsets.zero, + keyboardType: isMultiline ? TextInputType.multiline : keyboardType, + controller: controller, + readOnly: isReadOnly, + textAlignVertical: TextAlignVertical.top, + textAlign: TextAlign.left, + textDirection: TextDirection.ltr, + onChanged: onChange, + focusNode: focusNode ?? _focusNode, + autofocus: autoFocus, + textInputAction: TextInputAction.done, + cursorHeight: isWalletAmountInput! ? 40.h : 20.h, + onTapOutside: (event) { + FocusManager.instance.primaryFocus?.unfocus(); + }, + onSubmitted: onSubmitted, + minLines: isMultiline ? minLines : 1, + maxLines: isMultiline ? maxLines : 1, + style: TextStyle( + fontSize: fontS, + height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), + fontWeight: FontWeight.w500, + color: AppColors.textColor, + letterSpacing: -1, + // fontFamily: keyboardType == TextInputType.number ? getIt.get().isArabic() ? 'GESSTwo' : 'Poppins' : 'Poppins', + fontFamily: fontFamily, + locale: const Locale('en', 'US'), // Force English locale for text style + ), + decoration: InputDecoration( + isDense: true, + hintText: hintText, + hintStyle: TextStyle(fontSize: 14.f, height: 21 / 16, fontWeight: FontWeight.w500, color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), letterSpacing: -0.75), + prefixIconConstraints: BoxConstraints(minWidth: 30.h), + prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, weight: FontWeight.w500), + contentPadding: EdgeInsets.zero, + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + ), + ), + ); }, - onSubmitted: onSubmitted, - minLines: isMultiline ? minLines : 1, - maxLines: isMultiline ? maxLines : 1, - style: TextStyle( - fontSize: fontS, - height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), - fontWeight: FontWeight.w500, - color: AppColors.textColor, - letterSpacing: -1, - ), - decoration: InputDecoration( - isDense: true, - hintText: hintText, - hintStyle: TextStyle( - fontSize: 14.f, - height: 21 / 16, - fontWeight: FontWeight.w500, - color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), - letterSpacing: -0.75), - prefixIconConstraints: BoxConstraints(minWidth: 30.h), - prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, weight: FontWeight.w500), - contentPadding: EdgeInsets.zero, - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - ), ); + + // TextField( + // hintLocales: const [Locale('en', 'US')], + // enabled: isEnable, + // scrollPadding: EdgeInsets.zero, + // keyboardType: isMultiline ? TextInputType.multiline : keyboardType, + // controller: controller, + // readOnly: isReadOnly, + // textAlignVertical: TextAlignVertical.top, + // textAlign: TextAlign.left, + // textDirection: TextDirection.ltr, + // onChanged: onChange, + // focusNode: focusNode ?? _focusNode, + // autofocus: autoFocus, + // textInputAction: TextInputAction.done, + // cursorHeight: isWalletAmountInput! ? 40.h : 20.h, + // onTapOutside: (event) { + // FocusManager.instance.primaryFocus?.unfocus(); + // }, + // onSubmitted: onSubmitted, + // minLines: isMultiline ? minLines : 1, + // maxLines: isMultiline ? maxLines : 1, + // style: TextStyle( + // fontSize: fontS, + // height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), + // fontWeight: FontWeight.w500, + // color: AppColors.textColor, + // letterSpacing: -1, + // ), + // decoration: InputDecoration( + // isDense: true, + // hintText: hintText, + // hintStyle: TextStyle( + // fontSize: 14.f, + // height: 21 / 16, + // fontWeight: FontWeight.w500, + // color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), + // letterSpacing: -0.75), + // prefixIconConstraints: BoxConstraints(minWidth: 30.h), + // prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, weight: FontWeight.w500), + // contentPadding: EdgeInsets.zero, + // border: InputBorder.none, + // focusedBorder: InputBorder.none, + // enabledBorder: InputBorder.none, + // ), + // ); } _buildTrailingIconForSearch(BuildContext context) { From 23abbebf9e2b3963df092d8cd7c56ff151f34431 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Sun, 8 Feb 2026 22:36:44 +0300 Subject: [PATCH 57/67] arabic fixes --- lib/extensions/string_extensions.dart | 4 +-- .../immediate_livecare_payment_details.dart | 32 +++++++++---------- .../home/widgets/habib_wallet_card.dart | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index ee5feed2..a236de5b 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -311,11 +311,11 @@ extension EmailValidator on String { style: TextStyle(height: height ?? 23 / 28, color: color ?? AppColors.blackColor, fontSize: 28.f, letterSpacing: letterSpacing ?? -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), ); - Widget toText32({FontWeight? weight, Color? color, bool isBold = false, bool isCenter = false}) => Text( + Widget toText32({bool isEnglishOnly = false, FontWeight? weight, Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 32.f, letterSpacing: -1, fontFamily: "Poppins", fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal), + height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 32.f, letterSpacing: -1, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal), ); Widget toText44({Color? color, bool isBold = false}) => Text( diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index e9e79cb6..4992d850 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -1,4 +1,3 @@ - import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; @@ -185,7 +184,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { children: [ LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.amount!.toText16(isBold: true), AppColors.blackColor, 13, - isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال"), + isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || + immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال"), ], ).paddingSymmetrical(24.h, 0.h), Row( @@ -194,7 +194,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( immediateLiveCareVM.liveCareImmediateAppointmentFeesList.tax!.toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, - isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), + isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || + immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), @@ -203,7 +204,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { children: [ SizedBox(width: 150.h, child: Utils.getPaymentMethods()), Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total!.toText24(isBold: true), AppColors.blackColor, 17, - isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), + isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || + immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") @@ -214,18 +216,16 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { if (val) { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingLiveCareRequest.tr(context: context)); - await immediateLiveCareVM.addNewCallRequestForImmediateLiveCare("${appState.getAuthenticatedUser()!.patientId}${DateTime - .now() - .millisecondsSinceEpoch}"); - await immediateLiveCareVM.getPatientLiveCareHistory(); - LoaderBottomSheet.hideLoader(); - if (immediateLiveCareVM.patientHasPendingLiveCareRequest) { - Navigator.pushAndRemoveUntil( - context, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); + await immediateLiveCareVM.addNewCallRequestForImmediateLiveCare("${appState.getAuthenticatedUser()!.patientId}${DateTime.now().millisecondsSinceEpoch}"); + await immediateLiveCareVM.getPatientLiveCareHistory(); + LoaderBottomSheet.hideLoader(); + if (immediateLiveCareVM.patientHasPendingLiveCareRequest) { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); Navigator.of(context).push( CustomPageRoute( page: ImmediateLiveCarePendingRequestPage(), diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index e09b1621..72565d03 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -87,7 +87,7 @@ class HabibWalletCard extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.h), - habibWalletVM.habibWalletAmount.toString().toText32(isBold: true).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + habibWalletVM.habibWalletAmount.toString().toText32(isBold: true, isEnglishOnly: true).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), ], ); }), From c9279e22725d8b87a110ba99e5cbd2b82f6f7990 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 9 Feb 2026 10:40:32 +0300 Subject: [PATCH 58/67] updates --- assets/langs/ar-SA.json | 3 +- assets/langs/en-US.json | 4 +-- icon.jpg | Bin 0 -> 98097 bytes .../book_appointments_repo.dart | 2 +- .../book_appointments_view_model.dart | 8 +++-- lib/generated/locale_keys.g.dart | 1 + .../review_appointment_page.dart | 2 +- .../book_appointment/select_doctor_page.dart | 2 +- .../widgets/appointment_calendar.dart | 30 +++++++++++------- 9 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 icon.jpg diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 88d56305..3292fb99 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1532,5 +1532,6 @@ "servicePriceList": "قائمة أسعار الخدمات", "servicePriceListDesc": "توضح قائمة أسعار الخدمات أدناه رسوم الخدمات الصحية المقدمة للمرضى بنظام الدفع النقدي. أما فيما يتعلق بالخدمات المشمولة بالتأمين، فسيتم تطبيق التغطية التأمينية والتحقق من الأهلية واحتساب نسب التحمل وفقًا لشروط وثيقة التأمين وجدول المنافع المعتمد لكل شركة تأمين.", "servicePriceListRights": "يحق للمريض الحصول على متابعة مجانية في غضون 14 يومًا من الزيارة الأولى", - "serviceName": "اسم الخدمة" + "serviceName": "اسم الخدمة", + "noFreeSlot": "لا توجد مواعيد متاحة في التاريخ المحدد. يرجى اختيار تاريخ آخر أو إعادة المحاولة لاحقاً." } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 47f0d691..5ef9b564 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1524,6 +1524,6 @@ "servicePriceList": "Services Price List", "servicePriceListDesc": "Below is the services price list outline the healthcare services fees for cash payments, where the insurance coverage, eligibility, and co-payment deductions will be processed in accordance with the insurance policy terms and the table of benefits of each insurance providers:", "servicePriceListRights": "The patient has the right to a free follow-up within 14 days of initial visit", - - "serviceName": "Service Name" + "serviceName": "Service Name", + "noFreeSlot": "No free slot available for the selected date. Please select another date or check back later." } diff --git a/icon.jpg b/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65ca5c0525f457452c9f93287908988ceaa1adc0 GIT binary patch literal 98097 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 getDoctorFreeSlots({bool isBookingForLiveCare = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { docFreeSlots.clear(); DateTime date; - final DateFormat formatter = DateFormat('HH:mm'); + final DateFormat formatter = DateFormat('HH:mm', "en_US"); final DateFormat dateFormatter = DateFormat('yyyy-MM-dd'); Map _eventsParsed; diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index f53c5f0d..94607755 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1523,5 +1523,6 @@ abstract class LocaleKeys { static const servicePriceListDesc = 'servicePriceListDesc'; static const servicePriceListRights = 'servicePriceListRights'; static const serviceName = 'serviceName'; + static const noFreeSlot = 'noFreeSlot'; } diff --git a/lib/presentation/book_appointment/review_appointment_page.dart b/lib/presentation/book_appointment/review_appointment_page.dart index f82295a5..5b8ba53f 100644 --- a/lib/presentation/book_appointment/review_appointment_page.dart +++ b/lib/presentation/book_appointment/review_appointment_page.dart @@ -120,7 +120,7 @@ class _ReviewAppointmentPageState extends State { ), AppCustomChipWidget( labelText: - "${LocaleKeys.date.tr(context: context)}: ${bookAppointmentsViewModel.isWaitingAppointmentSelected ? DateUtil.formatDateToDate(DateTime.now(), false) : bookAppointmentsViewModel.selectedAppointmentDate}", + "${LocaleKeys.date.tr(context: context)}: ${bookAppointmentsViewModel.isWaitingAppointmentSelected ? DateUtil.formatDateToDate(DateTime.now(), false) : bookAppointmentsViewModel.selectedAppointmentDisplayDate}", ), AppCustomChipWidget( labelText: diff --git a/lib/presentation/book_appointment/select_doctor_page.dart b/lib/presentation/book_appointment/select_doctor_page.dart index f8a0ad9d..1fc9d9ad 100644 --- a/lib/presentation/book_appointment/select_doctor_page.dart +++ b/lib/presentation/book_appointment/select_doctor_page.dart @@ -75,7 +75,7 @@ class _SelectDoctorPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: LocaleKeys.chooseDoctor.tr(), + title: LocaleKeys.chooseDoctor.tr(context: context), // bottomChild: Container( // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, customBorder: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r))), // padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.h), diff --git a/lib/presentation/book_appointment/widgets/appointment_calendar.dart b/lib/presentation/book_appointment/widgets/appointment_calendar.dart index 8fa72d4c..3d12f033 100644 --- a/lib/presentation/book_appointment/widgets/appointment_calendar.dart +++ b/lib/presentation/book_appointment/widgets/appointment_calendar.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; @@ -144,13 +145,14 @@ class _AppointmentCalendarState extends State { child: selectedDateDisplay.toText16(weight: FontWeight.w500), ), //TODO: Add Next Day Span here - SizedBox( - height: 100.h, - child: SingleChildScrollView( - scrollDirection: Axis.vertical, - child: Wrap( - direction: Axis.horizontal, - alignment: WrapAlignment.start, + dayEvents.isNotEmpty + ? SizedBox( + height: 100.h, + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.start, spacing: 6.h, runSpacing: 6.h, children: List.generate( @@ -168,10 +170,13 @@ class _AppointmentCalendarState extends State { ), ), ), - ), + ) + : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noFreeSlot.tr(context: context)), + SizedBox(height: 16.h), CustomButton( text: LocaleKeys.select.tr(context: context), + isDisabled: dayEvents.isEmpty, onPressed: () async { if (appState.isAuthenticated) { if(selectedTime == LocaleKeys.waitingAppointment.tr(context: context)){ @@ -186,7 +191,7 @@ class _AppointmentCalendarState extends State { ); } else { bookAppointmentsViewModel.getAppointmentNearestGate(projectID: bookAppointmentsViewModel.selectedDoctor.projectID!, clinicID: bookAppointmentsViewModel.selectedDoctor.clinicID!); - bookAppointmentsViewModel.setSelectedAppointmentDateTime(selectedDate, selectedTime); + bookAppointmentsViewModel.setSelectedAppointmentDateTime(selectedDate, selectedTime, selectedDateDisplay); Navigator.of(context).pop(); Navigator.of(context).push( CustomPageRoute( @@ -304,11 +309,14 @@ class _AppointmentCalendarState extends State { Map timeSlot = {"isoTime": dayEvents[i].isoTime, "start": dayEvents[i].start.toString(), "end": dayEvents[i].end.toString(), "vidaDate": dayEvents[i].vidaDate}; timeList.add(timeSlot); } - selectedTime = dayEvents[selectedButtonIndex].isoTime!; + if (dayEvents.isNotEmpty) { + selectedTime = dayEvents[selectedButtonIndex].isoTime!; + } + setState(() {}); } void _onDaySelected(DateTime day) { - final DateFormat formatter = DateFormat('yyyy-MM-dd'); + final DateFormat formatter = DateFormat('yyyy-MM-dd', "en-US"); setState(() { selectedDateDisplay = DateUtil.getMonthDayYearDateFormatted(day); selectedNextDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day.add(Duration(days: 1)), "en"); From 102690b2b8c445db0afff85f1081c8049710b43e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 9 Feb 2026 10:41:16 +0300 Subject: [PATCH 59/67] update --- ios/Runner.xcodeproj/project.pbxproj | 54 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 7a41ae2c..dd2d96ef 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -18,12 +18,12 @@ 61243B562EC5FA3700D46FA0 /* PenguinNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61243B432EC5FA3700D46FA0 /* PenguinNavigator.swift */; }; 61243B572EC5FA3700D46FA0 /* PenguinViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61243B462EC5FA3700D46FA0 /* PenguinViewFactory.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 766D8CB62EC60BE600D05E07 /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB32EC60BE600D05E07 /* Penguin.xcframework */; }; - 766D8CB72EC60BE600D05E07 /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB32EC60BE600D05E07 /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 766D8CB82EC60BE600D05E07 /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB42EC60BE600D05E07 /* PenNavUI.xcframework */; }; - 766D8CB92EC60BE600D05E07 /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB42EC60BE600D05E07 /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 766D8CBA2EC60BE600D05E07 /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB52EC60BE600D05E07 /* PenguinINRenderer.xcframework */; }; - 766D8CBB2EC60BE600D05E07 /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 766D8CB52EC60BE600D05E07 /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 765A5A8C2F35CD8B0003FF7D /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A802F35CD730003FF7D /* Penguin.xcframework */; }; + 765A5A8D2F35CD8B0003FF7D /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A802F35CD730003FF7D /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 765A5A8E2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */; }; + 765A5A8F2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 765A5A902F35CD8B0003FF7D /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */; }; + 765A5A912F35CD8B0003FF7D /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -41,15 +41,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + 765A5A922F35CD8B0003FF7D /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - 766D8CB72EC60BE600D05E07 /* Penguin.xcframework in Embed Frameworks */, - 766D8CBB2EC60BE600D05E07 /* PenguinINRenderer.xcframework in Embed Frameworks */, - 766D8CB92EC60BE600D05E07 /* PenNavUI.xcframework in Embed Frameworks */, + 765A5A8F2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Embed Frameworks */, + 765A5A8D2F35CD8B0003FF7D /* Penguin.xcframework in Embed Frameworks */, + 765A5A912F35CD8B0003FF7D /* PenNavUI.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -73,9 +73,9 @@ 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7595037DD52211B91157B0F3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 766D8CB32EC60BE600D05E07 /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = ""; }; - 766D8CB42EC60BE600D05E07 /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = ""; }; - 766D8CB52EC60BE600D05E07 /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = ""; }; + 765A5A802F35CD730003FF7D /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Penguin.xcframework; sourceTree = ""; }; + 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenguinINRenderer.xcframework; sourceTree = ""; }; + 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenNavUI.xcframework; sourceTree = ""; }; 769C9BF82E6F106D009F68A9 /* RunnerDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerDebug.entitlements; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 8E12CEEB8E334EE22D5259D7 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; @@ -95,9 +95,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 766D8CB62EC60BE600D05E07 /* Penguin.xcframework in Frameworks */, - 766D8CBA2EC60BE600D05E07 /* PenguinINRenderer.xcframework in Frameworks */, - 766D8CB82EC60BE600D05E07 /* PenNavUI.xcframework in Frameworks */, + 765A5A8C2F35CD8B0003FF7D /* Penguin.xcframework in Frameworks */, + 765A5A902F35CD8B0003FF7D /* PenNavUI.xcframework in Frameworks */, + 765A5A8E2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Frameworks */, DE1EF78253E64BE86845D2CC /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -136,9 +136,9 @@ 766D8CB22EC60BE600D05E07 /* Frameworks */ = { isa = PBXGroup; children = ( - 766D8CB32EC60BE600D05E07 /* Penguin.xcframework */, - 766D8CB52EC60BE600D05E07 /* PenguinINRenderer.xcframework */, - 766D8CB42EC60BE600D05E07 /* PenNavUI.xcframework */, + 765A5A802F35CD730003FF7D /* Penguin.xcframework */, + 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */, + 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */, D562310E31D1DDEFA02A6C12 /* Pods_Runner.framework */, ); name = Frameworks; @@ -235,10 +235,10 @@ 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 8372B02399CDF54531650AD4 /* [CP] Embed Pods Frameworks */, 81DE7C26F41956799E954FCE /* [CP] Copy Pods Resources */, + 765A5A922F35CD8B0003FF7D /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, ); buildRules = ( ); @@ -524,8 +524,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone"; + MARKETING_VERSION = 0.0.1; + PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -710,8 +710,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone"; + MARKETING_VERSION = 0.0.1; + PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -739,8 +739,8 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = "com.HMG.HMG-Smartphone"; + MARKETING_VERSION = 0.0.1; + PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; From 2c7f4ddc48cd0f9e19065a3924b8160c2daab7c4 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Mon, 9 Feb 2026 11:12:56 +0300 Subject: [PATCH 60/67] Ai Analysis & PMA-(1078,1079) --- assets/images/svg/ai_overview.svg | 19 + assets/images/svg/calculator_icon.svg | 3 + assets/images/svg/guard_icon.svg | 5 + assets/images/svg/high_caution.svg | 5 + assets/images/svg/information-circle.svg | 3 + assets/langs/ar-SA.json | 44 +- assets/langs/en-US.json | 42 +- lib/core/api_consts.dart | 2 + lib/core/app_assets.dart | 5 + .../authentication_view_model.dart | 11 +- lib/features/lab/lab_repo.dart | 103 +++- lib/features/lab/lab_view_model.dart | 245 ++++---- .../ai_overview_labresult_model_payload.dart | 69 +++ .../ai_overview_labresults_by_ai_model.dart | 177 ++++++ .../lab/models/resp_models/lab_result.dart | 4 + ...atient_lab_order_response_by_ai_model.dart | 145 +++++ lib/generated/locale_keys.g.dart | 38 ++ .../authentication/saved_login_screen.dart | 1 + .../book_appointment/select_clinic_page.dart | 94 ++- .../health_calculator_detailed_page.dart | 39 +- .../health_calculator_view_model.dart | 1 + .../widgets/bf.dart | 2 +- lib/presentation/lab/lab_orders_page.dart | 2 +- .../LabResultByClinic.dart | 27 +- .../ai_analysis_widget.dart | 100 ++++ .../lab/lab_results/lab_result_details.dart | 136 ++--- .../lab_ai_analysis_detailed_page.dart | 538 ++++++++++++++++++ lib/services/dialog_service.dart | 21 +- lib/theme/colors.dart | 2 + lib/widgets/appbar/collapsing_list_view.dart | 112 ++-- 30 files changed, 1704 insertions(+), 291 deletions(-) create mode 100644 assets/images/svg/ai_overview.svg create mode 100644 assets/images/svg/calculator_icon.svg create mode 100644 assets/images/svg/guard_icon.svg create mode 100644 assets/images/svg/high_caution.svg create mode 100644 assets/images/svg/information-circle.svg create mode 100644 lib/features/lab/models/ai_overview_labresult_model_payload.dart create mode 100644 lib/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart create mode 100644 lib/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart create mode 100644 lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart create mode 100644 lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart diff --git a/assets/images/svg/ai_overview.svg b/assets/images/svg/ai_overview.svg new file mode 100644 index 00000000..95c29aac --- /dev/null +++ b/assets/images/svg/ai_overview.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/svg/calculator_icon.svg b/assets/images/svg/calculator_icon.svg new file mode 100644 index 00000000..989a4db8 --- /dev/null +++ b/assets/images/svg/calculator_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/guard_icon.svg b/assets/images/svg/guard_icon.svg new file mode 100644 index 00000000..e3a68d9d --- /dev/null +++ b/assets/images/svg/guard_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/high_caution.svg b/assets/images/svg/high_caution.svg new file mode 100644 index 00000000..d268468f --- /dev/null +++ b/assets/images/svg/high_caution.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/information-circle.svg b/assets/images/svg/information-circle.svg new file mode 100644 index 00000000..f1a850e4 --- /dev/null +++ b/assets/images/svg/information-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 178b4c05..3df60413 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1526,8 +1526,48 @@ "trackerAndOthers": "المتتبع وأخرى", "bmi": "مؤشر كتلة الجسم", "yesPleaseINeedHelp": "نعم، من فضلك أريد المساعدة", - "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة" - "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة" + "noThanksIKnowTheClinic": "لا شكراً، أعرف العيادة", + "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة", + "aiOverView": "AI ملخص", + "generateAiAnalysis": "قم بإجراء تحليل لهذا الطلب AI", + "aiAnalysis": "AI تحليل", + "prediction": "تنبؤ", + "prevention": "وقاية", + "disclaimer": "تنصل", + "thisAboveInfo": "المعلومات المذكورة أعلاه تم إنشاؤها بواسطة AI", + "aiDisclaimer": "سيتم مشاركة بيانات نتائج تحاليلك المخبرية بشكل آمن مع خدمة الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في تقديم رؤى صحية مُخصصة. هل ترغب في المتابعة؟", + "consent": "موافقة", + "bmiNormalDescription": "مؤشر كتلة جسمك ضمن المعدل الصحي. استمر في اتباع نظام غذائي متوازن، وممارسة النشاط البدني بانتظام، وإجراء الفحوصات الدورية للحفاظ على صحة جيدة. راقب أي تغييرات ملحوظة مع مرور الوقت.", + "bmiUnderweightDescription": "يشير مؤشر كتلة الجسم إلى أنك تعاني من نقص الوزن. لذا، يُنصح بزيادة السعرات الحرارية المتناولة من خلال تناول الأطعمة الغنية بالعناصر الغذائية، وممارسة تمارين المقاومة لبناء العضلات، واستشارة أخصائي رعاية صحية للتحقق من وجود أسباب كامنة.", + "bmiOverweightDescription": "يشير مؤشر كتلة الجسم إلى زيادة الوزن. لذا، يُنصح بالسعي إلى إنقاص الوزن تدريجياً وبشكل مستدام من خلال تقليل السعرات الحرارية بشكل معتدل، وممارسة النشاط البدني بانتظام، واختيار الأطعمة الصحية. استشر طبيبك قبل إجراء أي تغييرات جذرية في نمط حياتك.", + "caloriesMaintenanceDescription": "السعرات الحرارية اليومية المُقدَّرة للحفاظ على وزنك الحالي بناءً على مستوى نشاطك ومعدل الأيض لديك. استخدم هذه الكمية كخط أساس: زدها قليلاً لزيادة الكتلة العضلية، أو قللها قليلاً لإنقاص الوزن تدريجياً. تابع تقدمك وعدّل الخطة كل أسبوعين إلى أربعة أسابيع.", + "caloriesModerateDeficitDescription": "نظام غذائي معتدل لتقليل السعرات الحرارية مصمم لإنقاص الوزن بشكل ثابت ومستدام (عادةً من 0.25 إلى 0.5 كيلوغرام أسبوعيًا). يُنصح بدمجه مع تمارين المقاومة وتناول كمية كافية من البروتين للحفاظ على الكتلة العضلية. تجنب التخفيضات الحادة في السعرات الحرارية واستشر طبيبًا مختصًا إذا كنت تعاني من أي حالة صحية.", + "caloriesAggressiveDeficitDescription": "يؤدي خفض السعرات الحرارية بشكل كبير إلى فقدان الوزن بشكل أسرع، ولكنه قد يصعب الاستمرار عليه ويزيد من خطر نقص العناصر الغذائية والإرهاق وفقدان الكتلة العضلية. لا يُنصح باتباعه على المدى الطويل؛ استشر طبيبًا أو أخصائي تغذية قبل الاستمرار.", + "bodyFatEssentialDescription": "نسبة الدهون في جسمك ضمن النطاق الأساسي/الرياضي. هذا المستوى شائع لدى الرياضيين ويشير إلى انخفاض نسبة الدهون في الجسم. مع أن هذا قد يكون مثاليًا للأداء، تأكد من الحفاظ على تغذية سليمة ووظائف هرمونية متوازنة. استشر طبيبًا إذا شعرت بالتعب، أو واجهت مشاكل هرمونية، أو أي مخاوف صحية أخرى.", + "bodyFatFitnessDescription": "نسبة الدهون في جسمك ضمن النطاق الصحي. وهذا يدل على مستوى صحي من الدهون في الجسم يرتبط بلياقة بدنية جيدة. حافظ على نمط حياتك الحالي، بما في ذلك ممارسة الرياضة بانتظام واتباع نظام غذائي متوازن، للحفاظ على هذا المستوى الصحي.", + "bodyFatAverageDescription": "نسبة الدهون في جسمك ضمن المعدل الطبيعي/المقبول، وهي نسبة تُعتبر صحية لعموم الناس. لتحسين تكوين جسمك، يُنصح بممارسة تمارين القوة، وتمارين القلب والأوعية الدموية، واتباع نظام غذائي متوازن. ركّز على التغييرات التدريجية والمستدامة للحفاظ على صحتك على المدى الطويل.", + "bodyFatObeseDescription": "نسبة الدهون في جسمك أعلى من المعدل الصحي الموصى به. قد يزيد هذا من المخاطر الصحية، بما في ذلك أمراض القلب والأوعية الدموية، والسكري، ومشاكل المفاصل. يُنصح باستشارة طبيب أو أخصائي تغذية معتمد لوضع خطة علاجية شخصية تشمل التغذية المتوازنة، والنشاط البدني المنتظم، وتعديلات نمط الحياة لتحقيق إدارة مستدامة للوزن.", + "bmrNormalDescription": "معدل الأيض الأساسي لديك ضمن النطاق المتوقع لحالتك. معدل الأيض الأساسي هو الطاقة التي يحتاجها جسمك في حالة الراحة للحفاظ على وظائفه الحيوية (التنفس، الدورة الدموية، درجة الحرارة). استخدم هذه القيمة كأساس لتقدير إجمالي احتياجاتك اليومية من الطاقة من خلال تطبيق مُعامل النشاط. حافظ على نظام غذائي متوازن وممارسة النشاط البدني بانتظام لدعم صحة التمثيل الغذائي.", + "bmrLowDescription": "معدل الأيض الأساسي لديك أقل من المعدل الطبيعي لحالتك. تشمل الأسباب المحتملة انخفاض كتلة العضلات، أو تراجع التمثيل الغذائي المرتبط بالتقدم في السن، أو التكيف الأيضي الناتج عن تقييد السعرات الحرارية لفترة طويلة. يُنصح بالتركيز على تمارين المقاومة لبناء العضلات والحفاظ عليها، والتأكد من تناول كميات كافية من البروتين والمغذيات الدقيقة، واستشارة أخصائي رعاية صحية إذا كان هذا الأمر غير متوقع.", + "bmrHighDescription": "معدل الأيض الأساسي لديك أعلى من المتوسط \u200B\u200Bبالنسبة لحالتك. قد يعكس هذا زيادة في كتلة العضلات، أو صغر السن، أو ارتفاع معدل الأيض لديك بشكل طبيعي، مما يعني أنك تحرق طاقة أكبر أثناء الراحة. استخدم هذه المعلومات لتحديد احتياجاتك من السعرات الحرارية: احتياجات أعلى للحفاظ على الوزن أو بناء العضلات، ونقص معتدل في السعرات الحرارية لإنقاص الوزن. استشر طبيبك إذا لاحظت أي تغيرات سريعة غير مبررة.", + "ibwAtTargetDescription": "Your weight is at the ideal target. Maintain your current habits — balanced diet and regular activity — to keep this.", + "ibwBelowTargetDescription": "You are below the ideal weight by {kg} kg. Aim to gradually increase weight with a modest calorie surplus, nutrient-dense foods, and resistance training.", + "ibwAboveTargetDescription": "You are above the ideal weight by {kg} kg. Aim for a gradual, sustainable weight reduction through a moderate calorie deficit, increased activity, and balanced nutrition.", + "ibwCloseToRangeDescription": "Your weight is close to the ideal range. Maintain a balanced diet and regular activity; follow personalized advice from a healthcare professional if needed.", + "ibwUnderweightDescription": "You are below the ideal weight by {kg} kg. Focus on increasing calorie intake with nutrient-dense foods, prioritize protein and resistance training to build healthy mass, and consider consulting a healthcare professional.", + "ibwUnderweightGenericDescription": "You appear underweight compared to the ideal. Consider increasing calorie intake with nutrient-dense foods and resistance training; seek professional guidance if needed.", + "ibwOverweightDescription": "You are above the ideal weight by {kg} kg. Aim for a gradual, sustainable weight loss strategy — moderate calorie deficit, regular physical activity, and balanced nutrition. Consult a professional before major changes.", + "ibwOverweightGenericDescription": "You appear above the ideal weight. Consider a gradual, sustainable calorie deficit combined with activity and balanced nutrition; consult a professional if needed.", + "dietVeryLowCarbsDescription": "Very low‑carb (ketogenic) approach: minimal carbohydrates, higher fat and moderate protein. May support rapid weight loss and improved blood sugar control for some, but can be hard to sustain and may cause nutrient gaps. Monitor hydration/electrolytes and consult a professional for long‑term use.", + "dietLowCarbsDescription": "Low‑carb, higher‑protein plan: reduced carbohydrates with increased protein to support satiety and muscle maintenance. Helpful for weight management and glycemic control when balanced with vegetables and healthy fats. Ensure adequate fiber and micronutrients.", + "dietModerateCarbsDescription": "Moderate carbohydrate intake with balanced protein and fats: provides steady energy for daily activity and exercise while allowing flexibility. Suitable for many people aiming for sustainable weight management and performance.", + "dietUSDAGuidelinesDescription": "USDA‑based balanced pattern: emphasizes fruits, vegetables, whole grains, lean proteins, and limited added sugars and saturated fats. Evidence‑based framework for general health, nutrient adequacy, and chronic disease prevention.", + "dietZoneDietDescription": "Zone Diet (~40% carbs / 30% protein / 30% fat): emphasizes hormonal balance and portion control. May improve body composition and energy for some, but requires planning; personalize with a nutrition professional.", + "contextDependent": "يعتمد السياق", + "calculatedValue": "القيمة المحسوبة", + "calculationFormula": "صيغة الحساب" + + } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index d6f52289..77998074 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1517,8 +1517,46 @@ "trackerAndOthers": "Tracker & Others", "bmi": "BMI", "yesPleaseINeedHelp": "Yes, Please I need help", - "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic" - "unableToSendOTP": "Unable to send Verification OTP" + "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic", + "unableToSendOTP": "Unable to send Verification OTP", + "aiOverView": "AI Overview", + "generateAiAnalysis": "Generate AI analysis for this order", + "aiAnalysis": "AI Analysis", + "prediction": "Prediction", + "prevention": "Prevention", + "disclaimer": "Disclaimer", + "thisAboveInfo": "The above information is generated by", + "aiDisclaimer": "Your lab result data will be securely shared with our AI service for analysis. This helps provide personalized health insights. Do you want to proceed?", + "consent": "Consent", + "bmiNormalDescription": "Your BMI is within the healthy range. Continue a balanced diet, regular physical activity, and routine checkups to maintain good health. Monitor any significant changes over time.", + "bmiUnderweightDescription": "BMI suggests you are underweight. Consider increasing calorie intake with nutrient-dense foods, include resistance training to build muscle, and consult a healthcare professional to check for underlying causes.", + "bmiOverweightDescription": "BMI indicates overweight. Aim for gradual, sustainable weight loss through a modest calorie deficit, regular physical activity, and healthier food choices. Seek medical advice before major lifestyle changes.", + "caloriesMaintenanceDescription": "Estimated daily calories to maintain your current weight given your activity level and metabolism. Use this as a baseline: increase slightly for muscle gain, or create a small deficit for gradual weight loss. Track progress and adjust every 2–4 weeks.", + "caloriesModerateDeficitDescription": "A moderate calorie reduction designed for steady, sustainable weight loss (typically 0.25–0.5 kg per week). Combine with resistance training and adequate protein to preserve muscle. Avoid extreme cuts and consult a professional if you have medical conditions.", + "caloriesAggressiveDeficitDescription": "A large calorie reduction that may produce faster weight loss but can be hard to sustain and increase risk of nutrient deficiencies, fatigue, or muscle loss. Not recommended long-term; seek guidance from a healthcare or nutrition professional before continuing.", + "bodyFatEssentialDescription": "Your body fat percentage is in the essential/athletic range. This level is typical for athletes and indicates very low body fat. While this may be optimal for performance, ensure you maintain adequate nutrition and hormone function. Consult a healthcare professional if you experience fatigue, hormonal issues, or other health concerns.", + "bodyFatFitnessDescription": "Your body fat percentage is in the fitness range. This indicates a healthy level of body fat associated with good physical conditioning. Maintain your current lifestyle habits including regular exercise and balanced nutrition to sustain this healthy range.", + "bodyFatAverageDescription": "Your body fat percentage is in the average/acceptable range. This is considered a healthy range for general population. To improve body composition, consider incorporating strength training, cardiovascular exercise, and a balanced diet. Focus on gradual, sustainable changes for long-term health.", + "bodyFatObeseDescription": "Your body fat percentage is above the recommended healthy range. This may increase health risks including cardiovascular disease, diabetes, and joint problems. Consider consulting a healthcare provider or registered dietitian to develop a personalized plan that includes balanced nutrition, regular physical activity, and lifestyle modifications for sustainable weight management.", + "bmrNormalDescription": "Your Basal Metabolic Rate (BMR) is within the expected range for your profile. BMR is the energy your body needs at rest to maintain vital functions (breathing, circulation, temperature). Use this value as the baseline for estimating total daily energy needs by applying an activity multiplier. Maintain a balanced diet and regular physical activity to support metabolic health.", + "bmrLowDescription": "Your BMR is lower than typical for your profile. Possible causes include lower lean muscle mass, age-related metabolic decline, or metabolic adaptation from prolonged calorie restriction. Consider focusing on resistance training to build/maintain muscle, ensure adequate protein and micronutrient intake, and consult a healthcare professional if this is unexpected.", + "bmrHighDescription": "Your BMR is higher than average for your profile. This can reflect greater lean mass, younger age, or a naturally higher metabolic rate, meaning you burn more energy at rest. Use this information to tailor calorie targets: higher needs for maintenance or muscle gain, moderate deficit for weight loss. Seek medical advice if you notice rapid unexplained changes.", + "ibwAtTargetDescription": "Your weight is at the ideal target. Maintain your current habits — balanced diet and regular activity — to keep this.", + "ibwBelowTargetDescription": "You are below the ideal weight by {kg} kg. Aim to gradually increase weight with a modest calorie surplus, nutrient-dense foods, and resistance training.", + "ibwAboveTargetDescription": "You are above the ideal weight by {kg} kg. Aim for a gradual, sustainable weight reduction through a moderate calorie deficit, increased activity, and balanced nutrition.", + "ibwCloseToRangeDescription": "Your weight is close to the ideal range. Maintain a balanced diet and regular activity; follow personalized advice from a healthcare professional if needed.", + "ibwUnderweightDescription": "You are below the ideal weight by {kg} kg. Focus on increasing calorie intake with nutrient-dense foods, prioritize protein and resistance training to build healthy mass, and consider consulting a healthcare professional.", + "ibwUnderweightGenericDescription": "You appear underweight compared to the ideal. Consider increasing calorie intake with nutrient-dense foods and resistance training; seek professional guidance if needed.", + "ibwOverweightDescription": "You are above the ideal weight by {kg} kg. Aim for a gradual, sustainable weight loss strategy — moderate calorie deficit, regular physical activity, and balanced nutrition. Consult a professional before major changes.", + "ibwOverweightGenericDescription": "You appear above the ideal weight. Consider a gradual, sustainable calorie deficit combined with activity and balanced nutrition; consult a professional if needed.", + "dietVeryLowCarbsDescription": "Very low‑carb (ketogenic) approach: minimal carbohydrates, higher fat and moderate protein. May support rapid weight loss and improved blood sugar control for some, but can be hard to sustain and may cause nutrient gaps. Monitor hydration/electrolytes and consult a professional for long‑term use.", + "dietLowCarbsDescription": "Low‑carb, higher‑protein plan: reduced carbohydrates with increased protein to support satiety and muscle maintenance. Helpful for weight management and glycemic control when balanced with vegetables and healthy fats. Ensure adequate fiber and micronutrients.", + "dietModerateCarbsDescription": "Moderate carbohydrate intake with balanced protein and fats: provides steady energy for daily activity and exercise while allowing flexibility. Suitable for many people aiming for sustainable weight management and performance.", + "dietUSDAGuidelinesDescription": "USDA‑based balanced pattern: emphasizes fruits, vegetables, whole grains, lean proteins, and limited added sugars and saturated fats. Evidence‑based framework for general health, nutrient adequacy, and chronic disease prevention.", + "dietZoneDietDescription": "Zone Diet (~40% carbs / 30% protein / 30% fat): emphasizes hormonal balance and portion control. May improve body composition and energy for some, but requires planning; personalize with a nutrition professional.", + "contextDependent": "Context Dependent", + "calculatedValue": "Calculated Value", + "calculationFormula": "Calculation Formula" diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 8319c9de..e71629d4 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -901,6 +901,8 @@ class ApiConsts { static String getPatientBloodGroup = "services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails"; static String getPatientBloodAgreement = "Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation"; + static String getAiOverViewLabOrders = "Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; + static String getAiOverViewLabOrder = "Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; // ************ static values for Api **************** static final double appVersionID = 50.3; diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 5b8d2ed5..d9d71200 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -251,6 +251,10 @@ class AppAssets { static const String alertSquare = '$svgBasePath/alert-square.svg'; static const String arrowRight = '$svgBasePath/arrow-right.svg'; static const String tickIcon = '$svgBasePath/tick.svg'; + static const String guradIcon = '$svgBasePath/guard_icon.svg'; + static const String calculatorIcon = '$svgBasePath/calculator_icon.svg'; + static const String informationIcon = '$svgBasePath/information-circle.svg'; + static const String highCautionIcon = '$svgBasePath/high_caution.svg'; // Symptoms Checker static const String calendarGrey = '$svgBasePath/calendar-grey.svg'; @@ -322,6 +326,7 @@ class AppAssets { static const String doctorResponseIcon = '$svgBasePath/doctor_response_icon.svg'; static const String changeLanguageHomePageIcon = '$svgBasePath/change_language_home_page.svg'; + static const String aiOverView = '$svgBasePath/ai_overview.svg'; // PNGS // static const String hmgLogo = '$pngBasePath/hmg_logo.png'; diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 82061607..e93c2465 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -279,9 +279,10 @@ class AuthenticationViewModel extends ChangeNotifier { loginTypeEnum = otpTypeEnum == OTPTypeEnum.sms ? LoginTypeEnum.sms : LoginTypeEnum.whatsapp; - if (phoneNumberController.text.isEmpty) { - phoneNumberController.text = "504278212"; - } + // if (phoneNumberController.text.isEmpty) { + // phoneNumberController.text = "504278212"; + // } + bool isValidated = ValidationUtils.isValidatePhoneAndId(phoneNumber: phoneNumberController.text, nationalId: nationalIdController.text); if (!isValidated) { @@ -404,7 +405,6 @@ class AuthenticationViewModel extends ChangeNotifier { return; } patientShareRequestID = apiResponse.data['PatientShareRequestID']; - print("PatientShareRequestID ==============: $patientShareRequestID"); _appState.setFamilyFileTokenID = apiResponse.data['LogInTokenID']; } if (apiResponse.messageStatus == 2) { @@ -581,7 +581,8 @@ class AuthenticationViewModel extends ChangeNotifier { if (!_appState.getIsChildLoggedIn) { await medicalVm.getFamilyFiles(status: 0); // await medicalVm.getAllPendingRecordsByResponseId(); - _navigationService.replaceAllRoutesAndNavigateToLanding(); + _navigationService.popUntilNamed(AppRoutes.landingScreen); + // _navigationService.replaceAllRoutesAndNavigateToLanding(); } } else { if (activation.list != null && activation.list!.isNotEmpty) { diff --git a/lib/features/lab/lab_repo.dart b/lib/features/lab/lab_repo.dart index e661157d..a4cdcf1c 100644 --- a/lib/features/lab/lab_repo.dart +++ b/lib/features/lab/lab_repo.dart @@ -5,6 +5,8 @@ import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:dartz/dartz.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_special_result.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -13,6 +15,7 @@ import 'models/resp_models/lab_result.dart' show LabResult; abstract class LabRepo { Future>>> getPatientLabOrders(); + Future>>> getPatientLabResults(PatientLabOrdersResponseModel laborder, bool isVidaPlus, String procedureName); Future>>> getPatientLabResultsByHospitals(PatientLabOrdersResponseModel laborder, bool isVidaPlus); @@ -22,6 +25,10 @@ abstract class LabRepo { Future>> getLabResultReportPDF({required PatientLabOrdersResponseModel labOrder}); Future>> getLabResultsByAppointmentNo({required num appointmentNo, required num projectID, required num clinicID}); + + Future>> getPatientAiOverViewLabOrders(var payload); + + Future>> getPatientAiOverViewLabOrder(var payload); } class LabRepoImp implements LabRepo { @@ -71,10 +78,7 @@ class LabRepoImp implements LabRepo { } @override - Future>>> getPatientLabResults( - PatientLabOrdersResponseModel laborder, bool isVidaPlus, String procedureName - ) async { - + Future>>> getPatientLabResults(PatientLabOrdersResponseModel laborder, bool isVidaPlus, String procedureName) async { Map request = Map(); request['InvoiceNo_VP'] = isVidaPlus ? laborder!.invoiceNo : "0"; request['InvoiceNo'] = isVidaPlus ? "0" : laborder!.invoiceNo; @@ -100,10 +104,7 @@ class LabRepoImp implements LabRepo { throw Exception("lab list is empty"); } - final labOrders = list - .map((item) => LabResult.fromJson(item as Map)) - .toList() - .cast(); + final labOrders = list.map((item) => LabResult.fromJson(item as Map)).toList().cast(); apiResponse = GenericApiModel>( messageStatus: messageStatus, @@ -125,9 +126,7 @@ class LabRepoImp implements LabRepo { } @override - Future>>> - getPatientLabResultsByHospitals( - PatientLabOrdersResponseModel laborder, bool isVidaPlus) async { + Future>>> getPatientLabResultsByHospitals(PatientLabOrdersResponseModel laborder, bool isVidaPlus) async { Map request = Map(); request['InvoiceNo_VP'] = isVidaPlus ? laborder!.invoiceNo : "0"; request['InvoiceNo'] = isVidaPlus ? "0" : laborder!.invoiceNo; @@ -175,9 +174,7 @@ class LabRepoImp implements LabRepo { } @override - Future>>> - getSpecialLabResult( - PatientLabOrdersResponseModel laborder, bool isVidaPlus) async { + Future>>> getSpecialLabResult(PatientLabOrdersResponseModel laborder, bool isVidaPlus) async { Map request = Map(); request['InvoiceNo_VP'] = isVidaPlus ? laborder!.invoiceNo : "0"; request['InvoiceNo'] = isVidaPlus ? "0" : laborder!.invoiceNo; @@ -203,11 +200,7 @@ class LabRepoImp implements LabRepo { throw Exception("lab list is empty"); } - final labOrders = list - .map((item) => PatientLabSpecialResult.fromJson( - item as Map)) - .toList() - .cast(); + final labOrders = list.map((item) => PatientLabSpecialResult.fromJson(item as Map)).toList().cast(); apiResponse = GenericApiModel>( messageStatus: messageStatus, @@ -318,4 +311,76 @@ class LabRepoImp implements LabRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> getPatientAiOverViewLabOrder(var labOrder) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + ApiConsts.getAiOverViewLabOrder, + body: labOrder, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + var res; + if (response["analysis_result"] != null) { + res = response["analysis_result"]; + } + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: LabOrderResponseByAi.fromJson(res), + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getPatientAiOverViewLabOrders(var labOrder) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + ApiConsts.getAiOverViewLabOrders, + body: {"lab_results": labOrder}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + var res; + if (response["lab_analysis_result"] != null) { + res = response["lab_analysis_result"]; + } + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: LabOrdersResponseByAi.fromJson(res), + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/lab/lab_view_model.dart b/lib/features/lab/lab_view_model.dart index 118c54a0..9b4e941a 100644 --- a/lib/features/lab/lab_view_model.dart +++ b/lib/features/lab/lab_view_model.dart @@ -1,16 +1,24 @@ import 'dart:collection'; +import 'dart:convert'; import 'dart:core'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/loading_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart' show Utils; import 'package:hmg_patient_app_new/features/lab/lab_repo.dart'; +import 'package:hmg_patient_app_new/features/lab/models/ai_overview_labresult_model_payload.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/lab_result.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_results/lab_result_details.dart'; +import 'package:hmg_patient_app_new/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart'; +import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -53,20 +61,7 @@ class LabViewModel extends ChangeNotifier { List mainLabResults = []; List mainGraphPoints = []; List filteredGraphValues = []; - List months = [ - 'Jan', - 'Feb', - 'Mar', - 'April', - 'May', - 'Jun', - 'July', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec' - ]; + List months = ['Jan', 'Feb', 'Mar', 'April', 'May', 'Jun', 'July', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; late List _labSuggestionsList = []; @@ -86,22 +81,22 @@ class LabViewModel extends ChangeNotifier { List> patientLabOrdersByHospital = []; List> patientLabOrdersViewList = []; - LabViewModel( - {required this.labRepo, - required this.errorHandlerService, - required this.navigationService}); + LabOrderResponseByAi? labOrderResponseByAi; + LabOrdersResponseByAi? labOrdersResponseByAi; + + LabViewModel({required this.labRepo, required this.errorHandlerService, required this.navigationService}); initLabProvider() { // if (isLabNeedToLoad) { - patientLabOrders.clear(); - filteredLabOrders.clear(); - labOrderTests.clear(); - isLabOrdersLoading = true; - isLabResultsLoading = true; - patientLabOrdersByClinic.clear(); - patientLabOrdersByHospital.clear(); - patientLabOrdersViewList.clear(); - getPatientLabOrders(); + patientLabOrders.clear(); + filteredLabOrders.clear(); + labOrderTests.clear(); + isLabOrdersLoading = true; + isLabResultsLoading = true; + patientLabOrdersByClinic.clear(); + patientLabOrdersByHospital.clear(); + patientLabOrdersViewList.clear(); + getPatientLabOrders(); // } notifyListeners(); } @@ -133,13 +128,13 @@ class LabViewModel extends ChangeNotifier { final result = await labRepo.getPatientLabOrders(); result.fold( - (failure) async { - isLabOrdersLoading = false; - isLabResultsLoading = false; - notifyListeners(); - }, - // => await errorHandler_service.handleError(failure: failure), - (apiResponse) { + (failure) async { + isLabOrdersLoading = false; + isLabResultsLoading = false; + notifyListeners(); + }, + // => await errorHandler_service.handleError(failure: failure), + (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { @@ -203,11 +198,7 @@ class LabViewModel extends ChangeNotifier { } filterSuggestions() { - final List labels = patientLabOrders - .expand((order) => order.testDetails ?? []) - .map((detail) => detail.description) - .whereType() - .toList(); + final List labels = patientLabOrders.expand((order) => order.testDetails ?? []).map((detail) => detail.description).whereType().toList(); _labSuggestionsList = labels.toSet().toList(); notifyListeners(); @@ -319,14 +310,12 @@ class LabViewModel extends ChangeNotifier { ); } - Future getPatientLabResultByHospital( - PatientLabOrdersResponseModel laborder) async { + Future getPatientLabResultByHospital(PatientLabOrdersResponseModel laborder) async { isLabResultByHospitalLoading = true; notifyListeners(); mainLabResultsByHospitals.clear(); - final result = await labRepo.getPatientLabResultsByHospitals(laborder, - Utils.isVidaPlusProject(int.parse(laborder.projectID ?? "0"))); + final result = await labRepo.getPatientLabResultsByHospitals(laborder, Utils.isVidaPlusProject(int.parse(laborder.projectID ?? "0"))); result.fold( (failure) async { @@ -350,12 +339,9 @@ class LabViewModel extends ChangeNotifier { mainLabResults.clear(); filteredGraphValues.clear(); maxY = double.negativeInfinity; - minY = double.infinity; - maxX = double.infinity; - final result = await labRepo.getPatientLabResults( - laborder, - Utils.isVidaPlusProject(int.parse(laborder.projectID ?? "0")), - procedureName); + minY = double.infinity; + maxX = double.infinity; + final result = await labRepo.getPatientLabResults(laborder, Utils.isVidaPlusProject(int.parse(laborder.projectID ?? "0")), procedureName); result.fold( (failure) async { @@ -369,7 +355,6 @@ class LabViewModel extends ChangeNotifier { var recentThree = sort(apiResponse.data!); mainLabResults = recentThree; - double highRefrenceValue = double.negativeInfinity; String? flagForHighReferenceRange; double lowRefenceValue = double.infinity; @@ -377,11 +362,10 @@ class LabViewModel extends ChangeNotifier { recentThree.reversed.forEach((element) { try { - var dateTime = - DateUtil.convertStringToDate(element.verifiedOnDateTime!); + var dateTime = DateUtil.convertStringToDate(element.verifiedOnDateTime!); var resultValue = double.parse(element.resultValue!); - var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??""); - if (resultValue>maxY) { + var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); + if (resultValue > maxY) { maxY = resultValue; maxX = maxY; } @@ -398,14 +382,13 @@ class LabViewModel extends ChangeNotifier { } filteredGraphValues.add(DataPoint( - value: transformedValue, - actualValue:element.resultValue!, - label: formatDateAsMMYY(dateTime), - unitOfMeasurement: element.uOM, - displayTime: resultDate(dateTime), - time: DateUtil.convertStringToDate(element.verifiedOnDateTime), - referenceValue: element.calculatedResultFlag ?? "", - + value: transformedValue, + actualValue: element.resultValue!, + label: formatDateAsMMYY(dateTime), + unitOfMeasurement: element.uOM, + displayTime: resultDate(dateTime), + time: DateUtil.convertStringToDate(element.verifiedOnDateTime), + referenceValue: element.calculatedResultFlag ?? "", )); } catch (e) {} }); @@ -421,7 +404,7 @@ class LabViewModel extends ChangeNotifier { this.highRefrenceValue = double.parse(highRefrenceValue.toStringAsFixed(1)); this.lowRefenceValue = double.parse(lowRefenceValue.toStringAsFixed(1)); - if(maxY< highRefrenceValue) { + if (maxY < highRefrenceValue) { maxY = highRefrenceValue; } maxY += 25; @@ -431,7 +414,9 @@ class LabViewModel extends ChangeNotifier { checkIfGraphShouldBeDisplayed(recentResult); recentResult.verifiedOn = resultDate(DateUtil.convertStringToDate(recentResult.verifiedOnDateTime!)); // filteredGraphValues = [filteredGraphValues.first]; - navigationService.push(MaterialPageRoute( + labOrderResponseByAi = null; + navigationService.push( + MaterialPageRoute( builder: (_) => LabResultDetails(recentLabResult: recentResult, testDescription: testDescription), ), ); @@ -441,14 +426,13 @@ class LabViewModel extends ChangeNotifier { ); } - void checkIfGraphShouldBeDisplayed(LabResult recentResult){ + void checkIfGraphShouldBeDisplayed(LabResult recentResult) { shouldShowGraph = recentResult.checkIfGraphShouldBeDisplayed(); isGraphVisible = shouldShowGraph; notifyListeners(); } - Future getPatientSpecialResult( - PatientLabOrdersResponseModel laborder) async { + Future getPatientSpecialResult(PatientLabOrdersResponseModel laborder) async { isSpecialResultsLoading = true; labSpecialResult = ""; notifyListeners(); @@ -470,8 +454,7 @@ class LabViewModel extends ChangeNotifier { StringBuffer htmlbuffer = StringBuffer(""); apiResponse.data?.forEach((element) { - if(element.resultDataHTML != null && element.resultDataHTML?.isNotEmpty == true) - htmlbuffer.write("${element.resultDataHTML}

"); + if (element.resultDataHTML != null && element.resultDataHTML?.isNotEmpty == true) htmlbuffer.write("${element.resultDataHTML}

"); }); labSpecialResult = htmlbuffer.toString(); @@ -483,10 +466,8 @@ class LabViewModel extends ChangeNotifier { ); } - String resultDate(DateTime date){ - - - return '${date.day} ${months[date.month-1]},${date.year}'; + String resultDate(DateTime date) { + return '${date.day} ${months[date.month - 1]},${date.year}'; } double transformValueInRange(double inputValue, String flag) { @@ -494,7 +475,7 @@ class LabViewModel extends ChangeNotifier { double rangeStart, rangeEnd; switch (flag) { - case'LCL': + case 'LCL': case 'CL': rangeStart = 0.0; rangeEnd = 19.0; @@ -531,16 +512,17 @@ class LabViewModel extends ChangeNotifier { debugPrint("the transformed value is $transformedValue"); return transformedValue; } + void getSelectedDateRange(DateTime? start, DateTime? end) { maxY = double.negativeInfinity; - if(start == null && end == null) { + if (start == null && end == null) { mainLabResults.forEach((element) { final time = DateUtil.convertStringToDate(element.verifiedOnDateTime!); - try{ + try { var resultValue = double.parse(element.resultValue!); - var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??""); + var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); if (resultValue > maxY) { maxY = resultValue; } @@ -549,54 +531,43 @@ class LabViewModel extends ChangeNotifier { actualValue: element.resultValue!, label: formatDateAsMMYY(time), unitOfMeasurement: element.uOM, - displayTime: resultDate(time), time: DateUtil.convertStringToDate(element.verifiedOnDateTime), referenceValue: element.calculatedResultFlag ?? "", )); - }catch(e){ - - } + } catch (e) {} }); - - }else { + } else { filteredGraphValues.clear(); mainLabResults.forEach((element) { try { - var dateTime = - DateUtil.convertStringToDate(element.verifiedOnDateTime!); + var dateTime = DateUtil.convertStringToDate(element.verifiedOnDateTime!); var resultValue = double.parse(element.resultValue!); - var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag??""); + var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); if (resultValue > maxY) { maxY = resultValue; } if (start != null && end == null) { if (dateTime.isAtSameMomentAs(start)) { - filteredGraphValues.add(DataPoint( value: transformedValue, actualValue: element.resultValue!, unitOfMeasurement: element.uOM, - label: formatDateAsMMYY(dateTime), displayTime: resultDate(dateTime), - time: - DateUtil.convertStringToDate(element.verifiedOnDateTime), + time: DateUtil.convertStringToDate(element.verifiedOnDateTime), referenceValue: element.calculatedResultFlag ?? "")); } } else if (start != null && end != null) { if ((dateTime.isAfter(start)) && (dateTime.isBefore(end))) { - filteredGraphValues.add(DataPoint( value: transformedValue, actualValue: element.resultValue!, label: formatDateAsMMYY(dateTime), unitOfMeasurement: element.uOM, - displayTime: resultDate(dateTime), - time: - DateUtil.convertStringToDate(element.verifiedOnDateTime), + time: DateUtil.convertStringToDate(element.verifiedOnDateTime), referenceValue: element.calculatedResultFlag ?? "")); } } @@ -605,16 +576,13 @@ class LabViewModel extends ChangeNotifier { } filteredGraphValues = sortFilteredList(filteredGraphValues).reversed.toList(); - notifyListeners(); } String formatDateAsMMYY(DateTime date) { - - return '${months[date.month-1]}, ${date.year}'; + return '${months[date.month - 1]}, ${date.year}'; } - List sortByFlagAndValue(List original) { const priorityOrder = ['LCL', 'CL', 'L', 'N', 'H', 'CH', 'HCH']; @@ -648,7 +616,6 @@ class LabViewModel extends ChangeNotifier { } List sort(List original) { - final copy = List.from(original); copy.sort((a, b) { final aDate = DateUtil.convertStringToDate(a.verifiedOnDateTime); @@ -663,8 +630,6 @@ class LabViewModel extends ChangeNotifier { } List sortFilteredList(List original) { - - final copy = List.from(original); copy.sort((a, b) { final aDate = a.time; @@ -699,7 +664,7 @@ class LabViewModel extends ChangeNotifier { } } - String getFormattedDate(DateTime date){ + String getFormattedDate(DateTime date) { return DateFormat('EEEE, dd MMMM. yyyy').format(date); } @@ -713,7 +678,7 @@ class LabViewModel extends ChangeNotifier { case 'N': return AppAssets.ic_normal_result; case 'H': - return AppAssets.ic_low_result; + return AppAssets.ic_low_result; case 'CH': case 'HCH': return AppAssets.ic_critical_low_result; @@ -755,8 +720,80 @@ class LabViewModel extends ChangeNotifier { } } - alterGraphVisibility(){ + alterGraphVisibility() { isGraphVisible = !isGraphVisible; notifyListeners(); } + + Future getAiOverviewLabOrders({required PatientLabOrdersResponseModel labOrder}) async { + LoadingUtils.showFullScreenLoader(loadingText: "Loading and analysing your data,\nPlease be patient and let the AI do the magic"); + List> results = []; + Map orderData = {"order_date": labOrder.orderDate ?? "", "clinic": labOrder.clinicDescription ?? "", "doctor": labOrder.doctorName ?? "", "results": []}; + List> testResults = []; + if (labOrder.testDetails != null && labOrder.testDetails!.isNotEmpty) { + for (var testDetail in labOrder.testDetails!) { + LabResult? matchingResult = + mainLabResultsByHospitals.firstWhere((labResult) => labResult.testCode == testDetail.testCode || labResult.description == testDetail.description, orElse: () => LabResult()); + testResults.add({ + "test_name": testDetail.description ?? "", + "result_value": matchingResult.resultValue ?? "", + "reference_range": matchingResult.referanceRange ?? "", + "unit": matchingResult.uOM ?? "", + "flag": matchingResult.calculatedResultFlag ?? "N" + }); + } + } + orderData["results"] = testResults; + results.add(orderData); + final result = await labRepo.getPatientAiOverViewLabOrders(results); + result.fold( + (failure) async { + LoadingUtils.hideFullScreenLoader(); + await errorHandlerService.handleError(failure: failure); + }, + (apiResponse) { + LoadingUtils.hideFullScreenLoader(); + if (apiResponse.messageStatus == 2) { + } else if (apiResponse.messageStatus == 1) { + labOrdersResponseByAi = apiResponse.data; + navigationService.push( + MaterialPageRoute(builder: (_) => LabAiAnalysisDetailedPage()), + ); + } + }, + ); + + LoadingUtils.hideFullScreenLoader(); + } + + Future getAiOverviewSingleLabResult({required String langId, required LabResult recentLabResult}) async { + LoaderBottomSheet.showLoader(); + List> results = []; + results.add({ + "Description": recentLabResult.description ?? '', + "ResultValue": recentLabResult.resultValue ?? '', + "CalculatedResultFlag": recentLabResult.calculatedResultFlag ?? '', + "UOM": recentLabResult.uOM ?? '', + "ReferanceRange": recentLabResult.referanceRange ?? '', + }); + + var payload = {"patient_id": currentlySelectedPatientOrder!.patientID, "language_id": langId, "lab_results": results}; + final result = await labRepo.getPatientAiOverViewLabOrder(payload); + result.fold( + (failure) async { + LoaderBottomSheet.hideLoader(); + await errorHandlerService.handleError(failure: failure); + }, + (apiResponse) { + LoaderBottomSheet.hideLoader(); + if (apiResponse.messageStatus == 2) { + } else if (apiResponse.messageStatus == 1) { + labOrderResponseByAi = apiResponse.data; + notifyListeners(); + } + }, + ); + + LoaderBottomSheet.hideLoader(); + } } diff --git a/lib/features/lab/models/ai_overview_labresult_model_payload.dart b/lib/features/lab/models/ai_overview_labresult_model_payload.dart new file mode 100644 index 00000000..c8765929 --- /dev/null +++ b/lib/features/lab/models/ai_overview_labresult_model_payload.dart @@ -0,0 +1,69 @@ +import 'dart:convert'; + +class AiLabOrdersOverView { + String? orderDate; + String? clinic; + String? doctor; + List? results; + + AiLabOrdersOverView({ + this.orderDate, + this.clinic, + this.doctor, + this.results, + }); + + factory AiLabOrdersOverView.fromRawJson(String str) => AiLabOrdersOverView.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory AiLabOrdersOverView.fromJson(Map json) => AiLabOrdersOverView( + orderDate: json["order_date"] == null ? null : json["order_date"], + clinic: json["clinic"], + doctor: json["doctor"], + results: json["results"] == null ? [] : List.from(json["results"]!.map((x) => Result.fromJson(x))), + ); + + Map toJson() => { + "order_date": orderDate, + "clinic": clinic, + "doctor": doctor, + "results": results == null ? [] : List.from(results!.map((x) => x.toJson())), + }; +} + +class Result { + String? testName; + String? resultValue; + String? referenceRange; + String? unit; + String? flag; + + Result({ + this.testName, + this.resultValue, + this.referenceRange, + this.unit, + this.flag, + }); + + factory Result.fromRawJson(String str) => Result.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory Result.fromJson(Map json) => Result( + testName: json["test_name"], + resultValue: json["result_value"], + referenceRange: json["reference_range"], + unit: json["unit"], + flag: json["flag"], + ); + + Map toJson() => { + "test_name": testName, + "result_value": resultValue, + "reference_range": referenceRange, + "unit": unit, + "flag": flag, + }; +} diff --git a/lib/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart b/lib/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart new file mode 100644 index 00000000..2353cf82 --- /dev/null +++ b/lib/features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart @@ -0,0 +1,177 @@ +import 'dart:convert'; + +class LabOrdersResponseByAi { + Analysis? analysis; + String? patientId; + int? totalOrders; + int? totalResults; + + LabOrdersResponseByAi({ + this.analysis, + this.patientId, + this.totalOrders, + this.totalResults, + }); + + factory LabOrdersResponseByAi.fromRawJson(String str) => LabOrdersResponseByAi.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory LabOrdersResponseByAi.fromJson(Map json) => LabOrdersResponseByAi( + analysis: json["analysis"] == null ? null : Analysis.fromJson(json["analysis"]), + patientId: json["patient_id"], + totalOrders: json["total_orders"], + totalResults: json["total_results"], + ); + + Map toJson() => { + "analysis": analysis?.toJson(), + "patient_id": patientId, + "total_orders": totalOrders, + "total_results": totalResults, + }; +} + +class Analysis { + List? aiGeneratedAttributes; + List? aiPredictions; + List? aiRecommendations; + List? prevention; + String? rawMessage; + List? riskFactors; + List? suggestedDoctors; + String? summary; + + Analysis({ + this.aiGeneratedAttributes, + this.aiPredictions, + this.aiRecommendations, + this.prevention, + this.rawMessage, + this.riskFactors, + this.suggestedDoctors, + this.summary, + }); + + factory Analysis.fromRawJson(String str) => Analysis.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory Analysis.fromJson(Map json) => Analysis( + aiGeneratedAttributes: json["ai_generated_attributes"] == null ? [] : List.from(json["ai_generated_attributes"]!.map((x) => AiGeneratedAttribute.fromJson(x))), + aiPredictions: json["ai_predictions"] == null ? [] : List.from(json["ai_predictions"]!.map((x) => x)), + aiRecommendations: json["ai_recommendations"] == null ? [] : List.from(json["ai_recommendations"]!.map((x) => AiRecommendation.fromJson(x))), + prevention: json["prevention"] == null ? [] : List.from(json["prevention"]!.map((x) => x)), + rawMessage: json["raw_message"], + riskFactors: json["riskFactors"] == null ? [] : List.from(json["riskFactors"]!.map((x) => RiskFactor.fromJson(x))), + suggestedDoctors: json["suggested_doctors"] == null ? [] : List.from(json["suggested_doctors"]!.map((x) => x)), + summary: json["summary"], + ); + + Map toJson() => { + "ai_generated_attributes": aiGeneratedAttributes == null ? [] : List.from(aiGeneratedAttributes!.map((x) => x.toJson())), + "ai_predictions": aiPredictions == null ? [] : List.from(aiPredictions!.map((x) => x)), + "ai_recommendations": aiRecommendations == null ? [] : List.from(aiRecommendations!.map((x) => x.toJson())), + "prevention": prevention == null ? [] : List.from(prevention!.map((x) => x)), + "raw_message": rawMessage, + "riskFactors": riskFactors == null ? [] : List.from(riskFactors!.map((x) => x.toJson())), + "suggested_doctors": suggestedDoctors == null ? [] : List.from(suggestedDoctors!.map((x) => x)), + "summary": summary, + }; +} + +class AiGeneratedAttribute { + String? calculatedResultFlag; + String? description; + String? referanceRange; + String? resultValue; + String? testShortDescription; + String? uom; + String? calculationFormula; + + AiGeneratedAttribute({ + this.calculatedResultFlag, + this.description, + this.referanceRange, + this.resultValue, + this.testShortDescription, + this.uom, + this.calculationFormula, + }); + + factory AiGeneratedAttribute.fromRawJson(String str) => AiGeneratedAttribute.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory AiGeneratedAttribute.fromJson(Map json) => AiGeneratedAttribute( + calculatedResultFlag: json["CalculatedResultFlag"], + description: json["Description"], + referanceRange: json["ReferanceRange"], + resultValue: json["ResultValue"], + testShortDescription: json["TestShortDescription"], + uom: json["UOM"], + calculationFormula: json["calculationFormula"], + ); + + Map toJson() => { + "CalculatedResultFlag": calculatedResultFlag, + "Description": description, + "ReferanceRange": referanceRange, + "ResultValue": resultValue, + "TestShortDescription": testShortDescription, + "UOM": uom, + "calculationFormula": calculationFormula, + }; +} + +class AiRecommendation { + String? priority; + String? recommendation; + + AiRecommendation({ + this.priority, + this.recommendation, + }); + + factory AiRecommendation.fromRawJson(String str) => AiRecommendation.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory AiRecommendation.fromJson(Map json) => AiRecommendation( + priority: json["priority"], + recommendation: json["recommendation"], + ); + + Map toJson() => { + "priority": priority, + "recommendation": recommendation, + }; +} + +class RiskFactor { + String? description; + String? factor; + String? risk; + + RiskFactor({ + this.description, + this.factor, + this.risk, + }); + + factory RiskFactor.fromRawJson(String str) => RiskFactor.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory RiskFactor.fromJson(Map json) => RiskFactor( + description: json["description"], + factor: json["factor"], + risk: json["risk"], + ); + + Map toJson() => { + "description": description, + "factor": factor, + "risk": risk, + }; +} diff --git a/lib/features/lab/models/resp_models/lab_result.dart b/lib/features/lab/models/resp_models/lab_result.dart index a075be3d..23146849 100644 --- a/lib/features/lab/models/resp_models/lab_result.dart +++ b/lib/features/lab/models/resp_models/lab_result.dart @@ -26,6 +26,7 @@ class LabResult { String? referenceLow; num? resultTypeID; String? packageShortDescription; + int? testId; LabResult( {this.description, @@ -52,6 +53,7 @@ class LabResult { this.referenceHigh, this.criticalLow, this.referenceLow, + this.testId, }); LabResult.fromJson(Map json) { @@ -82,6 +84,7 @@ class LabResult { referenceLow = json['ReferenceLow']; packageShortDescription = json['PackageShortDescription']; resultTypeID = json['ResultTypeID']; + testId = json['TestID']; } Map toJson() { @@ -110,6 +113,7 @@ class LabResult { data['ReferenceHigh'] = this.referenceHigh; data['CriticalLow'] = this.criticalLow; data['ReferenceLow'] = this.referenceLow; + data['TestID'] = this.testId; return data; } diff --git a/lib/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart b/lib/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart new file mode 100644 index 00000000..7ad3d543 --- /dev/null +++ b/lib/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart @@ -0,0 +1,145 @@ +import 'dart:convert'; + +class LabOrderResponseByAi { + String? summary; + List? aiGeneratedAttributes; + List? aiPredictions; + List? aiRecommendations; + List? riskFactors; + List? prevention; + List? suggestedDoctors; + String? rawMessage; + + LabOrderResponseByAi({ + this.summary, + this.aiGeneratedAttributes, + this.aiPredictions, + this.aiRecommendations, + this.riskFactors, + this.prevention, + this.suggestedDoctors, + this.rawMessage, + }); + + factory LabOrderResponseByAi.fromRawJson(String str) => LabOrderResponseByAi.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory LabOrderResponseByAi.fromJson(Map json) => LabOrderResponseByAi( + summary: json["summary"], + aiGeneratedAttributes: json["ai_generated_attributes"] == null ? [] : List.from(json["ai_generated_attributes"]!.map((x) => AiGeneratedAttribute.fromJson(x))), + aiPredictions: json["ai_predictions"] == null ? [] : List.from(json["ai_predictions"]!.map((x) => x)), + aiRecommendations: json["ai_recommendations"] == null ? [] : List.from(json["ai_recommendations"]!.map((x) => AiRecommendation.fromJson(x))), + riskFactors: json["riskFactors"] == null ? [] : List.from(json["riskFactors"]!.map((x) => RiskFactor.fromJson(x))), + prevention: json["prevention"] == null ? [] : List.from(json["prevention"]!.map((x) => x)), + suggestedDoctors: json["suggested_doctors"] == null ? [] : List.from(json["suggested_doctors"]!.map((x) => x)), + rawMessage: json["raw_message"], + ); + + Map toJson() => { + "summary": summary, + "ai_generated_attributes": aiGeneratedAttributes == null ? [] : List.from(aiGeneratedAttributes!.map((x) => x.toJson())), + "ai_predictions": aiPredictions == null ? [] : List.from(aiPredictions!.map((x) => x)), + "ai_recommendations": aiRecommendations == null ? [] : List.from(aiRecommendations!.map((x) => x.toJson())), + "riskFactors": riskFactors == null ? [] : List.from(riskFactors!.map((x) => x.toJson())), + "prevention": prevention == null ? [] : List.from(prevention!.map((x) => x)), + "suggested_doctors": suggestedDoctors == null ? [] : List.from(suggestedDoctors!.map((x) => x)), + "raw_message": rawMessage, + }; +} + +class AiGeneratedAttribute { + String? description; + String? resultValue; + String? referanceRange; + String? calculatedResultFlag; + String? uom; + String? calculationFormula; + String? testShortDescription; + + AiGeneratedAttribute({ + this.description, + this.resultValue, + this.referanceRange, + this.calculatedResultFlag, + this.uom, + this.calculationFormula, + this.testShortDescription, + }); + + factory AiGeneratedAttribute.fromRawJson(String str) => AiGeneratedAttribute.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory AiGeneratedAttribute.fromJson(Map json) => AiGeneratedAttribute( + description: json["Description"], + resultValue: json["ResultValue"], + referanceRange: json["ReferanceRange"], + calculatedResultFlag: json["CalculatedResultFlag"], + uom: json["UOM"], + calculationFormula: json["calculationFormula"], + testShortDescription: json["TestShortDescription"], + ); + + Map toJson() => { + "Description": description, + "ResultValue": resultValue, + "ReferanceRange": referanceRange, + "CalculatedResultFlag": calculatedResultFlag, + "UOM": uom, + "calculationFormula": calculationFormula, + "TestShortDescription": testShortDescription, + }; +} + +class AiRecommendation { + String? recommendation; + String? priority; + + AiRecommendation({ + this.recommendation, + this.priority, + }); + + factory AiRecommendation.fromRawJson(String str) => AiRecommendation.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory AiRecommendation.fromJson(Map json) => AiRecommendation( + recommendation: json["recommendation"], + priority: json["priority"], + ); + + Map toJson() => { + "recommendation": recommendation, + "priority": priority, + }; +} + +class RiskFactor { + String? factor; + String? risk; + String? description; + + RiskFactor({ + this.factor, + this.risk, + this.description, + }); + + factory RiskFactor.fromRawJson(String str) => RiskFactor.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory RiskFactor.fromJson(Map json) => RiskFactor( + factor: json["factor"], + risk: json["risk"], + description: json["description"], + ); + + Map toJson() => { + "factor": factor, + "risk": risk, + "description": description, + }; +} diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 416d2a47..05563f7c 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1515,5 +1515,43 @@ abstract class LocaleKeys { static const yesPleaseINeedHelp = 'yesPleaseINeedHelp'; static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; static const unableToSendOTP = 'unableToSendOTP'; + static const aiOverView = 'aiOverView'; + static const generateAiAnalysis = 'generateAiAnalysis'; + static const aiAnalysis = 'aiAnalysis'; + static const prediction = 'prediction'; + static const prevention = 'prevention'; + static const disclaimer = 'disclaimer'; + static const thisAboveInfo = 'thisAboveInfo'; + static const aiDisclaimer = 'aiDisclaimer'; + static const consent = 'consent'; + static const bmiNormalDescription = 'bmiNormalDescription'; + static const bmiUnderweightDescription = 'bmiUnderweightDescription'; + static const bmiOverweightDescription = 'bmiOverweightDescription'; + static const caloriesMaintenanceDescription = 'caloriesMaintenanceDescription'; + static const caloriesModerateDeficitDescription = 'caloriesModerateDeficitDescription'; + static const caloriesAggressiveDeficitDescription = 'caloriesAggressiveDeficitDescription'; + static const bodyFatEssentialDescription = 'bodyFatEssentialDescription'; + static const bodyFatFitnessDescription = 'bodyFatFitnessDescription'; + static const bodyFatAverageDescription = 'bodyFatAverageDescription'; + static const bodyFatObeseDescription = 'bodyFatObeseDescription'; + static const bmrNormalDescription = 'bmrNormalDescription'; + static const bmrLowDescription = 'bmrLowDescription'; + static const bmrHighDescription = 'bmrHighDescription'; + static const ibwAtTargetDescription = 'ibwAtTargetDescription'; + static const ibwBelowTargetDescription = 'ibwBelowTargetDescription'; + static const ibwAboveTargetDescription = 'ibwAboveTargetDescription'; + static const ibwCloseToRangeDescription = 'ibwCloseToRangeDescription'; + static const ibwUnderweightDescription = 'ibwUnderweightDescription'; + static const ibwUnderweightGenericDescription = 'ibwUnderweightGenericDescription'; + static const ibwOverweightDescription = 'ibwOverweightDescription'; + static const ibwOverweightGenericDescription = 'ibwOverweightGenericDescription'; + static const dietVeryLowCarbsDescription = 'dietVeryLowCarbsDescription'; + static const dietLowCarbsDescription = 'dietLowCarbsDescription'; + static const dietModerateCarbsDescription = 'dietModerateCarbsDescription'; + static const dietUSDAGuidelinesDescription = 'dietUSDAGuidelinesDescription'; + static const dietZoneDietDescription = 'dietZoneDietDescription'; + static const contextDependent = 'contextDependent'; + static const calculatedValue = 'calculatedValue'; + static const calculationFormula = 'calculationFormula'; } diff --git a/lib/presentation/authentication/saved_login_screen.dart b/lib/presentation/authentication/saved_login_screen.dart index f0fd8cb8..22fc4673 100644 --- a/lib/presentation/authentication/saved_login_screen.dart +++ b/lib/presentation/authentication/saved_login_screen.dart @@ -115,6 +115,7 @@ class _SavedLogin extends State { CustomButton( text: "${LocaleKeys.loginBy.tr()} ${loginType.displayName}", onPressed: () { + if (loginType == LoginTypeEnum.fingerprint || loginType == LoginTypeEnum.face) { authVm.loginWithFingerPrintFace(() {}); } else { diff --git a/lib/presentation/book_appointment/select_clinic_page.dart b/lib/presentation/book_appointment/select_clinic_page.dart index d96c9da9..9d2c2921 100644 --- a/lib/presentation/book_appointment/select_clinic_page.dart +++ b/lib/presentation/book_appointment/select_clinic_page.dart @@ -261,8 +261,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["bmiCategory"], calories: calculatedResult["bmiResult"], - description: - 'Your BMI is within the healthy range. Continue a balanced diet, regular physical activity, and routine checkups to maintain good health. Monitor any significant changes over time.', + description: LocaleKeys.bmiNormalDescription.tr(), color: Colors.green, icon: Icons.scale, hide: true, @@ -272,8 +271,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["bmiCategory"], calories: calculatedResult["bmiResult"], - description: - 'BMI suggests you are underweight. Consider increasing calorie intake with nutrient-dense foods, include resistance training to build muscle, and consult a healthcare professional to check for underlying causes.', + description: LocaleKeys.bmiUnderweightDescription.tr(), color: Colors.orange, hide: true, icon: Icons.trending_down, @@ -283,8 +281,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["bmiCategory"], calories: calculatedResult["bmiResult"], - description: - 'BMI indicates overweight. Aim for gradual, sustainable weight loss through a modest calorie deficit, regular physical activity, and healthier food choices. Seek medical advice before major lifestyle changes.', + description: LocaleKeys.bmiOverweightDescription.tr(), color: Colors.red, hide: true, icon: Icons.warning_rounded, @@ -295,8 +292,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["calorieRange"], calories: calculatedResult["calories"], - description: - 'Estimated daily calories to maintain your current weight given your activity level and metabolism. Use this as a baseline: increase slightly for muscle gain, or create a small deficit for gradual weight loss. Track progress and adjust every 2–4 weeks.', + description: LocaleKeys.caloriesMaintenanceDescription.tr(), color: Colors.green, icon: Icons.scale, ), @@ -305,8 +301,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["calorieRange"], calories: calculatedResult["calories"], - description: - 'A moderate calorie reduction designed for steady, sustainable weight loss (typically 0.25–0.5 kg per week). Combine with resistance training and adequate protein to preserve muscle. Avoid extreme cuts and consult a professional if you have medical conditions.', + description: LocaleKeys.caloriesModerateDeficitDescription.tr(), color: Colors.orange, icon: Icons.trending_down, ), @@ -315,19 +310,59 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["calorieRange"], calories: calculatedResult["calories"], - description: - 'A large calorie reduction that may produce faster weight loss but can be hard to sustain and increase risk of nutrient deficiencies, fatigue, or muscle loss. Not recommended long-term; seek guidance from a healthcare or nutrition professional before continuing.', + description: LocaleKeys.caloriesAggressiveDeficitDescription.tr(), color: Colors.red, icon: Icons.warning_rounded, ), ] + ] else if (type == HealthCalculatorsTypeEnum.bodyFat) ...[ + if (calculatedResult["fatCategory"] == "Essential Fat" || calculatedResult["fatCategory"] == "Athletes") ...[ + calorieWidget( + title: calculatedResult["fatCategory"], + calories: calculatedResult["fatPercentage"], + description: LocaleKeys.bodyFatEssentialDescription.tr(), + color: Colors.green, + hide: true, + icon: Icons.fitness_center, + ), + SizedBox(height: 16.h), + ] else if (calculatedResult["fatCategory"] == "Fitness") ...[ + calorieWidget( + title: calculatedResult["fatCategory"], + calories: calculatedResult["fatPercentage"], + description: LocaleKeys.bodyFatFitnessDescription.tr(), + color: Colors.green, + hide: true, + icon: Icons.fitness_center, + ), + SizedBox(height: 16.h), + ] else if (calculatedResult["fatCategory"] == "Average" || calculatedResult["fatCategory"] == "Acceptable") ...[ + calorieWidget( + title: calculatedResult["fatCategory"], + calories: calculatedResult["fatPercentage"], + description: LocaleKeys.bodyFatAverageDescription.tr(), + color: Colors.orange, + hide: true, + icon: Icons.accessibility_new, + ), + SizedBox(height: 16.h), + ] else if (calculatedResult["fatCategory"] == "Obese" || calculatedResult["fatCategory"] == "Overweight") ...[ + calorieWidget( + title: calculatedResult["fatCategory"], + calories: calculatedResult["fatPercentage"], + description: LocaleKeys.bodyFatObeseDescription.tr(), + color: Colors.red, + hide: true, + icon: Icons.warning_rounded, + ), + SizedBox(height: 16.h), + ] ] else if (type == HealthCalculatorsTypeEnum.bmr) ...[ if (calculatedResult["bmrRange"] == "Normal") ...[ calorieWidget( title: calculatedResult["bmrRange"], calories: calculatedResult["bmr"], - description: - 'Your Basal Metabolic Rate (BMR) is within the expected range for your profile. BMR is the energy your body needs at rest to maintain vital functions (breathing, circulation, temperature). Use this value as the baseline for estimating total daily energy needs by applying an activity multiplier. Maintain a balanced diet and regular physical activity to support metabolic health.', + description: LocaleKeys.bmrNormalDescription.tr(), color: Colors.green, hide: true, icon: Icons.scale, @@ -337,8 +372,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["bmrRange"], calories: calculatedResult["bmr"], - description: - 'Your BMR is lower than typical for your profile. Possible causes include lower lean muscle mass, age-related metabolic decline, or metabolic adaptation from prolonged calorie restriction. Consider focusing on resistance training to build/maintain muscle, ensure adequate protein and micronutrient intake, and consult a healthcare professional if this is unexpected.', + description: LocaleKeys.low.tr(), color: Colors.orange, hide: true, icon: Icons.trending_down, @@ -348,8 +382,7 @@ class _SelectClinicPageState extends State { calorieWidget( title: calculatedResult["bmrRange"], calories: calculatedResult["bmr"], - description: - 'Your BMR is higher than average for your profile. This can reflect greater lean mass, younger age, or a naturally higher metabolic rate, meaning you burn more energy at rest. Use this information to tailor calorie targets: higher needs for maintenance or muscle gain, moderate deficit for weight loss. Seek medical advice if you notice rapid unexplained changes.', + description: LocaleKeys.bmrHighDescription.tr(), color: Colors.red, hide: true, icon: Icons.warning_rounded, @@ -915,9 +948,16 @@ class _SelectClinicPageState extends State { Widget _buildStatusIcon(String title) { final key = title.trim(); - if (key == 'Maintenance Calories' || key == 'Normal' || key == 'Ideal Weight' || key == 'Moderate Crabs' || key == 'USDA Guidelines') { + if (key == 'Maintenance Calories' || + key == 'Normal' || + key == 'Ideal Weight' || + key == 'Moderate Crabs' || + key == 'USDA Guidelines' || + key == 'Essential Fat' || + key == 'Athletes' || + key == 'Fitness') { return Utils.buildSvgWithAssets(icon: AppAssets.checkmark_icon, width: 24.w, height: 24.h); - } else if (key == 'Moderate Deficit' || key == 'Low' || key == 'Underweight' || key == 'Very Low Crabs' || key == 'Low Crabs' || key == 'Zone Diet') { + } else if (key == 'Moderate Deficit' || key == 'Low' || key == 'Underweight' || key == 'Very Low Crabs' || key == 'Low Crabs' || key == 'Zone Diet' || key == 'Average' || key == 'Acceptable') { return Utils.buildSvgWithAssets(icon: AppAssets.trade_down_yellow, width: 24.w, height: 24.h); } else if (key == 'Aggressive Deficit' || key == 'High' || key == 'Overweight' || key == "Obese") { return Utils.buildSvgWithAssets(icon: AppAssets.trade_down_red, width: 24.w, height: 24.h); @@ -928,9 +968,16 @@ class _SelectClinicPageState extends State { Color getTextColor(String title) { final key = title.trim(); - if (key == 'Maintenance Calories' || key == 'Normal' || key == 'Ideal Weight' || key == 'Moderate Crabs' || key == 'USDA Guidelines') { + if (key == 'Maintenance Calories' || + key == 'Normal' || + key == 'Ideal Weight' || + key == 'Moderate Crabs' || + key == 'USDA Guidelines' || + key == 'Essential Fat' || + key == 'Athletes' || + key == 'Fitness') { return AppColors.successColor; - } else if (key == 'Moderate Deficit' || key == 'Low' || key == 'Underweight' || key == 'Very Low Crabs' || key == 'Low Crabs' || key == 'Zone Diet') { + } else if (key == 'Moderate Deficit' || key == 'Low' || key == 'Underweight' || key == 'Very Low Crabs' || key == 'Low Crabs' || key == 'Zone Diet' || key == 'Average' || key == 'Acceptable') { return AppColors.warningColor; } else if (key == 'Aggressive Deficit' || key == 'High' || key == 'Overweight' || key == "Obese") { return AppColors.errorColor; @@ -1156,7 +1203,8 @@ class _SelectClinicPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ bookAppointmentsViewModel.patientDentalPlanEstimationList[index].procedureName!.toText12(isBold: true), - AppCustomChipWidget(icon: AppAssets.appointment_time_icon, labelText: "${bookAppointmentsViewModel.totalTimeNeededForDentalProcedure} ${LocaleKeys.mins.tr(context: context)}"), + AppCustomChipWidget( + icon: AppAssets.appointment_time_icon, labelText: "${bookAppointmentsViewModel.totalTimeNeededForDentalProcedure} ${LocaleKeys.mins.tr(context: context)}"), ], ); }, diff --git a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart index 4a83f51b..8cccf031 100644 --- a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart +++ b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart @@ -52,8 +52,8 @@ class _HealthCalculatorDetailedPageState extends State(); Navigator.of(context).push(CustomPageRoute( page: SelectClinicPage(calculatorType: widget.calculatorType, calculatedResult: calculatedResult), )); @@ -174,69 +172,58 @@ class _HealthCalculatorDetailedPageState extends State { children: [ Radio( value: unit, - groupValue: selectedHeightUnit, + groupValue: selectedHipUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { if (value == null) return; diff --git a/lib/presentation/lab/lab_orders_page.dart b/lib/presentation/lab/lab_orders_page.dart index 006280fa..a6ee1544 100644 --- a/lib/presentation/lab/lab_orders_page.dart +++ b/lib/presentation/lab/lab_orders_page.dart @@ -1 +1 @@ -import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingListView( title: LocaleKeys.labResults.tr(context: context), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: ListView.separated( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemBuilder: (cxt, index) { PatientLabOrdersResponseModel order = group[index]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr(context: context)}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex: 2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), // SizedBox(height: 12.h), // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), // SizedBox(height: 12.h), ], ).paddingOnly(top: 16, bottom: 16); }, separatorBuilder: (cxt, index) => Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), itemCount: group.length)) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], ) ); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file +import 'dart:async'; import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingListView( title: LocaleKeys.labResults.tr(context: context), search: () async { final lavVM = Provider.of(context, listen: false); if (lavVM.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: lavVM.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; lavVM.filterLabReports(value); } } }, child: Consumer( builder: (context, model, child) { return SingleChildScrollView( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { model.setIsSortByClinic(true); }, backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { model.setIsSortByClinic(false); }, backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? CustomChipWidget( chipText: selectedFilterText!, chipType: ChipTypeEnum.alert, isSelected: true, ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available model.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (model.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: model.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = model.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: ListView.separated( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemBuilder: (cxt, index) { PatientLabOrdersResponseModel order = group[index]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr(context: context)}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex: 2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { model.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), // SizedBox(height: 12.h), // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), // SizedBox(height: 12.h), ], ).paddingOnly(top: 16, bottom: 16); }, separatorBuilder: (cxt, index) => Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), itemCount: group.length)) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (model.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: model.indexedCharacterForUniqueTest, details: model.uniqueTestsList, labViewModel: model, rangeViewModel: rangeViewModel, appState: _appState, ) ], )); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart index 50fd1f1e..954c09bc 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart @@ -1,17 +1,22 @@ -import 'package:easy_localization/easy_localization.dart' - show tr, StringTranslateExtension; +import 'package:easy_localization/easy_localization.dart' show tr, StringTranslateExtension; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultList.dart'; +import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -25,6 +30,7 @@ class LabResultByClinic extends StatelessWidget { late LabViewModel labViewModel; PatientLabOrdersResponseModel labOrder; + @override Widget build(BuildContext context) { labViewModel = Provider.of(context, listen: false); @@ -35,6 +41,21 @@ class LabResultByClinic extends StatelessWidget { Expanded( child: CollapsingListView( title: LocaleKeys.labResults.tr(), + aiOverview: () async { + final _dialogService = getIt.get(); + await _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimer.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + labViewModel.getAiOverviewLabOrders(labOrder: labOrder); + }, + onCancelPressed: () { + context.pop(); + }); + }, child: SingleChildScrollView( child: Column( spacing: 8.h, @@ -77,7 +98,7 @@ class LabResultByClinic extends StatelessWidget { } }, ), - LabOrderSpecialResult() + LabOrderSpecialResult(), ], ).paddingAll(24.h), )), diff --git a/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart new file mode 100644 index 00000000..a2d0ff6b --- /dev/null +++ b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart @@ -0,0 +1,100 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class AiAnalysisWidget extends StatelessWidget { + final LabOrderResponseByAi data; + + const AiAnalysisWidget({super.key, required this.data}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(24.r), gradient: AppColors.aiLinearGradient), + padding: EdgeInsets.all(1.5.r), // Border thickness + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(22.r), + ), + padding: EdgeInsets.all(20.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.aiAnalysis.tr().toText18(weight: FontWeight.w700, color: AppColors.blackColor), + Container( + padding: EdgeInsets.all(8.r), + decoration: BoxDecoration(gradient: AppColors.aiLinearGradient, borderRadius: BorderRadius.circular(8.r)), + child: SvgPicture.asset(AppAssets.aiOverView, colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), height: 18.r, width: 18.r), + ), + ], + ), + SizedBox(height: 16.h), + if (data.summary != null && data.summary!.isNotEmpty) ...[ + LocaleKeys.suggestion.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 8.h), + data.summary!.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + SizedBox(height: 16.h), + const Divider(color: AppColors.dividerColor, thickness: 1), + SizedBox(height: 16.h), + ], + if (data.aiPredictions != null && data.aiPredictions!.isNotEmpty) ...[ + LocaleKeys.prediction.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 12.h), + ...data.aiPredictions!.map((item) => _buildBulletItem(item)), + SizedBox(height: 16.h), + const Divider(color: AppColors.dividerColor, thickness: 1), + SizedBox(height: 16.h), + ], + if (data.prevention != null && data.prevention!.isNotEmpty) ...[ + LocaleKeys.prevention.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 12.h), + ...data.prevention!.map((item) => _buildBulletItem(item)), + SizedBox(height: 20.h), + ], + Row( + children: [ + Icon(Icons.info_outline, color: AppColors.greyTextColor, size: 20.r), + SizedBox(width: 8.w), + Expanded( + child: ("${LocaleKeys.disclaimer.tr()}:${LocaleKeys.thisAboveInfo.tr()}").toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w400), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildBulletItem(String text) { + return Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(top: 8.h, right: 12.w, left: 4.w), + child: Container( + width: 5.r, + height: 5.r, + decoration: const BoxDecoration(color: AppColors.blackColor, shape: BoxShape.circle), + ), + ), + Expanded( + child: text.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/lab/lab_results/lab_result_details.dart b/lib/presentation/lab/lab_results/lab_result_details.dart index 29e15eeb..c67c39dd 100644 --- a/lib/presentation/lab/lab_results/lab_result_details.dart +++ b/lib/presentation/lab/lab_results/lab_result_details.dart @@ -1,45 +1,72 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/lab_result.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/date_range_calender.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_results/lab_result_list_item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/graph/custom_graph.dart'; -import 'package:provider/provider.dart' show Consumer, Provider, ReadContext; +import 'package:provider/provider.dart' show Consumer, Provider, ReadContext, Selector; -import '../../../widgets/common_bottom_sheet.dart' - show showCommonBottomSheetWithoutHeight; +import '../../../widgets/common_bottom_sheet.dart' show showCommonBottomSheetWithoutHeight; class LabResultDetails extends StatelessWidget { final LabResult recentLabResult; final String? testDescription; - const LabResultDetails( - {super.key, - required this.recentLabResult, - required this.testDescription}); + const LabResultDetails({super.key, required this.recentLabResult, required this.testDescription}); @override Widget build(BuildContext context) { + LabViewModel labViewModel = Provider.of(context, listen: false); + final appState = getIt.get(); return CollapsingListView( title: LocaleKeys.labResultDetails.tr(context: context), + aiOverview: () async { + final _dialogService = getIt.get(); + await _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimer.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + labViewModel.getAiOverviewSingleLabResult(langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult); + }, + onCancelPressed: () { + context.pop(); + }); + }, child: SingleChildScrollView( child: Column( spacing: 16.h, children: [ LabNameAndStatus(context), getLabDescription(context), - LabGraph(context) + LabGraph(context), + Selector( + selector: (_, model) => model.labOrderResponseByAi, + builder: (_, aiData, __) { + if (aiData != null) { + return AiAnalysisWidget(data: aiData).paddingOnly(bottom: 16.h); + } + return const SizedBox.shrink(); + }, + ), ], ).paddingAll(24.h), ), @@ -47,11 +74,7 @@ class LabResultDetails extends StatelessWidget { } Widget LabNameAndStatus(BuildContext context) => Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -107,7 +130,9 @@ class LabResultDetails extends StatelessWidget { ), letterSpacing: -2), ), - SizedBox(width: 4.h,), + SizedBox( + width: 4.h, + ), ], ), ), @@ -150,9 +175,7 @@ class LabResultDetails extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - labmodel.isGraphVisible - ? LocaleKeys.historyFlowchart.tr(context: context) - : LocaleKeys.history.tr(context: context), + labmodel.isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context), style: TextStyle( fontSize: 16, fontFamily: 'Poppins', @@ -164,22 +187,12 @@ class LabResultDetails extends StatelessWidget { spacing: 16.h, children: [ //todo handle when the graph icon is being displayed - Utils.buildSvgWithAssets( - icon: labmodel.isGraphVisible - ? AppAssets.ic_list - : AppAssets.ic_graph, - width: 24.h, - height: 24.h) - .onPress(() { + Utils.buildSvgWithAssets(icon: labmodel.isGraphVisible ? AppAssets.ic_list : AppAssets.ic_graph, width: 24.h, height: 24.h).onPress(() { if (labmodel.shouldShowGraph) { labmodel.alterGraphVisibility(); } }), - Utils.buildSvgWithAssets( - icon: AppAssets.ic_date_filter, - width: 24, - height: 24) - .onPress(() { + Utils.buildSvgWithAssets(icon: AppAssets.ic_date_filter, width: 24, height: 24).onPress(() { showCommonBottomSheetWithoutHeight( title: LocaleKeys.setTheDateRange.tr(context: context), context, @@ -218,21 +231,17 @@ class LabResultDetails extends StatelessWidget { Widget buildBottomLabel(String label) { return Padding( - padding: const EdgeInsets.only(top:8.0), + padding: const EdgeInsets.only(top: 8.0), child: Text( label, - style: TextStyle( - fontSize: 8.f, - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, - color: AppColors.labelTextColor), + style: TextStyle(fontSize: 8.f, fontFamily: 'Poppins', fontWeight: FontWeight.w600, color: AppColors.labelTextColor), ), ); } Widget historyBody(LabViewModel labmodel) { if (labmodel.isGraphVisible && labmodel.shouldShowGraph) { - var graphColor = labmodel.getColor(recentLabResult.calculatedResultFlag??"N"); + var graphColor = labmodel.getColor(recentLabResult.calculatedResultFlag ?? "N"); return CustomGraph( dataPoints: labmodel.filteredGraphValues, makeGraphBasedOnActualValue: true, @@ -242,11 +251,11 @@ class LabResultDetails extends StatelessWidget { // maxY: (labmodel.maxY)+(getInterval(labmodel)??0)/2, maxY: (labmodel.maxY), minY: labmodel.minY, - maxX: labmodel.filteredGraphValues.length.toDouble()-.75, + maxX: labmodel.filteredGraphValues.length.toDouble() - .75, horizontalInterval: .1, - getDrawingHorizontalLine: (value){ + getDrawingHorizontalLine: (value) { value = double.parse(value.toStringAsFixed(1)); - if(value == labmodel.highRefrenceValue ||value== labmodel.lowRefenceValue) { + if (value == labmodel.highRefrenceValue || value == labmodel.lowRefenceValue) { return FlLine( color: AppColors.bgGreenColor.withOpacity(0.6), strokeWidth: 1, @@ -256,7 +265,8 @@ class LabResultDetails extends StatelessWidget { return FlLine( color: Colors.transparent, strokeWidth: 1, - );; + ); + ; }, leftLabelFormatter: (value) { value = double.parse(value.toStringAsFixed(1)); @@ -272,11 +282,11 @@ class LabResultDetails extends StatelessWidget { return SizedBox.shrink(); // } }, - graphColor:AppColors.blackColor, + graphColor: AppColors.blackColor, graphShadowColor: Colors.transparent, graphGridColor: graphColor.withOpacity(.4), bottomLabelFormatter: (value, data) { - if(data.isEmpty) return SizedBox.shrink(); + if (data.isEmpty) return SizedBox.shrink(); if (value == 0) { return buildBottomLabel(data[value.toInt()].label); } @@ -288,34 +298,34 @@ class LabResultDetails extends StatelessWidget { } return SizedBox.shrink(); }, - rangeAnnotations: RangeAnnotations( - horizontalRangeAnnotations: _buildRangeShades(labmodel) - ), - minX:(labmodel.filteredGraphValues.length == 1)?null : -.2, + rangeAnnotations: RangeAnnotations(horizontalRangeAnnotations: _buildRangeShades(labmodel)), + minX: (labmodel.filteredGraphValues.length == 1) ? null : -.2, scrollDirection: Axis.horizontal, height: 180.h); - }else { + } else { return labHistoryList(labmodel); } } - List _buildRangeShades( LabViewModel model,) { + List _buildRangeShades( + LabViewModel model, + ) { List ranges = []; - ranges.add(HorizontalRangeAnnotation( - y1:model.minY, - y2: model.lowRefenceValue, - color: AppColors.highAndLow.withOpacity(0.05), - )); + ranges.add(HorizontalRangeAnnotation( + y1: model.minY, + y2: model.lowRefenceValue, + color: AppColors.highAndLow.withOpacity(0.05), + )); ranges.add(HorizontalRangeAnnotation( - y1:model.lowRefenceValue, + y1: model.lowRefenceValue, y2: model.highRefrenceValue, color: AppColors.bgGreenColor.withOpacity(0.05), )); ranges.add(HorizontalRangeAnnotation( - y1:model.highRefrenceValue, + y1: model.highRefrenceValue, y2: model.maxY, color: AppColors.criticalLowAndHigh.withOpacity(0.05), )); @@ -324,11 +334,12 @@ class LabResultDetails extends StatelessWidget { Widget labHistoryList(LabViewModel labmodel) { return SizedBox( - height: labmodel.filteredGraphValues.length<3?labmodel.filteredGraphValues.length*64:180.h, + height: labmodel.filteredGraphValues.length < 3 ? labmodel.filteredGraphValues.length * 64 : 180.h, child: ListView.separated( padding: EdgeInsets.zero, - itemCount: labmodel.filteredGraphValues.length,itemBuilder: (context, index){ - var data = labmodel.filteredGraphValues.reversed.toList()[index]; + itemCount: labmodel.filteredGraphValues.length, + itemBuilder: (context, index) { + var data = labmodel.filteredGraphValues.reversed.toList()[index]; return LabHistoryItem( dayNameAndDate: labmodel.getFormattedDate(data.time), result: data.actualValue, @@ -368,11 +379,8 @@ class LabResultDetails extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, children: [ - LocaleKeys.whatIsThisResult.tr(context: context) - .toText16(weight: FontWeight.w600, color: AppColors.textColor), - testDescription?.toText12( - fontWeight: FontWeight.w500, color: AppColors.textColorLight) ?? - SizedBox.shrink() + LocaleKeys.whatIsThisResult.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), + testDescription?.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight) ?? SizedBox.shrink() ], )); } diff --git a/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart b/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart new file mode 100644 index 00000000..5a5aed7f --- /dev/null +++ b/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart @@ -0,0 +1,538 @@ +import 'dart:convert'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/expandable_list_widget.dart'; +import 'package:provider/provider.dart'; + +import '../../features/lab/models/resp_models/ai_overview_labresults_by_ai_model.dart'; + +class LabAiAnalysisDetailedPage extends StatefulWidget { + const LabAiAnalysisDetailedPage({super.key}); + + @override + State createState() => _LabAiAnalysisDetailedPageState(); +} + +class _LabAiAnalysisDetailedPageState extends State { + late LabViewModel labProvider; + + @override + Widget build(BuildContext context) { + labProvider = Provider.of(context, listen: false); + return CollapsingListView( + title: LocaleKeys.aiAnalysis.tr(context: context), + child: Consumer( + builder: (context, model, child) { + if (model.labOrdersResponseByAi == null || model.labOrdersResponseByAi?.analysis == null) { + return Utils.getNoDataWidget(context); + } + + final analysis = model.labOrdersResponseByAi!.analysis!; + List expandableItems = []; + + // Summary Section + if (analysis.summary != null && analysis.summary!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.summary.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + initiallyExpanded: true, + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, side: BorderSide(width: 1, color: Color(0xFF0B85F7))), + padding: EdgeInsets.all(16.r), + child: (analysis.summary ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // AI Generated Attributes Section (Lab Test Results) + if (analysis.aiGeneratedAttributes != null && analysis.aiGeneratedAttributes!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.labResults.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + ...analysis.aiGeneratedAttributes!.map((attr) { + return Column( + children: [ + _buildCombinedLabCard(attr), + SizedBox(height: 16.h), + ], + ); + }).toList(), + ], + ), + ); + } + + // AI Predictions Section + if (analysis.aiPredictions != null && analysis.aiPredictions!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.prediction.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, side: BorderSide(width: 1, color: Color(0xFFFFAF15))), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: analysis.aiPredictions!.map((prediction) => _buildBulletItem(prediction)).toList(), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // AI Recommendations Section + if (analysis.aiRecommendations != null && analysis.aiRecommendations!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.suggestions.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: analysis.aiRecommendations!.asMap().entries.map((entry) { + final rec = entry.value; + final isLast = entry.key == analysis.aiRecommendations!.length - 1; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (rec.priority != null) ...[ + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: _getPriorityColor(rec.priority), borderRadius: BorderRadius.circular(4.r)), + child: rec.priority!.toText12(fontWeight: FontWeight.w600, color: _getPriorityTextColor(rec.priority)), + ), + SizedBox(height: 8.h), + ], + (rec.recommendation ?? "").toText14( + color: AppColors.textColorLight, + height: 1.5, + weight: FontWeight.w400, + ), + if (!isLast) ...[ + SizedBox(height: 12.h), + const Divider(color: AppColors.dividerColor, thickness: 1), + SizedBox(height: 12.h), + ], + ], + ); + }).toList(), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // Risk Factors Section + if (analysis.riskFactors != null && analysis.riskFactors!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.riskFactors.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + ...analysis.riskFactors!.asMap().entries.map((entry) { + final risk = entry.value; + return Column( + children: [ + Container( + decoration: RoundedRectangleBorder() + .toSmoothCornerDecoration(color: Color(0xFFFBCB6E).withOpacity(0.10), borderRadius: 12.r, side: BorderSide(width: 1, color: Color(0xFFFBCB6E).withOpacity(0.10))), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Container( + decoration: BoxDecoration(color: Color(0xFFFBCB6E).withAlpha(38), borderRadius: BorderRadius.circular(8)), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: (risk.risk ?? "").toText10(weight: FontWeight.w500, color: AppColors.blackColor), + ), + ), + ), + ], + ), + if (risk.risk != null && risk.risk!.isNotEmpty) ...[ + SizedBox(height: 4.h), + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.guradIcon), + Padding( + padding: const EdgeInsets.all(8.0), + child: (risk.factor ?? "").toText16(weight: FontWeight.w700, color: AppColors.blackColor), + ), + ], + ), + SizedBox(height: 4.h), + (risk.description ?? "").toText14( + color: AppColors.textColorLight, + height: 1.5, + weight: FontWeight.w400, + ), + ], + if (risk.description != null && risk.description!.isNotEmpty) ...[ + SizedBox(height: 8.h), + (risk.description ?? "").toText14( + color: AppColors.textColorLight, + height: 1.5, + weight: FontWeight.w400, + ), + ], + ], + ), + ), + SizedBox(height: 16.h), + ], + ); + }).toList(), + ], + ), + ); + } + + // Prevention Section + if (analysis.prevention != null && analysis.prevention!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + title: LocaleKeys.prevention.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, side: BorderSide(width: 1, color: Color(0xFF18C273))), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: analysis.prevention!.map((prevention) => _buildBulletItem(prevention)).toList(), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // // Suggested Doctors Section + // if (analysis.suggestedDoctors != null && analysis.suggestedDoctors!.isNotEmpty) { + // expandableItems.add( + // ExpandableListItem( + // title: "Suggested Doctors".toText18(weight: FontWeight.w700, color: AppColors.blackColor), + // children: [ + // SizedBox(height: 10.h), + // Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 12.r, + // side: BorderSide(width: 1, color: Color(0xFF3498DB)), + // ), + // padding: EdgeInsets.all(16.r), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: analysis.suggestedDoctors!.asMap().entries.map((entry) { + // final doctor = entry.value; + // final isLast = entry.key == analysis.suggestedDoctors!.length - 1; + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // children: [ + // Container( + // width: 40.r, + // height: 40.r, + // decoration: BoxDecoration( + // gradient: AppColors.aiLinearGradient, + // shape: BoxShape.circle, + // ), + // child: Icon( + // Icons.person, + // color: Colors.white, + // size: 24.r, + // ), + // ), + // SizedBox(width: 12.w), + // Expanded( + // child: doctor.toString().toText14( + // color: AppColors.textColorLight, + // height: 1.5, + // weight: FontWeight.w600, + // ), + // ), + // ], + // ), + // if (!isLast) ...[ + // SizedBox(height: 12.h), + // const Divider(color: AppColors.dividerColor, thickness: 1), + // SizedBox(height: 12.h), + // ], + // ], + // ); + // }).toList(), + // ), + // ), + // SizedBox(height: 8.h), + // ], + // ), + // ); + // } + + return Column( + children: [ + if (expandableItems.isEmpty) + Utils.getNoDataWidget(context) + else + CustomExpandableList( + expansionMode: ExpansionMode.exactlyOne, + dividerColor: Color(0xff2b353e1a), + itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + items: expandableItems, + theme: ExpandableListTheme.custom( + defaultTrailingIcon: Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w, iconColor: AppColors.textColor), + ), + ).paddingSymmetrical(16.w, 0.0), + ], + ); + }, + ), + ); + } + + Color _getPriorityColor(String? priority) { + if (priority == null) return AppColors.primaryRedColor; + switch (priority.toLowerCase()) { + case 'high': + return Color(0xFFED1C2B).withOpacity(.10); + case 'medium' || 'moderate': + return AppColors.lightGreenButtonColor; + case 'low': + return AppColors.warningColorYellow.withOpacity(.3); + default: + return AppColors.primaryRedColor; + } + } + + Color _getPriorityTextColor(String? priority) { + if (priority == null) return AppColors.whiteColor; + switch (priority.toLowerCase()) { + case 'high': + return AppColors.primaryRedColor; + case 'medium' || 'moderate': + return AppColors.lightGreenColor; + case 'low': + return AppColors.alertColor; + default: + return AppColors.primaryRedColor; + } + } + + + + Color _getResultFlagColor(String? flag) { + if (flag == null || flag.isEmpty) return Colors.grey; + switch (flag.toUpperCase()) { + case 'H': // High + case 'HH': // Very High + case 'CRITICAL HIGH': + return AppColors.lightRedButtonColor; + case 'L': // Low + case 'LL': // Very Low + case 'CRITICAL LOW': + return AppColors.chipColorSeekMedicalAdvice; + case 'N': // Normal + return AppColors.lightGreenButtonColor; + case 'A': // Abnormal + return Colors.deepOrange; + default: + return AppColors.greyLightColor; + } + } + + Color _getResultTextColor(String? priority) { + if (priority == null) return AppColors.whiteColor; + switch (priority.toUpperCase()) { + case 'H': // High + case 'HH': // Very High + case 'CRITICAL HIGH': + return AppColors.primaryRedColor; + case 'N': + return AppColors.lightGreenColor; + case 'L': // Low + case 'LL': // Very Low + case 'CRITICAL LOW': + return AppColors.chipTextColorSeekMedicalAdvice; + default: + return AppColors.textColor; + } + } + + Widget _buildBulletItem(String text) { + return Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: text.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ], + ), + ); + } + + Widget _buildCombinedLabCard(AiGeneratedAttribute attr) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 2.h, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (attr.calculatedResultFlag != null && attr.calculatedResultFlag!.isNotEmpty && attr.calculatedResultFlag == "-") ...[ + Row( + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: AppColors.greyLightColor, borderRadius: BorderRadius.circular(4.r)), + child: Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.informationIcon, width: 14.w, height: 14.h), + SizedBox(width: 4.w), + LocaleKeys.contextDependent.tr().toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + ], + ), + ), + ], + ), + ] else ...[ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: _getResultFlagColor(attr.calculatedResultFlag), borderRadius: BorderRadius.circular(4.r)), + child: Row( + children: [ + (attr.calculatedResultFlag ?? "").toText12(fontWeight: FontWeight.w600, color: _getResultTextColor(attr.calculatedResultFlag)), + ], + ), + ), + if (attr.calculatedResultFlag != null && attr.calculatedResultFlag!.isNotEmpty && attr.calculatedResultFlag == "H") + Utils.buildSvgWithAssets(icon: AppAssets.highCautionIcon, iconColor: AppColors.primaryRedColor, width: 24.w, height: 24.h), + ], + ), + ], + SizedBox(height: 4.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: (attr.description ?? "").toText16(isBold: true, color: _getResultTextColor(attr.calculatedResultFlag))), + + // if (attr.calculatedResultFlag != null && attr.calculatedResultFlag!.isNotEmpty) + // Column( + // spacing: 2.h, + // children: [ + // Consumer( + // builder: (context, labViewModel, child) { + // return labViewModel.getSeverityText(attr.calculatedResultFlag ?? "").tr(context: context).toText10(weight: FontWeight.w500, color: AppColors.greyTextColor); + // }, + // ), + // Consumer( + // builder: (context, labViewModel, child) { + // return Utils.buildSvgWithAssets( + // icon: AppAssets.lab_result_indicator, + // width: 21, + // height: 23, + // iconColor: labViewModel.getColor(attr.calculatedResultFlag ?? ""), + // ); + // }, + // ), + // ], + // ), + ], + ), + SizedBox(height: 4.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: (attr.testShortDescription ?? "").toText12(color: AppColors.textColor)), + ], + ), + SizedBox(height: 4.h) + ], + ), + Row( + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: _getResultFlagColor(attr.calculatedResultFlag), borderRadius: BorderRadius.circular(4.r)), + child: ("${LocaleKeys.calculatedValue.tr()}: ${attr.resultValue!}").toText12(fontWeight: FontWeight.w600, color: _getResultTextColor(attr.calculatedResultFlag)), + ), + SizedBox(width: 8.h), + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: AppColors.greyLightColor, borderRadius: BorderRadius.circular(4.r)), + child: ("${LocaleKeys.unit.tr()}: ${attr.uom!}").toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + ), + ], + ), + SizedBox( + height: 4.h, + ), + if (attr.referanceRange != null && attr.referanceRange!.isNotEmpty) + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: AppColors.greyLightColor, borderRadius: BorderRadius.circular(4.r)), + child: ("${LocaleKeys.referenceRange.tr(context: context)}: ${attr.referanceRange!.trim()}").toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + ), + if (attr.calculationFormula != null && attr.calculationFormula!.isNotEmpty) ...[ + SizedBox(height: 8.h), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.calendar, iconColor: Colors.grey), + SizedBox(width: 8.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.calculationFormula.tr().toText16(weight: FontWeight.w600), + (attr.calculationFormula ?? "").toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + ], + ), + ), + ], + ), + ], + ], + ), + ); + } +} diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index b185d894..502afac9 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -23,7 +23,7 @@ abstract class DialogService { Future showExceptionBottomSheet({required String message, required Function() onOkPressed, Function()? onCancelPressed}); - Future showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); + Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}); Future showSuccessBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); @@ -114,13 +114,20 @@ class DialogServiceImp implements DialogService { } @override - Future showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( context, title: label ?? "", - child: exceptionBottomSheetWidget(context: context, message: message, onOkPressed: onOkPressed, onCancelPressed: onCancelPressed), + child: exceptionBottomSheetWidget( + context: context, + message: message, + okLabel: okLabel, + cancelLabel: cancelLabel, + onOkPressed: onOkPressed, + onCancelPressed: onCancelPressed, + ), callBackFunc: () {}, ); } @@ -228,7 +235,7 @@ class DialogServiceImp implements DialogService { } } -Widget exceptionBottomSheetWidget({required BuildContext context, required String message, required Function() onOkPressed, Function()? onCancelPressed}) { +Widget exceptionBottomSheetWidget({required BuildContext context, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}) { return Column( children: [ (message).toText16(isBold: false, color: AppColors.textColor), @@ -239,7 +246,7 @@ Widget exceptionBottomSheetWidget({required BuildContext context, required Strin children: [ Expanded( child: CustomButton( - text: LocaleKeys.cancel.tr(context: context), + text: cancelLabel ?? LocaleKeys.cancel.tr(context: context), onPressed: () { Navigator.of(context).pop(); }, @@ -253,7 +260,7 @@ Widget exceptionBottomSheetWidget({required BuildContext context, required Strin SizedBox(width: 10.h), Expanded( child: CustomButton( - text: LocaleKeys.confirm.tr(context: context), + text: okLabel ?? LocaleKeys.confirm.tr(context: context), onPressed: onOkPressed, backgroundColor: AppColors.bgGreenColor, borderColor: AppColors.bgGreenColor, @@ -267,7 +274,7 @@ Widget exceptionBottomSheetWidget({required BuildContext context, required Strin Padding( padding: EdgeInsets.only(bottom: 10.h), child: CustomButton( - text: LocaleKeys.cancel.tr(context: context), + text: cancelLabel ?? LocaleKeys.cancel.tr(context: context), onPressed: (onCancelPressed == null) ? () { context.pop(); diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index d56178b7..f80085aa 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -113,4 +113,6 @@ class AppColors { static const Color covid29Color = Color(0xff2563EB); // #2563EB static const Color lightGreyTextColor = Color(0xFF959595); static const Color labelColorYellow = Color(0xFFFBCB6E); + + static const LinearGradient aiLinearGradient = LinearGradient(colors: [Color(0xFF8A38F5), Color(0xFFE20BBB)], begin: Alignment.topLeft, end: Alignment.bottomRight); } diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 575de03c..aaaaa51a 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -19,6 +19,7 @@ class CollapsingListView extends StatelessWidget { VoidCallback? search; VoidCallback? report; VoidCallback? logout; + VoidCallback? aiOverview; VoidCallback? history; VoidCallback? instructions; VoidCallback? requests; @@ -40,6 +41,7 @@ class CollapsingListView extends StatelessWidget { this.bottomChild, this.report, this.logout, + this.aiOverview, this.history, this.instructions, this.requests, @@ -85,9 +87,11 @@ class CollapsingListView extends StatelessWidget { history: history, instructions: instructions, requests: requests, - sendEmail: sendEmail, doctorResponse: doctorResponse, + sendEmail: sendEmail, + doctorResponse: doctorResponse, bottomChild: bottomChild, trailing: trailing, + aiOverview: aiOverview, ), // : null, leading: Visibility( @@ -190,6 +194,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget VoidCallback? search; VoidCallback? report; VoidCallback? logout; + VoidCallback? aiOverview; VoidCallback? history; VoidCallback? instructions; VoidCallback? requests; @@ -206,6 +211,7 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget this.search, this.report, this.logout, + this.aiOverview, this.history, this.instructions, this.requests, @@ -288,6 +294,7 @@ class _ScrollAnimatedTitleState extends State { if (widget.sendEmail != null) actionButton(context, t, title: LocaleKeys.sendEmail.tr(context: context), icon: AppAssets.email).onPress(widget.sendEmail!), if (widget.doctorResponse != null) actionButton(context, t, title: LocaleKeys.doctorResponses.tr(context: context), icon: AppAssets.doctorResponseIcon).onPress(widget.doctorResponse!), if (widget.search != null) Utils.buildSvgWithAssets(icon: AppAssets.search_icon).onPress(widget.search!), + if (widget.aiOverview != null) actionButton(context, t, title: LocaleKeys.aiOverView.tr(context: context), icon: AppAssets.aiOverView, isAiButton: true).onPress(widget.aiOverview!), if (widget.trailing != null) widget.trailing!, ] ], @@ -295,40 +302,77 @@ class _ScrollAnimatedTitleState extends State { ); } - Widget actionButton(BuildContext context, double t, {required String title, required String icon}) { - return AnimatedSize( - duration: Duration(milliseconds: 150), - child: Container( - height: 40.h, - padding: EdgeInsets.all(8.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.secondaryLightRedColor, - borderRadius: 10.r, - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - spacing: 8.h, - children: [ - Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.primaryRedColor, height: 24.h, width: 24.w), - if (t >= .5) - Text( - title, - style: context.dynamicTextStyle( - color: AppColors.primaryRedColor, - letterSpacing: -0.4, - fontSize: (12 - (2 * (1 - t))).f, - fontWeight: FontWeight.lerp( - FontWeight.w400, - FontWeight.w500, - t, - )!, + Widget actionButton(BuildContext context, double t, {required String title, required String icon, bool isAiButton = false}) { + return isAiButton + ? AnimatedSize( + duration: Duration(milliseconds: 150), + child: Center( + child: Container( + height: 40.h, + padding: EdgeInsets.all(8.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.transparent, borderRadius: 10.r, side: BorderSide(width: 1, color: AppColors.borderGrayColor)), + child: ShaderMask( + blendMode: BlendMode.srcIn, + shaderCallback: (bounds) => AppColors.aiLinearGradient.createShader(bounds), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + spacing: 8.h, + children: [ + Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.primaryRedColor, height: 24.h, width: 24.w), + Text( + title, + style: context.dynamicTextStyle( + color: AppColors.primaryRedColor, + letterSpacing: -0.4, + fontSize: (12 - (2 * (1 - t))).f, + fontWeight: FontWeight.lerp( + FontWeight.w400, + FontWeight.w500, + t, + )!, + ), + ), + ], + ), ), ), - ], - ), - ), - ); + ), + ) + : AnimatedSize( + duration: Duration(milliseconds: 150), + child: Container( + height: 40.h, + padding: EdgeInsets.all(8.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.secondaryLightRedColor, + borderRadius: 10.r, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + spacing: 8.h, + children: [ + Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.primaryRedColor, height: 24.h, width: 24.w), + if (t >= .5) + Text( + title, + style: context.dynamicTextStyle( + color: AppColors.primaryRedColor, + letterSpacing: -0.4, + fontSize: (12 - (2 * (1 - t))).f, + fontWeight: FontWeight.lerp( + FontWeight.w400, + FontWeight.w500, + t, + )!, + ), + ), + ], + ), + ), + ); } } From 68f5e64557268751bfb8fb02c70b0170aa641e92 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 9 Feb 2026 11:16:29 +0300 Subject: [PATCH 61/67] updates --- lib/extensions/string_extensions.dart | 4 ++-- .../authentication/saved_login_screen.dart | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index a236de5b..6a009428 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -222,8 +222,7 @@ extension EmailValidator on String { decoration: isUnderLine ? TextDecoration.underline : null), ); - Widget toText16( - {Color? color, + Widget toText16({bool isEnglishOnly = false, Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, @@ -247,6 +246,7 @@ extension EmailValidator on String { overflow: textOverflow, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), decoration: isUnderLine ? TextDecoration.underline : null, + fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', decorationColor: decorationColor), ); diff --git a/lib/presentation/authentication/saved_login_screen.dart b/lib/presentation/authentication/saved_login_screen.dart index f0fd8cb8..dc6257bc 100644 --- a/lib/presentation/authentication/saved_login_screen.dart +++ b/lib/presentation/authentication/saved_login_screen.dart @@ -18,6 +18,7 @@ import 'package:hmg_patient_app_new/widgets/bottomsheet/generic_bottom_sheet.dar import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; class SavedLogin extends StatefulWidget { const SavedLogin({super.key}); @@ -93,14 +94,15 @@ class _SavedLogin extends State { ("${LocaleKeys.lastLoginBy.tr()} ${loginType.displayName}") .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -1), - appState.getSelectDeviceByImeiRespModelElement != null - ? (appState.getSelectDeviceByImeiRespModelElement!.createdOn != null - ? DateUtil.getFormattedDate( - DateUtil.convertStringToDate(appState.getSelectDeviceByImeiRespModelElement!.createdOn!), - "d MMMM, y 'at' HH:mm") - : '--') - .toText16(isBold: true, color: AppColors.textColor) - : SizedBox(), + Directionality( + textDirection: ui.TextDirection.ltr, + child: appState.getSelectDeviceByImeiRespModelElement != null + ? (appState.getSelectDeviceByImeiRespModelElement!.createdOn != null + ? DateUtil.getFormattedDate(DateUtil.convertStringToDate(appState.getSelectDeviceByImeiRespModelElement!.createdOn!), "d MMMM, y 'at' HH:mm") + : '--') + .toText16(isBold: true, color: AppColors.textColor, isEnglishOnly: true) + : SizedBox(), + ), appState.getSelectDeviceByImeiRespModelElement != null ? Container( From 01c21377aabda83e2a09d6927d4bfc023f2ca1d2 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 9 Feb 2026 15:58:10 +0300 Subject: [PATCH 62/67] Updates & fixes --- assets/langs/ar-SA.json | 12 +-- assets/langs/en-US.json | 13 ++-- lib/core/api/api_client.dart | 14 +++- lib/core/api_consts.dart | 3 +- lib/core/utils/loading_utils.dart | 2 +- lib/extensions/string_extensions.dart | 3 +- lib/features/lab/lab_view_model.dart | 13 +++- .../prescriptions/prescriptions_repo.dart | 4 +- .../prescriptions_view_model.dart | 10 +-- lib/generated/locale_keys.g.dart | 5 +- .../appointment_payment_page.dart | 2 + .../widgets/appointment_card.dart | 2 +- .../LabResultByClinic.dart | 2 +- .../ai_analysis_widget.dart | 1 + .../lab_order_result_item.dart | 78 ++++++++++--------- .../lab/lab_results/lab_result_details.dart | 2 +- .../lab_ai_analysis_detailed_page.dart | 6 +- .../prescriptions/prescription_item_view.dart | 40 +++++----- lib/widgets/app_language_change.dart | 28 +++++++ lib/widgets/appbar/collapsing_list_view.dart | 4 +- lib/widgets/language_switcher.dart | 5 +- lib/widgets/loader/bottomsheet_loader.dart | 4 +- 22 files changed, 153 insertions(+), 100 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 50b0c0c3..11ab9414 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -1528,7 +1528,7 @@ "prediction": "تنبؤ", "prevention": "وقاية", "disclaimer": "تنصل", - "thisAboveInfo": "المعلومات المذكورة أعلاه تم إنشاؤها بواسطة AI", + "thisAboveInfo": "المعلومات المذكورة أعلاه مُولّدة بواسطة AI بناءً على نتائج تحاليلك المخبرية، وهي لأغراض إعلامية فقط. لا ينبغي اعتبارها تشخيصًا طبيًا أو خطة علاجية. استشر طبيبك دائمًا للحصول على نصيحة طبية مُخصصة قبل اتخاذ أي قرارات تتعلق بصحتك.", "aiDisclaimer": "سيتم مشاركة بيانات نتائج تحاليلك المخبرية بشكل آمن مع خدمة الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في تقديم رؤى صحية مُخصصة. هل ترغب في المتابعة؟", "consent": "موافقة", "bmiNormalDescription": "مؤشر كتلة جسمك ضمن المعدل الصحي. استمر في اتباع نظام غذائي متوازن، وممارسة النشاط البدني بانتظام، وإجراء الفحوصات الدورية للحفاظ على صحة جيدة. راقب أي تغييرات ملحوظة مع مرور الوقت.", @@ -1559,10 +1559,7 @@ "dietZoneDietDescription": "Zone Diet (~40% carbs / 30% protein / 30% fat): emphasizes hormonal balance and portion control. May improve body composition and energy for some, but requires planning; personalize with a nutrition professional.", "contextDependent": "يعتمد السياق", "calculatedValue": "القيمة المحسوبة", - "calculationFormula": "صيغة الحساب" - - - + "calculationFormula": "صيغة الحساب", "confirmYourLocation": "قم بتأكيد موقعك", "confirmYourLocationDesc": "يرجى تأكيد موقعك الحالي لعرض الاتجاهات المناسبة.", "insideHospital": "أنا داخل المستشفى", @@ -1571,5 +1568,8 @@ "servicePriceListDesc": "توضح قائمة أسعار الخدمات أدناه رسوم الخدمات الصحية المقدمة للمرضى بنظام الدفع النقدي. أما فيما يتعلق بالخدمات المشمولة بالتأمين، فسيتم تطبيق التغطية التأمينية والتحقق من الأهلية واحتساب نسب التحمل وفقًا لشروط وثيقة التأمين وجدول المنافع المعتمد لكل شركة تأمين.", "servicePriceListRights": "يحق للمريض الحصول على متابعة مجانية في غضون 14 يومًا من الزيارة الأولى", "serviceName": "اسم الخدمة", - "noFreeSlot": "لا توجد مواعيد متاحة في التاريخ المحدد. يرجى اختيار تاريخ آخر أو إعادة المحاولة لاحقاً." + "noFreeSlot": "لا توجد مواعيد متاحة في التاريخ المحدد. يرجى اختيار تاريخ آخر أو إعادة المحاولة لاحقاً.", + "noThanksIKnowTheClinic": "لا، شكراً. أنا أعرف العيادة.", + "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة", + "loadingAIAnalysis": "جارٍ تحميل بياناتك وتحليلها، يُرجى التحلي بالصبر ودع الذكاء الاصطناعي يقوم بالمهمة. يُرجى التحلي بالصبر، فقد يستغرق هذا بعض الوقت." } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 65b08f26..3f1bc78b 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1439,7 +1439,6 @@ "healthy": "Healthy", "warning": "Warning", "vitalSignDetails": "Vital Sign Details", - "resultOf": "Result of {date}", "resultOfNoDate": "Result of --", "referenceRangeBetween": "Reference range: {low} – {high} {unit}", "referenceRangeMin": "Reference range: ≥ {low} {unit}", @@ -1522,7 +1521,7 @@ "servicePriceListDesc": "Below is the services price list outline the healthcare services fees for cash payments, where the insurance coverage, eligibility, and co-payment deductions will be processed in accordance with the insurance policy terms and the table of benefits of each insurance providers:", "servicePriceListRights": "The patient has the right to a free follow-up within 14 days of initial visit", "serviceName": "Service Name", - "noFreeSlot": "No free slot available for the selected date. Please select another date or check back later." + "noFreeSlot": "No free slot available for the selected date. Please select another date or check back later.", "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic", "unableToSendOTP": "Unable to send Verification OTP", "aiOverView": "AI Overview", @@ -1531,8 +1530,8 @@ "prediction": "Prediction", "prevention": "Prevention", "disclaimer": "Disclaimer", - "thisAboveInfo": "The above information is generated by", - "aiDisclaimer": "Your lab result data will be securely shared with our AI service for analysis. This helps provide personalized health insights. Do you want to proceed?", + "thisAboveInfo": "The above information is generated by AI based on your lab results and is intended for informational purposes only. It should not be considered a medical diagnosis or treatment plan. Always consult with your healthcare provider for personalized medical advice and before making any health-related decisions.", + "aiDisclaimer": "Your lab result data will be securely shared with our AI Analyzer for analysis. This helps provide personalized health insights. Do you want to proceed?", "consent": "Consent", "bmiNormalDescription": "Your BMI is within the healthy range. Continue a balanced diet, regular physical activity, and routine checkups to maintain good health. Monitor any significant changes over time.", "bmiUnderweightDescription": "BMI suggests you are underweight. Consider increasing calorie intake with nutrient-dense foods, include resistance training to build muscle, and consult a healthcare professional to check for underlying causes.", @@ -1562,8 +1561,6 @@ "dietZoneDietDescription": "Zone Diet (~40% carbs / 30% protein / 30% fat): emphasizes hormonal balance and portion control. May improve body composition and energy for some, but requires planning; personalize with a nutrition professional.", "contextDependent": "Context Dependent", "calculatedValue": "Calculated Value", - "calculationFormula": "Calculation Formula" - - - + "calculationFormula": "Calculation Formula", + "loadingAIAnalysis": "Loading and analysing your data, Please be patient and let the AI do the magic. Please be patient, This might take some time." } diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index ea8062d0..f74ff4d6 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -181,8 +181,18 @@ class ApiClientImp implements ApiClient { body[_appState.isAuthenticated ? 'TokenID' : 'LogInTokenID'] = _appState.appAuthToken; } - // body['TokenID'] = "@dm!n"; - // body['PatientID'] = 4768663; + if (url.contains("HMGAI_Lab_Analyze_Orders_API")) { + url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; + body['TokenID'] = "@dm!n"; + } + + if (url.contains("HMGAI_Lab_Analyzer_API")) { + url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; + body['TokenID'] = "@dm!n"; + } + + body['TokenID'] = "@dm!n"; + body['PatientID'] = 4773882; // body['PatientTypeID'] = 1; // body['PatientOutSA'] = 0; // body['SessionID'] = "45786230487560q"; diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index c08cdda9..f78c0201 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -908,7 +908,8 @@ class ApiConsts { static String getAiOverViewLabOrder = "Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; // ************ static values for Api **************** - static final double appVersionID = 19.7; + // static final double appVersionID = 19.7; + static final double appVersionID = 50.7; static final int appChannelId = 3; static final String appIpAddress = "10.20.10.20"; static final String appGeneralId = "Cs2020@2016\$2958"; diff --git a/lib/core/utils/loading_utils.dart b/lib/core/utils/loading_utils.dart index 1a99278d..bd24d30c 100644 --- a/lib/core/utils/loading_utils.dart +++ b/lib/core/utils/loading_utils.dart @@ -38,7 +38,7 @@ class LoadingUtils { child: Material( child: Center( child: isSuccessDialog ? Utils.getSuccessWidget(loadingText: loadingText) : Utils.getLoadingWidget(loadingText: loadingText), - ), + ).paddingSymmetrical(24.w, 0), ), ); }).then((value) { diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 6a009428..f087f748 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -423,11 +423,12 @@ extension DynamicTextStyleExtension on BuildContext { Locale? locale, TextBaseline? textBaseline, FontStyle? fontStyle, + String? fontFamily, bool isLanguageSwitcher = false}) { AppState appState = getIt.get(); final family = appState.getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'; return TextStyle( - fontFamily: family, + fontFamily: fontFamily ?? family, fontSize: fontSize, fontWeight: fontWeight, color: color, diff --git a/lib/features/lab/lab_view_model.dart b/lib/features/lab/lab_view_model.dart index 04c945df..22e48595 100644 --- a/lib/features/lab/lab_view_model.dart +++ b/lib/features/lab/lab_view_model.dart @@ -400,6 +400,10 @@ class LabViewModel extends ChangeNotifier { lowRefenceValue = minY; } + if (minY > lowRefenceValue) { + minY = lowRefenceValue - 25; + } + this.flagForHighReferenceRange = flagForHighReferenceRange; this.flagForLowReferenceRange = flagForLowReferenceRange; highTransformedReferenceValue = double.parse(transformValueInRange(highRefrenceValue, flagForHighReferenceRange ?? "").toStringAsFixed(1)); @@ -728,8 +732,9 @@ class LabViewModel extends ChangeNotifier { notifyListeners(); } - Future getAiOverviewLabOrders({required PatientLabOrdersResponseModel labOrder}) async { - LoadingUtils.showFullScreenLoader(loadingText: "Loading and analysing your data,\nPlease be patient and let the AI do the magic"); + Future getAiOverviewLabOrders({required PatientLabOrdersResponseModel labOrder, required String loadingText}) async { + // LoadingUtils.showFullScreenLoader(loadingText: "Loading and analysing your data,\nPlease be patient and let the AI do the magic. \nPlease be patient, This might take some time."); + LoadingUtils.showFullScreenLoader(loadingText: loadingText); List> results = []; Map orderData = {"order_date": labOrder.orderDate ?? "", "clinic": labOrder.clinicDescription ?? "", "doctor": labOrder.doctorName ?? "", "results": []}; List> testResults = []; @@ -769,8 +774,8 @@ class LabViewModel extends ChangeNotifier { LoadingUtils.hideFullScreenLoader(); } - Future getAiOverviewSingleLabResult({required String langId, required LabResult recentLabResult}) async { - LoaderBottomSheet.showLoader(); + Future getAiOverviewSingleLabResult({required String langId, required LabResult recentLabResult, required String loadingText}) async { + LoaderBottomSheet.showLoader(loadingText: loadingText); List> results = []; results.add({ "Description": recentLabResult.description ?? '', diff --git a/lib/features/prescriptions/prescriptions_repo.dart b/lib/features/prescriptions/prescriptions_repo.dart index 2eb5d43e..dcc9de92 100644 --- a/lib/features/prescriptions/prescriptions_repo.dart +++ b/lib/features/prescriptions/prescriptions_repo.dart @@ -193,8 +193,8 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { "ProjectID": prescriptionsResponseModel.projectID, "DischargeNo": prescriptionsResponseModel.dischargeNo, "IsDownload": true, - // "To": Utils.appState.getAuthenticatedUser()!.emailAddress, - "To": "amjad.haroon@cloudsolutions.com.sa", + "To": Utils.appState.getAuthenticatedUser()!.emailAddress, + // "To": "amjad.haroon@cloudsolutions.com.sa", "ClinicName": prescriptionsResponseModel.clinicDescription, "DoctorName": prescriptionsResponseModel.doctorName, }; diff --git a/lib/features/prescriptions/prescriptions_view_model.dart b/lib/features/prescriptions/prescriptions_view_model.dart index a7cd42f6..319e5fc1 100644 --- a/lib/features/prescriptions/prescriptions_view_model.dart +++ b/lib/features/prescriptions/prescriptions_view_model.dart @@ -54,7 +54,7 @@ class PrescriptionsViewModel extends ChangeNotifier { PrescriptionsViewModel({required this.prescriptionsRepo, required this.errorHandlerService, required this.navServices}); initPrescriptionsViewModel() { - if (isPrescriptionsDataNeedsReloading) { + // if (isPrescriptionsDataNeedsReloading) { patientPrescriptionOrders.clear(); patientPrescriptionOrdersByClinic.clear(); patientPrescriptionOrdersByHospital.clear(); @@ -62,7 +62,7 @@ class PrescriptionsViewModel extends ChangeNotifier { prescriptionsOrderList.clear(); isPrescriptionsOrdersLoading = true; getPatientPrescriptionOrders(); - } + // } isSortByClinic = true; isPrescriptionsDeliveryOrdersLoading = true; notifyListeners(); @@ -102,9 +102,9 @@ class PrescriptionsViewModel extends ChangeNotifier { } Future getPatientPrescriptionOrders({Function(dynamic)? onSuccess, Function(String)? onError}) async { - if (!isPrescriptionsDataNeedsReloading) { - return; - } + // if (!isPrescriptionsDataNeedsReloading) { + // return; + // } final result = await prescriptionsRepo.getPatientPrescriptionOrders(patientId: "1231755"); diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 72297264..7bafadf2 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1513,8 +1513,6 @@ abstract class LocaleKeys { static const trackerAndOthers = 'trackerAndOthers'; static const bmi = 'bmi'; static const yesPleaseINeedHelp = 'yesPleaseINeedHelp'; - static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; - static const unableToSendOTP = 'unableToSendOTP'; static const aiOverView = 'aiOverView'; static const generateAiAnalysis = 'generateAiAnalysis'; static const aiAnalysis = 'aiAnalysis'; @@ -1562,5 +1560,8 @@ abstract class LocaleKeys { static const servicePriceListRights = 'servicePriceListRights'; static const serviceName = 'serviceName'; static const noFreeSlot = 'noFreeSlot'; + static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; + static const unableToSendOTP = 'unableToSendOTP'; + static const loadingAIAnalysis = 'loadingAIAnalysis'; } diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart index 097efaf6..e70ddf49 100644 --- a/lib/presentation/appointments/appointment_payment_page.dart +++ b/lib/presentation/appointments/appointment_payment_page.dart @@ -491,6 +491,7 @@ class _AppointmentPaymentPageState extends State { patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); @@ -511,6 +512,7 @@ class _AppointmentPaymentPageState extends State { isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, onSuccess: (apiResponse) { Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); LoaderBottomSheet.hideLoader(); diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index 49aad51f..971e9ca8 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -193,7 +193,7 @@ class AppointmentCard extends StatelessWidget { ? 'Cardiology'.toText10().toShimmer2(isShow: isLoading) : "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)}" .toText10(isEnglishOnly: true), - ), + ).toShimmer2(isShow: isLoading), ), // AppCustomChipWidget( diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart index 954c09bc..8fb30900 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart @@ -50,7 +50,7 @@ class LabResultByClinic extends StatelessWidget { cancelLabel: LocaleKeys.rejectView.tr(), onOkPressed: () { context.pop(); - labViewModel.getAiOverviewLabOrders(labOrder: labOrder); + labViewModel.getAiOverviewLabOrders(labOrder: labOrder, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); }, onCancelPressed: () { context.pop(); diff --git a/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart index a2d0ff6b..f0c9b26b 100644 --- a/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart +++ b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart @@ -62,6 +62,7 @@ class AiAnalysisWidget extends StatelessWidget { SizedBox(height: 20.h), ], Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Icon(Icons.info_outline, color: AppColors.greyTextColor, size: 20.r), SizedBox(width: 8.w), diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart index e3320662..ba97731f 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart @@ -11,6 +11,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; class LabOrderResultItem extends StatelessWidget { final VoidCallback onTap; @@ -43,49 +44,52 @@ class LabOrderResultItem extends StatelessWidget { ), (tests!.packageShortDescription ?? "").toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), SizedBox(height: 12.h), - Row( - mainAxisSize: MainAxisSize.max, - children: [ - Flexible( - child: Text( - "${tests?.resultValue} ${tests?.uOM}", - style: TextStyle( - fontSize: 24.f, - fontWeight: FontWeight.w600, - fontFamily: 'Poppins', - color: tests!.checkIfGraphShouldBeDisplayed() - ? context.read().getColor( - tests?.calculatedResultFlag ?? "", - ) - : Colors.grey.shade700, - letterSpacing: -2, - ), - ), - ), - SizedBox(width: 4.h,), - Visibility( - // visible: tests?.checkIfGraphShouldBeDisplayed() == true, - visible: true, - child: Expanded( - flex: 2, - child: Visibility( - visible: tests?.referanceRange != null, + Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + Flexible( child: Text( - "(${LocaleKeys.referenceRange.tr(context: context)}: ${tests?.referanceRange})", + "${tests?.resultValue} ${tests?.uOM}", style: TextStyle( - fontSize: 12.f, - fontWeight: FontWeight.w500, + fontSize: 24.f, + fontWeight: FontWeight.w600, fontFamily: 'Poppins', - color: AppColors.greyTextColor, + color: tests!.checkIfGraphShouldBeDisplayed() + ? context.read().getColor( + tests?.calculatedResultFlag ?? "", + ) + : Colors.grey.shade700, + letterSpacing: -2, ), - // overflow: TextOverflow.ellipsis, - // maxLines: 2, - softWrap: true, ), ), - ), - ) - ], + SizedBox(width: 4.h,), + Visibility( + // visible: tests?.checkIfGraphShouldBeDisplayed() == true, + visible: true, + child: Expanded( + flex: 2, + child: Visibility( + visible: tests?.referanceRange != null, + child: Text( + "(${LocaleKeys.referenceRange.tr(context: context)}: ${tests?.referanceRange})", + style: TextStyle( + fontSize: 12.f, + fontWeight: FontWeight.w500, + fontFamily: 'Poppins', + color: AppColors.greyTextColor, + ), + // overflow: TextOverflow.ellipsis, + // maxLines: 2, + softWrap: true, + ), + ), + ), + ) + ], + ), ), SizedBox(height: 12.h), diff --git a/lib/presentation/lab/lab_results/lab_result_details.dart b/lib/presentation/lab/lab_results/lab_result_details.dart index c67c39dd..cab20aed 100644 --- a/lib/presentation/lab/lab_results/lab_result_details.dart +++ b/lib/presentation/lab/lab_results/lab_result_details.dart @@ -45,7 +45,7 @@ class LabResultDetails extends StatelessWidget { cancelLabel: LocaleKeys.rejectView.tr(), onOkPressed: () { context.pop(); - labViewModel.getAiOverviewSingleLabResult(langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult); + labViewModel.getAiOverviewSingleLabResult(langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); }, onCancelPressed: () { context.pop(); diff --git a/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart b/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart index 5a5aed7f..5d4fe4b0 100644 --- a/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart +++ b/lib/presentation/labAiAnalysis/lab_ai_analysis_detailed_page.dart @@ -341,7 +341,7 @@ class _LabAiAnalysisDetailedPageState extends State { case 'high': return AppColors.primaryRedColor; case 'medium' || 'moderate': - return AppColors.lightGreenColor; + return AppColors.textGreenColor; case 'low': return AppColors.alertColor; default: @@ -361,7 +361,7 @@ class _LabAiAnalysisDetailedPageState extends State { case 'L': // Low case 'LL': // Very Low case 'CRITICAL LOW': - return AppColors.chipColorSeekMedicalAdvice; + return AppColors.chipColorSeekMedicalAdvice.withAlpha(75); case 'N': // Normal return AppColors.lightGreenButtonColor; case 'A': // Abnormal @@ -379,7 +379,7 @@ class _LabAiAnalysisDetailedPageState extends State { case 'CRITICAL HIGH': return AppColors.primaryRedColor; case 'N': - return AppColors.lightGreenColor; + return AppColors.textGreenColor; case 'L': // Low case 'LL': // Very Low case 'CRITICAL LOW': diff --git a/lib/presentation/prescriptions/prescription_item_view.dart b/lib/presentation/prescriptions/prescription_item_view.dart index a41b53ff..03a343f7 100644 --- a/lib/presentation/prescriptions/prescription_item_view.dart +++ b/lib/presentation/prescriptions/prescription_item_view.dart @@ -155,26 +155,26 @@ class PrescriptionItemView extends StatelessWidget { ], ).paddingSymmetrical(16.h, 0.h), SizedBox(height: 14.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - Row( - children: [ - Expanded( - child: CustomButton( - text: LocaleKeys.checkAvailability.tr(context: context), - onPressed: () {}, - backgroundColor: AppColors.primaryRedColor.withOpacity(0.1), - borderColor: AppColors.primaryRedColor.withOpacity(0.0), - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ).toShimmer2(isShow: isLoading), - ), - // SizedBox(width: 16.h), - ], - ).paddingSymmetrical(16.h, 16.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // Row( + // children: [ + // Expanded( + // child: CustomButton( + // text: LocaleKeys.checkAvailability.tr(context: context), + // onPressed: () {}, + // backgroundColor: AppColors.primaryRedColor.withOpacity(0.1), + // borderColor: AppColors.primaryRedColor.withOpacity(0.0), + // textColor: AppColors.primaryRedColor, + // fontSize: 14.f, + // fontWeight: FontWeight.w500, + // borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ).toShimmer2(isShow: isLoading), + // ), + // // SizedBox(width: 16.h), + // ], + // ).paddingSymmetrical(16.h, 16.h), ], ), ); diff --git a/lib/widgets/app_language_change.dart b/lib/widgets/app_language_change.dart index c94195a5..e75ff6f6 100644 --- a/lib/widgets/app_language_change.dart +++ b/lib/widgets/app_language_change.dart @@ -4,9 +4,14 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; +import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; class AppLanguageChange extends StatefulWidget { AppLanguageChange({Key? key}) : super(key: key); @@ -20,6 +25,11 @@ class AppLanguageChange extends StatefulWidget { class _AppLanguageChangeState extends State { String? selectedValue; + late MyAppointmentsViewModel myAppointmentsViewModel; + late ImmediateLiveCareViewModel immediateLiveCareViewModel; + late EmergencyServicesViewModel emergencyServicesViewModel; + late TodoSectionViewModel todoSectionViewModel; + @override void initState() { super.initState(); @@ -33,6 +43,12 @@ class _AppLanguageChangeState extends State { @override Widget build(BuildContext context) { selectedValue ??= context.locale.languageCode; + + myAppointmentsViewModel = Provider.of(context, listen: false); + immediateLiveCareViewModel = Provider.of(context, listen: false); + emergencyServicesViewModel = Provider.of(context, listen: false); + todoSectionViewModel = Provider.of(context, listen: false); + return Column( spacing: 24.h, children: [ @@ -51,6 +67,18 @@ class _AppLanguageChangeState extends State { text: LocaleKeys.save.tr(context: context), onPressed: () { context.setLocale(selectedValue == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')).then((val) { + //Reload My Appointments Data + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + //Reload Immediate LiveCare Data + immediateLiveCareViewModel.initImmediateLiveCare(); + immediateLiveCareViewModel.getPatientLiveCareHistory(); + + //Reload Emergency Services Data + emergencyServicesViewModel.checkPatientERAdvanceBalance(); + Navigator.pop(context); }); }), diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index aaaaa51a..25221962 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -310,7 +310,7 @@ class _ScrollAnimatedTitleState extends State { child: Container( height: 40.h, padding: EdgeInsets.all(8.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.transparent, borderRadius: 10.r, side: BorderSide(width: 1, color: AppColors.borderGrayColor)), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 8.r, side: BorderSide(width: 1, color: AppColors.borderGrayColor)), child: ShaderMask( blendMode: BlendMode.srcIn, shaderCallback: (bounds) => AppColors.aiLinearGradient.createShader(bounds), @@ -326,7 +326,7 @@ class _ScrollAnimatedTitleState extends State { style: context.dynamicTextStyle( color: AppColors.primaryRedColor, letterSpacing: -0.4, - fontSize: (12 - (2 * (1 - t))).f, + fontSize: (14 - (2 * (1 - t))).f, fontWeight: FontWeight.lerp( FontWeight.w400, FontWeight.w500, diff --git a/lib/widgets/language_switcher.dart b/lib/widgets/language_switcher.dart index 91e45b22..033eaaff 100644 --- a/lib/widgets/language_switcher.dart +++ b/lib/widgets/language_switcher.dart @@ -59,14 +59,15 @@ class _LanguageSelectorState extends State { Utils.buildSvgWithAssets(icon: AppAssets.language), SizedBox(width: 6.h), Text( - currentLangData['name']?.toUpperCase() ?? 'EN', + // currentLangData['name']?.toUpperCase() ?? 'EN', + widget.currentLanguage == 'ar' ? "ENGLISH" : "العربية", style: context.dynamicTextStyle( fontWeight: FontWeight.w500, fontSize: 14.f, color: AppColors.primaryRedColor, letterSpacing: 0.1, isLanguageSwitcher: true, - ), + fontFamily: widget.currentLanguage == 'ar' ? "Poppins" : "GESSTwo"), ), ], ), diff --git a/lib/widgets/loader/bottomsheet_loader.dart b/lib/widgets/loader/bottomsheet_loader.dart index 813ad5b5..71b83415 100644 --- a/lib/widgets/loader/bottomsheet_loader.dart +++ b/lib/widgets/loader/bottomsheet_loader.dart @@ -3,7 +3,9 @@ import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; class LoaderBottomSheet { @@ -31,7 +33,7 @@ class LoaderBottomSheet { ), child: Center( child: Utils.getLoadingWidget(loadingText: loadingText), - ), + ).paddingSymmetrical(24.w, 0), ); }, ).whenComplete(() { From 20ed54243b46353e10e270957c9d27191b9339bf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 9 Feb 2026 17:27:44 +0300 Subject: [PATCH 63/67] updates --- lib/core/api/api_client.dart | 4 ++-- .../symptoms_checker/possible_conditions_screen.dart | 3 ++- .../symptoms_checker/symptoms_selector_screen.dart | 3 ++- lib/presentation/symptoms_checker/triage_screen.dart | 3 ++- lib/services/navigation_service.dart | 7 +++++++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index f74ff4d6..231b037b 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -191,8 +191,8 @@ class ApiClientImp implements ApiClient { body['TokenID'] = "@dm!n"; } - body['TokenID'] = "@dm!n"; - body['PatientID'] = 4773882; + // body['TokenID'] = "@dm!n"; + // body['PatientID'] = 4768663; // body['PatientTypeID'] = 1; // body['PatientOutSA'] = 0; // body['SessionID'] = "45786230487560q"; diff --git a/lib/presentation/symptoms_checker/possible_conditions_screen.dart b/lib/presentation/symptoms_checker/possible_conditions_screen.dart index 8fb0e0fd..3d288d78 100644 --- a/lib/presentation/symptoms_checker/possible_conditions_screen.dart +++ b/lib/presentation/symptoms_checker/possible_conditions_screen.dart @@ -205,7 +205,8 @@ class PossibleConditionsPage extends StatelessWidget { final SymptomsCheckerViewModel symptomsCheckerViewModel = context.read(); symptomsCheckerViewModel.reset(); // Clear all symptoms checker data final navigationService = getIt.get(); - navigationService.replaceAllRoutesAndNavigateToLanding(); + // navigationService.replaceAllRoutesAndNavigateToLanding(); + navigationService.replaceAllRoutesAndNavigateToLandingAuth(); }, ), trailing: _buildTrailingSection(context), diff --git a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart index 2bfcb62f..cbbfc68e 100644 --- a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart +++ b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart @@ -89,7 +89,8 @@ class _SymptomsSelectorPageState extends State { context.pop(); viewModel.reset(); // Clear all symptoms checker data final navigationService = getIt.get(); - navigationService.replaceAllRoutesAndNavigateToLanding(); + // navigationService.replaceAllRoutesAndNavigateToLanding(); + navigationService.replaceAllRoutesAndNavigateToLandingAuth(); }), child: viewModel.isBodySymptomsLoading ? _buildLoadingShimmer() diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index 0811833e..0231ef19 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -316,7 +316,8 @@ class _TriagePageState extends State { context.pop(); viewModel.reset(); // Clear all symptoms checker data final navigationService = getIt.get(); - navigationService.replaceAllRoutesAndNavigateToLanding(); + // navigationService.replaceAllRoutesAndNavigateToLanding(); + navigationService.replaceAllRoutesAndNavigateToLandingAuth(); }, ), callBackFunc: () {}, diff --git a/lib/services/navigation_service.dart b/lib/services/navigation_service.dart index fe951400..da4a75b9 100644 --- a/lib/services/navigation_service.dart +++ b/lib/services/navigation_service.dart @@ -34,6 +34,13 @@ class NavigationService { ); } + void replaceAllRoutesAndNavigateToLandingAuth() { + navigatorKey.currentState?.pushNamedAndRemoveUntil( + AppRoutes.landingScreen, + (Route route) => false, + ); + } + void pushAndReplace(String routeName) { navigatorKey.currentState?.pushReplacementNamed(routeName); } From 9b3c172dd1643204452637a38a12816188ba4aad Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Mon, 9 Feb 2026 21:44:01 +0300 Subject: [PATCH 64/67] updates --- lib/presentation/home/widgets/habib_wallet_card.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index 72565d03..01359837 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -87,7 +87,10 @@ class HabibWalletCard extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.h), - habibWalletVM.habibWalletAmount.toString().toText32(isBold: true, isEnglishOnly: true).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + habibWalletVM.habibWalletAmount + .toString() + .toText32(isBold: true, isEnglishOnly: true) + .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), ], ); }), From c48cb78cd920edd3e1840f16e6a076c0a7425e07 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Tue, 10 Feb 2026 11:46:56 +0300 Subject: [PATCH 65/67] PMA-1100 --- .../authentication/authentication_view_model.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 50bd1cae..18147a34 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -584,8 +584,7 @@ class AuthenticationViewModel extends ChangeNotifier { if (!_appState.getIsChildLoggedIn) { await medicalVm.getFamilyFiles(status: 0); // await medicalVm.getAllPendingRecordsByResponseId(); - // _navigationService.replaceAllRoutesAndNavigateToLanding(); - _navigationService.popUntilNamed(AppRoutes.landingScreen); + _navigationService.replaceAllRoutesAndNavigateToLanding(); } } else { if (activation.list != null && activation.list!.isNotEmpty) { @@ -745,7 +744,10 @@ class AuthenticationViewModel extends ChangeNotifier { Future onWrongActivationCode({String? message}) async { otpScreenNotifier.value = true; - await _dialogService.showErrorBottomSheet(message: message ?? "Something went wrong. ", onOkPressed: () {}); + await _dialogService.showErrorBottomSheet(message: message ?? "Something went wrong. ", onOkPressed: () { + LoaderBottomSheet.hideLoader(); + _navigationService.pushAndReplace(AppRoutes.loginScreen); + }); } loginWithFingerPrintFace(Function success) async { From 7296bfb6fc3917c052826a153120aade0dd9a102 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Wed, 11 Feb 2026 11:27:26 +0300 Subject: [PATCH 66/67] family fil fixes --- .../authentication_view_model.dart | 18 +++-- .../medical_file/medical_file_view_model.dart | 27 +++---- lib/presentation/my_family/my_family.dart | 72 ++++++++++--------- .../my_family/widget/family_cards.dart | 1 + lib/services/dialog_service.dart | 28 ++++---- .../bottomsheet/exception_bottom_sheet.dart | 25 ++++--- .../family_files/family_file_add_widget.dart | 50 +++++++------ 7 files changed, 124 insertions(+), 97 deletions(-) diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 18147a34..509b7cc4 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -76,7 +76,6 @@ class AuthenticationViewModel extends ChangeNotifier { nameController = TextEditingController(), emailController = TextEditingController(); - CountryEnum selectedCountrySignup = CountryEnum.saudiArabia; MaritalStatusTypeEnum? maritalStatus; GenderTypeEnum? genderType; @@ -583,8 +582,13 @@ class AuthenticationViewModel extends ChangeNotifier { MedicalFileViewModel medicalVm = getIt(); if (!_appState.getIsChildLoggedIn) { await medicalVm.getFamilyFiles(status: 0); + if (isFormFamilyFile) { + await medicalVm.getAllPendingRecordsByResponseId(); + _navigationService.pushAndReplace(AppRoutes.medicalFilePage); + } else { + _navigationService.replaceAllRoutesAndNavigateToLanding(); + } // await medicalVm.getAllPendingRecordsByResponseId(); - _navigationService.replaceAllRoutesAndNavigateToLanding(); } } else { if (activation.list != null && activation.list!.isNotEmpty) { @@ -744,10 +748,12 @@ class AuthenticationViewModel extends ChangeNotifier { Future onWrongActivationCode({String? message}) async { otpScreenNotifier.value = true; - await _dialogService.showErrorBottomSheet(message: message ?? "Something went wrong. ", onOkPressed: () { - LoaderBottomSheet.hideLoader(); - _navigationService.pushAndReplace(AppRoutes.loginScreen); - }); + await _dialogService.showErrorBottomSheet( + message: message ?? "Something went wrong. ", + onOkPressed: () { + LoaderBottomSheet.hideLoader(); + _navigationService.pushAndReplace(AppRoutes.loginScreen); + }); } loginWithFingerPrintFace(Function success) async { diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index b26a87a1..9e50075f 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -439,11 +439,10 @@ class MedicalFileViewModel extends ChangeNotifier { ); // Clear and start fresh with current user - patientFamilyFiles.clear(); - patientFamilyFiles.add(currentUserFamilyFile); + final List newPatientFamilyFiles = [currentUserFamilyFile]; final List activeFamilyFiles = []; - final List pendingFamilyFiles = []; + final List newPendingFamilyFiles = []; for (var element in apiResponse.data!) { if (element.status == null) { @@ -484,7 +483,7 @@ class MedicalFileViewModel extends ChangeNotifier { if (isPending) { familyFile.isRequestFromMySide = true; - pendingFamilyFiles.add(familyFile); + newPendingFamilyFiles.add(familyFile); } if (isActive) { activeFamilyFiles.add(familyFile); @@ -492,13 +491,14 @@ class MedicalFileViewModel extends ChangeNotifier { } for (var activeFile in activeFamilyFiles) { - if (!patientFamilyFiles.any((e) => e.responseId == activeFile.responseId)) { - patientFamilyFiles.add(activeFile); + if (!newPatientFamilyFiles.any((e) => e.responseId == activeFile.responseId)) { + newPatientFamilyFiles.add(activeFile); } } - this.pendingFamilyFiles.clear(); - this.pendingFamilyFiles.addAll(pendingFamilyFiles); + // Assign new list instances + patientFamilyFiles = newPatientFamilyFiles; + pendingFamilyFiles = newPendingFamilyFiles; } notifyListeners(); @@ -553,7 +553,9 @@ class MedicalFileViewModel extends ChangeNotifier { } } // pendingFamilyFiles.addAll(tempPendingFamilyFiles.where((element) => !pendingFamilyFiles.any((e) => e.responseId == element.responseId))); - pendingFamilyFiles.addAll(tempPendingFamilyFiles.where((element) => !pendingFamilyFiles.any((e) => e.patientId == element.patientId))); + final existingIds = pendingFamilyFiles.map((e) => e.patientId).toSet(); + final newItems = tempPendingFamilyFiles.where((element) => !existingIds.contains(element.patientId)).toList(); + pendingFamilyFiles = [...pendingFamilyFiles, ...newItems]; } notifyListeners(); } @@ -589,7 +591,7 @@ class MedicalFileViewModel extends ChangeNotifier { onUnHandledFailure: (failure) { LoaderBottomSheet.hideLoader(); _dialogService.showErrorBottomSheet( - message: failure.message!, + message: failure.message, onOkPressed: () { navigationService.pop(); }); @@ -663,7 +665,7 @@ class MedicalFileViewModel extends ChangeNotifier { navigationService.pop(); }); } else if (apiResponse.messageStatus == 1) { - patientFamilyFiles.removeWhere((element) => element.id == id); + patientFamilyFiles = patientFamilyFiles.where((element) => element.id != id).toList(); getFamilyFiles(); getAllPendingRecordsByResponseId(); LoaderBottomSheet.hideLoader(); @@ -741,11 +743,12 @@ class MedicalFileViewModel extends ChangeNotifier { // moveProfile.status = 3; // moveProfile.statusDescription = "Approved"; // patientFamilyFiles.add(moveProfile); - pendingFamilyFiles.removeWhere((element) => element.id == id); + pendingFamilyFiles = pendingFamilyFiles.where((element) => element.id != id).toList(); //TODO: Call Api Here To Load Family Members getFamilyFiles(status: 0); getAllPendingRecordsByResponseId(); LoaderBottomSheet.hideLoader(); + notifyListeners(); // onFamilyFileTabChange(0); } }, diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index bac6f778..dca75747 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -1,4 +1,3 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -20,14 +19,7 @@ import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:provider/provider.dart'; class FamilyMedicalScreen extends StatefulWidget { - final List profiles; - final Function(FamilyFileResponseModelLists) onSelect; - - const FamilyMedicalScreen({ - super.key, - required this.profiles, - required this.onSelect, - }); + const FamilyMedicalScreen({super.key}); @override State createState() => _FamilyMedicalScreenState(); @@ -43,7 +35,6 @@ class _FamilyMedicalScreenState extends State { WidgetsBinding.instance.addPostFrameCallback((_) { medicalVM?.onFamilyFileTabChange(0); medicalVM?.getAllPendingRecordsByResponseId(); - }); } @@ -55,27 +46,28 @@ class _FamilyMedicalScreenState extends State { title: LocaleKeys.familyTitle.tr(context: context), bottomChild: appState.getAuthenticatedUser()!.isParentUser! ? Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - customBorder: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), - ), - padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 20.h), - child: CustomButton( - text: LocaleKeys.addANewFamilyMember.tr(context: context), - onPressed: () { - DialogService dialogService = getIt.get(); - medicalVM!.clearAuthValues(); - dialogService.showAddFamilyFileSheet( - label: LocaleKeys.addFamilyMember.tr(context: context), - message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), - onVerificationPress: () { - medicalVM!.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); - }); - }, - icon: AppAssets.add_icon, - fontSize: 16.f, - borderRadius: 12.r, - fontWeight: FontWeight.w500)).paddingOnly(bottom: 20.h) + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + customBorder: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), + ), + padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 20.h), + child: CustomButton( + text: LocaleKeys.addANewFamilyMember.tr(context: context), + onPressed: () { + DialogService dialogService = getIt.get(); + medicalVM!.clearAuthValues(); + dialogService.showAddFamilyFileSheet( + label: LocaleKeys.addFamilyMember.tr(context: context), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), + onVerificationPress: () { + medicalVM!.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); + }); + }, + icon: AppAssets.add_icon, + fontSize: 16.f, + borderRadius: 12.r, + fontWeight: FontWeight.w500)) + .paddingOnly(bottom: 20.h) : SizedBox(), child: Column( mainAxisSize: MainAxisSize.min, @@ -96,18 +88,28 @@ class _FamilyMedicalScreenState extends State { ), ), appState.isChildLoggedIn ? SizedBox() : SizedBox(height: 25.h), - Selector(selector: (_, model) => model.getSelectedFamilyFileTabIndex, builder: (context, selectedIndex, child) => getFamilyTabs(index: selectedIndex)), + Selector patientFiles, List pendingFiles})>( + selector: (_, model) => (selectedIndex: model.getSelectedFamilyFileTabIndex, patientFiles: model.patientFamilyFiles, pendingFiles: model.pendingFamilyFiles), + shouldRebuild: (previous, next) { + return previous.selectedIndex != next.selectedIndex || previous.patientFiles.length != next.patientFiles.length || previous.pendingFiles.length != next.pendingFiles.length; + }, + builder: (context, data, child) => getFamilyTabs(index: data.selectedIndex, patientFiles: data.patientFiles, pendingFiles: data.pendingFiles), + ), SizedBox(height: 20.h), ], ).paddingSymmetrical(20, 0), ); } - Widget getFamilyTabs({required int index}) { + Widget getFamilyTabs({ + required int index, + required List patientFiles, + required List pendingFiles, + }) { switch (index) { case 0: return FamilyCards( - profiles: medicalVM!.patientFamilyFiles, + profiles: patientFiles, onSelect: (FamilyFileResponseModelLists profile) { medicalVM!.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); }, @@ -120,7 +122,7 @@ class _FamilyMedicalScreenState extends State { ); case 1: return FamilyCards( - profiles: medicalVM!.pendingFamilyFiles, + profiles: pendingFiles, isRequestDesign: medicalVM!.getSelectedFamilyFileTabIndex == 1, onSelect: (FamilyFileResponseModelLists profile) { medicalVM!.acceptRejectFileFromFamilyMembers(id: profile.id, status: 3); diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index ea305b0e..826b1741 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -308,6 +308,7 @@ class _FamilyCardsState extends State { alignment: WrapAlignment.start, children: [ (profile.patientName ?? "").toText14(isBold: false, isCenter: true, maxlines: 1, weight: FontWeight.w600), + SizedBox(width: 2.w,), (getStatusTextByRequest( FamilyFileEnum.values.firstWhere((e) => e.toInt == profile.status), profile.isRequestFromMySide ?? false)) .toText14( diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index 48f4159e..6347a389 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -101,14 +101,18 @@ class DialogServiceImp implements DialogService { shape: const RoundedRectangleBorder( borderRadius: BorderRadius.vertical(top: Radius.circular(16)), ), - builder: (_) => ExceptionBottomSheet( - message: message, - showCancel: onCancelPressed != null ? true : false, - onOkPressed: onOkPressed, - onCancelPressed: () { - if (onCancelPressed != null) { - Navigator.of(context).pop(); - } + builder: (_) => StatefulBuilder( + builder: (BuildContext context, StateSetter setState) { + return ExceptionBottomSheet( + message: message, + showCancel: onCancelPressed != null ? true : false, + onOkPressed: onOkPressed, + onCancelPressed: () { + if (onCancelPressed != null) { + Navigator.of(context).pop(); + } + }, + ); }, ), ); @@ -181,12 +185,8 @@ class DialogServiceImp implements DialogService { textColor: AppColors.primaryRedBorderColor, height: 48.h, onPressed: () { - navigationService.pushPage( - page: FamilyMedicalScreen( - profiles: profiles, - onSelect: (FamilyFileResponseModelLists p1) {}, - ), - ); + navigationService.pop(); + navigationService.pushPage(page: FamilyMedicalScreen()); }) ], ), diff --git a/lib/widgets/bottomsheet/exception_bottom_sheet.dart b/lib/widgets/bottomsheet/exception_bottom_sheet.dart index fe232648..16531bdb 100644 --- a/lib/widgets/bottomsheet/exception_bottom_sheet.dart +++ b/lib/widgets/bottomsheet/exception_bottom_sheet.dart @@ -10,7 +10,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; -class ExceptionBottomSheet extends StatelessWidget { +class ExceptionBottomSheet extends StatefulWidget { final String? title; final String message; final bool showOKButton; @@ -28,6 +28,11 @@ class ExceptionBottomSheet extends StatelessWidget { this.onCancelPressed, }); + @override + State createState() => _ExceptionBottomSheetState(); +} + +class _ExceptionBottomSheetState extends State { @override Widget build(BuildContext context) { return SafeArea( @@ -53,7 +58,7 @@ class ExceptionBottomSheet extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - (title ?? LocaleKeys.notice.tr()).toText28(), + (widget.title ?? LocaleKeys.notice.tr()).toText28(), InkWell( onTap: () { Navigator.of(context).pop(); @@ -66,18 +71,18 @@ class ExceptionBottomSheet extends StatelessWidget { ], ), SizedBox(height: 10.h), - (message).toText16(isBold: false, color: AppColors.textColor), + (widget.message).toText16(isBold: false, color: AppColors.textColor), SizedBox(height: 10.h), SizedBox(height: 24.h), - if (showOKButton && showCancel) + if (widget.showOKButton && widget.showCancel) Row( children: [ Expanded( child: CustomButton( height: 56.h, text: LocaleKeys.cancel.tr(), - onPressed: onCancelPressed != null - ? onCancelPressed! + onPressed: widget.onCancelPressed != null + ? widget.onCancelPressed! : () { Navigator.of(context).pop(); }, @@ -92,8 +97,8 @@ class ExceptionBottomSheet extends StatelessWidget { Expanded( child: CustomButton( height: 56.h, - text: showCancel ? LocaleKeys.confirm.tr() : LocaleKeys.ok.tr(), - onPressed: onOkPressed, + text: widget.showCancel ? LocaleKeys.confirm.tr() : LocaleKeys.ok.tr(), + onPressed: widget.onOkPressed, backgroundColor: AppColors.bgGreenColor, borderColor: AppColors.bgGreenColor, textColor: Colors.white, @@ -102,13 +107,13 @@ class ExceptionBottomSheet extends StatelessWidget { ), ], ), - if (showOKButton && !showCancel) + if (widget.showOKButton && !widget.showCancel) Padding( padding: EdgeInsets.only(bottom: 10.h), child: CustomButton( height: 56.h, text: LocaleKeys.ok.tr(), - onPressed: onOkPressed, + onPressed: widget.onOkPressed, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedBorderColor, textColor: Colors.white, diff --git a/lib/widgets/family_files/family_file_add_widget.dart b/lib/widgets/family_files/family_file_add_widget.dart index cd20c5f0..15751e93 100644 --- a/lib/widgets/family_files/family_file_add_widget.dart +++ b/lib/widgets/family_files/family_file_add_widget.dart @@ -14,24 +14,29 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/dropdown/country_dropdown_widget.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:provider/provider.dart'; -class FamilyFileAddWidget extends StatelessWidget { +class FamilyFileAddWidget extends StatefulWidget { final Function()? onVerificationPress; final String message; const FamilyFileAddWidget(this.onVerificationPress, this.message, {super.key}); + @override + State createState() => _FamilyFileAddWidgetState(); +} + +class _FamilyFileAddWidgetState extends State { @override Widget build(BuildContext context) { AuthenticationViewModel authVm = getIt.get(); - MedicalFileViewModel? medicalVM = getIt.get(); // TODO: implement build return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - message.toText16(color: AppColors.textColor, weight: FontWeight.w500), + widget.message.toText16(color: AppColors.textColor, weight: FontWeight.w500), SizedBox(height: 20.h), Container( decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)), @@ -59,21 +64,26 @@ class FamilyFileAddWidget extends StatelessWidget { leadingIcon: AppAssets.student_card, ).paddingOnly(top: 8.h, bottom: 8.h), Divider(height: 1.h, color: AppColors.spacerLineColor), - TextInputWidget( - labelText: LocaleKeys.phoneNumber.tr(), - hintText: "", - controller: authVm.phoneNumberController, - isEnable: true, - prefix: authVm.selectedCountrySignup.countryCode, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - autoFocus: true, - keyboardType: TextInputType.number, - fontFamily: "Poppins", - padding: EdgeInsets.symmetric(vertical: 8.h), - leadingIcon: AppAssets.smart_phone, - ).paddingOnly(top: 8.h, bottom: 4.h), + Selector( + selector: (_, model) => model.selectedCountrySignup.countryCode, + builder: (context, countryCode, child) { + return TextInputWidget( + labelText: LocaleKeys.phoneNumber.tr(), + hintText: "", + controller: authVm.phoneNumberController, + isEnable: true, + prefix: countryCode, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + autoFocus: true, + keyboardType: TextInputType.number, + fontFamily: "Poppins", + padding: EdgeInsets.symmetric(vertical: 8.h), + leadingIcon: AppAssets.smart_phone, + ).paddingOnly(top: 8.h, bottom: 4.h); + }, + ), ], ), ), @@ -91,8 +101,8 @@ class FamilyFileAddWidget extends StatelessWidget { }, )) { // authVm.addFamilyMember(otpTypeEnum: OTPTypeEnum.sms, isExcludedUser: true); - if (onVerificationPress != null) { - onVerificationPress!(); + if (widget.onVerificationPress != null) { + widget.onVerificationPress!(); } } }, From b44ae1e8387412ead9c39c7fda9d9805fbd9e9ec Mon Sep 17 00:00:00 2001 From: faizatflutter Date: Thu, 12 Feb 2026 07:01:15 +0800 Subject: [PATCH 67/67] added women support in symptoms checker module. --- assets/images/png/full_body_back_female.png | Bin 0 -> 206816 bytes ..._body_back.png => full_body_back_male.png} | Bin assets/images/png/full_body_front_female.png | Bin 0 -> 202184 bytes ...ody_front.png => full_body_front_male.png} | Bin convert_json.dart | 73 --- lib/core/app_assets.dart | 6 +- .../data/organ_mapping_data.dart | 535 +++++++++++++++++- .../symptoms_checker_view_model.dart | 9 +- .../organ_selector_screen.dart | 28 +- .../pages/height_selection_page.dart | 5 +- .../widgets/height_scale.dart | 15 +- lib/splashPage.dart | 1 + 12 files changed, 568 insertions(+), 104 deletions(-) create mode 100644 assets/images/png/full_body_back_female.png rename assets/images/png/{full_body_back.png => full_body_back_male.png} (100%) create mode 100644 assets/images/png/full_body_front_female.png rename assets/images/png/{full_body_front.png => full_body_front_male.png} (100%) delete mode 100644 convert_json.dart diff --git a/assets/images/png/full_body_back_female.png b/assets/images/png/full_body_back_female.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3aa74de33d2c75f198a19731891e17fd95ddac GIT binary patch literal 206816 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/images/png/full_body_back.png b/assets/images/png/full_body_back_male.png similarity index 100% rename from assets/images/png/full_body_back.png rename to assets/images/png/full_body_back_male.png diff --git a/assets/images/png/full_body_front_female.png b/assets/images/png/full_body_front_female.png new file mode 100644 index 0000000000000000000000000000000000000000..c89608b05ff0b17f2118573d3e28ff740322fbb8 GIT binary patch literal 202184 zcmd2?Raab1u#J!e4^D7*3+@oy-Q67qcMa|YcXx*Y28ZA>*x*iJaCeu>ch~(9_u;HQ zeO5o5)xE2B)voFYMR^G%cwG1oA3h*SNs20e`0x?s!-r3GuwUQ5D83S#zYlN@l3LCm zJ|Lj~_k8@2k@e%lXG||CQ6W{2tmBt&Np=se>)&2qslxE+7NXW_ojK7^B~gmVl`*8g zL;|Tt(Cn1e&liE!?E1)1oH)LDdN3Heg9FBmF%5wOQpC_G6&lVonnsZRB1QjIh!-PX znyRwXcCqdJYBB%1;q^iCcX>OcR=>O58&k2i0x;LPm(wu0zVUi{R}Qk%8e~bSkLE<5 z&-9x8@6C)JefYnz84U~re4jz(hFE^no8W*wX6j{$!J30C>n{Jdgp=U^^^(nVEa-BR zP4~eNb+Ki}SLP-sJ?!eH2g?s06e@iG~!3d3c_>67#*iGcLhM(Ny6CCHMieR{(XMb36r9MglN?NG}+38dv z&X1iz8e39CDs>`R27nl#6XPW;Q1MioxXqW*0&94DuvmUMUW~~K7f38hY$nhnYYCp- z-OBA&eqi*x{wedF-V`zOJoDs|3Lh;+GsthHcG(%eVdF9uH~cz?I<7@&IC z_T0ZEDK5-~X>R=fVHaQC?@%pgMuF_wvmOyH#|bLkX}5jr?1sn@%kfpgiJtLYxyolESe#VkvUzJW;f1_z)WBlt(5Pr(@?et6#!0N?t`k zCT|+kbB%Tna8upk)~}Ry-Y