|
|
|
@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
|
|
|
|
import 'package:test_sa/controllers/providers/api/user_provider.dart';
|
|
|
|
import 'package:test_sa/controllers/providers/api/user_provider.dart';
|
|
|
|
import 'package:test_sa/extensions/int_extensions.dart';
|
|
|
|
import 'package:test_sa/extensions/int_extensions.dart';
|
|
|
|
import 'package:test_sa/extensions/context_extension.dart';
|
|
|
|
import 'package:test_sa/extensions/context_extension.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/models/new_models/site.dart';
|
|
|
|
import 'package:test_sa/models/new_models/site.dart';
|
|
|
|
import 'package:test_sa/models/new_models/department.dart';
|
|
|
|
import 'package:test_sa/models/new_models/department.dart';
|
|
|
|
@ -42,7 +43,7 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
|
|
|
|
|
|
|
|
RequestTypeModel? _selectedRequestType;
|
|
|
|
RequestTypeModel? _selectedRequestType;
|
|
|
|
List<Site> _selectedSites = [];
|
|
|
|
List<Site> _selectedSites = [];
|
|
|
|
List<Site> _selectedOldSites = []; // For Change Site - old sites
|
|
|
|
List<Site> _selectedOldSites = []; // For Change Site - old sites
|
|
|
|
List<Department> _selectedDepartments = [];
|
|
|
|
List<Department> _selectedDepartments = [];
|
|
|
|
|
|
|
|
|
|
|
|
// Map to track replacements: oldSiteId -> {newSite, departments}
|
|
|
|
// Map to track replacements: oldSiteId -> {newSite, departments}
|
|
|
|
@ -95,73 +96,63 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
_provider = Provider.of<SiteRequestProvider>(context);
|
|
|
|
_provider = Provider.of<SiteRequestProvider>(context);
|
|
|
|
_userProvider = Provider.of<UserProvider>(context);
|
|
|
|
_userProvider = Provider.of<UserProvider>(context);
|
|
|
|
|
|
|
|
|
|
|
|
return Scaffold(
|
|
|
|
return Scaffold(
|
|
|
|
backgroundColor: AppColor.scaffoldBackground(context),
|
|
|
|
backgroundColor: AppColor.scaffoldBackground(context),
|
|
|
|
appBar: const DefaultAppBar(title: "Site Request"),
|
|
|
|
appBar: const DefaultAppBar(title: "Site Request"),
|
|
|
|
body: _isLoadingData ?const ALoading().center:Column(
|
|
|
|
body: _isLoadingData
|
|
|
|
children: [
|
|
|
|
? const ALoading().center
|
|
|
|
Expanded(
|
|
|
|
: Column(
|
|
|
|
child: Form(
|
|
|
|
children: [
|
|
|
|
key: _formKey,
|
|
|
|
Expanded(
|
|
|
|
child: SingleChildScrollView(
|
|
|
|
child: Form(
|
|
|
|
padding: EdgeInsets.all(16.toScreenWidth),
|
|
|
|
key: _formKey,
|
|
|
|
child: Column(
|
|
|
|
child: SingleChildScrollView(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
padding: EdgeInsets.all(16.toScreenWidth),
|
|
|
|
children: [
|
|
|
|
child: Column(
|
|
|
|
_buildUserInfoCard(),
|
|
|
|
spacing: 12,
|
|
|
|
16.height,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
_buildRequestTypeDropdown(),
|
|
|
|
children: [
|
|
|
|
16.height,
|
|
|
|
_buildUserInfoCard(),
|
|
|
|
if (_selectedRequestType != null) ...[
|
|
|
|
_buildRequestTypeDropdown(),
|
|
|
|
if (_isChangeSiteRequest()) ...[
|
|
|
|
if (_selectedRequestType != null) ...[
|
|
|
|
_buildOldSiteDropdown(),
|
|
|
|
if (_isChangeSiteRequest()) ...[
|
|
|
|
16.height,
|
|
|
|
_buildOldSiteDropdown(),
|
|
|
|
// Show replacement containers for each old site
|
|
|
|
// Show replacement containers for each old site
|
|
|
|
if (_selectedOldSites.isNotEmpty) ...[
|
|
|
|
if (_selectedOldSites.isNotEmpty) ...[
|
|
|
|
Text(
|
|
|
|
InfoHeader16Widget("Site Replacements"),
|
|
|
|
"Site Replacements",
|
|
|
|
..._buildSiteReplacementContainers(),
|
|
|
|
style: TextStyle(
|
|
|
|
],
|
|
|
|
fontSize: 16,
|
|
|
|
] else if (_isRemoveSiteRequest()) ...[
|
|
|
|
fontWeight: FontWeight.w600,
|
|
|
|
_buildRemoveSiteDropdown(),
|
|
|
|
color: AppColor.textStyleColor(context),
|
|
|
|
] else ...[
|
|
|
|
),
|
|
|
|
_buildSiteMultiSelect(),
|
|
|
|
),
|
|
|
|
_buildDepartmentMultiSelect(),
|
|
|
|
8.height,
|
|
|
|
],
|
|
|
|
..._buildSiteReplacementContainers(),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
],
|
|
|
|
] else if (_isRemoveSiteRequest()) ...[
|
|
|
|
),
|
|
|
|
_buildRemoveSiteDropdown(),
|
|
|
|
),
|
|
|
|
] else ...[
|
|
|
|
),
|
|
|
|
_buildSiteMultiSelect(),
|
|
|
|
|
|
|
|
16.height,
|
|
|
|
|
|
|
|
_buildDepartmentMultiSelect(),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (_selectedRequestType != null)
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.all(16.toScreenWidth),
|
|
|
|
if (_selectedRequestType != null)
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
Container(
|
|
|
|
color: AppColor.background(context),
|
|
|
|
padding: EdgeInsets.all(16.toScreenWidth),
|
|
|
|
boxShadow: [
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
BoxShadow(
|
|
|
|
color: AppColor.background(context),
|
|
|
|
color: Colors.black.withValues(alpha: 0.05),
|
|
|
|
boxShadow: [
|
|
|
|
blurRadius: 10,
|
|
|
|
BoxShadow(
|
|
|
|
offset: const Offset(0, -2),
|
|
|
|
color: Colors.black.withValues(alpha: 0.05),
|
|
|
|
),
|
|
|
|
blurRadius: 10,
|
|
|
|
],
|
|
|
|
offset: const Offset(0, -2),
|
|
|
|
),
|
|
|
|
|
|
|
|
child: SafeArea(
|
|
|
|
|
|
|
|
child: _buildSubmitButton(),
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
),
|
|
|
|
|
|
|
|
child: SafeArea(
|
|
|
|
|
|
|
|
child: _buildSubmitButton(),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -171,8 +162,7 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
title: "Type of Site Request",
|
|
|
|
title: "Type of Site Request",
|
|
|
|
initialValue: _selectedRequestType,
|
|
|
|
initialValue: _selectedRequestType,
|
|
|
|
staticData: _provider.requestTypes,
|
|
|
|
staticData: _provider.requestTypes,
|
|
|
|
showAsFullScreenDialog: false,
|
|
|
|
showAsFullScreenDialog: true,
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
|
|
|
|
onSelect: (value) async {
|
|
|
|
onSelect: (value) async {
|
|
|
|
setState(() {
|
|
|
|
setState(() {
|
|
|
|
_selectedRequestType = value;
|
|
|
|
_selectedRequestType = value;
|
|
|
|
@ -209,7 +199,7 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
InfoHeader16Widget("Requester Information"),
|
|
|
|
InfoHeader16Widget("Requester Information"),
|
|
|
|
8.height,
|
|
|
|
// 8.height,
|
|
|
|
InfoTextWidget(
|
|
|
|
InfoTextWidget(
|
|
|
|
label: "Full Name",
|
|
|
|
label: "Full Name",
|
|
|
|
value: _provider.getCurrentUserFullName(_userProvider),
|
|
|
|
value: _provider.getCurrentUserFullName(_userProvider),
|
|
|
|
@ -242,11 +232,13 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
Widget _buildOldSiteDropdown() {
|
|
|
|
Widget _buildOldSiteDropdown() {
|
|
|
|
return MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
|
|
|
|
return MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: "Old Site (Current Site)",
|
|
|
|
title: "Current Sites",
|
|
|
|
initialValue: _selectedOldSites.map((s) => SiteRequestSiteModel(
|
|
|
|
initialValue: _selectedOldSites
|
|
|
|
id: s.identifier ?? '',
|
|
|
|
.map((s) => SiteRequestSiteModel(
|
|
|
|
name: s.name ?? '',
|
|
|
|
id: s.identifier ?? '',
|
|
|
|
)).toList(),
|
|
|
|
name: s.name ?? '',
|
|
|
|
|
|
|
|
))
|
|
|
|
|
|
|
|
.toList(),
|
|
|
|
staticData: _provider.userCurrentSites,
|
|
|
|
staticData: _provider.userCurrentSites,
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
@ -288,12 +280,14 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
return MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
|
|
|
|
return MultipleItemDropDownMenu<SiteRequestSiteModel, NullableLoadingProvider>(
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
title: "Site to Remove",
|
|
|
|
title: "Site to Remove",
|
|
|
|
initialValue: _selectedSites.map((s) => SiteRequestSiteModel(
|
|
|
|
initialValue: _selectedSites
|
|
|
|
id: s.identifier ?? '',
|
|
|
|
.map((s) => SiteRequestSiteModel(
|
|
|
|
name: s.name ?? '',
|
|
|
|
id: s.identifier ?? '',
|
|
|
|
)).toList(),
|
|
|
|
name: s.name ?? '',
|
|
|
|
|
|
|
|
))
|
|
|
|
|
|
|
|
.toList(),
|
|
|
|
staticData: _provider.userCurrentSites,
|
|
|
|
staticData: _provider.userCurrentSites,
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
showAsFullScreenDialog: true,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
showShadow: true,
|
|
|
|
showShadow: true,
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
@ -384,92 +378,66 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
|
|
|
|
|
|
|
|
return Consumer<SiteProvider>(
|
|
|
|
return Consumer<SiteProvider>(
|
|
|
|
builder: (context, siteProvider, child) {
|
|
|
|
builder: (context, siteProvider, child) {
|
|
|
|
// Filter out already selected new sites and the current old site
|
|
|
|
// Get ALL user's current site IDs to exclude from new site selection
|
|
|
|
final alreadySelectedNewSites = _siteReplacements.values
|
|
|
|
final allUserCurrentSiteIds = _provider.userCurrentSites.map((s) => s.identifier ?? '').toSet();
|
|
|
|
.where((r) => r.newSite != null)
|
|
|
|
|
|
|
|
.map((r) => r.newSite!.identifier)
|
|
|
|
// Filter out already selected new sites and ALL user's current sites
|
|
|
|
.toSet();
|
|
|
|
final alreadySelectedNewSites = _siteReplacements.values.where((r) => r.newSite != null).map((r) => r.newSite!.identifier).toSet();
|
|
|
|
|
|
|
|
|
|
|
|
final filteredSites = siteProvider.items.where((site) {
|
|
|
|
final filteredSites = siteProvider.items.where((site) {
|
|
|
|
// Exclude the old site itself
|
|
|
|
final siteId = site.identifier ?? '';
|
|
|
|
if (site.identifier == oldSiteId) return false;
|
|
|
|
|
|
|
|
|
|
|
|
// Exclude ALL user's current sites (not just selected old sites)
|
|
|
|
|
|
|
|
if (allUserCurrentSiteIds.contains(siteId)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
// Exclude already selected new sites (except current one)
|
|
|
|
// Exclude already selected new sites (except current one)
|
|
|
|
if (replacement?.newSite?.identifier != site.identifier &&
|
|
|
|
if (replacement?.newSite?.identifier != siteId && alreadySelectedNewSites.contains(siteId)) {
|
|
|
|
alreadySelectedNewSites.contains(site.identifier)) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}).toList();
|
|
|
|
}).toList();
|
|
|
|
|
|
|
|
|
|
|
|
return Container(
|
|
|
|
return Column(
|
|
|
|
padding: EdgeInsets.all(16.toScreenWidth),
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
margin: EdgeInsets.only(bottom: 16.toScreenHeight),
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
spacing: 12,
|
|
|
|
color: AppColor.background(context),
|
|
|
|
children: [
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
Text(
|
|
|
|
border: Border.all(
|
|
|
|
oldSite.name ?? 'Unknown Site',
|
|
|
|
color: AppColor.neutral40.withValues(alpha: 0.3),
|
|
|
|
style: AppTextStyles.bodyText,
|
|
|
|
width: 1,
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
boxShadow: [
|
|
|
|
SingleItemDropDownMenu<Site, NullableLoadingProvider>(
|
|
|
|
BoxShadow(
|
|
|
|
context: context,
|
|
|
|
color: Colors.black.withValues(alpha: 0.05),
|
|
|
|
title: "New Site",
|
|
|
|
blurRadius: 8,
|
|
|
|
initialValue: replacement?.newSite,
|
|
|
|
offset: const Offset(0, 2),
|
|
|
|
staticData: filteredSites,
|
|
|
|
),
|
|
|
|
showAsFullScreenDialog: true,
|
|
|
|
],
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
),
|
|
|
|
showShadow: true,
|
|
|
|
child: Column(
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
onSelect: (value) {
|
|
|
|
children: [
|
|
|
|
setState(() {
|
|
|
|
// Old site name display (simple text only)
|
|
|
|
if (value != null) {
|
|
|
|
Text(
|
|
|
|
// Remove old site ID from loaded set to allow fetching new departments
|
|
|
|
oldSite.name ?? 'Unknown Site',
|
|
|
|
if (replacement?.newSite != null) {
|
|
|
|
style: TextStyle(
|
|
|
|
final oldNewSiteId = int.tryParse(replacement!.newSite!.identifier ?? '0') ?? 0;
|
|
|
|
fontSize: 16,
|
|
|
|
_loadedDepartmentSiteIds.remove(oldNewSiteId);
|
|
|
|
fontWeight: FontWeight.w600,
|
|
|
|
|
|
|
|
color: AppColor.textStyleColor(context),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
16.height,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// New site single selection
|
|
|
|
|
|
|
|
SingleItemDropDownMenu<Site, NullableLoadingProvider>(
|
|
|
|
|
|
|
|
context: context,
|
|
|
|
|
|
|
|
title: "New Site",
|
|
|
|
|
|
|
|
initialValue: replacement?.newSite,
|
|
|
|
|
|
|
|
staticData: filteredSites,
|
|
|
|
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
|
|
|
|
showShadow: true,
|
|
|
|
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
|
|
|
setState(() {
|
|
|
|
|
|
|
|
if (value != null) {
|
|
|
|
|
|
|
|
// Remove old site ID from loaded set to allow fetching new departments
|
|
|
|
|
|
|
|
if (replacement?.newSite != null) {
|
|
|
|
|
|
|
|
final oldNewSiteId = int.tryParse(replacement!.newSite!.identifier ?? '0') ?? 0;
|
|
|
|
|
|
|
|
_loadedDepartmentSiteIds.remove(oldNewSiteId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_siteReplacements[oldSiteId] = SiteReplacement(
|
|
|
|
|
|
|
|
newSite: value,
|
|
|
|
|
|
|
|
departments: [], // Clear departments when new site changes
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16.height,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Department multi-select based on new site
|
|
|
|
_siteReplacements[oldSiteId] = SiteReplacement(
|
|
|
|
if (replacement?.newSite != null) ...[
|
|
|
|
newSite: value,
|
|
|
|
_buildDepartmentDropdownForSite(oldSiteId, replacement!.newSite!),
|
|
|
|
departments: [], // Clear departments when new site changes
|
|
|
|
],
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
if (replacement?.newSite != null) ...[
|
|
|
|
|
|
|
|
_buildDepartmentDropdownForSite(oldSiteId, replacement!.newSite!),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
).toShadowContainer(context);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}).toList();
|
|
|
|
}).toList();
|
|
|
|
@ -500,7 +468,7 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
title: "Departments",
|
|
|
|
title: "Departments",
|
|
|
|
initialValue: replacement?.departments ?? [],
|
|
|
|
initialValue: replacement?.departments ?? [],
|
|
|
|
staticData: departmentProvider.items,
|
|
|
|
staticData: departmentProvider.items,
|
|
|
|
showAsBottomSheet: true,
|
|
|
|
showAsFullScreenDialog: true,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral60 : Colors.white,
|
|
|
|
showShadow: true,
|
|
|
|
showShadow: true,
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
@ -599,8 +567,8 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
departmentIds: departmentIds.isNotEmpty ? departmentIds : null,
|
|
|
|
departmentIds: departmentIds.isNotEmpty ? departmentIds : null,
|
|
|
|
departmentNames: departmentNames.isNotEmpty ? departmentNames : null,
|
|
|
|
departmentNames: departmentNames.isNotEmpty ? departmentNames : null,
|
|
|
|
role: _provider.getCurrentUserRole(_userProvider),
|
|
|
|
role: _provider.getCurrentUserRole(_userProvider),
|
|
|
|
status: 'Pending',
|
|
|
|
// status: 'Pending',
|
|
|
|
requestDate: DateTime.now(),
|
|
|
|
// requestDate: DateTime.now(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
final success = await _provider.submitSiteRequest(request, _userProvider);
|
|
|
|
final success = await _provider.submitSiteRequest(request, _userProvider);
|
|
|
|
@ -647,8 +615,8 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
departmentIds: _selectedDepartments.isNotEmpty ? _selectedDepartments.map((d) => d.identifier ?? '').toList() : null,
|
|
|
|
departmentIds: _selectedDepartments.isNotEmpty ? _selectedDepartments.map((d) => d.identifier ?? '').toList() : null,
|
|
|
|
departmentNames: _selectedDepartments.isNotEmpty ? _selectedDepartments.map((d) => d.name ?? '').toList() : null,
|
|
|
|
departmentNames: _selectedDepartments.isNotEmpty ? _selectedDepartments.map((d) => d.name ?? '').toList() : null,
|
|
|
|
role: _provider.getCurrentUserRole(_userProvider),
|
|
|
|
role: _provider.getCurrentUserRole(_userProvider),
|
|
|
|
status: 'Pending',
|
|
|
|
// status: 'Pending',
|
|
|
|
requestDate: DateTime.now(),
|
|
|
|
// requestDate: DateTime.now(),
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
final success = await _provider.submitSiteRequest(request, _userProvider);
|
|
|
|
final success = await _provider.submitSiteRequest(request, _userProvider);
|
|
|
|
@ -663,7 +631,9 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
|
|
|
|
|
|
|
|
|
|
|
|
// API will handle success/error toast messages
|
|
|
|
// API will handle success/error toast messages
|
|
|
|
if (success && mounted) {
|
|
|
|
if (success && mounted) {
|
|
|
|
Navigator.pushReplacementNamed(context, SiteRequestHistoryScreen.routeName);
|
|
|
|
UserProvider userProvider = Provider.of<UserProvider>(context, listen: false);
|
|
|
|
|
|
|
|
await _provider.fetchSiteRequests(pageNumber: 1, pageSize: 10, userProvider: userProvider);
|
|
|
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|