From 0221cb12501ffb25fed009bdf7fce66d6ade07dc Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Mon, 17 Feb 2025 16:25:42 +0300 Subject: [PATCH] WD: search by region added for the doctors to be mapped. --- .../components/SearchByClinic.dart | 9 +++++++-- .../components/SearchByDoctor.dart | 16 ++++++++++++++-- .../components/search_by_hospital_name.dart | 14 +++++++++++++- lib/uitl/location_util.dart | 11 ++++++----- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 1d3373f0..1de85bf3 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -659,8 +659,13 @@ class _SearchByClinicState extends State { regionHospitalList = await DoctorMapper.getMappedDoctor(doctorsList, isArabic: isArabic); - regionHospitalList = - await DoctorMapper.sortList(true, regionHospitalList); + var lat = await sharedPref.getDouble(USER_LAT); + + var lng = await sharedPref.getDouble(USER_LONG); + var isLocationEnabled = + (lat != null && lat != 0.0) && (lng != null && lng != 0.0); + regionHospitalList = await DoctorMapper.sortList( + isLocationEnabled, regionHospitalList); setState(() {}); } else { diff --git a/lib/pages/BookAppointment/components/SearchByDoctor.dart b/lib/pages/BookAppointment/components/SearchByDoctor.dart index afca5606..3a908c25 100644 --- a/lib/pages/BookAppointment/components/SearchByDoctor.dart +++ b/lib/pages/BookAppointment/components/SearchByDoctor.dart @@ -1,3 +1,4 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResultsByRegion.dart'; @@ -5,6 +6,7 @@ import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsLis import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:diplomaticquarterapp/uitl/location_util.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/custom_text_button.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; @@ -12,6 +14,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../services/appointment_services/doctor_response_mapper.dart'; +import '../../../services/authentication/auth_provider.dart'; class SearchByDoctor extends StatefulWidget { @override @@ -21,10 +24,14 @@ class SearchByDoctor extends StatefulWidget { class _SearchByDoctorState extends State { TextEditingController doctorNameController = new TextEditingController(); late bool _isButtonDisabled; + late LocationUtils locationUtils; @override void initState() { super.initState(); + locationUtils = + new LocationUtils(isShowConfirmDialog: true, context: context); + locationUtils.getCurrentLocation(); _isButtonDisabled = true; } @@ -122,8 +129,13 @@ class _SearchByDoctorState extends State { regionHospitalList = await DoctorMapper.getMappedDoctor(doctorsList, isArabic: isArabic); - regionHospitalList = - await DoctorMapper.sortList(true, regionHospitalList); + var lat = await sharedPref.getDouble(USER_LAT); + + var lng = await sharedPref.getDouble(USER_LONG); + var isLocationEnabled = + (lat != null && lat != 0.0) && (lng != null && lng != 0.0); + regionHospitalList = await DoctorMapper.sortList( + isLocationEnabled, regionHospitalList); setState(() {}); // doctorsList.forEach((element) { diff --git a/lib/pages/BookAppointment/components/search_by_hospital_name.dart b/lib/pages/BookAppointment/components/search_by_hospital_name.dart index 32293a19..704ef5bb 100644 --- a/lib/pages/BookAppointment/components/search_by_hospital_name.dart +++ b/lib/pages/BookAppointment/components/search_by_hospital_name.dart @@ -1,9 +1,11 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResultsByRegion.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/components/LaserClinic.dart'; import 'package:diplomaticquarterapp/services/appointment_services/doctor_response_mapper.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; +import 'package:diplomaticquarterapp/uitl/location_util.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -15,6 +17,7 @@ import '../../../models/Appointments/DoctorListResponse.dart'; import '../../../models/Appointments/SearchInfoModel.dart'; import '../../../models/Clinics/ClinicListResponse.dart'; import '../../../services/appointment_services/GetDoctorsList.dart'; +import '../../../services/authentication/auth_provider.dart'; import '../../../services/clinic_services/get_clinic_service.dart'; import '../../../uitl/app_toast.dart'; import '../../../uitl/gif_loader_dialog_utils.dart'; @@ -46,9 +49,13 @@ class _SearchByHospitalState extends State { String? dropdownValue; String dropdownTitle = ""; + late LocationUtils locationUtils; @override void initState() { + locationUtils = + new LocationUtils(isShowConfirmDialog: true, context: context); + locationUtils.getCurrentLocation(); WidgetsBinding.instance.addPostFrameCallback((_) => getProjectsList()); } @@ -406,8 +413,13 @@ class _SearchByHospitalState extends State { regionHospitalList = await DoctorMapper.getMappedDoctor(doctorsList, isArabic: isArabic); + var lat = await sharedPref.getDouble(USER_LAT); + + var lng = await sharedPref.getDouble(USER_LONG); + var isLocationEnabled = (lat != null && lat != 0.0) && + (lng != null && lng != 0.0); regionHospitalList = - await DoctorMapper.sortList(true, regionHospitalList); + await DoctorMapper.sortList(isLocationEnabled, regionHospitalList); setState(() {}); } else { diff --git a/lib/uitl/location_util.dart b/lib/uitl/location_util.dart index e0ecc8e3..b19ff7a1 100644 --- a/lib/uitl/location_util.dart +++ b/lib/uitl/location_util.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; -import 'package:diplomaticquarterapp/services/permission/permission_service.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; @@ -203,6 +202,7 @@ class LocationUtils { } showErrorLocationDialog(bool isPermissionError, {Function()? failureCallBack}) { + setLocation(null); ConfirmDialog dialog = new ConfirmDialog( context: context, confirmMessage: TranslationBase.of(context).locationDialogMessage, @@ -227,11 +227,12 @@ class LocationUtils { return dialog.showAlertDialog(context); } - void setLocation(Position position) { - this.sharedPref.setDouble(USER_LAT, position != null ? position.latitude : 0.0); - this.sharedPref.setDouble(USER_LONG, position != null ? position.longitude : 0.0); + void setLocation(Position? position) { + this.sharedPref.setDouble(USER_LAT, position?.latitude ?? 0.0); + this.sharedPref.setDouble(USER_LONG, position?.longitude ?? 0.0); ProjectViewModel projectViewModel = Provider.of(context, listen: false); - projectViewModel.setLatitudeLongitude(position.latitude, position.longitude); + projectViewModel.setLatitudeLongitude( + position?.latitude ?? 0.0, position?.longitude ?? 0.0); } void setZeroLocation() {