|
|
|
|
@ -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,
|
|
|
|
|
|