Merge branch 'refs/heads/design_3.0_data_segregation' into design_3.0_GlobalHealth

design_3.0_GlobalHealth
Sikander Saleem 6 days ago
commit ae6772e434

@ -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";

@ -147,6 +147,23 @@ class UserProvider extends ChangeNotifier {
}
}
Future<bool> 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<bool> logout(BuildContext context) async {
Response response;
try {

@ -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
@ -78,7 +80,9 @@ class SettingProvider extends ChangeNotifier {
void selectAssetGroup(User user) {
if (user.assetGroups == null) return;
if (user.assetGroups!.length == 1) {
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,7 +191,6 @@ class SettingProvider extends ChangeNotifier {
}
}
Future<bool> checkIsEnabledFaceId({required bool status}) async {
try {
final response = await ApiManager.instance.post(
@ -203,7 +206,6 @@ class SettingProvider extends ChangeNotifier {
}
}
Future<bool> checkAppUpdate(String buildNumber, String osType) async {
Response response;
bool isValid = false;

@ -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,29 @@ 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) {
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!);
context.userProvider.setUser(ApiManager.instance.user!);
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(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<UserProvider>(context, listen: false).user?.assetGroups?.map<DropdownMenuItem<AssetGroup?>>((value) {

@ -10,7 +10,6 @@ class User {
List<int>? departmentId;
List<String>? departmentName;
String? message;
String? username;
String? userID;
String? email;
@ -38,6 +37,7 @@ class User {
bool? lockoutEnabled;
int? accessFailedCount;
List<AssetGroup>? assetGroups;
AssetGroup? selectedAssetGroup;
bool? employeeIsHMG;
bool? enableWifi;
bool? enableNFC;
@ -94,6 +94,7 @@ class User {
}
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 = <AssetGroup>[];
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;

Loading…
Cancel
Save