From eb94b6b1eae70a95ac1dfe4867ac65ba92589670 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 23 Feb 2026 15:53:46 +0530 Subject: [PATCH] CHANGE_TPA_API_LIST_THE_MISMATCH_TPA_DATA --- app/Config/Acl.php | 1 + app/Controllers/ClientController.php | 25 ++++++++++ app/Controllers/EmployeeController.php | 14 ++---- app/Controllers/FhplApiController.php | 48 +++++++++++++++++++- app/Controllers/HealthIndiaApiController.php | 44 ++++++++++++++++++ app/Controllers/JobWorker.php | 27 ++++++++--- app/Controllers/VidalApiController.php | 46 +++++++++++++++++++ app/Helpers/utility_helper.php | 41 ++++++++++++++++- 8 files changed, 227 insertions(+), 19 deletions(-) diff --git a/app/Config/Acl.php b/app/Config/Acl.php index 49ebf337..80f7a2bd 100644 --- a/app/Config/Acl.php +++ b/app/Config/Acl.php @@ -17,6 +17,7 @@ class Acl '#^/getVerifiedPosUserData#' => ['public' => true], '#^/swagger#' => ['roles' => [ADMIN_ROLE_ID]], '#^/getEmployeeActiveOrInactivePolicy#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID]], + '#^/sheet#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID]], '#^/sendextraparam#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID]], '#^/test/testingquerys#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID]], '#^/test/viewrfq#' => ['roles' => [ADMIN_ROLE_ID, HEAD_ROLE_ID]], diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index bbd52f5f..195ce4b9 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -6915,6 +6915,31 @@ class ClientController extends AdminController // $res = $medi_assist->MediAssistGetBenefDetails(['policy_no' => '97000034240400000030', 'file_id' => 389, 'return_type' => 'job', 'client_policy_id' => 6192 ]); // dd($res); + // // 1. Dummy JSON data create panrom (Temp file) + // $tempJsonFile = tempnam(sys_get_temp_dir(), 'test_vidal_'); + // $dummyData = [ + // [ + // 'empNo' => 'EMP001', + // 'name' => 'John Doe', + // 'dob' => '01/01/1990', + // 'relationship' => 'Self', + // 'gender' => 'Male', + // 'enrollmentId' => 'TPA123', + // 'age' => 34 + // ] + // ]; + + // file_put_contents($tempJsonFile, json_encode($dummyData)); + + // $inputArray = [ + // 'file_id' => 10, + // 'json_file_path' => $tempJsonFile + // ]; + + // $vidalController = new VidalApiController(); + // $res = $vidalController->saveVidalAPIData($inputArray); + // dd($res); + $employeeController = new EmployeeController(); // $response = $employeeController->getEmployeeEcardFromTmpFolderAndZipToS3(json_decode('{"batch_no":2,"last_emp_policy_id":"13218","folder_name":"bulk_ecards_IOCL-77448855996699885555_2026-02-05_09-32-22","processed_in_this_batch_data_count":7,"pdf_count":0,"hr_id":"1"}', true)); // $response = $employeeController->bulkEcardDownloadAsZipFromS3(json_decode('{"client_policy_id":"6066","hr_id":"1"}', true)); diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index 44afb184..4e7ddef7 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -3730,7 +3730,7 @@ class EmployeeController extends AdminController } // fallback if gender missing (better to throw error) - throw new Exception("Gender required to map 'Spouse'"); + throw new \Exception("Gender required to map 'Spouse'"); } return $map[$key] ?? ''; @@ -4057,8 +4057,7 @@ class EmployeeController extends AdminController ]; } - - function reconcileDbWithTpa(array $db, array $tpaRows): array + public function reconcileDbWithTpa(array $db, array $tpaRows): array { // Name normalization $normalizeName = function ($name) { @@ -4112,12 +4111,7 @@ class EmployeeController extends AdminController ]; } - - function exportVariationReportExcel( - array $notInTPA, - array $notInNhance, - array $reviewNeeded, - string $filename = 'employee_review.xlsx') + public function exportVariationReportExcel(array $notInTPA, array $notInNhance, array $reviewNeeded, string $filename = 'employee_review.xlsx') { function setCell($sheet, int $col, int $row, $value) @@ -4317,7 +4311,7 @@ class EmployeeController extends AdminController exit; } - public function bulkGenerateEcardAndStoreinS3(array $params = []) + public function bulkGenerateEcardAndStoreinS3(array $params = []) { $request = \Config\Services::request(); $isCli = is_cli(); diff --git a/app/Controllers/FhplApiController.php b/app/Controllers/FhplApiController.php index 83786a81..ebc058d3 100644 --- a/app/Controllers/FhplApiController.php +++ b/app/Controllers/FhplApiController.php @@ -753,7 +753,7 @@ class FhplApiController extends BaseController $response = call_third_party_api($url,'POST',$headers,$body); if(!empty($response['data'])){ - log_message('error', 'FHPL - Sync TPA Claims | Exception thrown while calling GetTPA_ClaimsDetails API: ' . json_encode($errorData)); + log_message('error', 'FHPL - Sync TPA Claims | Exception thrown while calling GetTPA_ClaimsDetails API: ' . json_encode($response ?? [])); $finalResult = array_merge($finalResult,$response['data']); } } @@ -790,6 +790,52 @@ class FhplApiController extends BaseController return ['status'=>true,'total'=>count($finalResult)]; } + public function saveFhplAPIData($array) + { + $file_id = $array['file_id']; + $json = file_get_contents($array['json_file_path']); + $records = json_decode($json, true); + + // log_message('error','FHPL - saveFhplAPIData' . json_encode($array));//die(); + $file_model = new BatchFileModel(); + $file_info = $file_model->where('id', $file_id)->find(); + + $tpaApiDataModel = new TpaApiDataModel(); + + //deactivate old data + $tpaApiDataModel->set('is_active', 0)->where('file_id', $file_id)->update(); + + //covert tpa data to our model data + $mappedRows = []; + + foreach ($records as $row) { + + $mappedRows[] = [ + 'file_id' => $file_id, // ← pass from controller + 'emp_code' => trim($row['EMPLOYEE_ID'] ?? ''), + + 'name' => trim($row['EMPLOYEE_NAME'] ?? ''), + 'dob' => !empty($row['DATE_OF_BIRTH'] ?? null) ? date('Y-m-d', strtotime(str_replace('/', '-', $row['DATE_OF_BIRTH']))) : null, + + 'relation' => trim(strtolower($row['RELATION'] ?? '')), + 'gender' => format_gender_v2($row['GENDER'] ?? null), + 'self' => strtolower($row['RELATION'] ?? '') === 'self' ? 1 : 0, + + 'tpa_id' => trim($row['TPA_TPADETAIL_ID'] ?? null), + 'age' => is_numeric($row['AGE'] ?? null) ? (int) $row['AGE'] : null, + + 'is_active' => 1, + 'created_by' => $file_info[0]['created_by'] ?? null, + ]; + } + + // log_message('error','FHPL - COUNT' . count($mappedRows)); + $result = $tpaApiDataModel->insertBatchWithChunkLog($mappedRows,500,('FILE_ID_'.$file_id)); + // unlink($file_array['json_file_path']); // delete temp json file + + return $result; + } + diff --git a/app/Controllers/HealthIndiaApiController.php b/app/Controllers/HealthIndiaApiController.php index 8a27eff1..fa86cb3d 100644 --- a/app/Controllers/HealthIndiaApiController.php +++ b/app/Controllers/HealthIndiaApiController.php @@ -814,4 +814,48 @@ class HealthIndiaApiController extends BaseController 'inserted' => $insertedCount ]); } + + public function saveHealthIndiaAPIData($array) + { + $file_id = $array['file_id']; + $json = file_get_contents($array['json_file_path']); + $records = json_decode($json, true); + // log_message('error','HEALTH_INDIA - saveHealthIndiaAPIData' . json_encode($array));//die(); + $file_model = new BatchFileModel(); + $file_info = $file_model->where('id', $file_id)->find(); + + $tpaApiDataModel = new TpaApiDataModel(); + + //deactivate old data + $tpaApiDataModel->set('is_active', 0)->where('file_id', $file_id)->update(); + + //covert tpa data to our model data + $mappedRows = []; + + foreach ($records as $row) { + + $mappedRows[] = [ + 'file_id' => $file_id, // ← pass from controller + 'emp_code' => trim($row['employeeCode'] ?? ''), + + 'name' => trim($row['insured_Name'] ?? ''), + 'dob' => !empty($row['dateOfBirth'] ?? null) ? date('Y-m-d', strtotime(str_replace('/', '-', $row['dateOfBirth']))) : null, + + 'relation' => map_relationship(trim($row['relation'] ?? null)), + 'gender' => strtoupper($row['gender'] ?? null), + 'self' => map_relationship(trim($row['relation'] ?? null)) === 'self' ? 1 : 0, + + 'tpa_id' => trim($row['memberId'] ?? null), + 'age' => is_numeric($row['age'] ?? null) ? (int) $row['age'] : null, + + 'is_active' => 1, + 'created_by' => $file_info[0]['created_by'] ?? null, + ]; + } + // log_message('error','HEALTH_INDIA - COUNT' . count($mappedRows)); + // print_rr($mappedRows);//die(); + $result = $tpaApiDataModel->insertBatchWithChunkLog($mappedRows,500,('FILE_ID_'.$file_id)); + // unlink($file_array['json_file_path']); // delete temp json file + } + } \ No newline at end of file diff --git a/app/Controllers/JobWorker.php b/app/Controllers/JobWorker.php index 11338171..9aba4443 100755 --- a/app/Controllers/JobWorker.php +++ b/app/Controllers/JobWorker.php @@ -191,14 +191,26 @@ class JobWorker extends AdminController 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\VidalApiController', ], + 'saveVidalAPIData' => [ + 'type' => 'CC', // Handler Category + 'handler' => 'App\Controllers\VidalApiController', + ], 'FhplGetBenefDetails' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\FhplApiController', ], + 'saveFhplAPIData' => [ + 'type' => 'CC', // Handler Category + 'handler' => 'App\Controllers\FhplApiController', + ], 'HealthIndiaGetBenefDetails' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\HealthIndiaApiController', ], + 'saveHealthIndiaAPIData' => [ + 'type' => 'CC', // Handler Category + 'handler' => 'App\Controllers\HealthIndiaApiController', + ], 'bdsDumpExcelFileFormatValidation' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\PolicyTransactionController', @@ -207,22 +219,23 @@ class JobWorker extends AdminController 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\PolicyTransactionController', ], - 'initiateWellnessOnboardJob' => [ + 'initiateWellnessOnboardJob' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\EmployeeController', - ], 'saveMediAssitAPIData' => [ + ], + 'saveMediAssitAPIData' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\MediAssistApiController', ], - 'bulkGenerateEcardAndStoreinS3' => [ + 'bulkGenerateEcardAndStoreinS3' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\EmployeeController', - ], - 'bulkEcardDownloadAsZipFromS3' => [ + ], + 'bulkEcardDownloadAsZipFromS3' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\EmployeeController', - ], - 'getEmployeeEcardFromTmpFolderAndZipToS3' => [ + ], + 'getEmployeeEcardFromTmpFolderAndZipToS3' => [ 'type' => 'CC', // Handler Category 'handler' => 'App\Controllers\EmployeeController', ] diff --git a/app/Controllers/VidalApiController.php b/app/Controllers/VidalApiController.php index e3923d71..98ba0684 100644 --- a/app/Controllers/VidalApiController.php +++ b/app/Controllers/VidalApiController.php @@ -955,8 +955,54 @@ class VidalApiController extends BaseController } } + public function saveVidalAPIData($array) + { + $file_id = $array['file_id']; + $json = file_get_contents($array['json_file_path']); + $records = json_decode($json, true); + + // log_message('error','FHPL - saveFhplAPIData' . json_encode($array));//die(); + $file_model = new BatchFileModel(); + // $file_model = model(BatchFileModel::class); + $file_info = $file_model->where('id', $file_id)->find(); + + // $tpaApiDataModel = new TpaApiDataModel(); + $tpaApiDataModel = model(TpaApiDataModel::class); + //deactivate old data + $tpaApiDataModel->set('is_active', 0)->where('file_id', $file_id)->update(); + + //covert tpa data to our model data + $mappedRows = []; + + foreach ($records as $row) { + + $mappedRows[] = [ + 'file_id' => $file_id, // ← pass from controller + 'emp_code' => trim($row['empNo'] ?? ''), + + 'name' => trim($row['name'] ?? ''), + 'dob' => !empty($row['dob'] ?? null) ? date('Y-m-d', strtotime(str_replace('/', '-', $row['dob']))) : null, + + 'relation' => trim(strtolower($row['relationship'] ?? '')), + 'gender' => format_gender_v2($row['gender'] ?? null), + 'self' => strtolower($row['relationship'] ?? '') === 'self' ? 1 : 0, + + 'tpa_id' => trim($row['enrollmentId'] ?? null), + 'age' => is_numeric($row['age'] ?? null) ? (int) $row['age'] : null, + + 'is_active' => 1, + 'created_by' => $file_info[0]['created_by'] ?? null, + ]; + } + + // log_message('error','FHPL - COUNT' . count($mappedRows)); + $result = $tpaApiDataModel->insertBatchWithChunkLog($mappedRows,500,('FILE_ID_'.$file_id)); + // unlink($file_array['json_file_path']); // delete temp json file + + return $result; + } diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php index 63351544..7e6048ab 100755 --- a/app/Helpers/utility_helper.php +++ b/app/Helpers/utility_helper.php @@ -1161,7 +1161,46 @@ if (!function_exists('clear_cd_balance_session')) { } } - +if (!function_exists('format_gender_v2')) { + function format_gender_v2($gender) { + if (empty($gender)) return null; + + $g = strtoupper(trim($gender)); + + // Direct-ah check pannuvom + if (str_starts_with($g, 'M')) return 'M'; // Male, M + if (str_starts_with($g, 'F')) return 'F'; // Female, F + + // Others, Transgender, O - ivatrai 'O' ena return seiyum + if (str_starts_with($g, 'O') || str_starts_with($g, 'T')) { + return 'O'; + } + + return $g; // Vera ethuvum illaiyengil original-aiye return pannum + } +} + +if (!function_exists('map_relationship')) { + /** + * Employee -> self, WIFE -> spouse ena maatri return seiyum. + */ + function map_relationship($relation) { + if (empty($relation)) return ''; + + // Case prechanai varaamal irukka lowercase-kku maatri check seivom + $r = strtolower(trim($relation)); + + if ($r == 'employee') { + return 'self'; + } + else if ($r == 'wife') { + return 'spouse'; + } + + // Matra anaithu relationship-um iruppathu polave (Original-aga) return aagum + return $relation; + } +}