diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 2cac62b1..e6f76bd9 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -9,8 +9,9 @@ class URLs { // static String _baseUrl = "$_host/mobile"; // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis - static final String _baseUrl = "$_host/mobile"; // host local UAT + // static final String _baseUrl = "$_host/mobile"; // host local UAT // static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM + static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation static String _host = host1; @@ -23,6 +24,8 @@ class URLs { // API Routes static get login => "$_baseUrl/MobileAuth/Login"; + static get userChangeAssetGroup => "$_baseUrl/MobileAuth/UserChangeAssetGroup"; + static get getUserInfo => "$_baseUrl/MobileAuth/GetUserInfo"; static get logout => "$_baseUrl/MobileAuth/Logout"; diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index 6e6fc577..7a846817 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -147,6 +147,23 @@ class UserProvider extends ChangeNotifier { } } + Future userChangeAssetGroup() async { + Response response; + try { + response = await ApiManager.instance.post(URLs.userChangeAssetGroup, body: {}); + if (response.statusCode >= 200 && response.statusCode < 300) { + User tempUser = await User.fromJson(jsonDecode(response.body)); + tempUser.profilePhotoName = URLs.getFileUrl(tempUser!.profilePhotoName); + ApiManager.instance.user = tempUser; + _user = user; + return true; + } + return false; + } catch (error) { + return false; + } + } + Future logout(BuildContext context) async { Response response; try { diff --git a/lib/controllers/providers/settings/setting_provider.dart b/lib/controllers/providers/settings/setting_provider.dart index 2482c5b9..63cd4a28 100644 --- a/lib/controllers/providers/settings/setting_provider.dart +++ b/lib/controllers/providers/settings/setting_provider.dart @@ -37,7 +37,9 @@ class SettingProvider extends ChangeNotifier { bool get isUserFlowMedical => _assetGroup?.id == 1; bool get isUserFMS => _assetGroup?.id == 2; + bool get engineerCanCreateCM => isUserFMS; + bool get showPriority => !(isUserFMS && user?.type == UsersTypes.normal_user); // Local authentication instance @@ -77,8 +79,10 @@ class SettingProvider extends ChangeNotifier { } void selectAssetGroup(User user) { - if(user.assetGroups ==null) return; - if (user.assetGroups!.length == 1) { + if (user.assetGroups == null) return; + if (user.selectedAssetGroup != null) { + _assetGroup = user.selectedAssetGroup; + } else if (user.assetGroups!.length == 1) { _assetGroup = user.assetGroups!.first; } else { int fmIndex = user.assetGroups!.indexWhere((element) => element.id == 1); @@ -187,14 +191,13 @@ class SettingProvider extends ChangeNotifier { } } - Future checkIsEnabledFaceId({required bool status}) async { try { final response = await ApiManager.instance.post( URLs.enableFaceId, showToast: false, body: { - 'isEnabled':status, + 'isEnabled': status, }, ); return response.statusCode >= 200 && response.statusCode < 300; @@ -203,7 +206,6 @@ class SettingProvider extends ChangeNotifier { } } - Future checkAppUpdate(String buildNumber, String osType) async { Response response; bool isValid = false; diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index 61298f75..a0e8a47f 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -113,7 +113,7 @@ class DashBoardProvider extends ChangeNotifier { } Response response; try { - response = await ApiManager.instance.post(url,body: {}); + response = await ApiManager.instance.post(url, body: {}); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { dashboardCount = DashboardCount.fromJson(json.decode(response.body)); diff --git a/lib/dashboard_latest/widgets/app_bar_widget.dart b/lib/dashboard_latest/widgets/app_bar_widget.dart index f65ed034..6dd0afe2 100644 --- a/lib/dashboard_latest/widgets/app_bar_widget.dart +++ b/lib/dashboard_latest/widgets/app_bar_widget.dart @@ -1,13 +1,16 @@ 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/providers/settings/setting_provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_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/new_views/app_style/app_color.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; +import 'package:test_sa/views/widgets/dialogs/confirm_dialog.dart'; import '../../controllers/providers/api/user_provider.dart'; import '../../models/user.dart'; @@ -83,16 +86,28 @@ class AppBarWidget extends StatelessWidget { borderRadius: BorderRadius.circular(8), style: TextStyle(color: Theme.of(context).primaryColor), underline: const SizedBox.shrink(), - onChanged: (newValue) { + onChanged: (newValue) async { if (settingProvider.assetGroup != newValue) { - settingProvider.setAssetGroup(newValue); - WidgetsBinding.instance.addPostFrameCallback((_) { - DashBoardProvider dashBoardProvider = Provider.of(context, listen: false); - dashBoardProvider.setTabs(userType: settingProvider.user!.type!, context: context); - dashBoardProvider.getDashBoardCount(usersType: settingProvider.user!.type!); - dashBoardProvider.resetRequestDataList(); - dashBoardProvider.getRequestDetail(usersType: settingProvider.user!.type!, status: dashBoardProvider.tabs[dashBoardProvider.currentListIndex].tag); - }); + AssetGroup? tempGroup = ApiManager.instance.assetGroup; + ApiManager.instance.assetGroup = newValue; + + Utils.showLoading(context); + bool isSuccess = await context.userProvider.userChangeAssetGroup(); + Utils.hideLoading(context); + if (isSuccess) { + settingProvider.setAssetGroup(newValue); + WidgetsBinding.instance.addPostFrameCallback((_) { + context.settingProvider.setUser(ApiManager.instance.user!); + DashBoardProvider dashBoardProvider = Provider.of(context, listen: false); + dashBoardProvider.setTabs(userType: settingProvider.user!.type!, context: context); + dashBoardProvider.getDashBoardCount(usersType: settingProvider.user!.type!); + dashBoardProvider.resetRequestDataList(); + dashBoardProvider.getRequestDetail(usersType: settingProvider.user!.type!, status: dashBoardProvider.tabs[dashBoardProvider.currentListIndex].tag); + }); + } else { + ApiManager.instance.assetGroup = tempGroup; + context.showConfirmDialog("Failed, Please Try again"); + } } }, items: Provider.of(context, listen: false).user?.assetGroups?.map>((value) { diff --git a/lib/models/user.dart b/lib/models/user.dart index a1ed40b0..e8bb7044 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -10,7 +10,6 @@ class User { List? departmentId; List? departmentName; String? message; - String? username; String? userID; String? email; @@ -38,6 +37,7 @@ class User { bool? lockoutEnabled; int? accessFailedCount; List? assetGroups; + AssetGroup? selectedAssetGroup; bool? employeeIsHMG; bool? enableWifi; bool? enableNFC; @@ -88,12 +88,13 @@ class User { Future> toLoginJson() async { String notificationType = (Platform.isAndroid && !(await FirebaseNotificationManger.isGoogleServicesAvailable())) ? "HMC" : "FCM"; - if(FirebaseNotificationManger.token==null){ + if (FirebaseNotificationManger.token == null) { //calling this agin to check for token as sometimes token is null fresh install.. await FirebaseNotificationManger.getToken(); } return {"username": userName, "password": password, "fireBaseToken": FirebaseNotificationManger?.token ?? "", "notificationType": notificationType}; } + UsersTypes? get type { switch (userRoles?.first.value) { case "R-6": @@ -149,6 +150,7 @@ class User { map['assetGroups'] = assetGroups!.map((v) => v.toJson()).toList(); } map['tokenlife'] = tokenlife; + map['selectedAssetGroup'] = selectedAssetGroup?.toJson(); map['isAuthenticated'] = isAuthenticated; map['hasError'] = hasError; map['profilePhotoName'] = profilePhotoName; @@ -208,7 +210,7 @@ class User { userRoles!.add(UserRoles.fromJson(v)); }); } - + selectedAssetGroup = json['selectedAssetGroup'] != null ? AssetGroup.fromJson(json['selectedAssetGroup']) : null; if (json['assetGroups'] != null) { assetGroups = []; json['assetGroups'].forEach((v) { @@ -309,9 +311,7 @@ class AssetGroup { } @override - bool operator ==(Object other) => - identical(this, other) || - other is AssetGroup && runtimeType == other.runtimeType && id == other.id; + bool operator ==(Object other) => identical(this, other) || other is AssetGroup && runtimeType == other.runtimeType && id == other.id; @override int get hashCode => id.hashCode; diff --git a/lib/views/pages/user/profile_page.dart b/lib/views/pages/user/profile_page.dart index 22082ca1..9af6bb61 100644 --- a/lib/views/pages/user/profile_page.dart +++ b/lib/views/pages/user/profile_page.dart @@ -175,7 +175,7 @@ class _ProfilePageState extends State { 16.height, AppFilledButton( label: "Update Information", - buttonColor: context.isDark? AppColor.primary10:AppColor.neutral50, + buttonColor: context.isDark ? AppColor.primary10 : AppColor.neutral50, onPressed: () { context.showBottomSheet( UpdateUserContactInfoBottomSheet(