enrollment-app/lib/service/api_service.dart
2026-06-04 14:47:40 +05:30

1225 lines
38 KiB
Dart
Executable File

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:nhancepolicy/service/token_storage_service.dart';
import 'dart:convert';
import '../config/environment.dart';
import '../customAppBar/toastHelper.dart';
import 'package:nhancepolicy/logger.dart';
class ApiService {
final BuildContext context;
final tokenService = TokenStorageService();
String? _token;
String? _hrtoken;
bool _isSessionOutToastShown = false; // Flag to track toast message
bool isTpaDashboardEnabled = false;
bool isTpaSelected = false; // track which dashboard is active
ApiService(this.context) {
_initializeToken();
}
Future<void> _initializeToken() async {
_token = tokenService.getCurrentToken() ?? '';
}
Future<void> getTokenLoadAPI(token) async {
_token = token;
}
Future<Map<String, dynamic>> getClientLogoAndDetailsToApi(
String clientId, String empCode, String branchID) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final empClientId = await tokenService.readValue('empClientId');
final empClientBranchId = await tokenService.readValue('empClientBranchId');
final url = Uri.parse(
'${Environment.apiUrl}getClientDetails?post_client_id=$empClientId&post_branch_id=$empClientBranchId&pre_client_id=$clientId&pre_branch_id=$branchID');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getActiveAndInactivePolicyDetails(
String? clientId,
String? empCode,
String? status,
String? branchID,
String? mobileNo,
String? emailId) async {
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getEmployeeActiveOrInactivePolicy?client_id=${clientId ?? ''}&emp_code=${empCode ?? ''}&type=${status ?? ''}&client_branch_id=${branchID ?? ''}&mobile_no=${mobileNo ?? ''}&email_id=${emailId ?? ''}');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getSelfEmployeeProfileToApi(
token,
String clientId,
String empCode,
String branchID,
String client_policy_id) async {
logDebug(_token);
_token = await token;
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getEmployeeProfile?emp_code=$empCode&client_id=$clientId&client_branch_id=$branchID&client_policy_id=$client_policy_id');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> fetchRelationshipListToApi() async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}relationshipList');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getGpaEmpPolicyDetailsToApi(
String empPrimaryId,
String empCode,
String clientId,
String policy,
String branchID,
login_by_hr) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getEmployeePolicy?id=$empPrimaryId&emp_code=$empCode&client_id=$clientId&policy=$policy&client_branch_id=$branchID&login_by_hr=$login_by_hr');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getGmcEmpPolicyDetailsToApi(
String empPrimaryId,
String empCode,
String clientId,
String policy,
String branchID,
login_by_hr) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getEmployeePolicy?id=$empPrimaryId&emp_code=$empCode&client_id=$clientId&policy=$policy&client_branch_id=$branchID&login_by_hr=$login_by_hr');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getGmcSiTopUpToApi(
String client_id, String emp_code, String policy, String branchID) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getAddOnPolicy?client_id=$client_id&emp_code=$emp_code&policy=$policy&client_branch_id=$branchID');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getGmcSiParentTopUpToApi(
String client_id, String emp_code, String policy, String branchID) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getAddOnPolicy?client_id=$client_id&emp_code=$emp_code&policy=$policy&client_branch_id=$branchID');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getGmcDependentAddOnsToApi(
String client_id, String emp_code, String policy, String branchID) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getAddOnPolicy?client_id=$client_id&emp_code=$emp_code&policy=$policy&client_branch_id=$branchID');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getExcelFileErrorsApi(id, type) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final apiURL;
if (type == 'post') {
apiURL = Environment.apiUrlPost;
} else {
apiURL = Environment.apiUrl;
}
final url = Uri.parse('${apiURL}getExcelFileErrors/${id}/api');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> removeAddonsGmcDependentToAPI(
String empCodeString, String addOnsDependentClientPolicyId) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}removeEmpAndEmpPolicyData?emp_code=$empCodeString&client_policy_id=$addOnsDependentClientPolicyId');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> removeAddonsGmcSiToAPI(
String empCodeString, String topUpClientPolicyId) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}removeEmpAndEmpPolicyData?emp_code=$empCodeString&client_policy_id=$topUpClientPolicyId');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> removeAddonsGmcParentSiToAPI(
String empCodeString, String topUpParentClientPolicyId) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}removeEmpAndEmpPolicyData?emp_code=$empCodeString&client_policy_id=$topUpParentClientPolicyId');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> deleteItemToApi(id) async {
logDebug(_token);
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}deleteDependence?id=$id');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> saveFamilyMemberDetailsToApi(
List<Map<String, dynamic>> formDataList) async {
logDebug('saveFamilyMemberDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}addEmployeeAndDependence');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> saveAddOnsDetailsToApi(
List<Map<String, dynamic>> formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}addEmployeeAndDependence');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> sendAddonsGmcDependentToAPI(
List<Map<String, dynamic>> formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url =
Uri.parse('${Environment.apiUrl}createOrUpdateEmployeePolicySiAmount');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> sendAddonsGmcSiToAPI(
List<Map<String, dynamic>> formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url =
Uri.parse('${Environment.apiUrl}createOrUpdateEmployeePolicySiAmount');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> sendAddonsGmcParentSiToAPI(
List<Map<String, dynamic>> formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url =
Uri.parse('${Environment.apiUrl}createOrUpdateEmployeePolicySiAmount');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> sendAddOnToAPI(
Map<String, dynamic> formData) async {
logDebug('sendAddOnToAPI API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}iAgreeForAddOn');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formData);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> topUpSiCalculationToAPI(formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}calculatePremium');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> topUpParentSiCalculationToAPI(
formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}calculatePremium');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
Future<Map<String, dynamic>> addOnsDependentCalculationToAPI(
formDataList) async {
logDebug('saveAddOnsDetailsToApi API SERVICE');
if (_token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrl}calculatePremium');
final headers = {
'Authorization': 'Bearer $_token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
// Convert formDataList to JSON string
final formDataJson = jsonEncode(formDataList);
// Send formDataJson as the body
final response = await _makePostRequest(url, formDataJson, headers);
return response;
}
//HR API STARTS
Future<Map<String, dynamic>> getCashDepositDetailsToApi(
String clintID, String empRefId, String hr_id, String token) async {
logDebug("getCashDepositDetailsToApi1");
logDebug("HRID- $hr_id");
if (token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getPolicyLevelEmployeeSummaryData?client_id=$clintID&client_branch_id=$empRefId&hr_id=$hr_id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getActiveCashDepositDetailsToApi(String clintID,
String empRefId, String hr_id, String token, int emp_status) async {
logDebug("getCashDepositDetailsToApi1");
if (token == null) {
await _initializeToken();
}
// final url = Uri.parse(
// '${Environment.apiUrl}getPolicyLevelEmployeeSummaryData?client_id=$clintID&client_branch_id=$empRefId&hr_id=470');
final url = Uri.parse(
'${Environment.apiUrlPost}getPolicyLevelEmployeeSummaryData?client_id=$clintID&client_branch_id=$empRefId&policy_status=$emp_status&hr_id=$hr_id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getCDPoliciesToApi(
String clintID, String hr_id, String token) async {
logDebug("getCashDepositDetailsToApi1");
final url = Uri.parse(
'${Environment.apiUrlPost}cdSummaryData?client_id=$clintID&hr_id=$hr_id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getImportLogHrActivity(
String? postId, String? preId, String token, String activity) async {
logDebug("getCashDepositDetailsToApi1");
logDebug('postId1 - $postId');
logDebug('preId1 - $preId');
logDebug('activity1 - $activity');
// final url = Uri.parse(
// '${Environment.apiUrlPost}logHrActivity?user_id=$postId&pre_hr_id=$preId&user_type=hr&activity=$activity');
final url = Uri.parse('${Environment.apiUrlPost}logHrActivity');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final body = {
'user_id': postId,
'pre_hr_id': preId,
'user_type': 'hr',
'activity': activity,
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
// final response = await _makeGetRequest(url, headers);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to log HR activity: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> getEcardBulkDownloadApi(
client_policy_id, empHrId, emp_policy_ids, String token) async {
// final url = Uri.parse(
// '${Environment.apiUrlPost}logHrActivity?user_id=$postId&pre_hr_id=$preId&user_type=hr&activity=$activity');
final url = Uri.parse('${Environment.apiUrlPost}bulkEcardDownloadAsZip');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final body = {
'client_policy_id': client_policy_id,
'hr_id': empHrId,
'emp_policy_ids': emp_policy_ids,
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
// final response = await _makeGetRequest(url, headers);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to log HR activity: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> getPostLogHrActivity(
String? postId, String? preId, String token, String activity) async {
logDebug("getCashDepositDetailsToApi1");
logDebug('postId1 - $postId');
logDebug('preId1 - $preId');
logDebug('activity1 - $activity');
// final url = Uri.parse(
// '${Environment.apiUrlPost}logHrActivity?user_id=$postId&pre_hr_id=$preId&user_type=hr&activity=$activity');
final url = Uri.parse('${Environment.apiUrlPost}logHrActivity');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final body = {
'user_id': postId,
'pre_hr_id': preId,
'user_type': 'hr',
'activity': activity,
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
// final response = await _makeGetRequest(url, headers);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to log HR activity: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> getPreLogHrActivity(
String? postId, String? preId, String token, String activity) async {
logDebug("getCashDepositDetailsToApi1");
logDebug('postId1 - $postId');
logDebug('preId1 - $preId');
logDebug('activity1 - $activity');
final url = Uri.parse('${Environment.apiUrl}logHrActivity');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final body = {
'user_id': postId,
'pre_hr_id': preId,
'user_type': 'hr',
'activity': activity,
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
// final response = await _makeGetRequest(url, headers);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to log HR activity: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> postHrDashboard(params, token) async {
final url = Uri.parse('${Environment.apiUrlPost}getHrDashboad');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final body = params;
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
// final response = await _makeGetRequest(url, headers);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to log HR activity: ${response.statusCode} ${response.body}');
}
}
/// All 31 claims-collection KPIs in one response.
Future<Map<String, dynamic>> getClaimsCollectionV2All({
required String clientPolicyId,
}) async {
if (_token == null) await _initializeToken();
final url = Uri.parse('${Environment.apiUrlPost}claims-collection-v2/all')
.replace(
queryParameters: {'client_policy': clientPolicyId},
);
final headers = {'Authorization': 'Bearer ${_token ?? ''}'};
return _makeGetRequest(url, headers);
}
/// Single KPI by Metabase slug or numeric id.
Future<Map<String, dynamic>> getClaimsCollectionV2Kpi(
String slugOrId, {
required String clientPolicyId,
}) async {
if (_token == null) await _initializeToken();
final encoded = Uri.encodeComponent(slugOrId);
final url = Uri.parse(
'${Environment.apiUrlPost}claims-collection-v2/kpi/$encoded',
).replace(
queryParameters: {'client_policy': clientPolicyId},
);
final headers = {'Authorization': 'Bearer ${_token ?? ''}'};
return _makeGetRequest(url, headers);
}
/// All enrollment-collection KPIs in one response (`enrollment-collection-v1`).
Future<Map<String, dynamic>> getEnrollmentCollectionV1All({
required String clientPolicyId,
}) async {
if (_token == null) await _initializeToken();
final url =
Uri.parse('${Environment.apiUrlPost}enrollment-collection-v1/all')
.replace(
queryParameters: {'client_policy': clientPolicyId},
);
final headers = {'Authorization': 'Bearer ${_token ?? ''}'};
return _makeGetRequest(url, headers);
}
/// Single enrollment KPI by slug or numeric id (`enrollment-collection-v1`).
Future<Map<String, dynamic>> getEnrollmentCollectionV1Kpi(
String slugOrId, {
required String clientPolicyId,
}) async {
if (_token == null) await _initializeToken();
final encoded = Uri.encodeComponent(slugOrId);
final url = Uri.parse(
'${Environment.apiUrlPost}enrollment-collection-v1/kpi/$encoded',
).replace(
queryParameters: {'client_policy': clientPolicyId},
);
final headers = {'Authorization': 'Bearer ${_token ?? ''}'};
return _makeGetRequest(url, headers);
}
Future<Map<String, dynamic>> postHrTpaDashboard(params, token) async {
final url = Uri.parse('${Environment.apiUrlPost}getHrTpaDashboard');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(params),
);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to load HR TPA dashboard: ${response.statusCode}');
}
}
Future<Map<String, dynamic>> getClaimPoliciesToApi(
String token, empClientId) async {
logDebug("getgetClaimPoliciesToApii1");
final url = Uri.parse(
'${Environment.apiUrlPost}claimsSearch?client_id=$empClientId');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getNonEBStatusToApi(
String token, empClientId) async {
logDebug("getgetClaimPoliciesToApii1");
final url = Uri.parse(
'${Environment.apiUrlPost}api/v1/non-eb-claim/statuses');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getClaimPoliciesFileDownload(
id, String token) async {
final url = Uri.parse('${Environment.apiUrlPost}hrFileDownload?id=$id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getClaimPoliciesListDataToApi(
String token, Map<String, dynamic> body) async {
logDebug("getgetClaimPoliciesToApii1");
final url = Uri.parse('${Environment.apiUrlPost}claimsSearch');
final headers = {
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
'Authorization': 'Bearer $token',
'Content-Type': 'application/json',
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to load claims list: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> getNonEBClaimsListDataToApi(
String token, Map<String, dynamic> body) async {
logDebug("getgetClaimPoliciesToApii1");
final url = Uri.parse('${Environment.apiUrlPost}api/v1/non-eb-claim/list');
final headers = {
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
'Authorization': 'Bearer $token',
'Content-Type': 'application/json',
};
final response = await http.post(
url,
headers: headers,
body: jsonEncode(body),
);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception(
'Failed to load claims list: ${response.statusCode} ${response.body}');
}
}
Future<Map<String, dynamic>> getEcardRequest(eCardParam, String token) async {
final url = Uri.parse('${Environment.apiUrlPost}ecardRequest');
final headers = {
'Authorization': 'Bearer $token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
final jsonBody = jsonEncode(eCardParam);
// Send formDataJson as the body
final response =
await _makePostRequestWithoutFormData(url, jsonBody, headers);
return response;
}
Future<Map<String, dynamic>> getNonEBClaimPoliciesToApi(
String token, request) async {
final url = Uri.parse('${Environment.apiUrlPost}api/v1/non-eb-claim/policies');
final headers = {
'Authorization': 'Bearer $token' ?? '',
'Content-Type': 'application/json', // Ensure content type is JSON
};
final jsonBody = jsonEncode(request);
// Send formDataJson as the body
final response =
await _makePostRequestWithoutFormData(url, jsonBody, headers);
return response;
}
Future<Map<String, dynamic>> getCdTransactionData(
String clintID, String insurerId, String cd_ac_pk, String token) async {
logDebug("getCashDepositDetailsToApi1");
final url = Uri.parse(
'${Environment.apiUrlPost}cdTransactionData?client_id=$clintID&insurer_id=$insurerId&cd_ac_pk=$cd_ac_pk');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getOpenEndorsementFileData(
id, String token) async {
logDebug("getPolicyAndEndorsementFiles");
final url =
Uri.parse('${Environment.apiUrlPost}downloadPolicyFiles?file_id=$id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getCdEndorsementData(id, String token) async {
logDebug("getPolicyAndEndorsementFiles");
final url = Uri.parse(
'${Environment.apiUrlPost}getPolicyAndEndorsementFiles?cd_ac_pk=$id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getClaimsHistoryToApi(
String ticket_type_id, String token) async {
logDebug("getCashDepositDetailsToApi1");
final url = Uri.parse(
'${Environment.apiUrlPost}claimView?ticket_id=$ticket_type_id');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getNonEBClaimsHistoryToApi(
String ticket_type_id, String token) async {
logDebug("getCashDepositDetailsToApi1");
final url = Uri.parse(
'${Environment.apiUrlPost}api/v1/non-eb-claim/history/${ticket_type_id}');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getSampleFileDownload(String token) async {
final url =
Uri.parse('${Environment.apiUrl}downloadSampleExcel/enrollment');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getEmployeeAndDependenceToApi(
String clintID, getPolicyNo, String empRefId, String token) async {
logDebug(_hrtoken);
if (token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrlPost}getEmployeeAndDependenceByClientId?client_id=$clintID&client_policy_id=$getPolicyNo&client_branch_id=$empRefId');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getFileUploadMastersToApi(String token,localAllocgType) async {
logDebug(_hrtoken);
if (token == null) {
await _initializeToken();
}
final url = Uri.parse('${Environment.apiUrlPost}hrFileUploadMasters?type=$localAllocgType');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
Future<Map<String, dynamic>> getFileListToApi(empPrimaryId, cardPolicyNo,
empClientId, String token, String type) async {
logDebug(_hrtoken);
if (token == null) {
await _initializeToken();
}
final apiURL;
if (type == 'post') {
apiURL = Environment.apiUrlPost;
} else {
apiURL = Environment.apiUrl;
}
final url = Uri.parse(
'${apiURL}hrFileList?created_by=$empPrimaryId&policy_no=$cardPolicyNo&client_id=$empClientId');
final headers = {
'Authorization': 'Bearer ${token ?? ''}',
'APP-SIGNATURE':
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y',
};
final response = await _makeGetRequest(url, headers);
return response;
}
// Future<Map<String, dynamic>> getHrFileDownloadToApi(id,String token) async {
// logDebug(_hrtoken);
// if (token == null) {
// await _initializeToken();
// }
// final url = Uri.parse(
// '${Environment.apiUrl}hrFileDownload?id=$id');
// final headers = {
// 'Authorization': 'Bearer $token' ?? '',
// };
// final response = await _makeGetRequest(url, headers);
// return response;
// }
Future<Map<String, dynamic>> getEmployeeAndDependenceToApiPre(
String clintID, String getPolicyNo, String empRefId, String token) async {
logDebug(_hrtoken);
if (token == null) {
await _initializeToken();
}
final url = Uri.parse(
'${Environment.apiUrl}getEmployeeAndDependenceByClientId?client_id=$clintID&client_policy_id=$getPolicyNo&client_branch_id=$empRefId');
final headers = {
'Authorization': 'Bearer $token' ?? '',
};
final response = await _makeGetRequest(url, headers);
return response;
}
// Future<Map<String, dynamic>> getTrackClaimsList(
// String empMobileNo, String empCode) async {
// final url = Uri.parse(
// '${Environment.apiUrlTicket}/ticket/get_ticket_data?emp_code=$empCode&mobile_number=$empMobileNo');
// final response = await _makeGetRequest(url, {
// 'Token': Environment.ticketToken,
// });
// return response;
// }
//
// Future<Map<String, dynamic>> fetchDepartmentList() async {
// final url = Uri.parse('${Environment.apiUrlTicket}/departments');
// final response = await _makeGetRequest(url, {
// 'Token': Environment.ticketToken,
// });
// return response;
// }
//
// Future<Map<String, dynamic>> sendFormDataToApi(
// Map<String, dynamic> formData) async {
// final url = Uri.parse('${Environment.apiUrlTicket}/tickets/create');
// // Convert formData to Map<String, String>
// Map<String, String> stringFormData =
// formData.map((key, value) => MapEntry(key, value.toString()));
// final response = await _makePostRequest(url, stringFormData, {
// 'Content-Type': 'application/x-www-form-urlencoded',
// 'Token': Environment.ticketToken,
// });
// return response;
// }
//
// Future<Map<String, dynamic>> sendClaimsMessageToApi(
// Map<String, dynamic> formData) async {
// final url = Uri.parse('${Environment.apiUrlTicket}/messages/create');
// // Convert formData to Map<String, String>
// Map<String, String> stringFormData =
// formData.map((key, value) => MapEntry(key, value.toString()));
// final response = await _makePostRequest(url, stringFormData, {
// 'Content-Type': 'application/x-www-form-urlencoded',
// 'Token': Environment.ticketToken,
// });
// return response;
// }
// Future<Map<String, dynamic>?> getSession() async {
// try {
// final url = Uri.parse('${Environment.apiUrl}session');
//
// // No Authorization header here
// final response = await _makeGetRequest(
// url,
// {
// 'Content-Type': 'application/json',
// },
// );
//
// // _makeGetRequest already handles:
// // - APP-SIGNATURE
// // - 401 redirect
// return response;
// } catch (e) {
// return null;
// }
// }
Future<void> logout() async {
try {
final url = Uri.parse('${Environment.apiUrl}logout');
await _makePostRequest(
url,
jsonEncode({}), // empty body
{
'Content-Type': 'application/json',
'Authorization': 'Bearer $_token' ?? '',
},
);
} catch (_) {}
// Clear only mobile storage
// if (!isWeb) {
await tokenService.clearAll();
logDebug('Secure Storage Cleared');
// }
if (context.mounted) {
logDebug('context.mounted');
Navigator.pushNamedAndRemoveUntil(
context,
'hrLogin',
(route) => false, // remove all previous routes
);
}
}
Future<Map<String, dynamic>> _makePostRequestWithoutFormData(
Uri url, String body, Map<String, String> headers) async {
headers['APP-SIGNATURE'] =
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y';
final response = await http.post(url, headers: headers, body: body);
return _handleResponse(response);
}
Future<Map<String, dynamic>> _makeGetRequest(
Uri url, Map<String, String> headers) async {
headers['APP-SIGNATURE'] =
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y';
final response = await http.get(url, headers: headers);
return _handleResponse(response);
}
Future<Map<String, dynamic>> _makePostRequest(
Uri url, String body, Map<String, String> headers) async {
headers['APP-SIGNATURE'] =
'nhance-2025-signature-T8f6gV9k5fK2wf5V5c4vId3b0J8z6cAm2x8Y';
final response = await http.post(url, headers: headers, body: body);
return _handleResponse(response);
}
Future<Map<String, dynamic>> _handleResponse(http.Response response) async {
// 'throttle' => 429,
// 'soft' => 429,
// 'medium' => 403,
// 'hard' => 451,
if (response.statusCode == 200) {
return _parseJsonBody(response);
} else if (response.statusCode == 401) {
if (!_isSessionOutToastShown) {
_isSessionOutToastShown = true;
await _clearLocalStorageAndRedirect();
}
return {};
} else if (response.statusCode == 403) {
if (!_isSessionOutToastShown) {
_isSessionOutToastShown = true;
await _clearLocalStorageAndRedirect();
}
return {};
} else if (response.statusCode == 451) {
final body = jsonDecode(response.body);
final message = body['message'];
ToastHelper.showWarningToast(context, message);
return {};
} else if (response.statusCode == 429) {
final body = jsonDecode(response.body);
final message = body['message'];
ToastHelper.showWarningToast(context, message);
return {};
} else {
throw Exception('Failed to load data');
}
}
Map<String, dynamic> _parseJsonBody(http.Response response) {
try {
if (response.bodyBytes.isEmpty) return {};
final text = utf8.decode(response.bodyBytes);
final parsed = jsonDecode(text);
if (parsed is Map<String, dynamic>) return parsed;
if (parsed is Map) return Map<String, dynamic>.from(parsed);
return {};
} catch (_) {
return {};
}
}
Future<void> _clearLocalStorageAndRedirect() async {
await tokenService.clearAll(); // 🔐 clears flutter_secure_storage
ToastHelper.showErrorToast(context, 'Session Out');
if (!context.mounted) return;
Navigator.pushNamedAndRemoveUntil(
context,
'hrLogin',
(route) => false,
);
}
}