Compare commits

...

2 Commits

@ -264,6 +264,7 @@ import 'dart:io';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:http/io_client.dart'; import 'package:http/io_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart';
import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/generic_mapper_model.dart'; import 'package:mohem_flutter_app/models/generic_mapper_model.dart';
@ -379,7 +380,7 @@ class APIError {
class ApiResponse<T> { class ApiResponse<T> {
final dynamic totalItemsCount; final dynamic totalItemsCount;
final T data; final T? data;
final dynamic messageStatus; final dynamic messageStatus;
final dynamic errorMessage; final dynamic errorMessage;
final dynamic errorEndUserMessage; final dynamic errorEndUserMessage;
@ -391,7 +392,7 @@ class ApiResponse<T> {
String toRawJson() => json.encode(toJson()); String toRawJson() => json.encode(toJson());
factory ApiResponse.fromJson(Map<String, dynamic> json) => ApiResponse( factory ApiResponse.fromJson(Map<String, dynamic> json) => ApiResponse(
totalItemsCount: json["TotalItemsCount"] ?? json["totalItemsCount"] , totalItemsCount: json["TotalItemsCount"] ?? json["totalItemsCount"],
data: json["Data"] ?? json["data"], data: json["Data"] ?? json["data"],
messageStatus: json["MessageStatus"] ?? json["messageStatus"], messageStatus: json["MessageStatus"] ?? json["messageStatus"],
errorMessage: json["ErrorMessage"] ?? json["errorMessage"], errorMessage: json["ErrorMessage"] ?? json["errorMessage"],
@ -406,7 +407,7 @@ class ApiResponse<T> {
"ErrorEndUserMessage": errorEndUserMessage, "ErrorEndUserMessage": errorEndUserMessage,
}; };
bool get isSuccess => messageStatus == 1 && (errorMessage==null || errorMessage!.isEmpty ); bool get isSuccess => messageStatus == 1 && (errorMessage == null || errorMessage!.isEmpty);
} }
APIException _throwAPIException(Response response) { APIException _throwAPIException(Response response) {
@ -474,6 +475,16 @@ class ApiClient {
printLongLog("body:$bodyJson"); printLongLog("body:$bodyJson");
} }
if (!_headers.containsKey('Authorization') && jsonObject is Map && jsonObject.containsKey('tokenID') && AppState().isLogged) {
_headers['Authorization'] = 'Bearer ${jsonObject['tokenID']}';
}
// Remove "logInTokenID" and "tokenID" from jsonObject if present
if (jsonObject is Map && AppState().isLogged) {
jsonObject.remove("logInTokenID");
jsonObject.remove("tokenID");
}
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) { if (!kReleaseMode) {
@ -485,7 +496,7 @@ class ApiClient {
// Handle authentication flag if present // Handle authentication flag if present
if (jsonData["IsAuthenticated"] != null) { if (jsonData["IsAuthenticated"] != null) {
print("IsAuthenticated Need to be upated: ${jsonData["IsAuthenticated"]}"); print("IsAuthenticated Need to be upated: ${jsonData["IsAuthenticated"]}");
// AppState().setIsAuthenticated = jsonData["IsAuthenticated"]; // // AppState().setIsAuthenticated = jsonData["IsAuthenticated"];
} }
// Create ApiResponse from the json // Create ApiResponse from the json
@ -494,8 +505,7 @@ class ApiClient {
if (apiResponse.isSuccess) { if (apiResponse.isSuccess) {
return factoryConstructor(jsonData); return factoryConstructor(jsonData);
} else { } else {
if(apiResponse.messageStatus == null || apiResponse.messageStatus != 1) { if (apiResponse.messageStatus == null || apiResponse.messageStatus != 1) {
logger.i(apiResponse.errorMessage); logger.i(apiResponse.errorMessage);
throw APIException( throw APIException(
APIException.OTHER, APIException.OTHER,
@ -506,7 +516,7 @@ class ApiClient {
response.statusCode, response.statusCode,
), ),
); );
}else { } else {
throw APIException( throw APIException(
APIException.BAD_REQUEST, APIException.BAD_REQUEST,
error: APIError( error: APIError(
@ -574,7 +584,6 @@ class ApiClient {
url = url + '?' + queryString; url = url + '?' + queryString;
} }
var response = await _post( var response = await _post(
Uri.parse(url), Uri.parse(url),
body: requestBody, body: requestBody,

@ -18,6 +18,7 @@ import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart';
import 'package:mohem_flutter_app/models/generic_mapper_model.dart'; import 'package:mohem_flutter_app/models/generic_mapper_model.dart';
import 'package:mohem_flutter_app/models/generic_response_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/models/get_mobile_login_info_list_model.dart';
import 'package:mohem_flutter_app/models/get_time_card_summary_list_model.dart';
import 'package:mohem_flutter_app/models/itg/itg_main_response.dart'; import 'package:mohem_flutter_app/models/itg/itg_main_response.dart';
import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart';
@ -106,7 +107,7 @@ class ApiClassMapper {
case 'Mohemm_ITG_OffersDiscount_GetAll': case 'Mohemm_ITG_OffersDiscount_GetAll':
return; return;
case 'Mohemm_ITG_GetPageNotification': case 'Mohemm_ITG_GetPageNotification':
return MohemmItgResponseItem(); return MohemmItgResponseItem.fromJson(jsonDecode(jsonData));
case 'Mohemm_ITG_Survey_Response': case 'Mohemm_ITG_Survey_Response':
return ItgMainRes(); return ItgMainRes();
case 'Mohemm_ITG_GetPageNotificationDetails': case 'Mohemm_ITG_GetPageNotificationDetails':
@ -162,6 +163,8 @@ class ApiClassMapper {
case 'GET_EIT_TRANSACTIONS': case 'GET_EIT_TRANSACTIONS':
return CollectionTransaction(); return CollectionTransaction();
case 'GET_TIME_CARD_SUMMARY': case 'GET_TIME_CARD_SUMMARY':
// return (res.getTimeCardSummaryList?.length ?? 0) > 0 ? res.getTimeCardSummaryList!.first : null;
GetTimeCardSummaryList data = GetTimeCardSummaryList.fromRawJson(jsonEncode(jsonData));
return; return;
case 'GET_DAY_HOURS_TYPE_DETAILS': case 'GET_DAY_HOURS_TYPE_DETAILS':
return; return;

@ -53,8 +53,7 @@ class LoginApiClient {
"loginType": loginType, "loginType": loginType,
"employeeName": employeeName, "employeeName": employeeName,
"p_EMAIL_ADDRESS": email, "p_EMAIL_ADDRESS": email,
"gender":1, //todo "gender": 1, //todo
}; };
postParams["deviceToken"] = deviceToken; postParams["deviceToken"] = deviceToken;
postParams["deviceType"] = deviceType; postParams["deviceType"] = deviceType;
@ -68,19 +67,19 @@ class LoginApiClient {
return ress; return ress;
} }
Future<CheckMobileAppVersionModel?> checkMobileAppVersion() async { Future<ApiResponse?> checkMobileAppVersion() async {
String url = "${ApiConsts.authRest}CheckMobileAppVersion"; String url = "${ApiConsts.authRest}CheckMobileAppVersion";
Map<String, dynamic> postParams = {}; Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams, returnJsonData: false); dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams, returnJsonData: false);
ApiResponse res = ApiResponse.fromJson(response); return ApiResponse.fromJson(response);
if (res.data == null || res.data!.isEmpty) { // if (res.data == null || res.data!.isEmpty) {
return CheckMobileAppVersionModel(data: ""); // Handle the case where response data is null // return CheckMobileAppVersionModel(data: ""); // Handle the case where response data is null
} else { // } else {
CheckMobileAppVersionModel res = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response.data); // CheckMobileAppVersionModel result = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response);
return res;
} // }
} }
Future<MemberLoginListModel> memberLogin(String username, String password) async { Future<MemberLoginListModel> memberLogin(String username, String password) async {
@ -115,7 +114,7 @@ class LoginApiClient {
postParams["logInTokenID"] = AppState().postParamsObject?.getLogInTokenID; postParams["logInTokenID"] = AppState().postParamsObject?.getLogInTokenID;
dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams); dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams);
ApiResponse res = ApiResponse.fromJson(response); ApiResponse res = ApiResponse.fromJson(response);
AppState().isLogged =true; AppState().isLogged = true;
return await ApiClassMapper().handleApiEndpoint(endpoint: "CheckActivationCode", jsonData: res.data); return await ApiClassMapper().handleApiEndpoint(endpoint: "CheckActivationCode", jsonData: res.data);
} }
@ -131,7 +130,11 @@ class LoginApiClient {
Future<GenericResponseModel?> sendPublicActivationCode(String? mobileNumber, String? pUsername) async { Future<GenericResponseModel?> sendPublicActivationCode(String? mobileNumber, String? pUsername) async {
String url = "${ApiConsts.authRest}SendPublicActivationCode"; // todo @zahoor, not found in swagger String url = "${ApiConsts.authRest}SendPublicActivationCode"; // todo @zahoor, not found in swagger
Map<String, dynamic> postParams = {"mobileNumber": mobileNumber, "p_MOBILE_NUMBER": mobileNumber, "p_USER_NAME": pUsername, }; Map<String, dynamic> postParams = {
"mobileNumber": mobileNumber,
"p_MOBILE_NUMBER": mobileNumber,
"p_USER_NAME": pUsername,
};
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
ApiResponse res = ApiResponse.fromJson(json); ApiResponse res = ApiResponse.fromJson(json);

@ -1,6 +1,6 @@
import 'dart:async'; import 'dart:async';
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/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart';
@ -27,10 +27,19 @@ class MonthlyAttendanceApiClient {
}; };
postParams.addAll(AppState().postParamsJson); postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json); // ApiResponse responseData = await ApiClient().postJsonForObject((json) => json, url, postParams);
return (responseData.getTimeCardSummaryList?.length ?? 0) > 0 ? responseData.getTimeCardSummaryList!.first : null; // GenericResponseModel data = GenericResponseModel.fromJson(responseData.data);
}, url, postParams); // return (data.getTimeCardSummaryList?.length ?? 0) > 0 ? data.getTimeCardSummaryList!.first : null;
ApiResponse responseData = await ApiClient().postJsonForObject((json) => json, url, postParams);
print(responseData);
GenericResponseModel? data = GenericResponseModel.fromJson(responseData.data);
if (data != null) {
return (data.getTimeCardSummaryList != null && data.getTimeCardSummaryList!.isNotEmpty) ? data.getTimeCardSummaryList!.first : null;
} else {
return null;
}
} }
Future<List<GetDayHoursTypeDetailsList>> getDayHoursTypeDetails(String month, int year) async { Future<List<GetDayHoursTypeDetailsList>> getDayHoursTypeDetails(String month, int year) async {
@ -52,7 +61,6 @@ class MonthlyAttendanceApiClient {
}, url, postParams); }, url, postParams);
} }
Future<GetScheduleShiftsDetailsList?> getScheduleShiftsDetails(int pRTPID) async { Future<GetScheduleShiftsDetailsList?> getScheduleShiftsDetails(int pRTPID) async {
String url = "${ApiConsts.erpRest}GET_SCHEDULE_SHIFTS_DETAILS"; String url = "${ApiConsts.erpRest}GET_SCHEDULE_SHIFTS_DETAILS";
Map<String, dynamic> postParams = { Map<String, dynamic> postParams = {
@ -66,5 +74,4 @@ class MonthlyAttendanceApiClient {
return (responseData.getScheduleShiftsDetailsList?.length ?? 0) > 0 ? responseData.getScheduleShiftsDetailsList!.first : null; return (responseData.getScheduleShiftsDetailsList?.length ?? 0) > 0 ? responseData.getScheduleShiftsDetailsList!.first : null;
}, url, postParams); }, url, postParams);
} }
} }

@ -104,7 +104,7 @@ class MyTeamApiClient {
return await ApiClient().postJsonForObject((json) { return await ApiClient().postJsonForObject((json) {
GenericResponseModel? responseData = GenericResponseModel.fromJson(json["Data"]); GenericResponseModel? responseData = GenericResponseModel.fromJson(json["Data"]);
return responseData.getMenuEntriesList ?? []; return responseData.getMenuEntriesList ?? [];
}, url, postParams); }, url, postParams );
} }
Future<List<GetFavoriteReplacements>?> getFavoriteReplacement() async { Future<List<GetFavoriteReplacements>?> getFavoriteReplacement() async {

@ -1,5 +1,7 @@
import 'dart:convert';
class GetTimeCardSummaryList { class GetTimeCardSummaryList {
num? aBSENTDAYS; num? aBSENTDAYS;
dynamic? aCTUALHRS; dynamic? aCTUALHRS;
@ -112,6 +114,11 @@ class GetTimeCardSummaryList {
uNPAIDLEAVE = json['UNPAID_LEAVE']; uNPAIDLEAVE = json['UNPAID_LEAVE'];
} }
factory GetTimeCardSummaryList.fromRawJson(String str) => GetTimeCardSummaryList.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
Map<String, dynamic> data = new Map<String, dynamic>(); Map<String, dynamic> data = new Map<String, dynamic>();
data['ABSENT_DAYS'] = this.aBSENTDAYS; data['ABSENT_DAYS'] = this.aBSENTDAYS;
@ -150,4 +157,9 @@ class GetTimeCardSummaryList {
data['UNCOVERD_SHORTAGE_HRS'] = this.uNCOVERDSHORTAGEHRS; data['UNCOVERD_SHORTAGE_HRS'] = this.uNCOVERDSHORTAGEHRS;
data['UNPAID_LEAVE'] = this.uNPAIDLEAVE; data['UNPAID_LEAVE'] = this.uNPAIDLEAVE;
return data; return data;
}} }
}

@ -207,7 +207,7 @@ class ServicesWidget extends StatelessWidget {
} else if (menuEntry.menUName == "MBL_PERINFO_SS") { } else if (menuEntry.menUName == "MBL_PERINFO_SS") {
Navigator.of(context).pushNamed(AppRoutes.profile); Navigator.of(context).pushNamed(AppRoutes.profile);
return; return;
} else if (menuEntry.menUName!.isNotEmpty && menuEntry.menUName!.substring(4, menuEntry.menUName!.length) == "MBL_EMPLOYEE_DOCUMENTS") { } else if (menuEntry.menUName!= null && menuEntry.menUName!.isNotEmpty && menuEntry.menUName!.substring(4, menuEntry.menUName!.length) == "MBL_EMPLOYEE_DOCUMENTS") {
Navigator.pushNamed(context, AppRoutes.myDocuments); Navigator.pushNamed(context, AppRoutes.myDocuments);
return; return;
} }

@ -8,6 +8,7 @@ import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:mohem_flutter_app/api/api_client.dart';
// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; // import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
import 'package:mohem_flutter_app/api/login_api_client.dart'; import 'package:mohem_flutter_app/api/login_api_client.dart';
@ -49,7 +50,7 @@ class _LoginScreenState extends State<LoginScreen> {
TextEditingController username = TextEditingController(); TextEditingController username = TextEditingController();
TextEditingController password = TextEditingController(); TextEditingController password = TextEditingController();
CheckMobileAppVersionModel? _checkMobileAppVersion; ApiResponse? _checkMobileAppVersion;
MemberLoginListModel? _memberLoginList; MemberLoginListModel? _memberLoginList;
late final FirebaseMessaging _firebaseMessaging; late final FirebaseMessaging _firebaseMessaging;

Loading…
Cancel
Save