From 78204474124b760dcae7be2811215b75e1f90522 Mon Sep 17 00:00:00 2001 From: taha Date: Mon, 26 Oct 2026 09:25:51 +0300 Subject: [PATCH 1/3] chore: add Package.resolved to .gitignore for Swift package management --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 79c113f9..8c149701 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release +/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved From 0697a76b54a3d7f3861263519b29c4d29d86abb6 Mon Sep 17 00:00:00 2001 From: taha Date: Mon, 26 Oct 2026 11:12:36 +0300 Subject: [PATCH 2/3] feat: enhance doctor appointment filtering and sorting by adding English region names --- lib/core/utils/doctor_response_mapper.dart | 41 +++++++++++++++++-- .../resp_models/doctor_list_api_response.dart | 5 ++- pubspec.yaml | 8 ++-- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/lib/core/utils/doctor_response_mapper.dart b/lib/core/utils/doctor_response_mapper.dart index 05ed2fdc..9675cdee 100644 --- a/lib/core/utils/doctor_response_mapper.dart +++ b/lib/core/utils/doctor_response_mapper.dart @@ -12,6 +12,7 @@ class DoctorMapper{ for (var element in doctorList) { String? region = element.getRegionName(isArabic); + String? regionEng = element.getRegionName(false); if (region == null) continue; var regionDoctorList = regionList.registeredDoctorMap?.putIfAbsent(region, () => PatientDoctorAppointmentListByRegion()); @@ -33,6 +34,8 @@ class DoctorMapper{ var newAppointment = PatientDoctorAppointmentList( filterName: element.getProjectCompleteNameWithLocale(isArabic: isArabic), + filterNameEng: + element.getProjectCompleteNameWithLocale(isArabic: false), distanceInKMs: element.projectDistanceInKiloMeters.toString(), projectTopName: element.projectTopName, projectBottomName: element.projectBottomName, @@ -82,6 +85,7 @@ class DoctorMapper{ regionDoctorList?.hmgSize = regionDoctorList.hmgDoctorList?.length ?? 0; regionList.registeredDoctorMap?[region] = regionDoctorList; + regionList.regionNameMap?[regionEng??""] = region; } return regionList; @@ -110,10 +114,19 @@ class DoctorMapper{ } - List? keys = unsorted.registeredDoctorMap?.keys.toList(); - keys?.sort(); + final keys = unsorted.registeredDoctorMap?.keys.toList() ?? []; + if (keys.isEmpty) return unsorted; + + keys.sort((a, b) { + final priorityA = _getRegionSortPriority(a); + final priorityB = _getRegionSortPriority(b); + if (priorityA != priorityB) return priorityA.compareTo(priorityB); + + final aValue = a.toLowerCase(); + final bValue = b.toLowerCase(); + return aValue.compareTo(bValue); + }); - if (keys == null) return unsorted; Map sortedMap = {}; for (var key in keys) { sortedMap[key] = unsorted.registeredDoctorMap![key]!; @@ -122,6 +135,25 @@ class DoctorMapper{ return unsorted; } + static int _getRegionSortPriority(String regionKey) { + final key = regionKey.trim().toLowerCase(); + if (key.isEmpty) return 999; + + if (key.startsWith('c') || key.contains('وسط') || key.contains('الوسط') || key.contains('المنطقة الوسطى')) { + return 0; + } + if (key.startsWith('w') || key.contains('غرب') || key.contains('الغربي') || key.contains('الغربية')) { + return 1; + } + if (key.startsWith('e') || key.contains('شرق') || key.contains('الشرقي') || key.contains('الشرقية')) { + return 2; + } + if (key.startsWith("u") || key.contains('الإمارات') || key.contains('امارات')) { + return 3; + } + return 999; + } + static Future getMappedHospitals( List hospitalList, { bool isArabic = false, double lat = 0.0,double lng = 0.0 @@ -129,6 +161,7 @@ class DoctorMapper{ final regionList = RegionList(); for (final hospital in hospitalList) { final region = hospital.getRegionName(isArabic); + final regionEng = hospital.getRegionName(false); if (region == null) continue; final regionData = regionList.registeredDoctorMap?.putIfAbsent( @@ -152,6 +185,7 @@ class DoctorMapper{ } else { final newEntry = PatientDoctorAppointmentList( filterName: hospital.name, + filterNameEng: hospital.getName(false), distanceInKMs: hospital.distanceInKilometers?.toString(), projectTopName: hospital.name, projectBottomName: hospital.name, @@ -196,6 +230,7 @@ class DoctorMapper{ regionData?.hmcSize = regionData.hmcDoctorList?.length ?? 0; regionData?.hmgSize = regionData.hmgDoctorList?.length ?? 0; regionList.registeredDoctorMap?[region] = regionData; + regionList.regionNameMap?[regionEng??""] = region; } return regionList; diff --git a/lib/features/my_appointments/models/resp_models/doctor_list_api_response.dart b/lib/features/my_appointments/models/resp_models/doctor_list_api_response.dart index c2b9add7..87d4d8ca 100644 --- a/lib/features/my_appointments/models/resp_models/doctor_list_api_response.dart +++ b/lib/features/my_appointments/models/resp_models/doctor_list_api_response.dart @@ -1,4 +1,3 @@ - import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart' show HospitalsModel; @@ -236,6 +235,7 @@ class DoctorList { class PatientDoctorAppointmentList { String? filterName = ""; + String? filterNameEng = ""; String? distanceInKMs = ""; List? patientDoctorAppointmentList = []; String? projectTopName = ""; @@ -245,12 +245,14 @@ class PatientDoctorAppointmentList { PatientDoctorAppointmentList( {this.filterName, + this.filterNameEng, this.distanceInKMs, this.projectTopName, this.projectBottomName, DoctorsListResponseModel? patientDoctorAppointment, HospitalsModel? model, this.isHMC = false}) { + filterNameEng ??= filterName; if (model != null) { hospitalList.add(model); } @@ -272,4 +274,5 @@ class PatientDoctorAppointmentListByRegion { class RegionList { Map? registeredDoctorMap = {}; + Map? regionNameMap = {}; } \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 144fa923..602108cf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,7 +94,7 @@ dependencies: image_picker_android: ^0.8.13+16 image_picker_platform_interface: ^2.10.0 - location: ^8.0.1 + location: ^10.0.2 gms_check: ^1.0.4 huawei_location: ^6.14.2+301 huawei_health: ^6.15.0+300 @@ -108,9 +108,9 @@ dependencies: flutter_paytabs_bridge: ^2.7.14 clarity_flutter: ^1.10.0 -# flutter_amazonpaymentservices: ^0.0.13 - flutter_amazonpaymentservices: - path: ./package/flutter_amazonpaymentservices + flutter_amazonpaymentservices: ^0.0.13 +# flutter_amazonpaymentservices: +# path: ./package/flutter_amazonpaymentservices screen_brightness: ^1.0.1 flutter_screenshot_blocker: ^1.0.4 cloudflare_turnstile: ^3.7.2 From 23918738ae021a7d25fe30f2bb7030e2d95a414a Mon Sep 17 00:00:00 2001 From: taha Date: Mon, 26 Oct 2026 11:15:14 +0300 Subject: [PATCH 3/3] REVERETED THE YAMAL TO LOCAL PAYMENT SERVICE --- pubspec.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 602108cf..35a5c50f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -108,9 +108,9 @@ dependencies: flutter_paytabs_bridge: ^2.7.14 clarity_flutter: ^1.10.0 - flutter_amazonpaymentservices: ^0.0.13 -# flutter_amazonpaymentservices: -# path: ./package/flutter_amazonpaymentservices +# flutter_amazonpaymentservices: ^0.0.13 + flutter_amazonpaymentservices: + path: ./package/flutter_amazonpaymentservices screen_brightness: ^1.0.1 flutter_screenshot_blocker: ^1.0.4 cloudflare_turnstile: ^3.7.2