diff --git a/assets/images/logos/loading_mohemm_logo.gif b/assets/images/logos/loading_mohemm_logo.gif new file mode 100644 index 0000000..ffefdb0 Binary files /dev/null and b/assets/images/logos/loading_mohemm_logo.gif differ diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index fee81e6..1d9e8bc 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -2,50 +2,53 @@ "mohemm": "Mohemm", "english": "English", "arabic": "Arabic", - "login": "Login", - "pleaseEnterLoginDetails": "Please enter the detail below to login", - "username": "Username", - "password": "Password", - "welcomeBack": "Welcome back", - "wouldYouLikeToLoginWithCurrentUsername": "Would you like to login with current Username?", - "lastLoginDetails": "Last Login Details:", - "verificationType": "Verification Type:", - "pleaseVerify": "Please Verify", - "verifyThroughFace": "Verify Through Face", - "verifyThroughFingerprint": "Verify Through Fingerprint", - "verifyThroughSMS": "Verify Through SMS", - "verifyThroughWhatsapp": "Verify Through Whatsapp", - "useAnotherAccount": "Use Another Account", - "pleaseEnterTheVerificationCodeSentTo": "Please enter the verification code sent to ", - "theVerificationCodeWillExpireIn": "The verification code will expire in ", - "goodMorning": "Good Morning", - "markAttendance": "Mark Attendance", - "timeLeftToday": "Time Left Today", - "checkIn": "Check In", - "workList": "Work List", - "leaveBalance": "Leave Balance", - "missingSwipes": "Missing Swipes", - "ticketBalance": "Ticket Balance", - "other": "Other", - "services": "Services", - "viewAllServices": "View All Services", - "monthlyAttendance": "Monthly Attendance", - "workFromHome": "Work From Home", - "ticketRequest": "Ticket Request", - "viewAllOffers": "View All Offers", - "offers": "Offers & ", - "discounts": "Discounts", - "newString": "New", - "setTheNewPassword": "Set the new password", - "typeYourNewPasswordBelow": "Type your new password below", - "confirmPassword": "Confirm Password", - "update": "Update", - "title": "Title", - "home": "Home", - "mySalary": "My Salary", - "createRequest": "Create Request", - "forgotPassword": "Forgot Password", - "itemsForSale": "Items for Sale", + "login": "تسجيل الدخول", + "pleaseEnterLoginDetails": "الرجاء إدخال التفاصيل أدناه لتسجيل الدخول", + "username": "اسم المستخدم", + "password": "كلمة المرور", + "welcomeBack": "مرحبا بعودتك", + "wouldYouLikeToLoginWithCurrentUsername": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟", + "lastLoginDetails": "تفاصيل تسجيل الدخول الأخير:", + "verificationType": "نوع التحقق:", + "pleaseVerify": "ارجوك تحقق", + "verifyThroughFace": "تحقق من خلال الوجه", + "verifyThroughFingerprint": "تحقق من خلال بصمة الإصبع", + "verifyThroughSMS": "تحقق من خلال الرسائل القصيرة", + "verifyThroughWhatsapp": "تحقق من خلال Whatsapp", + "useAnotherAccount": "استخدم حسابا آخر", + "pleaseEnterTheVerificationCodeSentTo": "الرجاء إدخال رمز التحقق المرسل إلى ", + "theVerificationCodeWillExpireIn": "ستنتهي صلاحية رمز التحقق في ", + "goodMorning": "صباح الخير", + "markAttendance": "علامة الحضور", + "timeLeftToday": "الوقت المتبقي اليوم", + "checkIn": "تحقق في", + "workList": "قائمة العمل", + "leaveBalance": "رصيد الاجازات", + "missingSwipes": "الضربات الشديدة في عداد المفقودين", + "ticketBalance": "رصيد التذكرة", + "other": "آخر", + "services": "خدمات", + "viewAllServices": "عرض جميع الخدمات", + "monthlyAttendance": "الحضور الشهري", + "workFromHome": "العمل من المنزل", + "ticketRequest": "طلب تذكرة", + "viewAllOffers": "مشاهدة جميع العروض", + "offers": "عروض & ", + "discounts": "الخصومات", + "newString": "جديد", + "setTheNewPassword": "قم بتعيين كلمة المرور الجديدة", + "typeYourNewPasswordBelow": "اكتب كلمة المرور الجديدة أدناه", + "confirmPassword": "تأكيد كلمة المرور", + "update": "تحديث", + "title": "عنوان", + "home": "مسكن", + "mySalary": "راتبي", + "createRequest": "إنشاء طلب", + "forgotPassword": "هل نسيت كلمة السر", + "employeeId": "هوية الموظف", + "loginCodeWillSentToMobileNumber": "الرجاء إدخال معرف الموظف الخاص بك ، وسيتم إرسال رمز تسجيل الدخول إلى رقم هاتفك المحمول", + "changePassword": "تغيير كلمة المرور", + "itemsForSale": "سلع للبيع", "msg": "Hello {} in the {} world ", "msg_named": "{} are written in the {lang} language", "clickMe": "Click me", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index fee81e6..9c812ce 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -45,6 +45,9 @@ "mySalary": "My Salary", "createRequest": "Create Request", "forgotPassword": "Forgot Password", + "employeeId": "Employee ID", + "loginCodeWillSentToMobileNumber": "Please Enter your Employee ID, A login code will be sent to your mobile number", + "changePassword": "Change Password", "itemsForSale": "Items for Sale", "msg": "Hello {} in the {} world ", "msg_named": "{} are written in the {lang} language", diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart index afba61e..7de80da 100644 --- a/lib/api/api_client.dart +++ b/lib/api/api_client.dart @@ -25,11 +25,19 @@ class APIError { APIException _throwAPIException(Response response) { switch (response.statusCode) { + case 200: + APIError? apiError; + if (response.body != null && response.body.isNotEmpty) { + var jsonError = jsonDecode(response.body); + print(jsonError); + apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage']); + } + return APIException(APIException.BAD_REQUEST, error: apiError); case 400: APIError? apiError; if (response.body != null && response.body.isNotEmpty) { var jsonError = jsonDecode(response.body); - apiError = APIError(jsonError['errorCode'], jsonError['errorMessage']); + apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage']); } return APIException(APIException.BAD_REQUEST, error: apiError); case 401: @@ -66,12 +74,18 @@ class ApiClient { print("body:$jsonObject"); } var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes); - try { + // try { var jsonData = jsonDecode(response.body); - return factoryConstructor(jsonData); - } catch (ex) { - throw APIException(APIException.BAD_RESPONSE_FORMAT, arguments: ex); - } + if (jsonData["ErrorMessage"] != null) { + return factoryConstructor(jsonData); + } else { + throw _throwAPIException(response); + } + // } catch (ex) { + // print(response.body); + // print(ex); + // throw APIException(APIException.BAD_RESPONSE_FORMAT, arguments: ex); + // } } Future postJsonForResponse(String url, T jsonObject, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async { @@ -103,7 +117,7 @@ class ApiClient { var queryString = new Uri(queryParameters: queryParameters).query; url = url + '?' + queryString; } - var response = await _post(Uri.parse(url), body: requestBody, headers: _headers).timeout(Duration(seconds: 15)); + var response = await _post(Uri.parse(url), body: requestBody, headers: _headers).timeout(Duration(seconds: 60)); if (response.statusCode >= 200 && response.statusCode < 300) { return response; diff --git a/lib/api/login_api_client.dart b/lib/api/login_api_client.dart new file mode 100644 index 0000000..1811414 --- /dev/null +++ b/lib/api/login_api_client.dart @@ -0,0 +1,94 @@ +import 'dart:async'; + +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; +import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart'; +import 'package:mohem_flutter_app/models/generic_response_model.dart'; +import 'package:mohem_flutter_app/models/member_login_list_model.dart'; + +import 'api_client.dart'; + +class LoginApiClient { + static final LoginApiClient _instance = LoginApiClient._internal(); + + LoginApiClient._internal(); + + factory LoginApiClient() => _instance; + + Future checkMobileAppVersion() async { + String url = "${ApiConsts.utilitiesRest}CheckMobileAppVersion"; + Map postParams = {}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) => CheckMobileAppVersionModel.fromJson(json), url, postParams); + } + + Future memberLogin(String username, String password) async { + String url = "${ApiConsts.erpRest}MemberLogin"; + Map postParams = {"P_APP_VERSION": "CS", "P_LANGUAGE": "US", "P_PASSWORD": password, "P_USER_NAME": username}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + AppState().postParamsObject?.setLogInTokenID = responseData.logInTokenID; + return responseData.memberLoginList; + }, url, postParams); + } + + Future mohemmSendActivationCodeByOTPNotificationType(int isMobileFingerPrint, String? mobileNumber, int optSendType, String? pUserName) async { + String url = "${ApiConsts.erpRest}Mohemm_SendActivationCodebyOTPNotificationType"; + Map postParams = {"IsMobileFingerPrint": isMobileFingerPrint, "MobileNumber": mobileNumber, "OTP_SendType": optSendType, "P_USER_NAME": pUserName}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) => GenericResponseModel.fromJson(json).basicMemberInformation, url, postParams); + } + + Future checkActivationCode(bool isDeviceNFC, String? mobileNumber, String activationCode, String? pUserName) async { + String url = "${ApiConsts.erpRest}CheckActivationCode"; + Map postParams = {"isDeviceNFC": isDeviceNFC, "MobileNumber": mobileNumber, "activationCode": activationCode, "P_USER_NAME": pUserName}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + AppState().postParamsObject?.setTokenID = responseData.tokenID; + return responseData; + }, url, postParams); + } + + Future getBasicUserInformation(String pAppVersion, String pUsername) async { + String url = "${ApiConsts.erpRest}Get_BasicUserInformation"; + Map postParams = {"P_APP_VERSION": pAppVersion, "P_USER_NAME": pUsername}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) => GenericResponseModel.fromJson(json).basicMemberInformation, url, postParams); + } + + Future sendPublicActivationCode(String? mobileNumber, String? pUsername) async { + String url = "${ApiConsts.erpRest}SendPublicActivationCode"; + Map postParams = {"MobileNumber": mobileNumber, "P_MOBILE_NUMBER": mobileNumber, "P_USER_NAME": pUsername}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + AppState().postParamsObject?.setLogInTokenID = responseData.logInTokenID; + return responseData; + }, url, postParams); + } + + Future checkPublicActivationCode(String activationCode, String? pUserName) async { + String url = "${ApiConsts.erpRest}checkPublicActivationCode"; + Map postParams = {"activationCode": activationCode, "P_USER_NAME": pUserName}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + AppState().setForgetPasswordTokenID = responseData.tokenID; + return responseData; + }, url, postParams); + } + + Future changePasswordForget(String forgetPasswordTokenID, String pNewPassword, String pConfirmNewPassword, String? pUserName) async { + String url = "${ApiConsts.erpRest}ChangePassword_Forget"; + Map postParams = {"P_USER_NAME": pUserName, "ForgetPasswordTokenID": forgetPasswordTokenID, "P_Confirm_NEW_PASSWORD": pConfirmNewPassword, "P_NEW_PASSWORD": pNewPassword}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + + return responseData; + }, url, postParams); + } +} diff --git a/lib/api/tangheem_user_api_client.dart b/lib/api/tangheem_user_api_client.dart index b849141..32a5a82 100644 --- a/lib/api/tangheem_user_api_client.dart +++ b/lib/api/tangheem_user_api_client.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/content_info_model.dart'; -import 'package:mohem_flutter_app/models/member_model.dart'; +import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/surah_model.dart'; import 'api_client.dart'; @@ -14,21 +14,21 @@ class TangheemUserApiClient { factory TangheemUserApiClient() => _instance; - Future getSurahs() async { - String url = "${ApiConsts.tangheemUsers}AlSuar_Get"; - var postParams = {}; - return await ApiClient().postJsonForObject((json) => SurahModel.fromJson(json), url, postParams); - } - - Future getMembers() async { - String url = "${ApiConsts.tangheemUsers}Committee_Get"; - var postParams = {}; - return await ApiClient().postJsonForObject((json) => MemberModel.fromJson(json), url, postParams); - } - - Future getContentInfo(int contentId) async { - String url = "${ApiConsts.tangheemUsers}ContentInfo_Get"; - var postParams = {"contentTypeId": contentId}; - return await ApiClient().postJsonForObject((json) => ContentInfoModel.fromJson(json), url, postParams); - } + // Future getSurahs() async { + // String url = "${ApiConsts.tangheemUsers}AlSuar_Get"; + // var postParams = {}; + // return await ApiClient().postJsonForObject((json) => SurahModel.fromJson(json), url, postParams); + // } + // + // Future getMembers() async { + // String url = "${ApiConsts.tangheemUsers}Committee_Get"; + // var postParams = {}; + // return await ApiClient().postJsonForObject((json) => MemberModel.fromJson(json), url, postParams); + // } + // + // Future getContentInfo(int contentId) async { + // String url = "${ApiConsts.tangheemUsers}ContentInfo_Get"; + // var postParams = {"contentTypeId": contentId}; + // return await ApiClient().postJsonForObject((json) => ContentInfoModel.fromJson(json), url, postParams); + // } } diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 9303802..2af87d8 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -1,5 +1,5 @@ -import 'package:mohem_flutter_app/models/content_info_model.dart'; -import 'package:mohem_flutter_app/models/surah_model.dart'; +import 'package:mohem_flutter_app/models/member_login_list_model.dart'; +import 'package:mohem_flutter_app/models/post_params_model.dart'; class AppState { static final AppState _instance = AppState._internal(); @@ -8,19 +8,29 @@ class AppState { factory AppState() => _instance; - SurahModel? _surahModel; + String? forgetPasswordTokenID; - SurahModel? get getSurahModel => _surahModel; + set setForgetPasswordTokenID(token) => forgetPasswordTokenID = token; - void setSurahModel(SurahModel _surahModel) { - this._surahModel = _surahModel; - } + String? get getForgetPasswordTokenID => forgetPasswordTokenID; + + PostParamsModel? _postParams; - ContentInfoDataModel? _copyRight; + PostParamsModel? get postParamsObject => _postParams; - ContentInfoDataModel? get getContentInfoModel => _copyRight; + Map get postParamsJson => _postParams?.toJson() ?? {}; - void setContentInfoModel(ContentInfoDataModel _copyRight) { - this._copyRight = _copyRight; + void setPostParamsModel(PostParamsModel _postParams) { + this._postParams = _postParams; } + + String? username; + + set setUserName(_username) => username = _username; + + MemberLoginListModel? _memberLoginList; + + MemberLoginListModel? get memberLoginList => _memberLoginList; + + set setMemberLoginListModel(MemberLoginListModel? _memberLoginList) => this._memberLoginList = _memberLoginList; } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 0c71f0c..b0453c0 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,11 +1,10 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "http://20.203.25.82"; // production server - static String baseUrlServices = baseUrl + "/services/"; // production server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrlServices = baseUrl + "/services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server - static String authentication = baseUrlServices + "api/Authentication/"; - static String tangheemUsers = baseUrlServices + "api/TangheemUsers/"; - static String adminConfiguration = baseUrlServices + "api/AdminConfiguration/"; + static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; + static String erpRest = baseUrlServices + "ERP.svc/REST/"; static String user = baseUrlServices + "api/User/"; } diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 4d26ed6..d80fdf5 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; // import 'package:fluttertoast/fluttertoast.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; +import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; class Utils { static bool _isLoadingVisible = false; @@ -9,8 +11,8 @@ class Utils { static bool get isLoading => _isLoadingVisible; static void showToast(String message) { - // Fluttertoast.showToast( - // msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0); + Fluttertoast.showToast( + msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0); } static dynamic getNotNullValue(List list, int index) { @@ -32,13 +34,13 @@ class Utils { static void showLoading(BuildContext context) { WidgetsBinding.instance?.addPostFrameCallback((_) { _isLoadingVisible = true; - // showDialog( - // context: context, - // barrierColor: ColorConsts.primaryBlack.withOpacity(0.5), - // builder: (BuildContext context) => LoadingDialog(), - // ).then((value) { - // _isLoadingVisible = false; - // }); + showDialog( + context: context, + barrierColor: Colors.black.withOpacity(0.5), + builder: (BuildContext context) => LoadingDialog(), + ).then((value) { + _isLoadingVisible = false; + }); }); } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 4e72b26..39a4ebc 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; +import 'package:mohem_flutter_app/ui/login/forgot_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/login_screen.dart'; import 'package:mohem_flutter_app/ui/login/new_password_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart'; @@ -13,6 +14,7 @@ class AppRoutes { static const String loginVerifyAccount = "/loginVerifyAccount"; static const String login = "/login"; static const String verifyLogin = "/verifyLogin"; + static const String forgotPassword = "/forgotPassword"; static const String newPassword = "/newPassword"; static const String loginVerification = "/loginVerification"; static const String dashboard = "/dashboard"; @@ -28,6 +30,7 @@ class AppRoutes { verifyLogin: (context) => VerifyLoginScreen(), dashboard: (context) => Dashboard(), newPassword: (context) => NewPasswordScreen(), + forgotPassword: (context) => ForgotPasswordScreen(), todayAttendance: (context) => TodayAttendanceScreen(), //Work List diff --git a/lib/dialogs/otp_dialog.dart b/lib/dialogs/otp_dialog.dart index f589211..d82cf9c 100644 --- a/lib/dialogs/otp_dialog.dart +++ b/lib/dialogs/otp_dialog.dart @@ -11,7 +11,7 @@ import 'package:mohem_flutter_app/widgets/otp_widget.dart'; class OtpDialog { final int type; - final int mobileNo; + final int? mobileNo; final Function(String) onSuccess; final Function onFailure; final BuildContext context; @@ -57,10 +57,11 @@ class OtpDialog { String displayTime = ''; String? _code; dynamic setState; + bool stopTimer = false; // static String signature; - displayDialog(BuildContext context) async { + void displayDialog(BuildContext context) async { return showDialog( context: context, barrierColor: Colors.black.withOpacity(0.63), @@ -68,8 +69,8 @@ class OtpDialog { // projectProvider = Provider.of(context); return Dialog( backgroundColor: Colors.white, - shape: RoundedRectangleBorder(), - insetPadding: EdgeInsets.only(left: 21, right: 21), + shape: const RoundedRectangleBorder(), + insetPadding: const EdgeInsets.only(left: 21, right: 21), child: StatefulBuilder(builder: (context, setState) { if (displayTime == '') { startTimer(setState); @@ -91,14 +92,13 @@ class OtpDialog { width: 50, ), IconButton( - padding: EdgeInsets.zero, - icon: const Icon(Icons.close), - constraints: const BoxConstraints(), - onPressed: () { - Navigator.pop(context); - this.onFailure(); - }, - ) + padding: EdgeInsets.zero, + icon: const Icon(Icons.close), + constraints: const BoxConstraints(), + onPressed: () { + stopTimer = true; + onFailure(); + }) ], ), 22.height, @@ -150,22 +150,20 @@ class OtpDialog { InputDecoration buildInputDecoration(BuildContext context) { return InputDecoration( counterText: " ", - // ts/images/password_icon.png - // contentPadding: EdgeInsets.only(top: 20, bottom: 20), - enabledBorder: OutlineInputBorder( + enabledBorder: const OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(10)), borderSide: BorderSide(color: Colors.black), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderRadius: const BorderRadius.all(Radius.circular(10.0)), borderSide: BorderSide(color: Theme.of(context).primaryColor), ), errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderRadius: const BorderRadius.all(Radius.circular(10.0)), borderSide: BorderSide(color: Theme.of(context).errorColor), ), focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderRadius: const BorderRadius.all(Radius.circular(10.0)), borderSide: BorderSide(color: Theme.of(context).errorColor), ), ); @@ -181,33 +179,27 @@ class OtpDialog { // } // } - checkValue() { - //print(verifyAccountFormValue); - // if (verifyAccountForm?.currentState!.validate()) { - // onSuccess(digit1.text.toString() + digit2.text.toString() + digit3.text.toString() + digit4.text.toString()); - // } - } - - getSecondsAsDigitalClock(int inputSeconds) { - var sec_num = int.parse(inputSeconds.toString()); // don't forget the second param - var hours = (sec_num / 3600).floor(); - var minutes = ((sec_num - hours * 3600) / 60).floor(); - var seconds = sec_num - hours * 3600 - minutes * 60; - var minutesString = ""; - var secondsString = ""; + String getSecondsAsDigitalClock(int inputSeconds) { + int secNum = int.parse(inputSeconds.toString()); // don't forget the second param + int hours = (secNum / 3600).floor(); + int minutes = ((secNum - hours * 3600) / 60).floor(); + double seconds = secNum - hours * 3600 - minutes * 60; + String minutesString = ""; + String secondsString = ""; minutesString = minutes < 10 ? "0" + minutes.toString() : minutes.toString(); - secondsString = seconds < 10 ? "0" + seconds.toString() : seconds.toString(); + secondsString = seconds < 10 ? "0" + seconds.toStringAsFixed(0) : seconds.toStringAsFixed(0); return minutesString + ":" + secondsString; } - startTimer(setState) { - this.remainingTime--; + void startTimer(setState) { + remainingTime--; + if (stopTimer) return; setState(() { - displayTime = this.getSecondsAsDigitalClock(this.remainingTime); + displayTime = getSecondsAsDigitalClock(remainingTime); }); - timer = Future.delayed(Duration(seconds: 1), () { - if (this.remainingTime > 0) { + timer = Future.delayed(const Duration(seconds: 1), () { + if (remainingTime > 0) { startTimer(setState); } else { Navigator.pop(context); @@ -219,8 +211,9 @@ class OtpDialog { Navigator.pop(context); } - _onOtpCallBack(String otpCode, bool? isAutofill) { + void _onOtpCallBack(String otpCode, bool? isAutofill) { if (otpCode.length == 4) { + stopTimer = true; onSuccess(otpCode); } } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 9829f4c..b43f3bd 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -18,50 +18,53 @@ class CodegenLoader extends AssetLoader{ "mohemm": "Mohemm", "english": "English", "arabic": "Arabic", - "login": "Login", - "pleaseEnterLoginDetails": "Please enter the detail below to login", - "username": "Username", - "password": "Password", - "welcomeBack": "Welcome back", - "wouldYouLikeToLoginWithCurrentUsername": "Would you like to login with current Username?", - "lastLoginDetails": "Last Login Details:", - "verificationType": "Verification Type:", - "pleaseVerify": "Please Verify", - "verifyThroughFace": "Verify Through Face", - "verifyThroughFingerprint": "Verify Through Fingerprint", - "verifyThroughSMS": "Verify Through SMS", - "verifyThroughWhatsapp": "Verify Through Whatsapp", - "useAnotherAccount": "Use Another Account", - "pleaseEnterTheVerificationCodeSentTo": "Please enter the verification code sent to ", - "theVerificationCodeWillExpireIn": "The verification code will expire in ", - "goodMorning": "Good Morning", - "markAttendance": "Mark Attendance", - "timeLeftToday": "Time Left Today", - "checkIn": "Check In", - "workList": "Work List", - "leaveBalance": "Leave Balance", - "missingSwipes": "Missing Swipes", - "ticketBalance": "Ticket Balance", - "other": "Other", - "services": "Services", - "viewAllServices": "View All Services", - "monthlyAttendance": "Monthly Attendance", - "workFromHome": "Work From Home", - "ticketRequest": "Ticket Request", - "viewAllOffers": "View All Offers", - "offers": "Offers & ", - "discounts": "Discounts", - "newString": "New", - "setTheNewPassword": "Set the new password", - "typeYourNewPasswordBelow": "Type your new password below", - "confirmPassword": "Confirm Password", - "update": "Update", - "title": "Title", - "home": "Home", - "mySalary": "My Salary", - "createRequest": "Create Request", - "forgotPassword": "Forgot Password", - "itemsForSale": "Items for Sale", + "login": "تسجيل الدخول", + "pleaseEnterLoginDetails": "الرجاء إدخال التفاصيل أدناه لتسجيل الدخول", + "username": "اسم المستخدم", + "password": "كلمة المرور", + "welcomeBack": "مرحبا بعودتك", + "wouldYouLikeToLoginWithCurrentUsername": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟", + "lastLoginDetails": "تفاصيل تسجيل الدخول الأخير:", + "verificationType": "نوع التحقق:", + "pleaseVerify": "ارجوك تحقق", + "verifyThroughFace": "تحقق من خلال الوجه", + "verifyThroughFingerprint": "تحقق من خلال بصمة الإصبع", + "verifyThroughSMS": "تحقق من خلال الرسائل القصيرة", + "verifyThroughWhatsapp": "تحقق من خلال Whatsapp", + "useAnotherAccount": "استخدم حسابا آخر", + "pleaseEnterTheVerificationCodeSentTo": "الرجاء إدخال رمز التحقق المرسل إلى ", + "theVerificationCodeWillExpireIn": "ستنتهي صلاحية رمز التحقق في ", + "goodMorning": "صباح الخير", + "markAttendance": "علامة الحضور", + "timeLeftToday": "الوقت المتبقي اليوم", + "checkIn": "تحقق في", + "workList": "قائمة العمل", + "leaveBalance": "رصيد الاجازات", + "missingSwipes": "الضربات الشديدة في عداد المفقودين", + "ticketBalance": "رصيد التذكرة", + "other": "آخر", + "services": "خدمات", + "viewAllServices": "عرض جميع الخدمات", + "monthlyAttendance": "الحضور الشهري", + "workFromHome": "العمل من المنزل", + "ticketRequest": "طلب تذكرة", + "viewAllOffers": "مشاهدة جميع العروض", + "offers": "عروض & ", + "discounts": "الخصومات", + "newString": "جديد", + "setTheNewPassword": "قم بتعيين كلمة المرور الجديدة", + "typeYourNewPasswordBelow": "اكتب كلمة المرور الجديدة أدناه", + "confirmPassword": "تأكيد كلمة المرور", + "update": "تحديث", + "title": "عنوان", + "home": "مسكن", + "mySalary": "راتبي", + "createRequest": "إنشاء طلب", + "forgotPassword": "هل نسيت كلمة السر", + "employeeId": "هوية الموظف", + "loginCodeWillSentToMobileNumber": "الرجاء إدخال معرف الموظف الخاص بك ، وسيتم إرسال رمز تسجيل الدخول إلى رقم هاتفك المحمول", + "changePassword": "تغيير كلمة المرور", + "itemsForSale": "سلع للبيع", "msg": "Hello {} in the {} world ", "msg_named": "{} are written in the {lang} language", "clickMe": "Click me", @@ -147,6 +150,9 @@ static const Map en_US = { "mySalary": "My Salary", "createRequest": "Create Request", "forgotPassword": "Forgot Password", + "employeeId": "Employee ID", + "loginCodeWillSentToMobileNumber": "Please Enter your Employee ID, A login code will be sent to your mobile number", + "changePassword": "Change Password", "itemsForSale": "Items for Sale", "msg": "Hello {} in the {} world ", "msg_named": "{} are written in the {lang} language", diff --git a/lib/main.dart b/lib/main.dart index b118397..99cff95 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,11 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/config/app_provider.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; +import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/theme/app_theme.dart'; import 'package:sizer/sizer.dart'; @@ -12,7 +16,7 @@ Future main() async { await EasyLocalization.ensureInitialized(); runApp( EasyLocalization( - supportedLocales: [ + supportedLocales: const [ Locale('en', 'US'), Locale('ar', 'SA'), ], @@ -39,6 +43,9 @@ class MyApp extends StatelessWidget { return AppProvider( child: Sizer( builder: (context, orientation, deviceType) { + AppState().setPostParamsModel( + PostParamsModel(languageID: EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2, channel: 31, versionID: 3.2, mobileType: Platform.isAndroid ? "android" : "ios"), + ); return MaterialApp( theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"), debugShowCheckedModeBanner: false, diff --git a/lib/models/basic_member_information_model.dart b/lib/models/basic_member_information_model.dart new file mode 100644 index 0000000..33b55fa --- /dev/null +++ b/lib/models/basic_member_information_model.dart @@ -0,0 +1,32 @@ +class BasicMemberInformationModel { + String? pEMAILADDRESS; + String? pLEGISLATIONCODE; + String? pMOBILENUMBER; + String? pRETURNMSG; + String? pRETURNSTATUS; + + BasicMemberInformationModel( + {this.pEMAILADDRESS, + this.pLEGISLATIONCODE, + this.pMOBILENUMBER, + this.pRETURNMSG, + this.pRETURNSTATUS}); + + BasicMemberInformationModel.fromJson(Map json) { + pEMAILADDRESS = json['P_EMAIL_ADDRESS']; + pLEGISLATIONCODE = json['P_LEGISLATION_CODE']; + pMOBILENUMBER = json['P_MOBILE_NUMBER']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + } + + Map toJson() { + final Map data = new Map(); + data['P_EMAIL_ADDRESS'] = this.pEMAILADDRESS; + data['P_LEGISLATION_CODE'] = this.pLEGISLATIONCODE; + data['P_MOBILE_NUMBER'] = this.pMOBILENUMBER; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + return data; + } +} diff --git a/lib/models/check_mobile_app_version_model.dart b/lib/models/check_mobile_app_version_model.dart new file mode 100644 index 0000000..cd301d3 --- /dev/null +++ b/lib/models/check_mobile_app_version_model.dart @@ -0,0 +1,191 @@ +class CheckMobileAppVersionModel { + String? date; + int? languageID; + int? serviceName; + String? time; + String? androidLink; + String? authenticationTokenID; + String? data; + bool? dataw; + int? dietType; + int? dietTypeID; + int? errorCode; + String? errorEndUserMessage; + String? errorEndUserMessageN; + String? errorMessage; + int? errorType; + int? foodCategory; + String? iOSLink; + bool? isAuthenticated; + int? mealOrderStatus; + int? mealType; + int? messageStatus; + int? numberOfResultRecords; + String? patientBlodType; + String? successMsg; + String? successMsgN; + String? vidaUpdatedResponse; + String? encryprURL; + bool? kioskHelp; + List? listRssItems; + List? listKioskFingerPrint; + List? listKioskFingerPrintGetByID; + List? listKioskGetLastTransaction; + List? listRegKioskFingerPrint; + String? message; + String? ramadanTimeObj; + String? habibTwitterList; + + CheckMobileAppVersionModel( + {this.date, + this.languageID, + this.serviceName, + this.time, + this.androidLink, + this.authenticationTokenID, + this.data, + this.dataw, + this.dietType, + this.dietTypeID, + this.errorCode, + this.errorEndUserMessage, + this.errorEndUserMessageN, + this.errorMessage, + this.errorType, + this.foodCategory, + this.iOSLink, + this.isAuthenticated, + this.mealOrderStatus, + this.mealType, + this.messageStatus, + this.numberOfResultRecords, + this.patientBlodType, + this.successMsg, + this.successMsgN, + this.vidaUpdatedResponse, + this.encryprURL, + this.kioskHelp, + this.listRssItems, + this.listKioskFingerPrint, + this.listKioskFingerPrintGetByID, + this.listKioskGetLastTransaction, + this.listRegKioskFingerPrint, + this.message, + this.ramadanTimeObj, + this.habibTwitterList}); + + CheckMobileAppVersionModel.fromJson(Map json) { + date = json['Date']; + languageID = json['LanguageID']; + serviceName = json['ServiceName']; + time = json['Time']; + androidLink = json['AndroidLink']; + authenticationTokenID = json['AuthenticationTokenID']; + data = json['Data']; + dataw = json['Dataw']; + dietType = json['DietType']; + dietTypeID = json['DietTypeID']; + errorCode = json['ErrorCode']; + errorEndUserMessage = json['ErrorEndUserMessage']; + errorEndUserMessageN = json['ErrorEndUserMessageN']; + errorMessage = json['ErrorMessage']; + errorType = json['ErrorType']; + foodCategory = json['FoodCategory']; + iOSLink = json['IOSLink']; + isAuthenticated = json['IsAuthenticated']; + mealOrderStatus = json['MealOrderStatus']; + mealType = json['MealType']; + messageStatus = json['MessageStatus']; + numberOfResultRecords = json['NumberOfResultRecords']; + patientBlodType = json['PatientBlodType']; + successMsg = json['SuccessMsg']; + successMsgN = json['SuccessMsgN']; + vidaUpdatedResponse = json['VidaUpdatedResponse']; + encryprURL = json['EncryprURL']; + kioskHelp = json['KioskHelp']; + if (json['ListRssItems'] != null) { + listRssItems = []; + json['ListRssItems'].forEach((v) { + //listRssItems!.add(new Null.fromJson(v)); + }); + } + if (json['List_Kiosk_FingerPrint'] != null) { + listKioskFingerPrint = []; + json['List_Kiosk_FingerPrint'].forEach((v) { + // listKioskFingerPrint!.add(new Null.fromJson(v)); + }); + } + if (json['List_Kiosk_FingerPrintGetByID'] != null) { + listKioskFingerPrintGetByID = []; + json['List_Kiosk_FingerPrintGetByID'].forEach((v) { + // listKioskFingerPrintGetByID!.add(new Null.fromJson(v)); + }); + } + if (json['List_Kiosk_GetLastTransaction'] != null) { + listKioskGetLastTransaction = []; + json['List_Kiosk_GetLastTransaction'].forEach((v) { + // listKioskGetLastTransaction!.add(new Null.fromJson(v)); + }); + } + if (json['List_RegKiosk_FingerPrint'] != null) { + listRegKioskFingerPrint = []; + json['List_RegKiosk_FingerPrint'].forEach((v) { + // listRegKioskFingerPrint!.add(new Null.fromJson(v)); + }); + } + message = json['Message']; + ramadanTimeObj = json['RamadanTimeObj']; + habibTwitterList = json['habibTwitterList']; + } + + Map toJson() { + final Map data = new Map(); + data['Date'] = this.date; + data['LanguageID'] = this.languageID; + data['ServiceName'] = this.serviceName; + data['Time'] = this.time; + data['AndroidLink'] = this.androidLink; + data['AuthenticationTokenID'] = this.authenticationTokenID; + data['Data'] = this.data; + data['Dataw'] = this.dataw; + data['DietType'] = this.dietType; + data['DietTypeID'] = this.dietTypeID; + data['ErrorCode'] = this.errorCode; + data['ErrorEndUserMessage'] = this.errorEndUserMessage; + data['ErrorEndUserMessageN'] = this.errorEndUserMessageN; + data['ErrorMessage'] = this.errorMessage; + data['ErrorType'] = this.errorType; + data['FoodCategory'] = this.foodCategory; + data['IOSLink'] = this.iOSLink; + data['IsAuthenticated'] = this.isAuthenticated; + data['MealOrderStatus'] = this.mealOrderStatus; + data['MealType'] = this.mealType; + data['MessageStatus'] = this.messageStatus; + data['NumberOfResultRecords'] = this.numberOfResultRecords; + data['PatientBlodType'] = this.patientBlodType; + data['SuccessMsg'] = this.successMsg; + data['SuccessMsgN'] = this.successMsgN; + data['VidaUpdatedResponse'] = this.vidaUpdatedResponse; + data['EncryprURL'] = this.encryprURL; + data['KioskHelp'] = this.kioskHelp; + if (this.listRssItems != null) { + //data['ListRssItems'] = this.listRssItems!.map((v) => v.toJson()).toList(); + } + if (this.listKioskFingerPrint != null) { + // data['List_Kiosk_FingerPrint'] = this.listKioskFingerPrint!.map((v) => v.toJson()).toList(); + } + if (this.listKioskFingerPrintGetByID != null) { + //data['List_Kiosk_FingerPrintGetByID'] = this.listKioskFingerPrintGetByID!.map((v) => v.toJson()).toList(); + } + if (this.listKioskGetLastTransaction != null) { + //data['List_Kiosk_GetLastTransaction'] = this.listKioskGetLastTransaction!.map((v) => v.toJson()).toList(); + } + if (this.listRegKioskFingerPrint != null) { + //data['List_RegKiosk_FingerPrint'] = this.listRegKioskFingerPrint!.map((v) => v.toJson()).toList(); + } + data['Message'] = this.message; + data['RamadanTimeObj'] = this.ramadanTimeObj; + data['habibTwitterList'] = this.habibTwitterList; + return data; + } +} diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart new file mode 100644 index 0000000..b993db8 --- /dev/null +++ b/lib/models/generic_response_model.dart @@ -0,0 +1,1040 @@ +import 'package:mohem_flutter_app/models/member_login_list_model.dart'; + +import 'basic_member_information_model.dart'; +import 'member_information_list_model.dart'; +import 'privilege_list_model.dart'; + +class GenericResponseModel { + String? date; + int? languageID; + int? serviceName; + String? time; + String? androidLink; + String? authenticationTokenID; + String? data; + bool? dataw; + int? dietType; + int? dietTypeID; + String? errorCode; + String? errorEndUserMessage; + String? errorEndUserMessageN; + String? errorMessage; + int? errorType; + int? foodCategory; + String? iOSLink; + bool? isAuthenticated; + int? mealOrderStatus; + int? mealType; + int? messageStatus; + int? numberOfResultRecords; + String? patientBlodType; + String? successMsg; + String? successMsgN; + String? vidaUpdatedResponse; + String? addAttSuccessList; + String? addAttachmentList; + String? bCDomain; + String? bCLogo; + BasicMemberInformationModel? basicMemberInformation; + bool? businessCardPrivilege; + String? calculateAbsenceDuration; + String? cancelHRTransactionLIst; + String? chatEmployeeLoginList; + String? companyBadge; + String? companyImage; + String? companyImageDescription; + String? companyImageURL; + String? companyMainCompany; + String? countryList; + String? createVacationRuleList; + String? deleteAttachmentList; + String? deleteVacationRuleList; + String? disableSessionList; + String? employeeQR; + String? forgetPasswordTokenID; + List? getAbsenceAttachmentsList; + List? getAbsenceAttendanceTypesList; + List? getAbsenceCollectionNotificationBodyList; + List? getAbsenceDffStructureList; + List? getAbsenceTransactionList; + List? getAccrualBalancesList; + List? getActionHistoryList; + List? getAddressDffStructureList; + List? getAddressNotificationBodyList; + List? getApprovesList; + List? getAttachementList; + List? getAttendanceTrackingList; + List? getBasicDetColsStructureList; + List? getBasicDetDffStructureList; + List? getBasicDetNtfBodyList; + List? getCEICollectionNotificationBodyList; + List? getCEIDFFStructureList; + List? getCEITransactionList; + List? getCcpDffStructureList; + List? getCcpOutputList; + List? getCcpTransactionsList; + List? getCcpTransactionsListNew; + List? getConcurrentProgramsList; + List? getContactColsStructureList; + List? getContactDetailsList; + List? getContactDffStructureList; + List? getContactNotificationBodyList; + List? getCountriesList; + List? getDayHoursTypeDetailsList; + List? getDeductionsList; + List? getDefaultValueList; + List? getEITCollectionNotificationBodyList; + List? getEITDFFStructureList; + List? getEITTransactionList; + List? getEarningsList; + List? getEmployeeAddressList; + List? getEmployeeBasicDetailsList; + List? getEmployeeContactsList; + List? getEmployeePhonesList; + List? getEmployeeSubordinatesList; + List? getFliexfieldStructureList; + List? getHrCollectionNotificationBodyList; + List? getHrTransactionList; + List? getItemCreationNtfBodyList; + List? getItemTypeNotificationsList; + List? getItemTypesList; + List? getLookupValuesList; + List? getMenuEntriesList; + List? getMoItemHistoryList; + List? getMoNotificationBodyList; + List? getNotificationButtonsList; + List? getNotificationReassignModeList; + List? getObjectValuesList; + List? getOpenMissingSwipesList; + List? getOpenNotificationsList; + List? getOpenNotificationsNumList; + List? getOpenPeriodDatesList; + List? getOrganizationsSalariesList; + List? getPaymentInformationList; + List? getPayslipList; + List? getPendingReqDetailsList; + List? getPendingReqFunctionsList; + List? getPerformanceAppraisalList; + List? getPhonesNotificationBodyList; + List? getPoItemHistoryList; + List? getPoNotificationBodyList; + List? getPrNotificationBodyList; + List? getQuotationAnalysisList; + List? getRFCEmployeeListList; + List? getRespondAttributeValueList; + List? getSITCollectionNotificationBodyList; + List? getSITDFFStructureList; + List? getSITTransactionList; + List? getScheduleShiftsDetailsList; + List? getShiftTypesList; + List? getStampMsNotificationBodyList; + List? getStampNsNotificationBodyList; + List? getSubordinatesAttdStatusList; + List? getSubordinatesLeavesList; + List? getSubordinatesLeavesTotalVacationsList; + List? getSummaryOfPaymentList; + List? getSwipesList; + List? getTermColsStructureList; + List? getTermDffStructureList; + List? getTermNotificationBodyList; + List? getTimeCardSummaryList; + List? getUserItemTypesList; + List? getVacationRulesList; + List? getVaccinationOnHandList; + List? getVaccinationsList; + List? getValueSetValuesList; + List? getWorkList; + String? hRCertificateTemplate; + String? imgURLsList; + String? insertApInv; + String? insertBooked; + String? insertEmpSwipesList; + String? insertJournal; + String? insertOrders; + String? intPortalGetEmployeeList; + bool? isDeviceTokenEmpty; + bool? isPasswordExpired; + bool? isRegisterAllowed; + bool? isRequriedValueSetEmpty; + bool? isUserSMSExcluded; + String? itemOnHand; + String? languageAvailable; + String? listSupplier; + String? listUserAgreement; + String? listEITStrucrure; + String? listItemImagesDetails; + String? listItemMaster; + String? listMedicineDetails; + String? listMenu; + String? listNewEmployees; + String? listRadScreen; + String? logInTokenID; + List? memberInformationList; + MemberLoginListModel? memberLoginList; + String? mohemmGetBusinessCardEnabledList; + List? mohemmGetFavoriteReplacementsList; + String? mohemmGetMobileDeviceInfobyEmpInfoList; + String? mohemmGetMobileLoginInfoList; + String? mohemmGetPatientIDList; + String? mohemmITGResponseItem; + bool? mohemmIsChangeIsActiveBusinessCardEnable; + bool? mohemmIsInsertBusinessCardEnable; + String? mohemmWifiPassword; + String? mohemmWifiSSID; + String? notificationAction; + String? notificationGetRespondAttributesList; + String? notificationRespondRolesList; + int? oracleOutPutNumber; + String? pASSWORDEXPIREDMSG; + String? pCOUNTRYCODE; + String? pCOUNTRYNAME; + String? pDESCFLEXCONTEXTCODE; + String? pDESCFLEXCONTEXTNAME; + Null? pForm; + String? pINFORMATION; + int? pMBLID; + String? pNUMOFSUBORDINATES; + String? pOPENNTFNUMBER; + String? pQUESTION; + int? pSESSIONID; + String? pSchema; + String? pharmacyStockAddPharmacyStockList; + String? pharmacyStockGetOnHandList; + List? privilegeList; + String? processTransactions; + String? registerUserNameList; + String? replacementList; + String? respondAttributesList; + String? respondRolesList; + String? resubmitAbsenceTransactionList; + String? resubmitEITTransactionList; + String? resubmitHrTransactionList; + String? sFHGetPoNotificationBodyList; + String? sFHGetPrNotificationBodyList; + String? startAbsenceApprovalProccess; + String? startAddressApprovalProcessList; + String? startBasicDetApprProcessList; + String? startCeiApprovalProcess; + String? startContactApprovalProcessList; + String? startEitApprovalProcess; + String? startHrApprovalProcessList; + String? startPhonesApprovalProcessList; + String? startSitApprovalProcess; + String? startTermApprovalProcessList; + String? submitAddressTransactionList; + String? submitBasicDetTransactionList; + String? submitCEITransactionList; + String? submitCcpTransactionList; + String? submitContactTransactionList; + String? submitEITTransactionList; + String? submitHrTransactionList; + String? submitPhonesTransactionList; + String? submitSITTransactionList; + String? submitTermTransactionList; + String? subordinatesOnLeavesList; + String? sumbitAbsenceTransactionList; + String? tokenID; + String? updateAttachmentList; + String? updateEmployeeImageList; + String? updateItemTypeSuccessList; + String? updateUserItemTypesList; + String? updateVacationRuleList; + String? vHREmployeeLoginList; + String? vHRGetEmployeeDetailsList; + String? vHRGetManagersDetailsList; + String? vHRGetProjectByCodeList; + bool? vHRIsVerificationCodeValid; + String? validateAbsenceTransactionList; + String? validateEITTransactionList; + String? validatePhonesTransactionList; + String? vrItemTypesList; + String? wFLookUpList; + String? eLearningGETEMPLOYEEPROFILEList; + String? eLearningLOGINList; + String? eLearningValidateLoginList; + String? eLearningValidate_LoginList; + String? ePharmacyGetItemOnHandList; + bool? isActiveCode; + bool? isSMSSent; + + GenericResponseModel( + {this.date, + this.languageID, + this.serviceName, + this.time, + this.androidLink, + this.authenticationTokenID, + this.data, + this.dataw, + this.dietType, + this.dietTypeID, + this.errorCode, + this.errorEndUserMessage, + this.errorEndUserMessageN, + this.errorMessage, + this.errorType, + this.foodCategory, + this.iOSLink, + this.isAuthenticated, + this.mealOrderStatus, + this.mealType, + this.messageStatus, + this.numberOfResultRecords, + this.patientBlodType, + this.successMsg, + this.successMsgN, + this.vidaUpdatedResponse, + this.addAttSuccessList, + this.addAttachmentList, + this.bCDomain, + this.bCLogo, + this.basicMemberInformation, + this.businessCardPrivilege, + this.calculateAbsenceDuration, + this.cancelHRTransactionLIst, + this.chatEmployeeLoginList, + this.companyBadge, + this.companyImage, + this.companyImageDescription, + this.companyImageURL, + this.companyMainCompany, + this.countryList, + this.createVacationRuleList, + this.deleteAttachmentList, + this.deleteVacationRuleList, + this.disableSessionList, + this.employeeQR, + this.forgetPasswordTokenID, + this.getAbsenceAttachmentsList, + this.getAbsenceAttendanceTypesList, + this.getAbsenceCollectionNotificationBodyList, + this.getAbsenceDffStructureList, + this.getAbsenceTransactionList, + this.getAccrualBalancesList, + this.getActionHistoryList, + this.getAddressDffStructureList, + this.getAddressNotificationBodyList, + this.getApprovesList, + this.getAttachementList, + this.getAttendanceTrackingList, + this.getBasicDetColsStructureList, + this.getBasicDetDffStructureList, + this.getBasicDetNtfBodyList, + this.getCEICollectionNotificationBodyList, + this.getCEIDFFStructureList, + this.getCEITransactionList, + this.getCcpDffStructureList, + this.getCcpOutputList, + this.getCcpTransactionsList, + this.getCcpTransactionsListNew, + this.getConcurrentProgramsList, + this.getContactColsStructureList, + this.getContactDetailsList, + this.getContactDffStructureList, + this.getContactNotificationBodyList, + this.getCountriesList, + this.getDayHoursTypeDetailsList, + this.getDeductionsList, + this.getDefaultValueList, + this.getEITCollectionNotificationBodyList, + this.getEITDFFStructureList, + this.getEITTransactionList, + this.getEarningsList, + this.getEmployeeAddressList, + this.getEmployeeBasicDetailsList, + this.getEmployeeContactsList, + this.getEmployeePhonesList, + this.getEmployeeSubordinatesList, + this.getFliexfieldStructureList, + this.getHrCollectionNotificationBodyList, + this.getHrTransactionList, + this.getItemCreationNtfBodyList, + this.getItemTypeNotificationsList, + this.getItemTypesList, + this.getLookupValuesList, + this.getMenuEntriesList, + this.getMoItemHistoryList, + this.getMoNotificationBodyList, + this.getNotificationButtonsList, + this.getNotificationReassignModeList, + this.getObjectValuesList, + this.getOpenMissingSwipesList, + this.getOpenNotificationsList, + this.getOpenNotificationsNumList, + this.getOpenPeriodDatesList, + this.getOrganizationsSalariesList, + this.getPaymentInformationList, + this.getPayslipList, + this.getPendingReqDetailsList, + this.getPendingReqFunctionsList, + this.getPerformanceAppraisalList, + this.getPhonesNotificationBodyList, + this.getPoItemHistoryList, + this.getPoNotificationBodyList, + this.getPrNotificationBodyList, + this.getQuotationAnalysisList, + this.getRFCEmployeeListList, + this.getRespondAttributeValueList, + this.getSITCollectionNotificationBodyList, + this.getSITDFFStructureList, + this.getSITTransactionList, + this.getScheduleShiftsDetailsList, + this.getShiftTypesList, + this.getStampMsNotificationBodyList, + this.getStampNsNotificationBodyList, + this.getSubordinatesAttdStatusList, + this.getSubordinatesLeavesList, + this.getSubordinatesLeavesTotalVacationsList, + this.getSummaryOfPaymentList, + this.getSwipesList, + this.getTermColsStructureList, + this.getTermDffStructureList, + this.getTermNotificationBodyList, + this.getTimeCardSummaryList, + this.getUserItemTypesList, + this.getVacationRulesList, + this.getVaccinationOnHandList, + this.getVaccinationsList, + this.getValueSetValuesList, + this.getWorkList, + this.hRCertificateTemplate, + this.imgURLsList, + this.insertApInv, + this.insertBooked, + this.insertEmpSwipesList, + this.insertJournal, + this.insertOrders, + this.intPortalGetEmployeeList, + this.isDeviceTokenEmpty, + this.isPasswordExpired, + this.isRegisterAllowed, + this.isRequriedValueSetEmpty, + this.isUserSMSExcluded, + this.itemOnHand, + this.languageAvailable, + this.listSupplier, + this.listUserAgreement, + this.listEITStrucrure, + this.listItemImagesDetails, + this.listItemMaster, + this.listMedicineDetails, + this.listMenu, + this.listNewEmployees, + this.listRadScreen, + this.logInTokenID, + this.memberInformationList, + this.memberLoginList, + this.mohemmGetBusinessCardEnabledList, + this.mohemmGetFavoriteReplacementsList, + this.mohemmGetMobileDeviceInfobyEmpInfoList, + this.mohemmGetMobileLoginInfoList, + this.mohemmGetPatientIDList, + this.mohemmITGResponseItem, + this.mohemmIsChangeIsActiveBusinessCardEnable, + this.mohemmIsInsertBusinessCardEnable, + this.mohemmWifiPassword, + this.mohemmWifiSSID, + this.notificationAction, + this.notificationGetRespondAttributesList, + this.notificationRespondRolesList, + this.oracleOutPutNumber, + this.pASSWORDEXPIREDMSG, + this.pCOUNTRYCODE, + this.pCOUNTRYNAME, + this.pDESCFLEXCONTEXTCODE, + this.pDESCFLEXCONTEXTNAME, + this.pForm, + this.pINFORMATION, + this.pMBLID, + this.pNUMOFSUBORDINATES, + this.pOPENNTFNUMBER, + this.pQUESTION, + this.pSESSIONID, + this.pSchema, + this.pharmacyStockAddPharmacyStockList, + this.pharmacyStockGetOnHandList, + this.privilegeList, + this.processTransactions, + this.registerUserNameList, + this.replacementList, + this.respondAttributesList, + this.respondRolesList, + this.resubmitAbsenceTransactionList, + this.resubmitEITTransactionList, + this.resubmitHrTransactionList, + this.sFHGetPoNotificationBodyList, + this.sFHGetPrNotificationBodyList, + this.startAbsenceApprovalProccess, + this.startAddressApprovalProcessList, + this.startBasicDetApprProcessList, + this.startCeiApprovalProcess, + this.startContactApprovalProcessList, + this.startEitApprovalProcess, + this.startHrApprovalProcessList, + this.startPhonesApprovalProcessList, + this.startSitApprovalProcess, + this.startTermApprovalProcessList, + this.submitAddressTransactionList, + this.submitBasicDetTransactionList, + this.submitCEITransactionList, + this.submitCcpTransactionList, + this.submitContactTransactionList, + this.submitEITTransactionList, + this.submitHrTransactionList, + this.submitPhonesTransactionList, + this.submitSITTransactionList, + this.submitTermTransactionList, + this.subordinatesOnLeavesList, + this.sumbitAbsenceTransactionList, + this.tokenID, + this.updateAttachmentList, + this.updateEmployeeImageList, + this.updateItemTypeSuccessList, + this.updateUserItemTypesList, + this.updateVacationRuleList, + this.vHREmployeeLoginList, + this.vHRGetEmployeeDetailsList, + this.vHRGetManagersDetailsList, + this.vHRGetProjectByCodeList, + this.vHRIsVerificationCodeValid, + this.validateAbsenceTransactionList, + this.validateEITTransactionList, + this.validatePhonesTransactionList, + this.vrItemTypesList, + this.wFLookUpList, + this.eLearningGETEMPLOYEEPROFILEList, + this.eLearningLOGINList, + this.eLearningValidateLoginList, + this.eLearningValidate_LoginList, + this.ePharmacyGetItemOnHandList, + this.isActiveCode, + this.isSMSSent}); + + GenericResponseModel.fromJson(Map json) { + date = json['Date']; + languageID = json['LanguageID']; + serviceName = json['ServiceName']; + time = json['Time']; + androidLink = json['AndroidLink']; + authenticationTokenID = json['AuthenticationTokenID']; + data = json['Data']; + dataw = json['Dataw']; + dietType = json['DietType']; + dietTypeID = json['DietTypeID']; + errorCode = json['ErrorCode']; + errorEndUserMessage = json['ErrorEndUserMessage']; + errorEndUserMessageN = json['ErrorEndUserMessageN']; + errorMessage = json['ErrorMessage']; + errorType = json['ErrorType']; + foodCategory = json['FoodCategory']; + iOSLink = json['IOSLink']; + isAuthenticated = json['IsAuthenticated']; + mealOrderStatus = json['MealOrderStatus']; + mealType = json['MealType']; + messageStatus = json['MessageStatus']; + numberOfResultRecords = json['NumberOfResultRecords']; + patientBlodType = json['PatientBlodType']; + successMsg = json['SuccessMsg']; + successMsgN = json['SuccessMsgN']; + vidaUpdatedResponse = json['VidaUpdatedResponse']; + addAttSuccessList = json['AddAttSuccessList']; + addAttachmentList = json['AddAttachment_List']; + bCDomain = json['BC_Domain']; + bCLogo = json['BC_Logo']; + basicMemberInformation = json['BasicMemberInformation'] != null ? new BasicMemberInformationModel.fromJson(json['BasicMemberInformation']) : null; + businessCardPrivilege = json['BusinessCardPrivilege']; + calculateAbsenceDuration = json['CalculateAbsenceDuration']; + cancelHRTransactionLIst = json['CancelHRTransactionLIst']; + chatEmployeeLoginList = json['Chat_EmployeeLoginList']; + companyBadge = json['CompanyBadge']; + companyImage = json['CompanyImage']; + companyImageDescription = json['CompanyImageDescription']; + companyImageURL = json['CompanyImageURL']; + companyMainCompany = json['CompanyMainCompany']; + countryList = json['CountryList']; + createVacationRuleList = json['CreateVacationRuleList']; + deleteAttachmentList = json['DeleteAttachmentList']; + deleteVacationRuleList = json['DeleteVacationRuleList']; + disableSessionList = json['DisableSessionList']; + employeeQR = json['EmployeeQR']; + forgetPasswordTokenID = json['ForgetPasswordTokenID']; + getAbsenceAttachmentsList = json['GetAbsenceAttachmentsList']; + getAbsenceAttendanceTypesList = json['GetAbsenceAttendanceTypesList']; + getAbsenceCollectionNotificationBodyList = json['GetAbsenceCollectionNotificationBodyList']; + getAbsenceDffStructureList = json['GetAbsenceDffStructureList']; + getAbsenceTransactionList = json['GetAbsenceTransactionList']; + getAccrualBalancesList = json['GetAccrualBalancesList']; + getActionHistoryList = json['GetActionHistoryList']; + getAddressDffStructureList = json['GetAddressDffStructureList']; + getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; + getApprovesList = json['GetApprovesList']; + getAttachementList = json['GetAttachementList']; + getAttendanceTrackingList = json['GetAttendanceTrackingList']; + getBasicDetColsStructureList = json['GetBasicDetColsStructureList']; + getBasicDetDffStructureList = json['GetBasicDetDffStructureList']; + getBasicDetNtfBodyList = json['GetBasicDetNtfBodyList']; + getCEICollectionNotificationBodyList = json['GetCEICollectionNotificationBodyList']; + getCEIDFFStructureList = json['GetCEIDFFStructureList']; + getCEITransactionList = json['GetCEITransactionList']; + getCcpDffStructureList = json['GetCcpDffStructureList']; + getCcpOutputList = json['GetCcpOutputList']; + getCcpTransactionsList = json['GetCcpTransactionsList']; + getCcpTransactionsListNew = json['GetCcpTransactionsList_New']; + getConcurrentProgramsList = json['GetConcurrentProgramsList']; + getContactColsStructureList = json['GetContactColsStructureList']; + getContactDetailsList = json['GetContactDetailsList']; + getContactDffStructureList = json['GetContactDffStructureList']; + getContactNotificationBodyList = json['GetContactNotificationBodyList']; + getCountriesList = json['GetCountriesList']; + getDayHoursTypeDetailsList = json['GetDayHoursTypeDetailsList']; + getDeductionsList = json['GetDeductionsList']; + getDefaultValueList = json['GetDefaultValueList']; + getEITCollectionNotificationBodyList = json['GetEITCollectionNotificationBodyList']; + getEITDFFStructureList = json['GetEITDFFStructureList']; + getEITTransactionList = json['GetEITTransactionList']; + getEarningsList = json['GetEarningsList']; + getEmployeeAddressList = json['GetEmployeeAddressList']; + getEmployeeBasicDetailsList = json['GetEmployeeBasicDetailsList']; + getEmployeeContactsList = json['GetEmployeeContactsList']; + getEmployeePhonesList = json['GetEmployeePhonesList']; + getEmployeeSubordinatesList = json['GetEmployeeSubordinatesList']; + getFliexfieldStructureList = json['GetFliexfieldStructureList']; + getHrCollectionNotificationBodyList = json['GetHrCollectionNotificationBodyList']; + getHrTransactionList = json['GetHrTransactionList']; + getItemCreationNtfBodyList = json['GetItemCreationNtfBodyList']; + getItemTypeNotificationsList = json['GetItemTypeNotificationsList']; + getItemTypesList = json['GetItemTypesList']; + getLookupValuesList = json['GetLookupValuesList']; + getMenuEntriesList = json['GetMenuEntriesList']; + getMoItemHistoryList = json['GetMoItemHistoryList']; + getMoNotificationBodyList = json['GetMoNotificationBodyList']; + getNotificationButtonsList = json['GetNotificationButtonsList']; + getNotificationReassignModeList = json['GetNotificationReassignModeList']; + getObjectValuesList = json['GetObjectValuesList']; + getOpenMissingSwipesList = json['GetOpenMissingSwipesList']; + getOpenNotificationsList = json['GetOpenNotificationsList']; + getOpenNotificationsNumList = json['GetOpenNotificationsNumList']; + getOpenPeriodDatesList = json['GetOpenPeriodDatesList']; + getOrganizationsSalariesList = json['GetOrganizationsSalariesList']; + getPaymentInformationList = json['GetPaymentInformationList']; + getPayslipList = json['GetPayslipList']; + getPendingReqDetailsList = json['GetPendingReqDetailsList']; + getPendingReqFunctionsList = json['GetPendingReqFunctionsList']; + getPerformanceAppraisalList = json['GetPerformanceAppraisalList']; + getPhonesNotificationBodyList = json['GetPhonesNotificationBodyList']; + getPoItemHistoryList = json['GetPoItemHistoryList']; + getPoNotificationBodyList = json['GetPoNotificationBodyList']; + getPrNotificationBodyList = json['GetPrNotificationBodyList']; + getQuotationAnalysisList = json['GetQuotationAnalysisList']; + getRFCEmployeeListList = json['GetRFCEmployeeListList']; + getRespondAttributeValueList = json['GetRespondAttributeValueList']; + getSITCollectionNotificationBodyList = json['GetSITCollectionNotificationBodyList']; + getSITDFFStructureList = json['GetSITDFFStructureList']; + getSITTransactionList = json['GetSITTransactionList']; + getScheduleShiftsDetailsList = json['GetScheduleShiftsDetailsList']; + getShiftTypesList = json['GetShiftTypesList']; + getStampMsNotificationBodyList = json['GetStampMsNotificationBodyList']; + getStampNsNotificationBodyList = json['GetStampNsNotificationBodyList']; + getSubordinatesAttdStatusList = json['GetSubordinatesAttdStatusList']; + getSubordinatesLeavesList = json['GetSubordinatesLeavesList']; + getSubordinatesLeavesTotalVacationsList = json['GetSubordinatesLeavesTotalVacationsList']; + getSummaryOfPaymentList = json['GetSummaryOfPaymentList']; + getSwipesList = json['GetSwipesList']; + getTermColsStructureList = json['GetTermColsStructureList']; + getTermDffStructureList = json['GetTermDffStructureList']; + getTermNotificationBodyList = json['GetTermNotificationBodyList']; + getTimeCardSummaryList = json['GetTimeCardSummaryList']; + getUserItemTypesList = json['GetUserItemTypesList']; + getVacationRulesList = json['GetVacationRulesList']; + getVaccinationOnHandList = json['GetVaccinationOnHandList']; + getVaccinationsList = json['GetVaccinationsList']; + getValueSetValuesList = json['GetValueSetValuesList']; + getWorkList = json['GetWorkList']; + hRCertificateTemplate = json['HRCertificateTemplate']; + imgURLsList = json['ImgURLsList']; + insertApInv = json['InsertApInv']; + insertBooked = json['InsertBooked']; + insertEmpSwipesList = json['InsertEmpSwipesList']; + insertJournal = json['InsertJournal']; + insertOrders = json['InsertOrders']; + intPortalGetEmployeeList = json['IntPortalGetEmployeeList']; + isDeviceTokenEmpty = json['IsDeviceTokenEmpty']; + isPasswordExpired = json['IsPasswordExpired']; + isRegisterAllowed = json['IsRegisterAllowed']; + isRequriedValueSetEmpty = json['IsRequriedValueSetEmpty']; + isUserSMSExcluded = json['IsUserSMSExcluded']; + itemOnHand = json['ItemOnHand']; + languageAvailable = json['LanguageAvailable']; + listSupplier = json['ListSupplier']; + listUserAgreement = json['ListUserAgreement']; + listEITStrucrure = json['List_EITStrucrure']; + listItemImagesDetails = json['List_ItemImagesDetails']; + listItemMaster = json['List_ItemMaster']; + listMedicineDetails = json['List_MedicineDetails']; + listMenu = json['List_Menu']; + listNewEmployees = json['List_NewEmployees']; + listRadScreen = json['List_RadScreen']; + logInTokenID = json['LogInTokenID']; + if (json['MemberInformationList'] != null) { + memberInformationList = []; + json['MemberInformationList'].forEach((v) { + memberInformationList!.add(MemberInformationListModel.fromJson(v)); + }); + } + memberLoginList = json['MemberLoginList'] != null ? MemberLoginListModel.fromJson(json['MemberLoginList']) : null; + mohemmGetBusinessCardEnabledList = json['Mohemm_GetBusinessCardEnabledList']; + mohemmGetFavoriteReplacementsList = json['Mohemm_GetFavoriteReplacementsList']; + mohemmGetMobileDeviceInfobyEmpInfoList = json['Mohemm_GetMobileDeviceInfobyEmpInfoList']; + mohemmGetMobileLoginInfoList = json['Mohemm_GetMobileLoginInfoList']; + mohemmGetPatientIDList = json['Mohemm_GetPatientID_List']; + mohemmITGResponseItem = json['Mohemm_ITG_ResponseItem']; + mohemmIsChangeIsActiveBusinessCardEnable = json['Mohemm_IsChangeIsActiveBusinessCardEnable']; + mohemmIsInsertBusinessCardEnable = json['Mohemm_IsInsertBusinessCardEnable']; + mohemmWifiPassword = json['Mohemm_Wifi_Password']; + mohemmWifiSSID = json['Mohemm_Wifi_SSID']; + notificationAction = json['NotificationAction']; + notificationGetRespondAttributesList = json['NotificationGetRespondAttributesList']; + notificationRespondRolesList = json['NotificationRespondRolesList']; + oracleOutPutNumber = json['OracleOutPutNumber']; + pASSWORDEXPIREDMSG = json['PASSWORD_EXPIRED_MSG']; + pCOUNTRYCODE = json['P_COUNTRY_CODE']; + pCOUNTRYNAME = json['P_COUNTRY_NAME']; + pDESCFLEXCONTEXTCODE = json['P_DESC_FLEX_CONTEXT_CODE']; + pDESCFLEXCONTEXTNAME = json['P_DESC_FLEX_CONTEXT_NAME']; + pForm = json['P_Form']; + pINFORMATION = json['P_INFORMATION']; + pMBLID = json['P_MBL_ID']; + pNUMOFSUBORDINATES = json['P_NUM_OF_SUBORDINATES']; + pOPENNTFNUMBER = json['P_OPEN_NTF_NUMBER']; + pQUESTION = json['P_QUESTION']; + pSESSIONID = json['P_SESSION_ID']; + pSchema = json['P_Schema']; + pharmacyStockAddPharmacyStockList = json['PharmacyStock_AddPharmacyStockList']; + pharmacyStockGetOnHandList = json['PharmacyStock_GetOnHandList']; + + if (json['Privilege_List'] != null) { + privilegeList = []; + json['Privilege_List'].forEach((v) { + privilegeList!.add(PrivilegeListModel.fromJson(v)); + }); + } + + processTransactions = json['ProcessTransactions']; + registerUserNameList = json['RegisterUserNameList']; + replacementList = json['ReplacementList']; + respondAttributesList = json['RespondAttributesList']; + respondRolesList = json['RespondRolesList']; + resubmitAbsenceTransactionList = json['ResubmitAbsenceTransactionList']; + resubmitEITTransactionList = json['ResubmitEITTransactionList']; + resubmitHrTransactionList = json['ResubmitHrTransactionList']; + sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList']; + sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList']; + startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess']; + startAddressApprovalProcessList = json['StartAddressApprovalProcessList']; + startBasicDetApprProcessList = json['StartBasicDetApprProcessList']; + startCeiApprovalProcess = json['StartCeiApprovalProcess']; + startContactApprovalProcessList = json['StartContactApprovalProcessList']; + startEitApprovalProcess = json['StartEitApprovalProcess']; + startHrApprovalProcessList = json['StartHrApprovalProcessList']; + startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList']; + startSitApprovalProcess = json['StartSitApprovalProcess']; + startTermApprovalProcessList = json['StartTermApprovalProcessList']; + submitAddressTransactionList = json['SubmitAddressTransactionList']; + submitBasicDetTransactionList = json['SubmitBasicDetTransactionList']; + submitCEITransactionList = json['SubmitCEITransactionList']; + submitCcpTransactionList = json['SubmitCcpTransactionList']; + submitContactTransactionList = json['SubmitContactTransactionList']; + submitEITTransactionList = json['SubmitEITTransactionList']; + submitHrTransactionList = json['SubmitHrTransactionList']; + submitPhonesTransactionList = json['SubmitPhonesTransactionList']; + submitSITTransactionList = json['SubmitSITTransactionList']; + submitTermTransactionList = json['SubmitTermTransactionList']; + subordinatesOnLeavesList = json['SubordinatesOnLeavesList']; + sumbitAbsenceTransactionList = json['SumbitAbsenceTransactionList']; + tokenID = json['TokenID']; + updateAttachmentList = json['UpdateAttachmentList']; + updateEmployeeImageList = json['UpdateEmployeeImageList']; + updateItemTypeSuccessList = json['UpdateItemTypeSuccessList']; + updateUserItemTypesList = json['UpdateUserItemTypesList']; + updateVacationRuleList = json['UpdateVacationRuleList']; + vHREmployeeLoginList = json['VHR_EmployeeLoginList']; + vHRGetEmployeeDetailsList = json['VHR_GetEmployeeDetailsList']; + vHRGetManagersDetailsList = json['VHR_GetManagersDetailsList']; + vHRGetProjectByCodeList = json['VHR_GetProjectByCodeList']; + vHRIsVerificationCodeValid = json['VHR_IsVerificationCodeValid']; + validateAbsenceTransactionList = json['ValidateAbsenceTransactionList']; + validateEITTransactionList = json['ValidateEITTransactionList']; + validatePhonesTransactionList = json['ValidatePhonesTransactionList']; + vrItemTypesList = json['VrItemTypesList']; + wFLookUpList = json['WFLookUpList']; + eLearningGETEMPLOYEEPROFILEList = json['eLearning_GET_EMPLOYEE_PROFILEList']; + eLearningLOGINList = json['eLearning_LOGINList']; + eLearningValidateLoginList = json['eLearning_ValidateLoginList']; + eLearningValidate_LoginList = json['eLearning_Validate_LoginList']; + ePharmacyGetItemOnHandList = json['ePharmacy_GetItemOnHandList']; + isActiveCode = json['isActiveCode']; + isSMSSent = json['isSMSSent']; + } + + Map toJson() { + final Map data = new Map(); + data['Date'] = this.date; + data['LanguageID'] = this.languageID; + data['ServiceName'] = this.serviceName; + data['Time'] = this.time; + data['AndroidLink'] = this.androidLink; + data['AuthenticationTokenID'] = this.authenticationTokenID; + data['Data'] = this.data; + data['Dataw'] = this.dataw; + data['DietType'] = this.dietType; + data['DietTypeID'] = this.dietTypeID; + data['ErrorCode'] = this.errorCode; + data['ErrorEndUserMessage'] = this.errorEndUserMessage; + data['ErrorEndUserMessageN'] = this.errorEndUserMessageN; + data['ErrorMessage'] = this.errorMessage; + data['ErrorType'] = this.errorType; + data['FoodCategory'] = this.foodCategory; + data['IOSLink'] = this.iOSLink; + data['IsAuthenticated'] = this.isAuthenticated; + data['MealOrderStatus'] = this.mealOrderStatus; + data['MealType'] = this.mealType; + data['MessageStatus'] = this.messageStatus; + data['NumberOfResultRecords'] = this.numberOfResultRecords; + data['PatientBlodType'] = this.patientBlodType; + data['SuccessMsg'] = this.successMsg; + data['SuccessMsgN'] = this.successMsgN; + data['VidaUpdatedResponse'] = this.vidaUpdatedResponse; + data['AddAttSuccessList'] = this.addAttSuccessList; + data['AddAttachment_List'] = this.addAttachmentList; + data['BC_Domain'] = this.bCDomain; + data['BC_Logo'] = this.bCLogo; + if (this.basicMemberInformation != null) { + data['BasicMemberInformation'] = this.basicMemberInformation!.toJson(); + } + data['BusinessCardPrivilege'] = this.businessCardPrivilege; + data['CalculateAbsenceDuration'] = this.calculateAbsenceDuration; + data['CancelHRTransactionLIst'] = this.cancelHRTransactionLIst; + data['Chat_EmployeeLoginList'] = this.chatEmployeeLoginList; + data['CompanyBadge'] = this.companyBadge; + data['CompanyImage'] = this.companyImage; + data['CompanyImageDescription'] = this.companyImageDescription; + data['CompanyImageURL'] = this.companyImageURL; + data['CompanyMainCompany'] = this.companyMainCompany; + data['CountryList'] = this.countryList; + data['CreateVacationRuleList'] = this.createVacationRuleList; + data['DeleteAttachmentList'] = this.deleteAttachmentList; + data['DeleteVacationRuleList'] = this.deleteVacationRuleList; + data['DisableSessionList'] = this.disableSessionList; + data['EmployeeQR'] = this.employeeQR; + data['ForgetPasswordTokenID'] = this.forgetPasswordTokenID; + data['GetAbsenceAttachmentsList'] = this.getAbsenceAttachmentsList; + data['GetAbsenceAttendanceTypesList'] = this.getAbsenceAttendanceTypesList; + data['GetAbsenceCollectionNotificationBodyList'] = this.getAbsenceCollectionNotificationBodyList; + data['GetAbsenceDffStructureList'] = this.getAbsenceDffStructureList; + data['GetAbsenceTransactionList'] = this.getAbsenceTransactionList; + data['GetAccrualBalancesList'] = this.getAccrualBalancesList; + data['GetActionHistoryList'] = this.getActionHistoryList; + data['GetAddressDffStructureList'] = this.getAddressDffStructureList; + data['GetAddressNotificationBodyList'] = this.getAddressNotificationBodyList; + data['GetApprovesList'] = this.getApprovesList; + data['GetAttachementList'] = this.getAttachementList; + data['GetAttendanceTrackingList'] = this.getAttendanceTrackingList; + data['GetBasicDetColsStructureList'] = this.getBasicDetColsStructureList; + data['GetBasicDetDffStructureList'] = this.getBasicDetDffStructureList; + data['GetBasicDetNtfBodyList'] = this.getBasicDetNtfBodyList; + data['GetCEICollectionNotificationBodyList'] = this.getCEICollectionNotificationBodyList; + data['GetCEIDFFStructureList'] = this.getCEIDFFStructureList; + data['GetCEITransactionList'] = this.getCEITransactionList; + data['GetCcpDffStructureList'] = this.getCcpDffStructureList; + data['GetCcpOutputList'] = this.getCcpOutputList; + data['GetCcpTransactionsList'] = this.getCcpTransactionsList; + data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew; + data['GetConcurrentProgramsList'] = this.getConcurrentProgramsList; + data['GetContactColsStructureList'] = this.getContactColsStructureList; + data['GetContactDetailsList'] = this.getContactDetailsList; + data['GetContactDffStructureList'] = this.getContactDffStructureList; + data['GetContactNotificationBodyList'] = this.getContactNotificationBodyList; + data['GetCountriesList'] = this.getCountriesList; + data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList; + data['GetDeductionsList'] = this.getDeductionsList; + data['GetDefaultValueList'] = this.getDefaultValueList; + data['GetEITCollectionNotificationBodyList'] = this.getEITCollectionNotificationBodyList; + data['GetEITDFFStructureList'] = this.getEITDFFStructureList; + data['GetEITTransactionList'] = this.getEITTransactionList; + data['GetEarningsList'] = this.getEarningsList; + data['GetEmployeeAddressList'] = this.getEmployeeAddressList; + data['GetEmployeeBasicDetailsList'] = this.getEmployeeBasicDetailsList; + data['GetEmployeeContactsList'] = this.getEmployeeContactsList; + data['GetEmployeePhonesList'] = this.getEmployeePhonesList; + data['GetEmployeeSubordinatesList'] = this.getEmployeeSubordinatesList; + data['GetFliexfieldStructureList'] = this.getFliexfieldStructureList; + data['GetHrCollectionNotificationBodyList'] = this.getHrCollectionNotificationBodyList; + data['GetHrTransactionList'] = this.getHrTransactionList; + data['GetItemCreationNtfBodyList'] = this.getItemCreationNtfBodyList; + data['GetItemTypeNotificationsList'] = this.getItemTypeNotificationsList; + data['GetItemTypesList'] = this.getItemTypesList; + data['GetLookupValuesList'] = this.getLookupValuesList; + data['GetMenuEntriesList'] = this.getMenuEntriesList; + data['GetMoItemHistoryList'] = this.getMoItemHistoryList; + data['GetMoNotificationBodyList'] = this.getMoNotificationBodyList; + data['GetNotificationButtonsList'] = this.getNotificationButtonsList; + data['GetNotificationReassignModeList'] = this.getNotificationReassignModeList; + data['GetObjectValuesList'] = this.getObjectValuesList; + data['GetOpenMissingSwipesList'] = this.getOpenMissingSwipesList; + data['GetOpenNotificationsList'] = this.getOpenNotificationsList; + data['GetOpenNotificationsNumList'] = this.getOpenNotificationsNumList; + data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList; + data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList; + data['GetPaymentInformationList'] = this.getPaymentInformationList; + data['GetPayslipList'] = this.getPayslipList; + data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList; + data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList; + data['GetPerformanceAppraisalList'] = this.getPerformanceAppraisalList; + data['GetPhonesNotificationBodyList'] = this.getPhonesNotificationBodyList; + data['GetPoItemHistoryList'] = this.getPoItemHistoryList; + data['GetPoNotificationBodyList'] = this.getPoNotificationBodyList; + data['GetPrNotificationBodyList'] = this.getPrNotificationBodyList; + data['GetQuotationAnalysisList'] = this.getQuotationAnalysisList; + data['GetRFCEmployeeListList'] = this.getRFCEmployeeListList; + data['GetRespondAttributeValueList'] = this.getRespondAttributeValueList; + data['GetSITCollectionNotificationBodyList'] = this.getSITCollectionNotificationBodyList; + data['GetSITDFFStructureList'] = this.getSITDFFStructureList; + data['GetSITTransactionList'] = this.getSITTransactionList; + data['GetScheduleShiftsDetailsList'] = this.getScheduleShiftsDetailsList; + data['GetShiftTypesList'] = this.getShiftTypesList; + data['GetStampMsNotificationBodyList'] = this.getStampMsNotificationBodyList; + data['GetStampNsNotificationBodyList'] = this.getStampNsNotificationBodyList; + data['GetSubordinatesAttdStatusList'] = this.getSubordinatesAttdStatusList; + data['GetSubordinatesLeavesList'] = this.getSubordinatesLeavesList; + data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList; + data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList; + data['GetSwipesList'] = this.getSwipesList; + data['GetTermColsStructureList'] = this.getTermColsStructureList; + data['GetTermDffStructureList'] = this.getTermDffStructureList; + data['GetTermNotificationBodyList'] = this.getTermNotificationBodyList; + data['GetTimeCardSummaryList'] = this.getTimeCardSummaryList; + data['GetUserItemTypesList'] = this.getUserItemTypesList; + data['GetVacationRulesList'] = this.getVacationRulesList; + data['GetVaccinationOnHandList'] = this.getVaccinationOnHandList; + data['GetVaccinationsList'] = this.getVaccinationsList; + data['GetValueSetValuesList'] = this.getValueSetValuesList; + data['GetWorkList'] = this.getWorkList; + data['HRCertificateTemplate'] = this.hRCertificateTemplate; + data['ImgURLsList'] = this.imgURLsList; + data['InsertApInv'] = this.insertApInv; + data['InsertBooked'] = this.insertBooked; + data['InsertEmpSwipesList'] = this.insertEmpSwipesList; + data['InsertJournal'] = this.insertJournal; + data['InsertOrders'] = this.insertOrders; + data['IntPortalGetEmployeeList'] = this.intPortalGetEmployeeList; + data['IsDeviceTokenEmpty'] = this.isDeviceTokenEmpty; + data['IsPasswordExpired'] = this.isPasswordExpired; + data['IsRegisterAllowed'] = this.isRegisterAllowed; + data['IsRequriedValueSetEmpty'] = this.isRequriedValueSetEmpty; + data['IsUserSMSExcluded'] = this.isUserSMSExcluded; + data['ItemOnHand'] = this.itemOnHand; + data['LanguageAvailable'] = this.languageAvailable; + data['ListSupplier'] = this.listSupplier; + data['ListUserAgreement'] = this.listUserAgreement; + data['List_EITStrucrure'] = this.listEITStrucrure; + data['List_ItemImagesDetails'] = this.listItemImagesDetails; + data['List_ItemMaster'] = this.listItemMaster; + data['List_MedicineDetails'] = this.listMedicineDetails; + data['List_Menu'] = this.listMenu; + data['List_NewEmployees'] = this.listNewEmployees; + data['List_RadScreen'] = this.listRadScreen; + data['LogInTokenID'] = this.logInTokenID; + if (this.memberInformationList != null) { + data['MemberInformationList'] = this.memberInformationList!.map((v) => v.toJson()).toList(); + } + data['MemberLoginList'] = this.memberLoginList; + data['Mohemm_GetBusinessCardEnabledList'] = this.mohemmGetBusinessCardEnabledList; + data['Mohemm_GetFavoriteReplacementsList'] = this.mohemmGetFavoriteReplacementsList; + data['Mohemm_GetMobileDeviceInfobyEmpInfoList'] = this.mohemmGetMobileDeviceInfobyEmpInfoList; + data['Mohemm_GetMobileLoginInfoList'] = this.mohemmGetMobileLoginInfoList; + data['Mohemm_GetPatientID_List'] = this.mohemmGetPatientIDList; + data['Mohemm_ITG_ResponseItem'] = this.mohemmITGResponseItem; + data['Mohemm_IsChangeIsActiveBusinessCardEnable'] = this.mohemmIsChangeIsActiveBusinessCardEnable; + data['Mohemm_IsInsertBusinessCardEnable'] = this.mohemmIsInsertBusinessCardEnable; + data['Mohemm_Wifi_Password'] = this.mohemmWifiPassword; + data['Mohemm_Wifi_SSID'] = this.mohemmWifiSSID; + data['NotificationAction'] = this.notificationAction; + data['NotificationGetRespondAttributesList'] = this.notificationGetRespondAttributesList; + data['NotificationRespondRolesList'] = this.notificationRespondRolesList; + data['OracleOutPutNumber'] = this.oracleOutPutNumber; + data['PASSWORD_EXPIRED_MSG'] = this.pASSWORDEXPIREDMSG; + data['P_COUNTRY_CODE'] = this.pCOUNTRYCODE; + data['P_COUNTRY_NAME'] = this.pCOUNTRYNAME; + data['P_DESC_FLEX_CONTEXT_CODE'] = this.pDESCFLEXCONTEXTCODE; + data['P_DESC_FLEX_CONTEXT_NAME'] = this.pDESCFLEXCONTEXTNAME; + data['P_Form'] = this.pForm; + data['P_INFORMATION'] = this.pINFORMATION; + data['P_MBL_ID'] = this.pMBLID; + data['P_NUM_OF_SUBORDINATES'] = this.pNUMOFSUBORDINATES; + data['P_OPEN_NTF_NUMBER'] = this.pOPENNTFNUMBER; + data['P_QUESTION'] = this.pQUESTION; + data['P_SESSION_ID'] = this.pSESSIONID; + data['P_Schema'] = this.pSchema; + data['PharmacyStock_AddPharmacyStockList'] = this.pharmacyStockAddPharmacyStockList; + data['PharmacyStock_GetOnHandList'] = this.pharmacyStockGetOnHandList; + if (this.privilegeList != null) { + data['Privilege_List'] = this.privilegeList!.map((v) => v.toJson()).toList(); + } + data['ProcessTransactions'] = this.processTransactions; + data['RegisterUserNameList'] = this.registerUserNameList; + data['ReplacementList'] = this.replacementList; + data['RespondAttributesList'] = this.respondAttributesList; + data['RespondRolesList'] = this.respondRolesList; + data['ResubmitAbsenceTransactionList'] = this.resubmitAbsenceTransactionList; + data['ResubmitEITTransactionList'] = this.resubmitEITTransactionList; + data['ResubmitHrTransactionList'] = this.resubmitHrTransactionList; + data['SFH_GetPoNotificationBodyList'] = this.sFHGetPoNotificationBodyList; + data['SFH_GetPrNotificationBodyList'] = this.sFHGetPrNotificationBodyList; + data['StartAbsenceApprovalProccess'] = this.startAbsenceApprovalProccess; + data['StartAddressApprovalProcessList'] = this.startAddressApprovalProcessList; + data['StartBasicDetApprProcessList'] = this.startBasicDetApprProcessList; + data['StartCeiApprovalProcess'] = this.startCeiApprovalProcess; + data['StartContactApprovalProcessList'] = this.startContactApprovalProcessList; + data['StartEitApprovalProcess'] = this.startEitApprovalProcess; + data['StartHrApprovalProcessList'] = this.startHrApprovalProcessList; + data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList; + data['StartSitApprovalProcess'] = this.startSitApprovalProcess; + data['StartTermApprovalProcessList'] = this.startTermApprovalProcessList; + data['SubmitAddressTransactionList'] = this.submitAddressTransactionList; + data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList; + data['SubmitCEITransactionList'] = this.submitCEITransactionList; + data['SubmitCcpTransactionList'] = this.submitCcpTransactionList; + data['SubmitContactTransactionList'] = this.submitContactTransactionList; + data['SubmitEITTransactionList'] = this.submitEITTransactionList; + data['SubmitHrTransactionList'] = this.submitHrTransactionList; + data['SubmitPhonesTransactionList'] = this.submitPhonesTransactionList; + data['SubmitSITTransactionList'] = this.submitSITTransactionList; + data['SubmitTermTransactionList'] = this.submitTermTransactionList; + data['SubordinatesOnLeavesList'] = this.subordinatesOnLeavesList; + data['SumbitAbsenceTransactionList'] = this.sumbitAbsenceTransactionList; + data['TokenID'] = this.tokenID; + data['UpdateAttachmentList'] = this.updateAttachmentList; + data['UpdateEmployeeImageList'] = this.updateEmployeeImageList; + data['UpdateItemTypeSuccessList'] = this.updateItemTypeSuccessList; + data['UpdateUserItemTypesList'] = this.updateUserItemTypesList; + data['UpdateVacationRuleList'] = this.updateVacationRuleList; + data['VHR_EmployeeLoginList'] = this.vHREmployeeLoginList; + data['VHR_GetEmployeeDetailsList'] = this.vHRGetEmployeeDetailsList; + data['VHR_GetManagersDetailsList'] = this.vHRGetManagersDetailsList; + data['VHR_GetProjectByCodeList'] = this.vHRGetProjectByCodeList; + data['VHR_IsVerificationCodeValid'] = this.vHRIsVerificationCodeValid; + data['ValidateAbsenceTransactionList'] = this.validateAbsenceTransactionList; + data['ValidateEITTransactionList'] = this.validateEITTransactionList; + data['ValidatePhonesTransactionList'] = this.validatePhonesTransactionList; + data['VrItemTypesList'] = this.vrItemTypesList; + data['WFLookUpList'] = this.wFLookUpList; + data['eLearning_GET_EMPLOYEE_PROFILEList'] = this.eLearningGETEMPLOYEEPROFILEList; + data['eLearning_LOGINList'] = this.eLearningLOGINList; + data['eLearning_ValidateLoginList'] = this.eLearningValidateLoginList; + data['eLearning_Validate_LoginList'] = this.eLearningValidateLoginList; + data['ePharmacy_GetItemOnHandList'] = this.ePharmacyGetItemOnHandList; + data['isActiveCode'] = this.isActiveCode; + data['isSMSSent'] = this.isSMSSent; + return data; + } +} diff --git a/lib/models/member_information_list_model.dart b/lib/models/member_information_list_model.dart new file mode 100644 index 0000000..a3bc05f --- /dev/null +++ b/lib/models/member_information_list_model.dart @@ -0,0 +1,336 @@ +class MemberInformationListModel { + String? aCTUALTERMINATIONDATE; + String? aSSIGNMENTENDDATE; + int? aSSIGNMENTID; + String? aSSIGNMENTNUMBER; + String? aSSIGNMENTSTARTDATE; + int? aSSIGNMENTSTATUSTYPEID; + String? aSSIGNMENTTYPE; + int? bUSINESSGROUPID; + String? bUSINESSGROUPNAME; + String? businessCardQR; + String? cURRENTEMPLOYEEFLAG; + String? eMPLOYEEDISPLAYNAME; + String? eMPLOYEEDISPLAYNAMEAr; + String? eMPLOYEEDISPLAYNAMEEn; + String? eMPLOYEEEMAILADDRESS; + String? eMPLOYEEIMAGE; + String? eMPLOYEEMOBILENUMBER; + String? eMPLOYEENAME; + String? eMPLOYEENAMEAr; + String? eMPLOYEENAMEEn; + String? eMPLOYEENUMBER; + String? eMPLOYEEWORKNUMBER; + String? eMPLOYMENTCATEGORY; + String? eMPLOYMENTCATEGORYMEANING; + String? employeeQR; + String? fREQUENCY; + String? fREQUENCYMEANING; + int? fROMROWNUM; + String? gRADEID; + String? gRADENAME; + String? hIREDATE; + int? jOBID; + String? jOBNAME; + String? jOBNAMEAr; + String? jOBNAMEEn; + int? lEDGERID; + int? lOCATIONID; + String? lOCATIONNAME; + String? mANUALTIMECARDFLAG; + String? mANUALTIMECARDMEANING; + String? mobileNumberWithZipCode; + String? nATIONALITYCODE; + String? nATIONALITYMEANING; + String? nATIONALIDENTIFIER; + String? nORMALHOURS; + int? nOOFROWS; + int? oRGANIZATIONID; + String? oRGANIZATIONNAME; + String? pAYROLLCODE; + int? pAYROLLID; + String? pAYROLLNAME; + int? pERSONID; + String? pERSONTYPE; + int? pERSONTYPEID; + String? pERINFORMATIONCATEGORY; + int? pOSITIONID; + String? pOSITIONNAME; + String? pRIMARYFLAG; + int? rOWNUM; + int? sERVICEDAYS; + int? sERVICEMONTHS; + int? sERVICEYEARS; + String? sUPERVISORASSIGNMENTID; + String? sUPERVISORDISPLAYNAME; + String? sUPERVISOREMAILADDRESS; + int? sUPERVISORID; + String? sUPERVISORMOBILENUMBER; + String? sUPERVISORNAME; + String? sUPERVISORNUMBER; + String? sUPERVISORWORKNUMBER; + String? sWIPESEXEMPTEDFLAG; + String? sWIPESEXEMPTEDMEANING; + String? sYSTEMPERSONTYPE; + String? tKEMAILADDRESS; + String? tKEMPLOYEEDISPLAYNAME; + String? tKEMPLOYEENAME; + String? tKEMPLOYEENUMBER; + int? tKPERSONID; + int? tOROWNUM; + String? uNITNUMBER; + String? uSERSTATUS; + + MemberInformationListModel( + {this.aCTUALTERMINATIONDATE, + this.aSSIGNMENTENDDATE, + this.aSSIGNMENTID, + this.aSSIGNMENTNUMBER, + this.aSSIGNMENTSTARTDATE, + this.aSSIGNMENTSTATUSTYPEID, + this.aSSIGNMENTTYPE, + this.bUSINESSGROUPID, + this.bUSINESSGROUPNAME, + this.businessCardQR, + this.cURRENTEMPLOYEEFLAG, + this.eMPLOYEEDISPLAYNAME, + this.eMPLOYEEDISPLAYNAMEAr, + this.eMPLOYEEDISPLAYNAMEEn, + this.eMPLOYEEEMAILADDRESS, + this.eMPLOYEEIMAGE, + this.eMPLOYEEMOBILENUMBER, + this.eMPLOYEENAME, + this.eMPLOYEENAMEAr, + this.eMPLOYEENAMEEn, + this.eMPLOYEENUMBER, + this.eMPLOYEEWORKNUMBER, + this.eMPLOYMENTCATEGORY, + this.eMPLOYMENTCATEGORYMEANING, + this.employeeQR, + this.fREQUENCY, + this.fREQUENCYMEANING, + this.fROMROWNUM, + this.gRADEID, + this.gRADENAME, + this.hIREDATE, + this.jOBID, + this.jOBNAME, + this.jOBNAMEAr, + this.jOBNAMEEn, + this.lEDGERID, + this.lOCATIONID, + this.lOCATIONNAME, + this.mANUALTIMECARDFLAG, + this.mANUALTIMECARDMEANING, + this.mobileNumberWithZipCode, + this.nATIONALITYCODE, + this.nATIONALITYMEANING, + this.nATIONALIDENTIFIER, + this.nORMALHOURS, + this.nOOFROWS, + this.oRGANIZATIONID, + this.oRGANIZATIONNAME, + this.pAYROLLCODE, + this.pAYROLLID, + this.pAYROLLNAME, + this.pERSONID, + this.pERSONTYPE, + this.pERSONTYPEID, + this.pERINFORMATIONCATEGORY, + this.pOSITIONID, + this.pOSITIONNAME, + this.pRIMARYFLAG, + this.rOWNUM, + this.sERVICEDAYS, + this.sERVICEMONTHS, + this.sERVICEYEARS, + this.sUPERVISORASSIGNMENTID, + this.sUPERVISORDISPLAYNAME, + this.sUPERVISOREMAILADDRESS, + this.sUPERVISORID, + this.sUPERVISORMOBILENUMBER, + this.sUPERVISORNAME, + this.sUPERVISORNUMBER, + this.sUPERVISORWORKNUMBER, + this.sWIPESEXEMPTEDFLAG, + this.sWIPESEXEMPTEDMEANING, + this.sYSTEMPERSONTYPE, + this.tKEMAILADDRESS, + this.tKEMPLOYEEDISPLAYNAME, + this.tKEMPLOYEENAME, + this.tKEMPLOYEENUMBER, + this.tKPERSONID, + this.tOROWNUM, + this.uNITNUMBER, + this.uSERSTATUS}); + + MemberInformationListModel.fromJson(Map json) { + aCTUALTERMINATIONDATE = json['ACTUAL_TERMINATION_DATE']; + aSSIGNMENTENDDATE = json['ASSIGNMENT_END_DATE']; + aSSIGNMENTID = json['ASSIGNMENT_ID']; + aSSIGNMENTNUMBER = json['ASSIGNMENT_NUMBER']; + aSSIGNMENTSTARTDATE = json['ASSIGNMENT_START_DATE']; + aSSIGNMENTSTATUSTYPEID = json['ASSIGNMENT_STATUS_TYPE_ID']; + aSSIGNMENTTYPE = json['ASSIGNMENT_TYPE']; + bUSINESSGROUPID = json['BUSINESS_GROUP_ID']; + bUSINESSGROUPNAME = json['BUSINESS_GROUP_NAME']; + businessCardQR = json['BusinessCardQR']; + cURRENTEMPLOYEEFLAG = json['CURRENT_EMPLOYEE_FLAG']; + eMPLOYEEDISPLAYNAME = json['EMPLOYEE_DISPLAY_NAME']; + eMPLOYEEDISPLAYNAMEAr = json['EMPLOYEE_DISPLAY_NAME_Ar']; + eMPLOYEEDISPLAYNAMEEn = json['EMPLOYEE_DISPLAY_NAME_En']; + eMPLOYEEEMAILADDRESS = json['EMPLOYEE_EMAIL_ADDRESS']; + eMPLOYEEIMAGE = json['EMPLOYEE_IMAGE']; + eMPLOYEEMOBILENUMBER = json['EMPLOYEE_MOBILE_NUMBER']; + eMPLOYEENAME = json['EMPLOYEE_NAME']; + eMPLOYEENAMEAr = json['EMPLOYEE_NAME_Ar']; + eMPLOYEENAMEEn = json['EMPLOYEE_NAME_En']; + eMPLOYEENUMBER = json['EMPLOYEE_NUMBER']; + eMPLOYEEWORKNUMBER = json['EMPLOYEE_WORK_NUMBER']; + eMPLOYMENTCATEGORY = json['EMPLOYMENT_CATEGORY']; + eMPLOYMENTCATEGORYMEANING = json['EMPLOYMENT_CATEGORY_MEANING']; + employeeQR = json['EmployeeQR']; + fREQUENCY = json['FREQUENCY']; + fREQUENCYMEANING = json['FREQUENCY_MEANING']; + fROMROWNUM = json['FROM_ROW_NUM']; + gRADEID = json['GRADE_ID']; + gRADENAME = json['GRADE_NAME']; + hIREDATE = json['HIRE_DATE']; + jOBID = json['JOB_ID']; + jOBNAME = json['JOB_NAME']; + jOBNAMEAr = json['JOB_NAME_Ar']; + jOBNAMEEn = json['JOB_NAME_En']; + lEDGERID = json['LEDGER_ID']; + lOCATIONID = json['LOCATION_ID']; + lOCATIONNAME = json['LOCATION_NAME']; + mANUALTIMECARDFLAG = json['MANUAL_TIMECARD_FLAG']; + mANUALTIMECARDMEANING = json['MANUAL_TIMECARD_MEANING']; + mobileNumberWithZipCode = json['MobileNumberWithZipCode']; + nATIONALITYCODE = json['NATIONALITY_CODE']; + nATIONALITYMEANING = json['NATIONALITY_MEANING']; + nATIONALIDENTIFIER = json['NATIONAL_IDENTIFIER']; + nORMALHOURS = json['NORMAL_HOURS']; + nOOFROWS = json['NO_OF_ROWS']; + oRGANIZATIONID = json['ORGANIZATION_ID']; + oRGANIZATIONNAME = json['ORGANIZATION_NAME']; + pAYROLLCODE = json['PAYROLL_CODE']; + pAYROLLID = json['PAYROLL_ID']; + pAYROLLNAME = json['PAYROLL_NAME']; + pERSONID = json['PERSON_ID']; + pERSONTYPE = json['PERSON_TYPE']; + pERSONTYPEID = json['PERSON_TYPE_ID']; + pERINFORMATIONCATEGORY = json['PER_INFORMATION_CATEGORY']; + pOSITIONID = json['POSITION_ID']; + pOSITIONNAME = json['POSITION_NAME']; + pRIMARYFLAG = json['PRIMARY_FLAG']; + rOWNUM = json['ROW_NUM']; + sERVICEDAYS = json['SERVICE_DAYS']; + sERVICEMONTHS = json['SERVICE_MONTHS']; + sERVICEYEARS = json['SERVICE_YEARS']; + sUPERVISORASSIGNMENTID = json['SUPERVISOR_ASSIGNMENT_ID']; + sUPERVISORDISPLAYNAME = json['SUPERVISOR_DISPLAY_NAME']; + sUPERVISOREMAILADDRESS = json['SUPERVISOR_EMAIL_ADDRESS']; + sUPERVISORID = json['SUPERVISOR_ID']; + sUPERVISORMOBILENUMBER = json['SUPERVISOR_MOBILE_NUMBER']; + sUPERVISORNAME = json['SUPERVISOR_NAME']; + sUPERVISORNUMBER = json['SUPERVISOR_NUMBER']; + sUPERVISORWORKNUMBER = json['SUPERVISOR_WORK_NUMBER']; + sWIPESEXEMPTEDFLAG = json['SWIPES_EXEMPTED_FLAG']; + sWIPESEXEMPTEDMEANING = json['SWIPES_EXEMPTED_MEANING']; + sYSTEMPERSONTYPE = json['SYSTEM_PERSON_TYPE']; + tKEMAILADDRESS = json['TK_EMAIL_ADDRESS']; + tKEMPLOYEEDISPLAYNAME = json['TK_EMPLOYEE_DISPLAY_NAME']; + tKEMPLOYEENAME = json['TK_EMPLOYEE_NAME']; + tKEMPLOYEENUMBER = json['TK_EMPLOYEE_NUMBER']; + tKPERSONID = json['TK_PERSON_ID']; + tOROWNUM = json['TO_ROW_NUM']; + uNITNUMBER = json['UNIT_NUMBER']; + uSERSTATUS = json['USER_STATUS']; + } + + Map toJson() { + final Map data = new Map(); + data['ACTUAL_TERMINATION_DATE'] = this.aCTUALTERMINATIONDATE; + data['ASSIGNMENT_END_DATE'] = this.aSSIGNMENTENDDATE; + data['ASSIGNMENT_ID'] = this.aSSIGNMENTID; + data['ASSIGNMENT_NUMBER'] = this.aSSIGNMENTNUMBER; + data['ASSIGNMENT_START_DATE'] = this.aSSIGNMENTSTARTDATE; + data['ASSIGNMENT_STATUS_TYPE_ID'] = this.aSSIGNMENTSTATUSTYPEID; + data['ASSIGNMENT_TYPE'] = this.aSSIGNMENTTYPE; + data['BUSINESS_GROUP_ID'] = this.bUSINESSGROUPID; + data['BUSINESS_GROUP_NAME'] = this.bUSINESSGROUPNAME; + data['BusinessCardQR'] = this.businessCardQR; + data['CURRENT_EMPLOYEE_FLAG'] = this.cURRENTEMPLOYEEFLAG; + data['EMPLOYEE_DISPLAY_NAME'] = this.eMPLOYEEDISPLAYNAME; + data['EMPLOYEE_DISPLAY_NAME_Ar'] = this.eMPLOYEEDISPLAYNAMEAr; + data['EMPLOYEE_DISPLAY_NAME_En'] = this.eMPLOYEEDISPLAYNAMEEn; + data['EMPLOYEE_EMAIL_ADDRESS'] = this.eMPLOYEEEMAILADDRESS; + data['EMPLOYEE_IMAGE'] = this.eMPLOYEEIMAGE; + data['EMPLOYEE_MOBILE_NUMBER'] = this.eMPLOYEEMOBILENUMBER; + data['EMPLOYEE_NAME'] = this.eMPLOYEENAME; + data['EMPLOYEE_NAME_Ar'] = this.eMPLOYEENAMEAr; + data['EMPLOYEE_NAME_En'] = this.eMPLOYEENAMEEn; + data['EMPLOYEE_NUMBER'] = this.eMPLOYEENUMBER; + data['EMPLOYEE_WORK_NUMBER'] = this.eMPLOYEEWORKNUMBER; + data['EMPLOYMENT_CATEGORY'] = this.eMPLOYMENTCATEGORY; + data['EMPLOYMENT_CATEGORY_MEANING'] = this.eMPLOYMENTCATEGORYMEANING; + data['EmployeeQR'] = this.employeeQR; + data['FREQUENCY'] = this.fREQUENCY; + data['FREQUENCY_MEANING'] = this.fREQUENCYMEANING; + data['FROM_ROW_NUM'] = this.fROMROWNUM; + data['GRADE_ID'] = this.gRADEID; + data['GRADE_NAME'] = this.gRADENAME; + data['HIRE_DATE'] = this.hIREDATE; + data['JOB_ID'] = this.jOBID; + data['JOB_NAME'] = this.jOBNAME; + data['JOB_NAME_Ar'] = this.jOBNAMEAr; + data['JOB_NAME_En'] = this.jOBNAMEEn; + data['LEDGER_ID'] = this.lEDGERID; + data['LOCATION_ID'] = this.lOCATIONID; + data['LOCATION_NAME'] = this.lOCATIONNAME; + data['MANUAL_TIMECARD_FLAG'] = this.mANUALTIMECARDFLAG; + data['MANUAL_TIMECARD_MEANING'] = this.mANUALTIMECARDMEANING; + data['MobileNumberWithZipCode'] = this.mobileNumberWithZipCode; + data['NATIONALITY_CODE'] = this.nATIONALITYCODE; + data['NATIONALITY_MEANING'] = this.nATIONALITYMEANING; + data['NATIONAL_IDENTIFIER'] = this.nATIONALIDENTIFIER; + data['NORMAL_HOURS'] = this.nORMALHOURS; + data['NO_OF_ROWS'] = this.nOOFROWS; + data['ORGANIZATION_ID'] = this.oRGANIZATIONID; + data['ORGANIZATION_NAME'] = this.oRGANIZATIONNAME; + data['PAYROLL_CODE'] = this.pAYROLLCODE; + data['PAYROLL_ID'] = this.pAYROLLID; + data['PAYROLL_NAME'] = this.pAYROLLNAME; + data['PERSON_ID'] = this.pERSONID; + data['PERSON_TYPE'] = this.pERSONTYPE; + data['PERSON_TYPE_ID'] = this.pERSONTYPEID; + data['PER_INFORMATION_CATEGORY'] = this.pERINFORMATIONCATEGORY; + data['POSITION_ID'] = this.pOSITIONID; + data['POSITION_NAME'] = this.pOSITIONNAME; + data['PRIMARY_FLAG'] = this.pRIMARYFLAG; + data['ROW_NUM'] = this.rOWNUM; + data['SERVICE_DAYS'] = this.sERVICEDAYS; + data['SERVICE_MONTHS'] = this.sERVICEMONTHS; + data['SERVICE_YEARS'] = this.sERVICEYEARS; + data['SUPERVISOR_ASSIGNMENT_ID'] = this.sUPERVISORASSIGNMENTID; + data['SUPERVISOR_DISPLAY_NAME'] = this.sUPERVISORDISPLAYNAME; + data['SUPERVISOR_EMAIL_ADDRESS'] = this.sUPERVISOREMAILADDRESS; + data['SUPERVISOR_ID'] = this.sUPERVISORID; + data['SUPERVISOR_MOBILE_NUMBER'] = this.sUPERVISORMOBILENUMBER; + data['SUPERVISOR_NAME'] = this.sUPERVISORNAME; + data['SUPERVISOR_NUMBER'] = this.sUPERVISORNUMBER; + data['SUPERVISOR_WORK_NUMBER'] = this.sUPERVISORWORKNUMBER; + data['SWIPES_EXEMPTED_FLAG'] = this.sWIPESEXEMPTEDFLAG; + data['SWIPES_EXEMPTED_MEANING'] = this.sWIPESEXEMPTEDMEANING; + data['SYSTEM_PERSON_TYPE'] = this.sYSTEMPERSONTYPE; + data['TK_EMAIL_ADDRESS'] = this.tKEMAILADDRESS; + data['TK_EMPLOYEE_DISPLAY_NAME'] = this.tKEMPLOYEEDISPLAYNAME; + data['TK_EMPLOYEE_NAME'] = this.tKEMPLOYEENAME; + data['TK_EMPLOYEE_NUMBER'] = this.tKEMPLOYEENUMBER; + data['TK_PERSON_ID'] = this.tKPERSONID; + data['TO_ROW_NUM'] = this.tOROWNUM; + data['UNIT_NUMBER'] = this.uNITNUMBER; + data['USER_STATUS'] = this.uSERSTATUS; + return data; + } +} \ No newline at end of file diff --git a/lib/models/member_login_list_model.dart b/lib/models/member_login_list_model.dart new file mode 100644 index 0000000..ffbc942 --- /dev/null +++ b/lib/models/member_login_list_model.dart @@ -0,0 +1,48 @@ +class MemberLoginListModel { + String? pEMAILADDRESS; + String? pINVALIDLOGINMSG; + String? pLEGISLATIONCODE; + String? pMOBILENUMBER; + String? pPASSOWRDEXPIRED; + String? pPASSWORDEXPIREDMSG; + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pSESSIONID; + + MemberLoginListModel( + {this.pEMAILADDRESS, + this.pINVALIDLOGINMSG, + this.pLEGISLATIONCODE, + this.pMOBILENUMBER, + this.pPASSOWRDEXPIRED, + this.pPASSWORDEXPIREDMSG, + this.pRETURNMSG, + this.pRETURNSTATUS, + this.pSESSIONID}); + + MemberLoginListModel.fromJson(Map json) { + pEMAILADDRESS = json['P_EMAIL_ADDRESS']; + pINVALIDLOGINMSG = json['P_INVALID_LOGIN_MSG']; + pLEGISLATIONCODE = json['P_LEGISLATION_CODE']; + pMOBILENUMBER = json['P_MOBILE_NUMBER']; + pPASSOWRDEXPIRED = json['P_PASSOWRD_EXPIRED']; + pPASSWORDEXPIREDMSG = json['P_PASSWORD_EXPIRED_MSG']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + pSESSIONID = json['P_SESSION_ID']; + } + + Map toJson() { + final Map data = new Map(); + data['P_EMAIL_ADDRESS'] = this.pEMAILADDRESS; + data['P_INVALID_LOGIN_MSG'] = this.pINVALIDLOGINMSG; + data['P_LEGISLATION_CODE'] = this.pLEGISLATIONCODE; + data['P_MOBILE_NUMBER'] = this.pMOBILENUMBER; + data['P_PASSOWRD_EXPIRED'] = this.pPASSOWRDEXPIRED; + data['P_PASSWORD_EXPIRED_MSG'] = this.pPASSWORDEXPIREDMSG; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + data['P_SESSION_ID'] = this.pSESSIONID; + return data; + } +} diff --git a/lib/models/member_model.dart b/lib/models/member_model.dart deleted file mode 100644 index d968827..0000000 --- a/lib/models/member_model.dart +++ /dev/null @@ -1,62 +0,0 @@ -class MemberModel { - int? totalItemsCount; - int? statusCode; - String? message; - List? data; - - MemberModel({this.totalItemsCount, this.statusCode, this.message, this.data}); - - MemberModel.fromJson(Map json) { - totalItemsCount = json['totalItemsCount']; - statusCode = json['statusCode']; - message = json['message']; - if (json['data'] != null) { - data = []; - json['data'].forEach((v) { - data?.add(new MemberDataModel.fromJson(v)); - }); - } - } - - Map toJson() { - final Map data = new Map(); - data['totalItemsCount'] = this.totalItemsCount; - data['statusCode'] = this.statusCode; - data['message'] = this.message; - if (this.data != null) { - data['data'] = this.data?.map((v) => v.toJson()).toList(); - } - return data; - } -} - -class MemberDataModel { - int? committeeId; - String? firstName; - String? lastName; - String? description; - String? picture; - int? orderNo; - - MemberDataModel({this.committeeId, this.firstName, this.lastName, this.description, this.picture, this.orderNo}); - - MemberDataModel.fromJson(Map json) { - committeeId = json['committeeId']; - firstName = json['firstName']; - lastName = json['lastName']; - description = json['description']; - picture = json['picture']; - orderNo = json['orderNo']; - } - - Map toJson() { - final Map data = new Map(); - data['committeeId'] = this.committeeId; - data['firstName'] = this.firstName; - data['lastName'] = this.lastName; - data['description'] = this.description; - data['picture'] = this.picture; - data['orderNo'] = this.orderNo; - return data; - } -} diff --git a/lib/models/post_params_model.dart b/lib/models/post_params_model.dart new file mode 100644 index 0000000..cd6dd72 --- /dev/null +++ b/lib/models/post_params_model.dart @@ -0,0 +1,34 @@ +class PostParamsModel { + double? versionID; + int? channel; + int? languageID; + String? mobileType; + String? logInTokenID; + String? tokenID; + + PostParamsModel({this.versionID, this.channel, this.languageID, this.mobileType, this.logInTokenID, this.tokenID}); + + PostParamsModel.fromJson(Map json) { + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + mobileType = json['MobileType']; + logInTokenID = json['LogInTokenID']; + tokenID = json['TokenID']; + } + + Map toJson() { + final Map data = new Map(); + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['MobileType'] = this.mobileType; + data['LogInTokenID'] = this.logInTokenID; + data['TokenID'] = this.tokenID; + return data; + } + + set setLogInTokenID(String? token) => logInTokenID = token; + + set setTokenID(String? token) => tokenID = token; +} diff --git a/lib/models/privilege_list_model.dart b/lib/models/privilege_list_model.dart new file mode 100644 index 0000000..3ef3954 --- /dev/null +++ b/lib/models/privilege_list_model.dart @@ -0,0 +1,21 @@ +class PrivilegeListModel { + int? iD; + String? serviceName; + bool? previlege; + + PrivilegeListModel({this.iD, this.serviceName, this.previlege}); + + PrivilegeListModel.fromJson(Map json) { + iD = json['ID']; + serviceName = json['ServiceName']; + previlege = json['Previlege']; + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['ServiceName'] = this.serviceName; + data['Previlege'] = this.previlege; + return data; + } +} diff --git a/lib/theme/app_theme.dart b/lib/theme/app_theme.dart index aed8437..51987cd 100644 --- a/lib/theme/app_theme.dart +++ b/lib/theme/app_theme.dart @@ -15,6 +15,7 @@ class AppTheme { }, ), hintColor: Colors.grey[400], + colorScheme: ColorScheme.fromSwatch(accentColor: MyColors.backgroundColor), disabledColor: Colors.grey[300], errorColor: const Color.fromRGBO(235, 80, 60, 1.0), scaffoldBackgroundColor: MyColors.backgroundColor, diff --git a/lib/ui/landing/today_attendance_screen.dart b/lib/ui/landing/today_attendance_screen.dart index 0ba3791..ac42dd1 100644 --- a/lib/ui/landing/today_attendance_screen.dart +++ b/lib/ui/landing/today_attendance_screen.dart @@ -43,7 +43,7 @@ class _TodayAttendanceScreenState extends State { children: [ Container( color: MyColors.backgroundBlackColor, - padding: EdgeInsets.only(left: 21, right: 21, bottom: 21), + padding: EdgeInsets.only(top: 4,left: 21, right: 21, bottom: 21), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/ui/login/forgot_password_screen.dart b/lib/ui/login/forgot_password_screen.dart new file mode 100644 index 0000000..89bd66e --- /dev/null +++ b/lib/ui/login/forgot_password_screen.dart @@ -0,0 +1,114 @@ +import 'package:easy_localization/src/public_ext.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/login_api_client.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/dialogs/otp_dialog.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; +import 'package:mohem_flutter_app/models/generic_response_model.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:mohem_flutter_app/widgets/input_widget.dart'; + +class ForgotPasswordScreen extends StatefulWidget { + ForgotPasswordScreen({Key? key}) : super(key: key); + + @override + _ForgotPasswordScreenState createState() { + return _ForgotPasswordScreenState(); + } +} + +class _ForgotPasswordScreenState extends State { + TextEditingController employeeId = TextEditingController(); + BasicMemberInformationModel? _basicMemberInformation; + GenericResponseModel? genericResponseModel; + + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + super.dispose(); + } + + void performLogin() async { + // Utils.showLoading(context); + try { + _basicMemberInformation = await LoginApiClient().getBasicUserInformation("CS", employeeId.text); + genericResponseModel = await LoginApiClient().sendPublicActivationCode(_basicMemberInformation?.pMOBILENUMBER, employeeId.text); + OtpDialog( + context, + 1, + int.tryParse(_basicMemberInformation?.pMOBILENUMBER ?? ""), + (value) async { + GenericResponseModel? genericResponseModel = await LoginApiClient().checkPublicActivationCode(value, employeeId.text); + if (genericResponseModel?.errorMessage != null) { + Utils.showToast(genericResponseModel?.errorMessage ?? ""); + return; + } + + Navigator.pushNamed(context, AppRoutes.newPassword); + // this.checkActivationCode(value: value); + }, + () => { + Navigator.pop(context), + }, + ).displayDialog(context); + } catch (ex) { + print(ex); + Utils.handleException(ex, null); + // Utils.hideLoading(context); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Colors.transparent, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + onPressed: () => Navigator.pop(context), + ), + ), + body: Column( + children: [ + //const SizedBox(height: 23), + Expanded( + child: Padding( + padding: const EdgeInsets.all(21.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.forgotPassword.tr().toText24(isBold: true), + LocaleKeys.loginCodeWillSentToMobileNumber.tr().toText16(), + 16.height, + InputWidget(LocaleKeys.employeeId.tr(), "123456", employeeId), + ], + ), + ) + ], + ), + ), + ), + DefaultButton(LocaleKeys.changePassword.tr(), () async { + //Navigator.pushNamed(context, AppRoutes.verifyLogin); + }) + .insideContainer + ], + ), + ); + } +} diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index f7f8e05..5f0f266 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -2,12 +2,18 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.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/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart'; +import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart'; @@ -24,6 +30,9 @@ class _LoginScreenState extends State { TextEditingController username = TextEditingController(); TextEditingController password = TextEditingController(); + CheckMobileAppVersionModel? _checkMobileAppVersion; + MemberLoginListModel? _memberLoginList; + @override void initState() { super.initState(); @@ -34,6 +43,23 @@ class _LoginScreenState extends State { super.dispose(); } + void performLogin() async { + Utils.showLoading(context); + try { + _checkMobileAppVersion = await LoginApiClient().checkMobileAppVersion(); + _memberLoginList = await LoginApiClient().memberLogin(username.text, password.text); + AppState().setMemberLoginListModel = _memberLoginList; + AppState().username = username.text; + print(_memberLoginList?.toJson()); + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.verifyLogin); + } catch (ex) { + print(ex); + Utils.handleException(ex, null); + Utils.hideLoading(context); + } + } + @override Widget build(BuildContext context) { return Scaffold( @@ -51,14 +77,18 @@ class _LoginScreenState extends State { Expanded(child: SizedBox()), Row( children: [ - LocaleKeys.english.tr().toText14(color: MyColors.textMixColor).onPress(() {}), + LocaleKeys.english.tr().toText14(color: MyColors.textMixColor).onPress(() { + context.setLocale(const Locale("en", "US")); + }), Container( width: 1, color: MyColors.darkWhiteColor, height: 16, margin: const EdgeInsets.only(left: 10, right: 10), ), - LocaleKeys.arabic.tr().toText14().onPress(() {}), + LocaleKeys.arabic.tr().toText14().onPress(() { + context.setLocale(const Locale("ar", "SA")); + }), ], ), ], @@ -79,7 +109,7 @@ class _LoginScreenState extends State { Align( alignment: Alignment.centerRight, child: LocaleKeys.forgotPassword.tr().toText12(isUnderLine: true, color: MyColors.textMixColor).onPress(() { - Navigator.pushNamed(context, AppRoutes.newPassword); + Navigator.pushNamed(context, AppRoutes.forgotPassword); }), ), ], @@ -92,7 +122,8 @@ class _LoginScreenState extends State { DefaultButton(LocaleKeys.login.tr(), () async { // context.setLocale(const Locale("en", "US")); // to change Loacle - Navigator.pushNamed(context, AppRoutes.verifyLogin); + SystemChannels.textInput.invokeMethod('TextInput.hide'); + performLogin(); }).insideContainer ], ), diff --git a/lib/ui/login/new_password_screen.dart b/lib/ui/login/new_password_screen.dart index dca855e..3fc37f1 100644 --- a/lib/ui/login/new_password_screen.dart +++ b/lib/ui/login/new_password_screen.dart @@ -35,32 +35,39 @@ class _NewPasswordScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( + appBar: AppBar( + backgroundColor: Colors.transparent, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + onPressed: () => Navigator.pop(context), + ), + ), body: Column( children: [ - const SizedBox(height: 23), + //const SizedBox(height: 23), Expanded( child: Padding( padding: const EdgeInsets.all(21.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - children: [ - Expanded(child: SizedBox()), - Row( - children: [ - LocaleKeys.english.tr().toText14(color: MyColors.textMixColor).onPress(() {}), - Container( - width: 1, - color: MyColors.darkWhiteColor, - height: 16, - margin: const EdgeInsets.only(left: 10, right: 10), - ), - LocaleKeys.arabic.tr().toText14().onPress(() {}), - ], - ), - ], - ), + // Row( + // children: [ + // Expanded(child: SizedBox()), + // Row( + // children: [ + // LocaleKeys.english.tr().toText14(color: MyColors.textMixColor).onPress(() {}), + // Container( + // width: 1, + // color: MyColors.darkWhiteColor, + // height: 16, + // margin: const EdgeInsets.only(left: 10, right: 10), + // ), + // LocaleKeys.arabic.tr().toText14().onPress(() {}), + // ], + // ), + // ], + // ), Expanded( child: Column( mainAxisSize: MainAxisSize.min, @@ -81,9 +88,8 @@ class _NewPasswordScreenState extends State { ), ), DefaultButton(LocaleKeys.update.tr(), () async { - // context.setLocale(const Locale("en", "US")); // to change Loacle - Navigator.pushNamed(context, AppRoutes.verifyLogin); + // Navigator.pushNamed(context, AppRoutes.verifyLogin); }).insideContainer ], ), diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index 54be916..b28ad4d 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -3,13 +3,18 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:local_auth/local_auth.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/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/dialogs/otp_dialog.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; +import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; class VerifyLoginScreen extends StatefulWidget { @@ -613,20 +618,36 @@ class _VerifyLoginScreenState extends State { return InkWell( onTap: isDisable ? null - : () { + : () async { if (_flag == 0) { setState(() { // isMoreOption = true; }); } else { + Utils.showLoading(context); + BasicMemberInformationModel? memberInformationModel = await LoginApiClient() + .mohemmSendActivationCodeByOTPNotificationType(checkBiometricIsAvailable(BiometricType.fingerprint) ? 1 : 0, AppState().memberLoginList?.pMOBILENUMBER, _flag, AppState().username); + Utils.hideLoading(context); OtpDialog( context, _flag, - //this.mobileNumber - 0554870506, - (value) { - Navigator.pushReplacementNamed(context, AppRoutes.dashboard); - // this.checkActivationCode(value: value); + int.tryParse(AppState().memberLoginList?.pMOBILENUMBER ?? ""), + (value) async { + Utils.showLoading(context); + try { + GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().username); + if (genericResponseModel?.errorMessage != null) { + Utils.showToast(genericResponseModel?.errorMessage ?? ""); + // Navigator.pop(context); + } + Utils.hideLoading(context); + Navigator.pop(context); + Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); + } catch (ex) { + print(ex); + Utils.hideLoading(context); + Utils.handleException(ex, null); + } }, () => { Navigator.pop(context), diff --git a/lib/widgets/loading_dialog.dart b/lib/widgets/loading_dialog.dart new file mode 100644 index 0000000..9c88a39 --- /dev/null +++ b/lib/widgets/loading_dialog.dart @@ -0,0 +1,47 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; + +class LoadingDialog extends StatefulWidget { + LoadingDialog({Key? key}) : super(key: key); + + @override + _LoadingDialogState createState() { + return _LoadingDialogState(); + } +} + +class _LoadingDialogState extends State { + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Dialog( + insetPadding: const EdgeInsets.symmetric(horizontal: 60.0, vertical: 24.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + elevation: 0, + backgroundColor: Colors.transparent, + child: Directionality( + textDirection: TextDirection.rtl, + child: Center( + child: Image.asset( + "assets/images/logos/loading_mohemm_logo.gif", + height: 96.0, + width: 96.0, + ), + ), + ), + ); + } +}