Compare commits

...

2 Commits

@ -264,6 +264,7 @@ import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:http/http.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/main.dart';
import 'package:mohem_flutter_app/models/generic_mapper_model.dart';
@ -379,7 +380,7 @@ class APIError {
class ApiResponse<T> {
final dynamic totalItemsCount;
final T data;
final T? data;
final dynamic messageStatus;
final dynamic errorMessage;
final dynamic errorEndUserMessage;
@ -391,8 +392,8 @@ class ApiResponse<T> {
String toRawJson() => json.encode(toJson());
factory ApiResponse.fromJson(Map<String, dynamic> json) => ApiResponse(
totalItemsCount: json["TotalItemsCount"] ?? json["totalItemsCount"] ,
data: json["Data"] ?? json["data"],
totalItemsCount: json["TotalItemsCount"] ?? json["totalItemsCount"],
data: json["Data"] ?? json["data"],
messageStatus: json["MessageStatus"] ?? json["messageStatus"],
errorMessage: json["ErrorMessage"] ?? json["errorMessage"],
errorEndUserMessage: json["ErrorEndUserMessage"] ?? json["errorEndUserMessage"],
@ -406,7 +407,7 @@ class ApiResponse<T> {
"ErrorEndUserMessage": errorEndUserMessage,
};
bool get isSuccess => messageStatus == 1 && (errorMessage==null || errorMessage!.isEmpty );
bool get isSuccess => messageStatus == 1 && (errorMessage == null || errorMessage!.isEmpty);
}
APIException _throwAPIException(Response response) {
@ -474,6 +475,16 @@ class ApiClient {
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);
if (!kReleaseMode) {
@ -485,7 +496,7 @@ class ApiClient {
// Handle authentication flag if present
if (jsonData["IsAuthenticated"] != null) {
print("IsAuthenticated Need to be upated: ${jsonData["IsAuthenticated"]}");
// AppState().setIsAuthenticated = jsonData["IsAuthenticated"];
// // AppState().setIsAuthenticated = jsonData["IsAuthenticated"];
}
// Create ApiResponse from the json
@ -494,8 +505,7 @@ class ApiClient {
if (apiResponse.isSuccess) {
return factoryConstructor(jsonData);
} else {
if(apiResponse.messageStatus == null || apiResponse.messageStatus != 1) {
if (apiResponse.messageStatus == null || apiResponse.messageStatus != 1) {
logger.i(apiResponse.errorMessage);
throw APIException(
APIException.OTHER,
@ -506,7 +516,7 @@ class ApiClient {
response.statusCode,
),
);
}else {
} else {
throw APIException(
APIException.BAD_REQUEST,
error: APIError(
@ -574,7 +584,6 @@ class ApiClient {
url = url + '?' + queryString;
}
var response = await _post(
Uri.parse(url),
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_response_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_response_model.dart';
import 'package:mohem_flutter_app/models/member_login_list_model.dart';
@ -106,7 +107,7 @@ class ApiClassMapper {
case 'Mohemm_ITG_OffersDiscount_GetAll':
return;
case 'Mohemm_ITG_GetPageNotification':
return MohemmItgResponseItem();
return MohemmItgResponseItem.fromJson(jsonDecode(jsonData));
case 'Mohemm_ITG_Survey_Response':
return ItgMainRes();
case 'Mohemm_ITG_GetPageNotificationDetails':
@ -162,6 +163,8 @@ class ApiClassMapper {
case 'GET_EIT_TRANSACTIONS':
return CollectionTransaction();
case 'GET_TIME_CARD_SUMMARY':
// return (res.getTimeCardSummaryList?.length ?? 0) > 0 ? res.getTimeCardSummaryList!.first : null;
GetTimeCardSummaryList data = GetTimeCardSummaryList.fromRawJson(jsonEncode(jsonData));
return;
case 'GET_DAY_HOURS_TYPE_DETAILS':
return;

@ -26,9 +26,9 @@ class LoginApiClient {
Map<String, dynamic> postParams = {};
postParams["DeviceToken"] = deviceToken;
postParams["DeviceType"] = deviceType;
// return await ApiClient().postJsonForObject((json) {
// GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
// print(jsonDecode(json["data"].first));
// return await ApiClient().postJsonForObject((json) {
// GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
// print(jsonDecode(json["data"].first));
// GetMobileLoginInfoListModel? modelData= GetMobileLoginInfoListModel.fromRawJson(jsonDecode(json["data"].first));
// print("getMobileLoginInfoNEW: ${modelData.toJson()}");
// // return (responseData.mohemmGetMobileLoginInfoList?.length ?? 0) > 0 ? (responseData.mohemmGetMobileLoginInfoList!.first) : null;
@ -43,7 +43,7 @@ class LoginApiClient {
Future<bool?> insertMobileLoginInfoNEW(String email, int sessionId, String employeeName, int loginType, String mobileNumber, String userName, String deviceToken, String deviceType) async {
//String url = "${ApiConsts.authRest}Mohemm_Insert_MobileDeviceInfo";
String url = "${ApiConsts.authRest}Mohemm_InsertMobileLoginInfo";
String url = "${ApiConsts.authRest}Mohemm_InsertMobileLoginInfo";
Map<String, dynamic> postParams = {
"MobileNumber": mobileNumber,
"p_USER_NAME": userName,
@ -53,8 +53,7 @@ class LoginApiClient {
"loginType": loginType,
"employeeName": employeeName,
"p_EMAIL_ADDRESS": email,
"gender":1, //todo
"gender": 1, //todo
};
postParams["deviceToken"] = deviceToken;
postParams["deviceType"] = deviceType;
@ -68,19 +67,19 @@ class LoginApiClient {
return ress;
}
Future<CheckMobileAppVersionModel?> checkMobileAppVersion() async {
Future<ApiResponse?> checkMobileAppVersion() async {
String url = "${ApiConsts.authRest}CheckMobileAppVersion";
Map<String, dynamic> postParams = {};
postParams.addAll(AppState().postParamsJson);
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) {
return CheckMobileAppVersionModel(data: ""); // Handle the case where response data is null
} else {
CheckMobileAppVersionModel res = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response.data);
return res;
}
// if (res.data == null || res.data!.isEmpty) {
// return CheckMobileAppVersionModel(data: ""); // Handle the case where response data is null
// } else {
// CheckMobileAppVersionModel result = await ApiClassMapper().handleApiEndpoint(endpoint: "CheckMobileAppVersion", jsonData: response);
// }
}
Future<MemberLoginListModel> memberLogin(String username, String password) async {
@ -115,7 +114,7 @@ class LoginApiClient {
postParams["logInTokenID"] = AppState().postParamsObject?.getLogInTokenID;
dynamic response = await ApiClient().postJsonForObject((json) => json, url, postParams);
ApiResponse res = ApiResponse.fromJson(response);
AppState().isLogged =true;
AppState().isLogged = true;
return await ApiClassMapper().handleApiEndpoint(endpoint: "CheckActivationCode", jsonData: res.data);
}
@ -131,12 +130,16 @@ class LoginApiClient {
Future<GenericResponseModel?> sendPublicActivationCode(String? mobileNumber, String? pUsername) async {
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);
return await ApiClient().postJsonForObject((json) {
ApiResponse res = ApiResponse.fromJson(json);
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
AppState().postParamsObject?.setLogInTokenID = res.data['logInTokenID'] ?? AppState().postParamsObject?.getLogInTokenID;
GenericResponseModel responseData = GenericResponseModel.fromJson(json);
AppState().postParamsObject?.setLogInTokenID = res.data['logInTokenID'] ?? AppState().postParamsObject?.getLogInTokenID;
AppState().postParamsObject?.setTokenID = res.data['logInTokenID'];
return responseData;
}, url, postParams);

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

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

@ -1,5 +1,7 @@
import 'dart:convert';
class GetTimeCardSummaryList {
num? aBSENTDAYS;
dynamic? aCTUALHRS;
@ -112,6 +114,11 @@ class GetTimeCardSummaryList {
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> data = new Map<String, dynamic>();
data['ABSENT_DAYS'] = this.aBSENTDAYS;
@ -150,4 +157,9 @@ class GetTimeCardSummaryList {
data['UNCOVERD_SHORTAGE_HRS'] = this.uNCOVERDSHORTAGEHRS;
data['UNPAID_LEAVE'] = this.uNPAIDLEAVE;
return data;
}}
}
}

@ -207,7 +207,7 @@ class ServicesWidget extends StatelessWidget {
} else if (menuEntry.menUName == "MBL_PERINFO_SS") {
Navigator.of(context).pushNamed(AppRoutes.profile);
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);
return;
}

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

Loading…
Cancel
Save