import 'dart:async'; import 'package:rasadyar_core/core.dart'; import 'package:rasadyar_inspection/data/model/response/poultry_location/poultry_location_model.dart'; import 'package:rasadyar_inspection/data/repositories/inspection/inspection_repository_imp.dart'; import 'package:rasadyar_inspection/injection/inspection_di.dart'; import 'package:rasadyar_inspection/presentation/widget/base_page/logic.dart' hide BaseLogic; import 'widget/map/logic.dart'; class InspectionMapLogic extends GetxController { final BaseLogic baseLogic = Get.find(); final MapLogic mapLogic = Get.find(); InspectionRepositoryImp inspectionRepository = diInspection.get(); Rx currentLocation = LatLng(34.798315281272544, 48.51479142983491).obs; Rx>> allPoultryLocation = Resource>.initial().obs; Rx>> searchedPoultryLocation = Resource>.initial().obs; RxList markers = [].obs; RxList markers2 = [].obs; RxInt filterIndex = 0.obs; RxInt showIndex = 0.obs; @override void onInit() { super.onInit(); fetchAllPoultryLocations(); debounce(baseLogic.searchValue, (callback) { if (callback != null && callback.trim().isNotEmpty && searchedPoultryLocation.value.status != ResourceStatus.loading) { searchPoultryLocations(); } }, time: Duration(seconds: 2)); } Future fetchAllPoultryLocations() async { allPoultryLocation.value = Resource>.loading(); await safeCall( call: () => inspectionRepository.getNearbyLocation(), onSuccess: (result) async{ if (result != null) { allPoultryLocation.value = Resource>.success(result); mapLogic.allLocations.value = Resource>.success(result); } else { allPoultryLocation.value = Resource>.error( 'No locations found', ); } }, onError: (error, stackTrace) { allPoultryLocation.value = Resource>.error(error.toString()); }, ); } Future searchPoultryLocations() async { searchedPoultryLocation.value = Resource>.loading(); await safeCall( call: () => inspectionRepository.getNearbyLocation(value: baseLogic.searchValue.value), onSuccess: (result) { if (result != null || result!.isNotEmpty) { searchedPoultryLocation.value = Resource>.success(result); mapLogic.hasFilterOrSearch.value = true; mapLogic.filteredLocations.value = Resource>.success(result); } else { searchedPoultryLocation.value = Resource>.empty(); mapLogic.filteredLocations.value = Resource>.empty(); } }, onError: (error, stackTrace) { searchedPoultryLocation.value = Resource>.error( error.toString(), ); }, ); } }