get site by user id replace in asset filters

main_production
Sikander Saleem 23 hours 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
Future<int> fetchUserCurrentSites(String userId) async {
if (_loading) return -2;
@ -125,6 +143,7 @@ class SiteRequestProvider extends ChangeNotifier {
errorMessage: 'Failed to fetch user sites',
);
}
Future<int> 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

@ -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<DeviceFilterScreen> {
late DeviceSearch filter;
Lookup? _commissioningStatus;
List<Site> _selectedSites = [];
List<SiteRequestSiteModel> _selectedSites = [];
List<Lookup> _selectedDepartments = [];
String? startDate, endDate;
bool loading = false;
List<SiteRequestSiteModel> userSites = [];
@override
void initState() {
filter = widget.data ?? DeviceSearch();
@ -49,10 +49,14 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
startDate = filter.supplyDateFrom;
endDate = filter.supplyDateTo;
_commissioningStatus = filter.assetStatus;
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 (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
if (filter.departments != null && filter.departments!.isNotEmpty) {
@ -72,11 +76,11 @@ class _DeviceFilterScreenState extends State<DeviceFilterScreen> {
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<DeviceFilterScreen> {
},
),
12.height,
MultipleItemDropDownMenu<Site, SameOrgSiteProvider>(
MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
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,

Loading…
Cancel
Save