get site by user id replace in asset filters

main_production
Sikander Saleem 1 week ago
parent 2ab2abd693
commit 494d9ba8d7

@ -107,6 +107,24 @@ class SiteRequestProvider extends ChangeNotifier {
); );
} }
/// Fetches user's current sites for Change/Remove Site operations
Future<List<SiteRequestSiteModel>> getSitesByUserId(String userId) async {
List<SiteRequestSiteModel> 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 /// Fetches user's current sites for Change/Remove Site operations
Future<int> fetchUserCurrentSites(String userId) async { Future<int> fetchUserCurrentSites(String userId) async {
if (_loading) return -2; if (_loading) return -2;
@ -125,6 +143,7 @@ class SiteRequestProvider extends ChangeNotifier {
errorMessage: 'Failed to fetch user sites', errorMessage: 'Failed to fetch user sites',
); );
} }
Future<int> fetchUserFilteredSites(String userId) async { Future<int> fetchUserFilteredSites(String userId) async {
if (_loading) return -2; if (_loading) return -2;
return _performApiCall( return _performApiCall(
@ -141,7 +160,6 @@ class SiteRequestProvider extends ChangeNotifier {
}, },
errorMessage: 'Failed to fetch user sites', errorMessage: 'Failed to fetch user sites',
); );
} }
/// Submits a site request to the server /// Submits a site request to the server

@ -1,23 +1,21 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.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/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_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/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/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/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/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/multiple_item_drop_down_menu.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/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/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/equipment/asset_status_buttons.dart';
import '../../../models/device/asset_search.dart'; import '../../../models/device/asset_search.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.dart'; import '../../../new_views/common_widgets/default_app_bar.dart';
@ -35,11 +33,13 @@ class DeviceFilterScreen extends StatefulWidget {
class _DeviceFilterScreenState extends State<DeviceFilterScreen> { class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
late DeviceSearch filter; late DeviceSearch filter;
Lookup? _commissioningStatus; Lookup? _commissioningStatus;
List<Site> _selectedSites = []; List<SiteRequestSiteModel> _selectedSites = [];
List<Lookup> _selectedDepartments = []; List<Lookup> _selectedDepartments = [];
String? startDate, endDate; String? startDate, endDate;
bool loading = false; bool loading = false;
List<SiteRequestSiteModel> userSites = [];
@override @override
void initState() { void initState() {
filter = widget.data ?? DeviceSearch(); filter = widget.data ?? DeviceSearch();
@ -49,10 +49,14 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
startDate = filter.supplyDateFrom; startDate = filter.supplyDateFrom;
endDate = filter.supplyDateTo; endDate = filter.supplyDateTo;
_commissioningStatus = filter.assetStatus; _commissioningStatus = filter.assetStatus;
final departmentProvider = Provider.of<DepartmentProvider>(context, listen: false); final departmentProvider = Provider.of<DepartmentProvider>(context, listen: false);
final siteProvider = Provider.of<SiteProvider>(context, listen: false);
if (departmentProvider.items.isEmpty ?? true) await departmentProvider.getData(); 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<SiteRequestProvider>(context, listen: false).getSitesByUserId(context.userProvider.user?.userID ?? "");
Utils.hideLoading(context);
}
// Initialize selected departments from filter // Initialize selected departments from filter
if (filter.departments != null && filter.departments!.isNotEmpty) { if (filter.departments != null && filter.departments!.isNotEmpty) {
@ -72,11 +76,11 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
if (filter.sites != null && filter.sites!.isNotEmpty) { if (filter.sites != null && filter.sites!.isNotEmpty) {
_selectedSites = []; _selectedSites = [];
for (var siteName in filter.sites!) { for (var siteName in filter.sites!) {
final match = siteProvider.items.firstWhere( final match = userSites.firstWhere(
(site) => site.name == siteName, (site) => site.name == siteName,
orElse: () => Site(), orElse: () => SiteRequestSiteModel(id: '', name: ''),
); );
if (match.id != null) { if (match.identifier != null) {
_selectedSites.add(match); _selectedSites.add(match);
} }
} }
@ -148,12 +152,12 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
}, },
), ),
12.height, 12.height,
MultipleItemDropDownMenu<Site, SameOrgSiteProvider>( MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.bySite, title: context.translation.bySite,
initialValue: _selectedSites, initialValue: _selectedSites,
showAsBottomSheet: true, showAsBottomSheet: true,
requestById: context.userProvider.user?.clientId, staticData: userSites,
// backgroundColor: AppColor.fieldBgColor(context), // backgroundColor: AppColor.fieldBgColor(context),
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white, backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
showShadow: true, showShadow: true,

Loading…
Cancel
Save