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
@ -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<bool> checkIsEnabledFaceId({required bool status}) async {
try {
final response = await ApiManager.instance.post(
URLs.enableFaceId,
showToast: false,
body: <String, dynamic>{
'isEnabled':status,
'isEnabled': status,
},
);
return response.statusCode >= 200 && response.statusCode < 300;
@ -203,7 +206,6 @@ class SettingProvider extends ChangeNotifier {
}
}
Future<bool> checkAppUpdate(String buildNumber, String osType) async {
Response response;
bool isValid = false;

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

@ -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) {
settingProvider.setAssetGroup(newValue);
WidgetsBinding.instance.addPostFrameCallback((_) {
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);
});
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;
@ -88,12 +88,13 @@ class User {
Future<Map<String, dynamic>> 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 = <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;

@ -175,7 +175,7 @@ class _ProfilePageState extends State<ProfilePage> {
16.height,
AppFilledButton(
label: "Update Information",
buttonColor: context.isDark? AppColor.primary10:AppColor.neutral50,
buttonColor: context.isDark ? AppColor.primary10 : AppColor.neutral50,
onPressed: () {
context.showBottomSheet(
UpdateUserContactInfoBottomSheet(

Loading…
Cancel
Save