diff --git a/lib/api/login_api_client.dart b/lib/api/login_api_client.dart index 34a0569..217a11f 100644 --- a/lib/api/login_api_client.dart +++ b/lib/api/login_api_client.dart @@ -18,11 +18,12 @@ class LoginApiClient { factory LoginApiClient() => _instance; - Future getMobileLoginInfoNEW(String deviceToken, String deviceType) async { + Future getMobileLoginInfoNEW(String deviceToken, String deviceType, {int? memberType}) async { String url = "${ApiConsts.erpRest}Mohemm_GetMobileLoginInfo_NEW"; Map postParams = {}; postParams["DeviceToken"] = deviceToken; postParams["DeviceType"] = deviceType; + postParams["MemberType"] = memberType ?? ApiConsts.selectedMemberType.value; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return (responseData.mohemmGetMobileLoginInfoList?.length ?? 0) > 0 ? (responseData.mohemmGetMobileLoginInfoList!.first) : null; @@ -30,7 +31,8 @@ class LoginApiClient { } Future insertMobileLoginInfoNEW( - String email, int sessionId, String employeeName, int loginType, String mobileNumber, String userName, String deviceToken, String deviceType) async { + String email, int sessionId, String employeeName, int loginType, String mobileNumber, String userName, String deviceToken, String deviceType, + {int? memberType}) async { String url = "${ApiConsts.erpRest}Mohemm_InsertMobileLoginInfo"; Map postParams = { "MobileNumber": mobileNumber, @@ -41,7 +43,8 @@ class LoginApiClient { "LoginType": loginType, "EmployeeName": employeeName, "P_SESSION_ID": sessionId, - "P_EMAIL_ADDRESS": email + "P_EMAIL_ADDRESS": email, + "MemberType": memberType ?? ApiConsts.selectedMemberType.value, }; postParams["DeviceToken"] = deviceToken; postParams["DeviceType"] = deviceType; diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 46627f8..b5f7197 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -91,11 +91,31 @@ class ApiConsts { static String notificationCenterLoginServiceGUID = "D8BD5C76-4B50-4122-81D0-C3AA25DB08A2"; static String notificationCenterForgotPasswordServiceGUID = "5CCCC2C9-EEA0-4207-9BE9-EE1FBBFFE8D0"; - static bool ISDependetLogin = false; + static MemberType selectedMemberType = MemberType.employee; + static bool get ISDependetLogin => selectedMemberType == MemberType.dependent; + static set ISDependetLogin(bool value) { + selectedMemberType = value ? MemberType.dependent : MemberType.employee; + } static bool get isDependetLogin => ISDependetLogin; static set isDependetLogin(bool value) => ISDependetLogin = value; } +enum MemberType { + employee(1), + dependent(2); + + final int value; + const MemberType(this.value); + + bool get isEmployee => this == MemberType.employee; + bool get isDependent => this == MemberType.dependent; + + static MemberType fromValue(int? value) { + if (value == 2) return MemberType.dependent; + return MemberType.employee; + } +} + class SharedPrefsConsts { static String isRememberMe = "remember_me"; static String username = "username"; diff --git a/lib/ui/landing/dashboard_screen_for_dependet.dart b/lib/ui/landing/dashboard_screen_for_dependet.dart index 3c69df3..bb060ae 100644 --- a/lib/ui/landing/dashboard_screen_for_dependet.dart +++ b/lib/ui/landing/dashboard_screen_for_dependet.dart @@ -76,6 +76,7 @@ class _DashboardScreenForDependetState extends State context, AppState().isArabic(context) ? "هل أنت متأكد من تسجيل الخروج؟" : "Are you sure you want to log out?", onTap: () { + ApiConsts.selectedMemberType = MemberType.employee; ApiConsts.ISDependetLogin = false; Navigator.pushNamedAndRemoveUntil(context, AppRoutes.login, (Route route) => false); }, diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 1d8fcc2..8594174 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -74,6 +74,7 @@ class _LoginScreenState extends State { @override void initState() { super.initState(); + ApiConsts.selectedMemberType = MemberType.employee; ApiConsts.ISDependetLogin = false; // hmsApiAvailability = HmsApiAvailability(); // checkFirebaseToken(); @@ -164,7 +165,15 @@ class _LoginScreenState extends State { void checkLoginInfo() async { try { - loginInfo = await LoginApiClient().getMobileLoginInfoNEW(AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken ?? "", Platform.isAndroid ? "android" : "ios"); + loginInfo = await LoginApiClient().getMobileLoginInfoNEW( + AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken ?? "", + Platform.isAndroid ? "android" : "ios", + memberType: ApiConsts.selectedMemberType.value, + ); + if (ApiConsts.selectedMemberType.isDependent) { + Utils.hideLoading(context); + return; + } if (loginInfo == null) { await checkPrefs(); _autoLogin = false; @@ -285,7 +294,19 @@ class _LoginScreenState extends State { } } + void _onTabChanged(MemberType type) { + if (ApiConsts.selectedMemberType != type) { + setState(() { + ApiConsts.selectedMemberType = type; + }); + checkLoginInfo(); + } + } + Widget _buildTabSwitcher() { + bool isEmployee = ApiConsts.selectedMemberType == MemberType.employee; + bool isAr = AppState().isArabic(context); + return Container( height: 46, decoration: BoxDecoration( @@ -298,9 +319,9 @@ class _LoginScreenState extends State { Expanded( child: Container( decoration: BoxDecoration( - color: !ApiConsts.isDependetLogin ? Colors.white : Colors.transparent, + color: isEmployee ? Colors.white : Colors.transparent, borderRadius: BorderRadius.circular(9), - boxShadow: !ApiConsts.isDependetLogin + boxShadow: isEmployee ? [ BoxShadow( color: Colors.black.withOpacity(0.06), @@ -311,24 +332,20 @@ class _LoginScreenState extends State { : null, ), alignment: Alignment.center, - child: (AppState().isArabic(context) ? "المستخدم" : "Default User").toText14( - color: !ApiConsts.isDependetLogin ? MyColors.textMixColor : MyColors.grey70Color, - isBold: !ApiConsts.isDependetLogin, + child: (isAr ? "الموظف" : "Employee").toText14( + color: isEmployee ? MyColors.textMixColor : MyColors.grey70Color, + isBold: isEmployee, ), ).onPress(() { - if (ApiConsts.isDependetLogin) { - setState(() { - ApiConsts.isDependetLogin = false; - }); - } + _onTabChanged(MemberType.employee); }), ), Expanded( child: Container( decoration: BoxDecoration( - color: ApiConsts.isDependetLogin ? Colors.white : Colors.transparent, + color: !isEmployee ? Colors.white : Colors.transparent, borderRadius: BorderRadius.circular(9), - boxShadow: ApiConsts.isDependetLogin + boxShadow: !isEmployee ? [ BoxShadow( color: Colors.black.withOpacity(0.06), @@ -339,16 +356,12 @@ class _LoginScreenState extends State { : null, ), alignment: Alignment.center, - child: (AppState().isArabic(context) ? "التابع" : "Dependent").toText14( - color: ApiConsts.isDependetLogin ? MyColors.textMixColor : MyColors.grey70Color, - isBold: ApiConsts.isDependetLogin, + child: (isAr ? "التابع" : "Dependent").toText14( + color: !isEmployee ? MyColors.textMixColor : MyColors.grey70Color, + isBold: !isEmployee, ), ).onPress(() { - if (!ApiConsts.isDependetLogin) { - setState(() { - ApiConsts.isDependetLogin = true; - }); - } + _onTabChanged(MemberType.dependent); }), ), ], @@ -607,7 +620,7 @@ class _LoginScreenState extends State { LocaleKeys.login.tr().toText24(isBold: true), LocaleKeys.pleaseEnterLoginDetails.tr().toText16(), 16.height, - if (!ApiConsts.isDependetLogin) ...[ + if (ApiConsts.selectedMemberType == MemberType.employee) ...[ InputWidget(LocaleKeys.username.tr(), "123456", username), 12.height, InputWidget(LocaleKeys.password.tr(), "xxxxxx", password, isTextIsPassword: true), diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 5c76092..8b52c41 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -10,6 +10,7 @@ import 'package:local_auth_android/local_auth_android.dart'; import 'package:mohem_flutter_app/api/login_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -386,6 +387,7 @@ class _VerifyLastLoginScreenState extends State { AppState().getUserName!, AppState().getIsHuawei ? AppState().getHuaweiPushToken : mobileLoginInfoListModel!.deviceToken!, Platform.isAndroid ? "android" : "ios", + memberType: MemberType.employee.value, ); AppState().setMemberInformationListModel = genericResponseModel!.memberInformationList?.first; AppState().setPrivilegeListModel = genericResponseModel!.privilegeList ?? []; diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index e0015e0..ed7564f 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -650,7 +650,8 @@ class _VerifyLoginScreenState extends State { AppState().memberLoginList?.pMOBILENUMBER ?? "", AppState().getUserName!, AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken!, - Platform.isAndroid ? "android" : "ios"); + Platform.isAndroid ? "android" : "ios", + memberType: MemberType.employee.value); if (genericResponseModel?.errorMessage != null) { Utils.showToast(genericResponseModel?.errorMessage ?? ""); } else {