|
|
|
|
@ -175,11 +175,12 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
|
_siteReplacements.clear();
|
|
|
|
|
_loadedDepartmentSiteIds.clear(); // Reset loaded department site IDs
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
final userId = _provider.getCurrentUserUserId(_userProvider);
|
|
|
|
|
// Fetch user's current sites if Change Site or Remove Site is selected
|
|
|
|
|
if ((_isChangeSiteRequest() || _isRemoveSiteRequest()) && value != null) {
|
|
|
|
|
final userId = _provider.getCurrentUserUserId(_userProvider);
|
|
|
|
|
await _provider.fetchUserCurrentSites(userId);
|
|
|
|
|
}else {
|
|
|
|
|
await _provider.fetchUserFilteredSites(userId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Fetch all sites if Change Site is selected (needed for new site dropdown)
|
|
|
|
|
@ -318,6 +319,40 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget _buildSiteMultiSelect() {
|
|
|
|
|
return MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
title: context.translation.site,
|
|
|
|
|
initialValue: _selectedSites
|
|
|
|
|
.map((s) => SiteRequestSiteModel(
|
|
|
|
|
id: s.identifier ?? '',
|
|
|
|
|
name: s.name ?? '',
|
|
|
|
|
))
|
|
|
|
|
.toList(),
|
|
|
|
|
staticData: _provider.userFilterSites,
|
|
|
|
|
showAsFullScreenDialog: true,
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
|
showShadow: true,
|
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
|
showCancel: true,
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
if (value != null) {
|
|
|
|
|
setState(() {
|
|
|
|
|
_selectedSites = value.map((s) {
|
|
|
|
|
final site = Site(
|
|
|
|
|
id: int.tryParse(s.identifier ?? '0'),
|
|
|
|
|
custName: s.name,
|
|
|
|
|
);
|
|
|
|
|
return site;
|
|
|
|
|
}).toList();
|
|
|
|
|
final departmentProvider = Provider.of<DepartmentBySitesProvider>(context, listen: false);
|
|
|
|
|
final siteIds = value.map((site) => int.tryParse(site.identifier ?? '0') ?? 0).toList();
|
|
|
|
|
departmentProvider.setSiteIds(siteIds);
|
|
|
|
|
departmentProvider.getData();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
return MultipleItemDropDownMenu<Site, SiteProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
title: context.translation.site,
|
|
|
|
|
|