Merge remote-tracking branch 'refs/remotes/origin/main_production_site_api_change' into main_production_spare_part

# Conflicts:
#	lib/controllers/api_routes/urls.dart
main_production_spare_part
Sikander Saleem 4 weeks ago
commit d3e741e735

@ -7,8 +7,8 @@ class URLs {
// static const host1 = "https://atomsmdev.hmg.com"; // local DEV url // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url
static const host1 = "https://atomsmuat.hmg.com"; // local UAT url static const host1 = "https://atomsmuat.hmg.com"; // local UAT url
// static final String _baseUrl = "$_host/mobile"; // host local UAT static final String _baseUrl = "$_host/mobile"; // host local UAT
static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis
// static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM // static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM
// static final String _baseUrl = "$_host/v4/mobile"; // v4 for Demo module // static final String _baseUrl = "$_host/v4/mobile"; // v4 for Demo module
// static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation // static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation
@ -68,6 +68,7 @@ class URLs {
static get getSiteRequests => "$_baseUrl/SiteRequest/GetSiteRequests"; // get site request history static get getSiteRequests => "$_baseUrl/SiteRequest/GetSiteRequests"; // get site request history
static get getDepartmentsBySites => "$_baseUrl/Customer/GetDepartmentsBySites"; // post get departments by sites static get getDepartmentsBySites => "$_baseUrl/Customer/GetDepartmentsBySites"; // post get departments by sites
static getUserSites(String userId) => "$_baseUrl/Customer/GetSitesForUser?userId=$userId"; // get user's current sites static getUserSites(String userId) => "$_baseUrl/Customer/GetSitesForUser?userId=$userId"; // get user's current sites
static getSitesNotAccessibleForUser(String userId) => "$_baseUrl/Customer/GetSitesNotAccessibleForUser?userId=$userId"; // get user's current sites
// static get login => "$_baseUrl/MobileAuth/LoginIntegration"; // mobile login // static get login => "$_baseUrl/MobileAuth/LoginIntegration"; // mobile login
static get register => "$_baseUrl/handle/create/user"; // post static get register => "$_baseUrl/handle/create/user"; // post

@ -27,6 +27,7 @@ class SiteRequestProvider extends ChangeNotifier {
// Data // Data
List<RequestTypeModel> _requestTypes = []; List<RequestTypeModel> _requestTypes = [];
List<SiteRequestSiteModel> _userCurrentSites = []; List<SiteRequestSiteModel> _userCurrentSites = [];
List<SiteRequestSiteModel> userFilterSites = [];
List<SiteRequestModel> _requestHistory = []; List<SiteRequestModel> _requestHistory = [];
// Pagination // Pagination
@ -124,6 +125,24 @@ class SiteRequestProvider extends ChangeNotifier {
errorMessage: 'Failed to fetch user sites', errorMessage: 'Failed to fetch user sites',
); );
} }
Future<int> fetchUserFilteredSites(String userId) async {
if (_loading) return -2;
return _performApiCall(
apiCall: () => ApiManager.instance.post(URLs.getSitesNotAccessibleForUser(userId), showToast: false, body: {}),
onSuccess: (responseData) {
List listJson = responseData['data'] ?? [];
userFilterSites = listJson
.map((item) => SiteRequestSiteModel(
id: item['siteId']?.toString() ?? '',
name: item['siteName'] ?? '',
))
.toList();
notifyListeners();
},
errorMessage: 'Failed to fetch user sites',
);
}
/// Submits a site request to the server /// Submits a site request to the server
Future<bool> submitSiteRequest(SiteRequestModel request, UserProvider userProvider) async { Future<bool> submitSiteRequest(SiteRequestModel request, UserProvider userProvider) async {

@ -175,11 +175,12 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
_siteReplacements.clear(); _siteReplacements.clear();
_loadedDepartmentSiteIds.clear(); // Reset loaded department site IDs _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 // Fetch user's current sites if Change Site or Remove Site is selected
if ((_isChangeSiteRequest() || _isRemoveSiteRequest()) && value != null) { if ((_isChangeSiteRequest() || _isRemoveSiteRequest()) && value != null) {
final userId = _provider.getCurrentUserUserId(_userProvider);
await _provider.fetchUserCurrentSites(userId); await _provider.fetchUserCurrentSites(userId);
}else {
await _provider.fetchUserFilteredSites(userId);
} }
// Fetch all sites if Change Site is selected (needed for new site dropdown) // Fetch all sites if Change Site is selected (needed for new site dropdown)
@ -318,6 +319,40 @@ class _SiteRequestFormScreenState extends State<SiteRequestFormScreen> {
} }
Widget _buildSiteMultiSelect() { 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>( return MultipleItemDropDownMenu<Site, SiteProvider>(
context: context, context: context,
title: context.translation.site, title: context.translation.site,

Loading…
Cancel
Save