diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart index 9dbf6bc..7298135 100644 --- a/lib/api/api_client.dart +++ b/lib/api/api_client.dart @@ -266,6 +266,7 @@ import 'package:http/http.dart'; import 'package:http/io_client.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/generic_mapper_model.dart'; // ignore_for_file: avoid_annotating_with_dynamic typedef FactoryConstructor = U Function(dynamic); @@ -286,6 +287,96 @@ class APIError { } } +// class ApiResponse { +// dynamic totalItemsCount; +// List? data; +// int? messageStatus; +// dynamic errorMessage; +// dynamic errorEndUserMessage; +// +// ApiResponse({ +// this.totalItemsCount, +// this.data, +// this.messageStatus, +// this.errorMessage, +// this.errorEndUserMessage, +// }); +// +// factory ApiResponse.fromRawJson(String str) => ApiResponse.fromJson(json.decode(str)); +// +// String toRawJson() => json.encode(toJson()); +// +// factory ApiResponse.fromJson(Map json) => ApiResponse( +// totalItemsCount: json["TotalItemsCount"], +// data: json["Data"] == null ? [] : List.from(json["Data"]!.map((x) => x)), +// messageStatus: json["MessageStatus"], +// errorMessage: json["ErrorMessage"], +// errorEndUserMessage: json["ErrorEndUserMessage"], +// ); +// +// Map toJson() => { +// "TotalItemsCount": totalItemsCount, +// "Data": data == null ? [] : List.from(data!.map((x) => x)), +// "MessageStatus": messageStatus, +// "ErrorMessage": errorMessage, +// "ErrorEndUserMessage": errorEndUserMessage, +// }; +// +// bool get isSuccess => messageStatus == 1 && errorMessage == null; +// } + +// class ApiResponse { +// final int? totalItemsCount; +// final T data; +// final int? messageStatus; +// final String? errorMessage; +// final String? errorEndUserMessage; +// +// final T Function(dynamic)? fromJsonT; +// final String Function(T)? toJsonT; +// +// ApiResponse({ +// required this.totalItemsCount, +// required this.data, +// required this.messageStatus, +// this.errorMessage, +// this.errorEndUserMessage, +// this.fromJsonT, +// this.toJsonT, +// }); +// +// factory ApiResponse.fromJson( +// Map json, +// ) { +// return ApiResponse( +// totalItemsCount: json['totalItemsCount'], data: json['data'], messageStatus: json['messageStatus'], errorMessage: json['errorMessage'], errorEndUserMessage: json['errorEndUserMessage']); +// } +// +// factory ApiResponse.fromRawJson(String str) => ApiResponse.fromJson(json.decode(str)); +// +// String toRawJson() { +// if (toJsonT == null) { +// throw Exception("toJsonT function is not provided for serialization."); +// } +// return json.encode(toJson()); +// } +// +// Map toJson() { +// if (toJsonT == null) { +// throw Exception("toJsonT function is not provided for serialization."); +// } +// return { +// "TotalItemsCount": totalItemsCount, +// "Data": toJsonT!(data), +// "MessageStatus": messageStatus, +// "ErrorMessage": errorMessage, +// "ErrorEndUserMessage": errorEndUserMessage, +// }; +// } +// +// bool get isSuccess => messageStatus == 1 && errorMessage == null; +// } + class ApiResponse { final int? totalItemsCount; final T data; @@ -293,23 +384,27 @@ class ApiResponse { final String? errorMessage; final String? errorEndUserMessage; - ApiResponse({ - required this.totalItemsCount, - required this.data, - required this.messageStatus, - this.errorMessage, - this.errorEndUserMessage, - }); - - factory ApiResponse.fromJson(Map json, T Function(dynamic) fromJsonT) { - return ApiResponse( - totalItemsCount: json['totalItemsCount'], - data: fromJsonT(json['data']), - messageStatus: json['messageStatus'], - errorMessage: json['errorMessage'], - errorEndUserMessage: json['errorEndUserMessage'], - ); - } + ApiResponse({required this.totalItemsCount, required this.data, required this.messageStatus, this.errorMessage, this.errorEndUserMessage}); + + factory ApiResponse.fromRawJson(String str) => ApiResponse.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory ApiResponse.fromJson(Map json) => ApiResponse( + totalItemsCount: json["TotalItemsCount"], + data: json["Data"], + messageStatus: json["MessageStatus"], + errorMessage: json["ErrorMessage"], + errorEndUserMessage: json["ErrorEndUserMessage"], + ); + + Map toJson() => { + "TotalItemsCount": totalItemsCount, + "Data": data, + "MessageStatus": messageStatus, + "ErrorMessage": errorMessage, + "ErrorEndUserMessage": errorEndUserMessage, + }; bool get isSuccess => messageStatus == 1 && errorMessage == null; } @@ -364,40 +459,25 @@ class ApiClient { factory ApiClient() => _instance; - Future postJsonForObject( - FactoryConstructor factoryConstructor, - String url, - T jsonObject, { - String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0, - bool isFormData = false, - bool returnJsonData = true, - }) async { + Future postJsonForObject(FactoryConstructor factoryConstructor, String url, T jsonObject, + {String? token, Map? queryParameters, Map? headers, int retryTimes = 0, bool isFormData = false, bool returnJsonData = true}) async { var _headers = {'Accept': 'application/json'}; - if (headers != null && headers.isNotEmpty) { - _headers.addAll(headers); + if (token != null && token.isNotEmpty) { + _headers.addAll({'Bearer': '$token'}); } + // logger.d(_headers); + if (!kReleaseMode) { print("Url:$url"); var bodyJson = json.encode(jsonObject); print("body:$bodyJson"); } - var response = await postJsonForResponse( - url, - jsonObject, - token: token, - queryParameters: queryParameters, - headers: _headers, - retryTimes: retryTimes, - isFormData: isFormData, - ); + var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes, isFormData: isFormData); if (!kReleaseMode) { - logger.i("res: " + response.body); + logger.i("res: ${response.body}"); } var jsonData = jsonDecode(response.body); @@ -409,10 +489,10 @@ class ApiClient { } // Create ApiResponse from the json - var apiResponse = ApiResponse.fromJson(jsonData, (res) => returnJsonData ? res : jsonData); + var apiResponse = ApiResponse.fromJson(jsonData); if (apiResponse.isSuccess) { - return factoryConstructor(apiResponse); + return factoryConstructor(jsonData); } else { throw APIException( APIException.BAD_REQUEST, @@ -454,14 +534,7 @@ class ApiClient { ); } - return await _postForResponse( - url, - isFormData ? stringObj : requestBody, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes, - ); + return await _postForResponse(url, isFormData ? stringObj : requestBody, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes); } Future _postForResponse( @@ -574,7 +647,7 @@ class ApiClient { ); } - Future> getJsonForObject( + Future getJsonForObject( FactoryConstructor factoryConstructor, String url, { String? token, @@ -600,28 +673,19 @@ class ApiClient { // AppState().setIsAuthenticated = jsonData["IsAuthenticated"]; } - var apiResponse = ApiResponse.fromJson( - jsonData, - (data) => returnJsonData ? data : jsonData, - ); + var apiResponse = ApiResponse.fromJson(jsonData); if (apiResponse.isSuccess) { - return ApiResponse( - totalItemsCount: apiResponse.totalItemsCount, - data: factoryConstructor(apiResponse.data), - messageStatus: apiResponse.messageStatus, - errorMessage: apiResponse.errorMessage, - errorEndUserMessage: apiResponse.errorEndUserMessage, - ); + return ApiResponse( + totalItemsCount: apiResponse.totalItemsCount, + data: apiResponse.data, + messageStatus: apiResponse.messageStatus, + errorMessage: apiResponse.errorMessage, + errorEndUserMessage: apiResponse.errorEndUserMessage); } else { throw APIException( APIException.BAD_REQUEST, - error: APIError( - null, - apiResponse.errorEndUserMessage ?? apiResponse.errorMessage, - null, - response.statusCode, - ), + error: APIError(null, apiResponse.errorEndUserMessage ?? apiResponse.errorMessage, null, response.statusCode), ); } } diff --git a/lib/api/api_mapper_class.dart b/lib/api/api_mapper_class.dart index 2af557b..bcc8bf1 100644 --- a/lib/api/api_mapper_class.dart +++ b/lib/api/api_mapper_class.dart @@ -1,9 +1,11 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; +import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; +import 'package:mohem_flutter_app/models/check_activation_code_model.dart'; import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; @@ -16,23 +18,40 @@ import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart'; class ApiClassMapper { - Future handleApiEndpoint({required String endpoint, required var jsonData}) async { + Future handleApiEndpoint({required String endpoint, required var jsonData, String? errorMessage}) async { switch (endpoint) { case 'MemberLogin': - return MemberLoginListModel.fromRawJson(json.encode(jsonData.data)); + return MemberLoginListModel.fromRawJson(jsonEncode(jsonData)); case 'Mohemm_SendActivationCodebyOTPNotificationType': - logger.d("Mohemm_SendActivationCodebyOTPNotificationType"); - BasicMemberInformationModel response = BasicMemberInformationModel.fromRawJson(json.encode(jsonData.data)); + BasicMemberInformationModel response = BasicMemberInformationModel.fromRawJson(jsonEncode(jsonData)); AppState().postParamsObject?.setLogInTokenID = response.logInTokenId; return response; case 'CheckActivationCode': - - return; + CheckActivationCodeModel responseData = CheckActivationCodeModel.fromRawJson(jsonEncode(jsonData)); + AppState().postParamsObject?.setTokenID = responseData.authenticationTokenId; + AppState().postParamsObject?.mobileNumber = responseData.basicMemberInformation!.pMobileNumber; + AppState().postParamsObject?.userName = AppState().getUserName; + AppState().postParamsObject?.pEmailAddress = responseData.basicMemberInformation!.pEmailAddress; + AppState().postParamsObject?.pSessionId = responseData.pSessionId; + AppState().postParamsObject?.pUserName = AppState().getUserName; + AppState().postParamsObject?.pSelectedEmployeeNumber = AppState().getUserName; + AppState().postParamsObject?.setPLegislationCode = responseData.basicMemberInformation!.pLegislationCode; + AppState().postParamsObject?.setPayrollCodeStr = responseData.memberInformationList!.first.pAYROLLCODE; + AppState().setBusinessCardPrivilege = responseData.memberInformationList!.first.businessCardPrivilege ?? false; + // AppState().postParamsObject!.logInTokenID = responseData.authenticationTokenId; + responseData.errorMessage = errorMessage; + return responseData; case 'RefreshToken': return; case 'Logout': return; case 'Mohemm_Insert_MobileDeviceInfo': + if (jsonData is Map && jsonData['Data'] == true) { + return true; + } else { + return false; + } + return; case 'Mohemm_GetMobileLoginInfo_NEW': return; @@ -47,8 +66,7 @@ class ApiClassMapper { case 'ChangePassword_Forget': return; case 'CheckMobileAppVersion': - GenericMapperModel response = GenericMapperModel.fromRawJson(json.encode(jsonData.data)); - return CheckMobileAppVersionModel.fromRawJson(json.encode(response)); + return CheckMobileAppVersionModel.fromRawJson(jsonData); // COCWS endpoints case 'Mohemm_ITG_GetCategories': return; diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 63560ba..a95cd21 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -27,7 +27,7 @@ class DashboardApiClient { Map postParams = {}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData.getAttendanceTrackingList; }, url, postParams); } @@ -37,7 +37,7 @@ class DashboardApiClient { Map postParams = {}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData; }, url, postParams); } @@ -68,7 +68,7 @@ class DashboardApiClient { postParams.addAll(AppState().postParamsJson); if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData.getAccrualBalancesList ?? []; }, url, postParams); } @@ -78,18 +78,18 @@ class DashboardApiClient { Map postParams = {}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData; }, url, postParams); } //Menus List Future> getListMenu() async { - String url = "${ApiConsts.erpRest}GET_MENU"; + String url = "${ApiConsts.erpRest}GET_Menu_Entries"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData.listMenu ?? []; }, url, postParams); } @@ -147,7 +147,7 @@ class DashboardApiClient { }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); return responseData; }, url, postParams); } @@ -163,7 +163,7 @@ class DashboardApiClient { }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { - GenericResponseModel responseData = GenericResponseModel.fromJson(json); + GenericResponseModel responseData = GenericResponseModel.fromJson(json["Data"]); MohemmItgResponseItem res = MohemmItgResponseItem.fromJson(jsonDecode(responseData.mohemmITGResponseItem ?? "")); // var jsonDecodedData = jsonDecode(jsonDecode(responseData.mohemmITGResponseItem!)['result']['data']); return res; diff --git a/lib/api/login_api_client.dart b/lib/api/login_api_client.dart index a853004..64d218f 100644 --- a/lib/api/login_api_client.dart +++ b/lib/api/login_api_client.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/api/api_mapper_class.dart'; 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_activation_code_model.dart'; import 'package:mohem_flutter_app/models/check_mobile_app_version_model.dart'; import 'package:mohem_flutter_app/models/generic_mapper_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; @@ -29,9 +30,10 @@ class LoginApiClient { }, url, postParams); } - Future insertMobileLoginInfoNEW( + Future insertMobileLoginInfoNEW( String email, int sessionId, String employeeName, int loginType, String mobileNumber, String userName, String deviceToken, String deviceType) async { - String url = "${ApiConsts.authRest}Mohemm_InsertMobileLoginInfo"; + String url = "${ApiConsts.authRest}Mohemm_Insert_MobileDeviceInfo"; + // String url = "${ApiConsts.authRest}Mohemm_InsertMobileLoginInfo"; Map postParams = { "MobileNumber": mobileNumber, "P_USER_NAME": userName, @@ -46,11 +48,14 @@ class LoginApiClient { postParams["DeviceToken"] = deviceToken; postParams["DeviceType"] = deviceType; postParams.addAll(AppState().postParamsJson); - return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams, token: AppState().postParamsObject!.tokenID); + ApiResponse res = ApiResponse.fromJson(response); + dynamic ress = await ApiClassMapper().handleApiEndpoint(endpoint: "Mohemm_Insert_MobileDeviceInfo", jsonData: res); + if(ress == true){ AppState().setLogged = true; - return responseData; - }, url, postParams); + } + return ress; + } Future checkMobileAppVersion() async { @@ -58,8 +63,14 @@ class LoginApiClient { Map postParams = {}; postParams.addAll(AppState().postParamsJson); dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams, returnJsonData: false); - CheckMobileAppVersionModel res = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response); - return res; + ApiResponse res = ApiResponse.fromJson(response); + + if (res.data == null || res.data!.isEmpty) { + return CheckMobileAppVersionModel(data: ""); // Handle the case where response data is null + } else { + CheckMobileAppVersionModel res = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response.data); + return res; + } } Future memberLogin(String username, String password) async { @@ -67,40 +78,32 @@ class LoginApiClient { Map postParams = {"P_APP_VERSION": "CS", "P_LANGUAGE": "US", "P_PASSWORD": password, "P_USER_NAME": username}; postParams.addAll(AppState().postParamsJson); dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams); - MemberLoginListModel res = await ApiClassMapper().handleApiEndpoint(endpoint: "MemberLogin", jsonData: response); - AppState().postParamsObject?.setLogInTokenID = res.logInTokenId; - print("setLogInTokenID: ${AppState().postParamsObject?.logInTokenID}"); - return res; + ApiResponse res = ApiResponse.fromJson(response); + MemberLoginListModel ress = await ApiClassMapper().handleApiEndpoint(endpoint: "MemberLogin", jsonData: res.data); + AppState().postParamsObject?.setLogInTokenID = ress.logInTokenId; + print("getLogInTokenID: ${AppState().postParamsObject?.getLogInTokenID}"); + return ress; } Future mohemmSendActivationCodeByOTPNotificationType(int isMobileFingerPrint, String? mobileNumber, int optSendType, String? pUserName) async { String url = "${ApiConsts.authRest}Mohemm_SendActivationCodebyOTPNotificationType"; Map postParams = {"IsMobileFingerPrint": isMobileFingerPrint, "MobileNumber": mobileNumber, "OTP_SendType": optSendType, "P_USER_NAME": pUserName}; postParams.addAll(AppState().postParamsJson); - postParams["LogInTokenID"] = AppState().postParamsObject?.logInTokenID; + postParams["LogInTokenID"] = AppState().postParamsObject?.getLogInTokenID; print(postParams); dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams); - return await ApiClassMapper().handleApiEndpoint(endpoint: "Mohemm_SendActivationCodebyOTPNotificationType", jsonData: response); + ApiResponse res = ApiResponse.fromJson(response); + return await ApiClassMapper().handleApiEndpoint(endpoint: "Mohemm_SendActivationCodebyOTPNotificationType", jsonData: res.data); } - Future checkActivationCode(bool isDeviceNFC, String? mobileNumber, String activationCode, String? pUserName) async { + Future checkActivationCode(bool isDeviceNFC, String? mobileNumber, String activationCode, String? pUserName) async { String url = "${ApiConsts.authRest}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.data); - AppState().postParamsObject?.setTokenID = responseData.tokenID; - AppState().postParamsObject?.mobileNumber = responseData.basicMemberInformation!.pMobileNumber; - AppState().postParamsObject?.userName = AppState().getUserName; - AppState().postParamsObject?.pEmailAddress = responseData.basicMemberInformation!.pEmailAddress; - AppState().postParamsObject?.pSessionId = responseData.pSESSIONID; - AppState().postParamsObject?.pUserName = AppState().getUserName; - AppState().postParamsObject?.pSelectedEmployeeNumber = AppState().getUserName; - AppState().postParamsObject?.setPLegislationCode = responseData.basicMemberInformation!.pLegislationCode; - AppState().postParamsObject?.setPayrollCodeStr = responseData.memberInformationList!.first.pAYROLLCODE; - AppState().setBusinessCardPrivilege = responseData.businessCardPrivilege ?? false; - return responseData; - }, url, postParams); + postParams["LogInTokenID"] = AppState().postParamsObject?.getLogInTokenID; + dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams); + ApiResponse res = ApiResponse.fromJson(response); + return await ApiClassMapper().handleApiEndpoint(endpoint: "CheckActivationCode", jsonData: res.data); } Future getBasicUserInformation(String pAppVersion, String pUsername) async { diff --git a/lib/api/my_team/my_team_api_client.dart b/lib/api/my_team/my_team_api_client.dart index df635b0..08484b4 100644 --- a/lib/api/my_team/my_team_api_client.dart +++ b/lib/api/my_team/my_team_api_client.dart @@ -102,7 +102,7 @@ class MyTeamApiClient { postParams.addAll(AppState().postParamsJson); postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + GenericResponseModel? responseData = GenericResponseModel.fromJson(json["Data"]); return responseData.getMenuEntriesList ?? []; }, url, postParams); } diff --git a/lib/models/basic_member_information_model.dart b/lib/models/basic_member_information_model.dart index 4f241a5..04839ca 100644 --- a/lib/models/basic_member_information_model.dart +++ b/lib/models/basic_member_information_model.dart @@ -22,20 +22,20 @@ class BasicMemberInformationModel { String toRawJson() => json.encode(toJson()); factory BasicMemberInformationModel.fromJson(Map json) => BasicMemberInformationModel( - pReturnStatus: json["p_RETURN_STATUS"], - pReturnMsg: json["p_RETURN_MSG"], - pMobileNumber: json["p_MOBILE_NUMBER"], - pEmailAddress: json["p_EMAIL_ADDRESS"], - pLegislationCode: json["p_LEGISLATION_CODE"], - logInTokenId: json["logInTokenID"], - ); + pReturnStatus: json["P_RETURN_STATUS"], + pReturnMsg: json["P_RETURN_MSG"], + pMobileNumber: json["P_MOBILE_NUMBER"], + pEmailAddress: json["P_EMAIL_ADDRESS"], + pLegislationCode: json["P_LEGISLATION_CODE"], + logInTokenId: json["LogInTokenID"], + ); Map toJson() => { - "p_RETURN_STATUS": pReturnStatus, - "p_RETURN_MSG": pReturnMsg, - "p_MOBILE_NUMBER": pMobileNumber, - "p_EMAIL_ADDRESS": pEmailAddress, - "p_LEGISLATION_CODE": pLegislationCode, - "logInTokenID": logInTokenId, - }; + "P_RETURN_STATUS": pReturnStatus, + "P_RETURN_MSG": pReturnMsg, + "P_MOBILE_NUMBER": pMobileNumber, + "P_EMAIL_ADDRESS": pEmailAddress, + "P_LEGISLATION_CODE": pLegislationCode, + "LogInTokenID": logInTokenId, + }; } diff --git a/lib/models/check_activation_code_model.dart b/lib/models/check_activation_code_model.dart new file mode 100644 index 0000000..cfef8a6 --- /dev/null +++ b/lib/models/check_activation_code_model.dart @@ -0,0 +1,117 @@ +import 'dart:convert'; + +import 'package:mohem_flutter_app/models/basic_member_information_model.dart'; +import 'package:mohem_flutter_app/models/member_information_list_model.dart'; +import 'package:mohem_flutter_app/models/privilege_list_model.dart'; + +class CheckActivationCodeModel { + String? authenticationTokenId; + String? pPassowrdExpired; + String? pPasswordExpiredMsg; + String? pInvalidLoginMsg; + String? mohemmWifiSsid; + String? mohemmWifiPassword; + String? companyImageUrl; + String? companyImageDescription; + String? companyBadge; + String? companyMainCompany; + dynamic bcLogo; + dynamic bcDomain; + dynamic businessGroupName; + String? pReturnStatus; + String? pReturnMsg; + List? memberInformationList; + BasicMemberInformationModel? basicMemberInformation; + dynamic mohemmItgResponseItem; + int? pSessionId; + String? tokenId; + String? refreshToken; + String? errorMessage; + DateTime? expiry; + List? privilegeList; + + CheckActivationCodeModel({ + this.authenticationTokenId, + this.pPassowrdExpired, + this.pPasswordExpiredMsg, + this.pInvalidLoginMsg, + this.mohemmWifiSsid, + this.mohemmWifiPassword, + this.companyImageUrl, + this.companyImageDescription, + this.companyBadge, + this.companyMainCompany, + this.bcLogo, + this.bcDomain, + this.businessGroupName, + this.pReturnStatus, + this.pReturnMsg, + this.memberInformationList, + this.basicMemberInformation, + this.mohemmItgResponseItem, + this.pSessionId, + this.tokenId, + this.refreshToken, + this.errorMessage, + this.expiry, + this.privilegeList, + }); + + factory CheckActivationCodeModel.fromRawJson(String str) => CheckActivationCodeModel.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory CheckActivationCodeModel.fromJson(Map json) => CheckActivationCodeModel( + authenticationTokenId: json["AuthenticationTokenID"], + pPassowrdExpired: json["P_PASSOWRD_EXPIRED"], + pPasswordExpiredMsg: json["P_PASSWORD_EXPIRED_MSG"], + pInvalidLoginMsg: json["P_INVALID_LOGIN_MSG"], + mohemmWifiSsid: json["Mohemm_Wifi_SSID"], + mohemmWifiPassword: json["Mohemm_Wifi_Password"], + companyImageUrl: json["CompanyImageURL"], + companyImageDescription: json["CompanyImageDescription"], + companyBadge: json["CompanyBadge"], + companyMainCompany: json["CompanyMainCompany"], + bcLogo: json["BC_Logo"], + bcDomain: json["BC_Domain"], + businessGroupName: json["BUSINESS_GROUP_NAME"], + pReturnStatus: json["P_RETURN_STATUS"], + pReturnMsg: json["P_RETURN_MSG"], + memberInformationList: json["MemberInformationList"] == null ? [] : List.from(json["MemberInformationList"]!.map((x) => MemberInformationListModel.fromJson(x))), + basicMemberInformation: json["BasicMemberInformation"] == null ? null : BasicMemberInformationModel.fromJson(json["BasicMemberInformation"]), + mohemmItgResponseItem: json["Mohemm_ITG_ResponseItem"], + pSessionId: json["P_SESSION_ID"], + tokenId: json["TokenId"], + refreshToken: json["RefreshToken"], + errorMessage: json["ErrorMessage"], + expiry: json["Expiry"] == null ? null : DateTime.parse(json["Expiry"]), + privilegeList: json["Privilege_List"] == null ? [] : List.from(json["Privilege_List"]!.map((x) => PrivilegeListModel.fromJson(x))), + ); + + Map toJson() => { + "AuthenticationTokenID": authenticationTokenId, + "P_PASSOWRD_EXPIRED": pPassowrdExpired, + "P_PASSWORD_EXPIRED_MSG": pPasswordExpiredMsg, + "P_INVALID_LOGIN_MSG": pInvalidLoginMsg, + "Mohemm_Wifi_SSID": mohemmWifiSsid, + "Mohemm_Wifi_Password": mohemmWifiPassword, + "CompanyImageURL": companyImageUrl, + "CompanyImageDescription": companyImageDescription, + "CompanyBadge": companyBadge, + "CompanyMainCompany": companyMainCompany, + "BC_Logo": bcLogo, + "BC_Domain": bcDomain, + "BUSINESS_GROUP_NAME": businessGroupName, + "P_RETURN_STATUS": pReturnStatus, + "P_RETURN_MSG": pReturnMsg, + "MemberInformationList": memberInformationList == null ? [] : List.from(memberInformationList!.map((x) => x.toJson())), + "BasicMemberInformation": basicMemberInformation?.toJson(), + "Mohemm_ITG_ResponseItem": mohemmItgResponseItem, + "P_SESSION_ID": pSessionId, + "TokenId": tokenId, + "RefreshToken": refreshToken, + "ErrorMessage": errorMessage, + "Expiry": expiry?.toIso8601String(), + "Privilege_List": privilegeList == null ? [] : List.from(privilegeList!.map((x) => x.toJson())), + }; +} diff --git a/lib/models/check_mobile_app_version_model.dart b/lib/models/check_mobile_app_version_model.dart index b3a5bc9..c5f68c3 100644 --- a/lib/models/check_mobile_app_version_model.dart +++ b/lib/models/check_mobile_app_version_model.dart @@ -1,11 +1,9 @@ import 'dart:convert'; class CheckMobileAppVersionModel { - String? data; + dynamic data; - CheckMobileAppVersionModel({ - this.data, - }); + CheckMobileAppVersionModel({this.data}); factory CheckMobileAppVersionModel.fromRawJson(String str) => CheckMobileAppVersionModel.fromJson(json.decode(str)); diff --git a/lib/models/generic_mapper_model.dart b/lib/models/generic_mapper_model.dart index e1edaba..e09cc04 100644 --- a/lib/models/generic_mapper_model.dart +++ b/lib/models/generic_mapper_model.dart @@ -1,37 +1,37 @@ -import 'dart:convert'; - -class GenericMapperModel { - int? totalItemsCount; - dynamic data; - int? messageStatus; - dynamic errorMessage; - dynamic errorEndUserMessage; - - GenericMapperModel({ - this.totalItemsCount, - this.data, - this.messageStatus, - this.errorMessage, - this.errorEndUserMessage, - }); - - factory GenericMapperModel.fromRawJson(String str) => GenericMapperModel.fromJson(json.decode(str)); - - String toRawJson() => json.encode(toJson()); - - factory GenericMapperModel.fromJson(Map json) => GenericMapperModel( - totalItemsCount: json["totalItemsCount"], - data: json["data"], - messageStatus: json["messageStatus"], - errorMessage: json["errorMessage"], - errorEndUserMessage: json["errorEndUserMessage"], - ); - - Map toJson() => { - "totalItemsCount": totalItemsCount, - "data": data, - "messageStatus": messageStatus, - "errorMessage": errorMessage, - "errorEndUserMessage": errorEndUserMessage, - }; -} +// import 'dart:convert'; +// +// class GenericMapperModel { +// int? totalItemsCount; +// dynamic data; +// int? messageStatus; +// dynamic errorMessage; +// dynamic errorEndUserMessage; +// +// GenericMapperModel({ +// this.totalItemsCount, +// this.data, +// this.messageStatus, +// this.errorMessage, +// this.errorEndUserMessage, +// }); +// +// factory GenericMapperModel.fromRawJson(String str) => GenericMapperModel.fromJson(json.decode(str)); +// +// String toRawJson() => json.encode(toJson()); +// +// factory GenericMapperModel.fromJson(Map json) => GenericMapperModel( +// totalItemsCount: json["TotalItemsCount"], +// data: json["Data"], +// messageStatus: json["MessageStatus"], +// errorMessage: json["ErrorMessage"], +// errorEndUserMessage: json["ErrorEndUserMessage"], +// ); +// +// Map toJson() => { +// "TotalItemsCount": totalItemsCount, +// "Data": data, +// "MessageStatus": messageStatus, +// "ErrorMessage": errorMessage, +// "ErrorEndUserMessage": errorEndUserMessage, +// }; +// } diff --git a/lib/models/member_information_list_model.dart b/lib/models/member_information_list_model.dart index 4871855..d975fd4 100644 --- a/lib/models/member_information_list_model.dart +++ b/lib/models/member_information_list_model.dart @@ -62,7 +62,7 @@ class MemberInformationListModel { int? pOSITIONID; String? pOSITIONNAME; String? pRIMARYFLAG; - int? rOWNUM; + String? rOWNUM; int? sERVICEDAYS; int? sERVICEMONTHS; int? sERVICEYEARS; @@ -85,6 +85,7 @@ class MemberInformationListModel { int? tOROWNUM; String? uNITNUMBER; String? uSERSTATUS; + bool? businessCardPrivilege; MemberInformationListModel( {this.aCTUALTERMINATIONDATE, @@ -97,6 +98,7 @@ class MemberInformationListModel { this.bUSINESSGROUPID, this.bUSINESSGROUPNAME, this.businessCardQR, + this.businessCardPrivilege, this.cURRENTEMPLOYEEFLAG, this.eMPLOYEEDISPLAYNAME, this.eMPLOYEEDISPLAYNAMEAr, @@ -174,6 +176,7 @@ class MemberInformationListModel { aSSIGNMENTENDDATE = json['ASSIGNMENT_END_DATE']; aSSIGNMENTID = json['ASSIGNMENT_ID']; aSSIGNMENTNUMBER = json['ASSIGNMENT_NUMBER']; + businessCardPrivilege = json['businessCardPrivilege']; aSSIGNMENTSTARTDATE = json['ASSIGNMENT_START_DATE']; aSSIGNMENTSTATUSTYPEID = json['ASSIGNMENT_STATUS_TYPE_ID']; aSSIGNMENTTYPE = json['ASSIGNMENT_TYPE']; @@ -276,6 +279,7 @@ class MemberInformationListModel { data['EMPLOYEE_NAME_Ar'] = this.eMPLOYEENAMEAr; data['EMPLOYEE_NAME_En'] = this.eMPLOYEENAMEEn; data['EMPLOYEE_NUMBER'] = this.eMPLOYEENUMBER; + data['businessCardPrivilege'] = this.businessCardPrivilege; data['EMPLOYEE_WORK_NUMBER'] = this.eMPLOYEEWORKNUMBER; data['EMPLOYMENT_CATEGORY'] = this.eMPLOYMENTCATEGORY; data['EMPLOYMENT_CATEGORY_MEANING'] = this.eMPLOYMENTCATEGORYMEANING; diff --git a/lib/models/member_login_list_model.dart b/lib/models/member_login_list_model.dart index 2898a03..ca581ca 100644 --- a/lib/models/member_login_list_model.dart +++ b/lib/models/member_login_list_model.dart @@ -26,24 +26,24 @@ class MemberLoginListModel { String toRawJson() => json.encode(toJson()); factory MemberLoginListModel.fromJson(Map json) => MemberLoginListModel( - pReturnStatus: json["p_RETURN_STATUS"], - pReturnMsg: json["p_RETURN_MSG"], - pPassowrdExpired: json["p_PASSOWRD_EXPIRED"], - pPasswordExpiredMsg: json["p_PASSWORD_EXPIRED_MSG"], - pMobileNumber: json["p_MOBILE_NUMBER"], - pEmailAddress: json["p_EMAIL_ADDRESS"], - pLegislationCode: json["p_LEGISLATION_CODE"], - logInTokenId: json["logInTokenID"], + pReturnStatus: json["P_RETURN_STATUS"], + pReturnMsg: json["P_RETURN_MSG"], + pPassowrdExpired: json["P_PASSOWRD_EXPIRED"], + pPasswordExpiredMsg: json["P_PASSWORD_EXPIRED_MSG"], + pMobileNumber: json["P_MOBILE_NUMBER"], + pEmailAddress: json["P_EMAIL_ADDRESS"], + pLegislationCode: json["P_LEGISLATION_CODE"], + logInTokenId: json["LogInTokenID"], ); Map toJson() => { - "p_RETURN_STATUS": pReturnStatus, - "p_RETURN_MSG": pReturnMsg, - "p_PASSOWRD_EXPIRED": pPassowrdExpired, - "p_PASSWORD_EXPIRED_MSG": pPasswordExpiredMsg, - "p_MOBILE_NUMBER": pMobileNumber, - "p_EMAIL_ADDRESS": pEmailAddress, - "p_LEGISLATION_CODE": pLegislationCode, - "logInTokenID": logInTokenId, + "P_RETURN_STATUS": pReturnStatus, + "P_RETURN_MSG": pReturnMsg, + "P_PASSOWRD_EXPIRED": pPassowrdExpired, + "P_PASSWORD_EXPIRED_MSG": pPasswordExpiredMsg, + "P_MOBILE_NUMBER": pMobileNumber, + "P_EMAIL_ADDRESS": pEmailAddress, + "P_LEGISLATION_CODE": pLegislationCode, + "LogInTokenID": logInTokenId, }; } diff --git a/lib/models/post_params_model.dart b/lib/models/post_params_model.dart index 47c81c7..f15054c 100644 --- a/lib/models/post_params_model.dart +++ b/lib/models/post_params_model.dart @@ -76,10 +76,10 @@ class PostParamsModel { return data; } - // setLogInTokenID(String? token) => logInTokenID = token; + // set setLogInTokenID(String? token) => logInTokenID = token; String? _LogInTokenID; - String? get getLogInTokenID => _LogInTokenID; + String? get getLogInTokenID => _LogInTokenID ?? logInTokenID; set setLogInTokenID(String? value) { logInTokenID = value; diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 05ddf30..d2b4a10 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -17,6 +17,7 @@ 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/check_activation_code_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/get_mobile_login_info_list_model.dart'; import 'package:mohem_flutter_app/ui/dialogs/id/business_card_dialog.dart'; @@ -369,10 +370,10 @@ class _VerifyLastLoginScreenState extends State { Future performDirectApiCall(String _title, String _icon, int _flag, String value, TextEditingController? _pinPutController, {bool isDirectLogin = false}) async { try { - GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(true, AppState().memberLoginList?.pMobileNumber, value, AppState().getUserName); - GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW( + CheckActivationCodeModel? genericResponseModel = await LoginApiClient().checkActivationCode(true, AppState().memberLoginList?.pMobileNumber, value, AppState().getUserName); + await LoginApiClient().insertMobileLoginInfoNEW( AppState().memberLoginList?.pEmailAddress ?? "", - genericResponseModel?.pSESSIONID ?? 0, + genericResponseModel?.pSessionId ?? 0, genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "", _flag, AppState().memberLoginList?.pMobileNumber ?? "", diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index 94918ee..48815bb 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -16,6 +16,7 @@ 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/check_activation_code_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; @@ -576,7 +577,7 @@ class _VerifyLoginScreenState extends State { width: 38, color: isDisable ? MyColors.darkTextColor.withOpacity(0.7) : null, ), - _title.toText16(height: 20/16) + _title.toText16(height: 20 / 16) ], ), ), @@ -624,34 +625,34 @@ class _VerifyLoginScreenState extends State { (value, TextEditingController _pinPutController) async { Utils.showLoading(context); //try { - GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(true, AppState().memberLoginList?.pMobileNumber, value, AppState().getUserName); - GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW( - AppState().memberLoginList?.pEmailAddress ?? "", - genericResponseModel?.pSESSIONID ?? 0, - genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "", - _flag, - AppState().memberLoginList?.pMobileNumber ?? "", - AppState().getUserName!, - AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken!, - Platform.isAndroid ? "android" : "ios"); - if (genericResponseModel?.errorMessage != null) { - Utils.showToast(genericResponseModel?.errorMessage ?? ""); - } else { - AppState().setPrivilegeListModel = genericResponseModel!.privilegeList ?? []; - AppState().setMemberInformationListModel = genericResponseModel.memberInformationList?.first; - MemberInformationListModel.saveToPrefs(genericResponseModel.memberInformationList ?? []); - PrivilegeListModel.saveToPrefs(genericResponseModel.privilegeList ?? []); - AppState().setMohemmWifiSSID = genericResponseModel.mohemmWifiSSID; - AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; - AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; - Utils.saveStringFromPrefs(SharedPrefsConsts.username, AppState().getUserName!); - Utils.saveStringFromPrefs(SharedPrefsConsts.password, AppState().password!); - Utils.saveStringFromPrefs(SharedPrefsConsts.mohemmWifiSSID, genericResponseModel.mohemmWifiSSID!); - Utils.saveStringFromPrefs(SharedPrefsConsts.mohemmWifiPassword, genericResponseModel.mohemmWifiPassword!); - } - Utils.hideLoading(context); - Navigator.pop(context); - Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); + CheckActivationCodeModel? genericResponseModel = await LoginApiClient().checkActivationCode(true, AppState().memberLoginList?.pMobileNumber, value, AppState().getUserName); + await LoginApiClient().insertMobileLoginInfoNEW( + AppState().memberLoginList?.pEmailAddress ?? "", + genericResponseModel?.pSessionId ?? 0, + genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "", + _flag, + AppState().memberLoginList?.pMobileNumber ?? "", + AppState().getUserName!, + AppState().getIsHuawei ? AppState().getHuaweiPushToken : firebaseToken!, + Platform.isAndroid ? "android" : "ios"); + if (genericResponseModel?.errorMessage != null) { + Utils.showToast(genericResponseModel?.errorMessage ?? ""); + } else { + AppState().setPrivilegeListModel = genericResponseModel!.privilegeList ?? []; + AppState().setMemberInformationListModel = genericResponseModel.memberInformationList?.first; + MemberInformationListModel.saveToPrefs(genericResponseModel.memberInformationList ?? []); + PrivilegeListModel.saveToPrefs(genericResponseModel.privilegeList ?? []); + AppState().setMohemmWifiSSID = genericResponseModel.mohemmWifiSsid; + AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; + AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; + Utils.saveStringFromPrefs(SharedPrefsConsts.username, AppState().getUserName!); + Utils.saveStringFromPrefs(SharedPrefsConsts.password, AppState().password!); + Utils.saveStringFromPrefs(SharedPrefsConsts.mohemmWifiSSID, genericResponseModel.mohemmWifiSsid!); + Utils.saveStringFromPrefs(SharedPrefsConsts.mohemmWifiPassword, genericResponseModel.mohemmWifiPassword!); + } + Utils.hideLoading(context); + Navigator.pop(context); + Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); // } catch (ex) { // print(ex); // _pinPutController.clear(); @@ -678,7 +679,7 @@ class _VerifyLoginScreenState extends State { ).displayDialog(context); } catch (ex) { Utils.hideLoading(context); - Utils.handleException(ex, context, null); + Utils.handleException(ex, context, null); } } // @@ -692,5 +693,4 @@ class _VerifyLoginScreenState extends State { // // isLoading = isTrue; // }); // } - }