From 494d9ba8d737cf5a3e977d2d4355db7b64c17b59 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 12 Oct 2026 15:36:45 +0300 Subject: [PATCH] get site by user id replace in asset filters --- .../providers/site_request_provider.dart | 20 +++++++++++- .../device_transfer/device_filter_screen.dart | 32 +++++++++++-------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/lib/modules/site_request_module/providers/site_request_provider.dart b/lib/modules/site_request_module/providers/site_request_provider.dart index 0b4191ab..375c4d86 100644 --- a/lib/modules/site_request_module/providers/site_request_provider.dart +++ b/lib/modules/site_request_module/providers/site_request_provider.dart @@ -107,6 +107,24 @@ class SiteRequestProvider extends ChangeNotifier { ); } + /// Fetches user's current sites for Change/Remove Site operations + Future> getSitesByUserId(String userId) async { + List usersSite = []; + try { + Response response = await ApiManager.instance.post(URLs.getUserSites(userId), body: {},showToast: false); + if (response.statusCode >= 200 && response.statusCode < 300) { + List categoriesListJson = json.decode(response.body)["data"]; + usersSite = categoriesListJson + .map((item) => SiteRequestSiteModel( + id: item['siteId']?.toString() ?? '', + name: item['siteName'] ?? '', + )) + .toList(); + } + } catch (ex) {} + return usersSite; + } + /// Fetches user's current sites for Change/Remove Site operations Future fetchUserCurrentSites(String userId) async { if (_loading) return -2; @@ -125,6 +143,7 @@ class SiteRequestProvider extends ChangeNotifier { errorMessage: 'Failed to fetch user sites', ); } + Future fetchUserFilteredSites(String userId) async { if (_loading) return -2; return _performApiCall( @@ -141,7 +160,6 @@ class SiteRequestProvider extends ChangeNotifier { }, errorMessage: 'Failed to fetch user sites', ); - } /// Submits a site request to the server diff --git a/lib/modules/tm_module/device_transfer/device_filter_screen.dart b/lib/modules/tm_module/device_transfer/device_filter_screen.dart index 19fb163a..3458f9cb 100644 --- a/lib/modules/tm_module/device_transfer/device_filter_screen.dart +++ b/lib/modules/tm_module/device_transfer/device_filter_screen.dart @@ -1,23 +1,21 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/api_routes/api_manager.dart'; -import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; +import 'package:test_sa/modules/site_request_module/models/dropdown_models.dart'; +import 'package:test_sa/modules/site_request_module/providers/site_request_provider.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/multiple_item_drop_down_menu.dart'; import 'package:test_sa/providers/department_provider.dart'; -import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import 'package:test_sa/views/widgets/equipment/asset_status_buttons.dart'; - import '../../../models/device/asset_search.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/default_app_bar.dart'; @@ -35,11 +33,13 @@ class DeviceFilterScreen extends StatefulWidget { class _DeviceFilterScreenState extends State { late DeviceSearch filter; Lookup? _commissioningStatus; - List _selectedSites = []; + List _selectedSites = []; List _selectedDepartments = []; String? startDate, endDate; bool loading = false; + List userSites = []; + @override void initState() { filter = widget.data ?? DeviceSearch(); @@ -49,10 +49,14 @@ class _DeviceFilterScreenState extends State { startDate = filter.supplyDateFrom; endDate = filter.supplyDateTo; _commissioningStatus = filter.assetStatus; + final departmentProvider = Provider.of(context, listen: false); - final siteProvider = Provider.of(context, listen: false); if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getData(); - if (siteProvider.items.isEmpty ?? true) await siteProvider.getData(); + if (userSites.isEmpty) { + Utils.showLoading(context); + userSites = await Provider.of(context, listen: false).getSitesByUserId(context.userProvider.user?.userID ?? ""); + Utils.hideLoading(context); + } // Initialize selected departments from filter if (filter.departments != null && filter.departments!.isNotEmpty) { @@ -72,11 +76,11 @@ class _DeviceFilterScreenState extends State { if (filter.sites != null && filter.sites!.isNotEmpty) { _selectedSites = []; for (var siteName in filter.sites!) { - final match = siteProvider.items.firstWhere( + final match = userSites.firstWhere( (site) => site.name == siteName, - orElse: () => Site(), + orElse: () => SiteRequestSiteModel(id: '', name: ''), ); - if (match.id != null) { + if (match.identifier != null) { _selectedSites.add(match); } } @@ -148,12 +152,12 @@ class _DeviceFilterScreenState extends State { }, ), 12.height, - MultipleItemDropDownMenu( + MultipleItemDropDownMenu( context: context, title: context.translation.bySite, initialValue: _selectedSites, showAsBottomSheet: true, - requestById: context.userProvider.user?.clientId, + staticData: userSites, // backgroundColor: AppColor.fieldBgColor(context), backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white, showShadow: true,