From fdcc4d68e56fd9715d5f96855ec7c79092d2dcb7 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sun, 1 Feb 2026 18:28:27 +0530 Subject: [PATCH 1/9] FEAT_DOWNLOAD_PREMIUM_SPLIT_UP_FILE --- app/Config/Routes.php | 3 +- app/Controllers/ClientController.php | 2 ++ app/Controllers/EmpDataServiceController.php | 15 ++++++--- app/Controllers/EmployeeRestController.php | 32 +++++++++++++++++++ .../MediAssistClaimImportService.php | 27 ++++++++-------- app/Models/ClientDepositModel.php | 1 + app/Models/ClientPolicyModel.php | 13 +++++++- 7 files changed, 73 insertions(+), 20 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 69bf3571..10b4f4ef 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -682,7 +682,8 @@ $routes->group("employeeRest", ['filter' => ['appSignature'] ], function ($route // get insurer and policy type $routes->get("getPolicyTypeAndInsurer", "EmployeeRestController::getPolicyTypeAndInsurer"); - + $routes->get("downloadCdSplitUpFile", "EmployeeRestController::downloadCdSplitUpFile"); + $routes->get("getExcelFileErrors/(:any)", "EmployeeController::getExcelFileErrors/$1"); }); $routes->get("hrFileDownload", "EmployeeRestController::hrFileDownload"); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index c16c20eb..64d011ea 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -6614,6 +6614,8 @@ class ClientController extends AdminController public function sendextraparam() { + // $cd = $this->view_Deposit(2, 'rest', ['client_id' => 58, 'cd_ac_pk' => 94]); + // dd($cd); // $return = db_connect()->table('jobs')->where('id', 1677)->get()->getRowArray(); // $return = $this->updatePolicyTransactionDataWhileClinetPolicyUpdate(json_decode($data['payload'], true)); // dd($return); diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index 8d75b095..eb95e8be 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -2195,6 +2195,7 @@ class EmpDataServiceController extends BaseController 'event_name' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], 'user_id' => $user_id, + 'file_id' => $file_id, ]]); $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [ @@ -3378,6 +3379,7 @@ class EmpDataServiceController extends BaseController 'event_name' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], 'user_id' => $user_id, + 'file_id' => $file_id, ]]); $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [ @@ -3889,6 +3891,7 @@ class EmpDataServiceController extends BaseController 'event_name' => $file['event_type'], 'policy_name' => $policy_name['policy_name'], 'user_id' => $user_id, + 'file_id' => $file_id, ]]); $r = Jobs::addJob(['job_name' => 'makeEntryForBDSPolicyTransaction', 'payload' => [ @@ -4373,7 +4376,8 @@ class EmpDataServiceController extends BaseController 'updated_by' => $arrayData['user_id'], 'event_name' => $arrayData['event_name'], 'is_active' => 1, - 'cd_ac_pk' => $cd_ac_pk['cd_ac_pk'] + 'cd_ac_pk' => $cd_ac_pk['cd_ac_pk'], + 'file_id' => $arrayData['file_id'], ]; $response = DepositHelper::saveDeposit($data, $arrayData['user_id']); @@ -4510,7 +4514,8 @@ class EmpDataServiceController extends BaseController 'updated_by' => $arrayData['user_id'], 'event_name' => $arrayData['event_name'], 'is_active' => 1, - 'cd_ac_pk' => $policy_data['cd_ac_pk'] + 'cd_ac_pk' => $policy_data['cd_ac_pk'], + 'file_id' => $arrayData['file_id'], ]; DepositHelper::saveDeposit($data, $arrayData['user_id']); @@ -4540,7 +4545,8 @@ class EmpDataServiceController extends BaseController 'updated_by' => $arrayData['user_id'], 'event_name' => $arrayData['event_name'], 'is_active' => 1, - 'cd_ac_pk' => $policy_data['cd_ac_pk'] + 'cd_ac_pk' => $policy_data['cd_ac_pk'], + 'file_id' => $arrayData['file_id'], ]; DepositHelper::saveDeposit($data, $arrayData['user_id']); @@ -4652,7 +4658,8 @@ class EmpDataServiceController extends BaseController 'updated_by' => $arrayData['user_id'], 'event_name' => $arrayData['event_name'], 'is_active' => 1, - 'cd_ac_pk' => $insurer_id['cd_ac_pk'] + 'cd_ac_pk' => $insurer_id['cd_ac_pk'], + 'file_id' => $arrayData['file_id'], ]; $response = DepositHelper::saveDeposit($data, $arrayData['user_id']); diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index f18b0a1a..e60cc86a 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -40,6 +40,7 @@ use App\Models\HRAccessControlModel; use App\Models\InsurerModel; use App\Models\HrFileUploadModel; use App\Models\EmployeeRetailPolicy; +use App\Models\BatchFileModel; @@ -100,6 +101,7 @@ class EmployeeRestController extends AdminController protected $hrFileUploadModel; protected $ticketMailTemplateModel; protected $employeeRetailPolicy; + protected $batchFileModel; public function __construct() @@ -134,6 +136,7 @@ class EmployeeRestController extends AdminController $this->insurerModel = new InsurerModel(); $this->hrFileUploadModel = new HrFileUploadModel(); $this->ticketMailTemplateModel = new TicketMailTemplateModel(); + $this->batchFileModel = new BatchFileModel(); } @@ -5379,6 +5382,35 @@ class EmployeeRestController extends AdminController return $claim_status_data_id; } + public function downloadCdSplitUpFile() + { + try { + + $file_id = $this->request->getGet('id'); + + // Find record + $record = $this->batchFileModel->where('id', $file_id)->first();; + if (!$record) { + $data['message'] = 'File record not found'; + return view('errors/404', $data); + } + + $uploadPath = WRITEPATH . 'uploads/import_excel/'; + $filePath = $uploadPath . $record['file_name']; + + if (!file_exists($filePath)) { + // return $this->failNotFound("File not found on server"); + $data['message'] = 'The Physical File Not Found'; + return view('errors/404', $data); + } + + // Force file download + return $this->response->download($filePath, null)->setFileName($record['file_name']); + } catch (\Exception $e) { + $data['message'] = 'File record not found'; + return view('errors/404', $data); + } + } } diff --git a/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php b/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php index 7326567d..a582a067 100644 --- a/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php @@ -49,7 +49,7 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService ["excel_column" => ["col_name" => "intimation_id", "col_index" => 30], "db_column" => "intimation_id"], ["excel_column" => ["col_name" => "intimation_date", "col_index" => 31], "db_column" => "intimation_date"], ["excel_column" => ["col_name" => "settled_date", "col_index" => 32], "db_column" => "settled_date"], - ["excel_column" => ["col_name" => "ClaimSource", "col_index" => 33], "db_column" => "claim_source"], + ["excel_column" => ["col_name" => "ClaimSource", "col_index" => 33], "db_column" => "ClaimSource"], ["excel_column" => ["col_name" => "claim_mode_of_rcpt", "col_index" => 34], "db_column" => "claim_mode_of_rcpt"], ["excel_column" => ["col_name" => "claim_type", "col_index" => 35], "db_column" => "claim_type"], ["excel_column" => ["col_name" => "claim_sub_type", "col_index" => 36], "db_column" => "claim_sub_type"], @@ -72,16 +72,16 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService ["excel_column" => ["col_name" => "hospital_state", "col_index" => 53], "db_column" => "hospital_state"], ["excel_column" => ["col_name" => "hospital_pincode", "col_index" => 54], "db_column" => "hospital_pincode"], ["excel_column" => ["col_name" => "hospital_address", "col_index" => 55], "db_column" => "hospital_address"], - ["excel_column" => ["col_name" => "Clinic_DoctorName_Hospital", "col_index" => 56], "db_column" => "clinic_doctorname_hospital"], - ["excel_column" => ["col_name" => "OPD_pincode", "col_index" => 57], "db_column" => "opd_pincode"], - ["excel_column" => ["col_name" => "payable_amount_OPD_Consultation", "col_index" => 58], "db_column" => "payable_amount_opd_consultation"], - ["excel_column" => ["col_name" => "payable_amount_Dental", "col_index" => 59], "db_column" => "payable_amount_dental"], - ["excel_column" => ["col_name" => "payable_amount_Diagnostics", "col_index" => 60], "db_column" => "payable_amount_diagnostics"], - ["excel_column" => ["col_name" => "payable_amount_Other", "col_index" => 61], "db_column" => "payable_amount_other"], - ["excel_column" => ["col_name" => "payable_amount_Pharmacy", "col_index" => 62], "db_column" => "payable_amount_pharmacy"], - ["excel_column" => ["col_name" => "payable_amount_Vaccination", "col_index" => 63], "db_column" => "payable_amount_vaccination"], - ["excel_column" => ["col_name" => "payable_amount_Miscellaneous_Charges", "col_index" => 64], "db_column" => "payable_amount_miscellaneous_charges"], - ["excel_column" => ["col_name" => "payable_amount_Health_Checkup", "col_index" => 65], "db_column" => "payable_amount_health_checkup"], + ["excel_column" => ["col_name" => "Clinic_DoctorName_Hospital", "col_index" => 56], "db_column" => "Clinic_DoctorName_Hospital"], + ["excel_column" => ["col_name" => "OPD_pincode", "col_index" => 57], "db_column" => "OPD_pincode"], + ["excel_column" => ["col_name" => "payable_amount_OPD_Consultation", "col_index" => 58], "db_column" => "payable_amount_OPD_Consultation"], + ["excel_column" => ["col_name" => "payable_amount_Dental", "col_index" => 59], "db_column" => "payable_amount_Dental"], + ["excel_column" => ["col_name" => "payable_amount_Diagnostics", "col_index" => 60], "db_column" => "payable_amount_Diagnostics"], + ["excel_column" => ["col_name" => "payable_amount_Other", "col_index" => 61], "db_column" => "payable_amount_Other"], + ["excel_column" => ["col_name" => "payable_amount_Pharmacy", "col_index" => 62], "db_column" => "payable_amount_Pharmacy"], + ["excel_column" => ["col_name" => "payable_amount_Vaccination", "col_index" => 63], "db_column" => "payable_amount_Vaccination"], + ["excel_column" => ["col_name" => "payable_amount_Miscellaneous_Charges", "col_index" => 64], "db_column" => "payable_amount_Miscellaneous_Charges"], + ["excel_column" => ["col_name" => "payable_amount_Health_Checkup", "col_index" => 65], "db_column" => "payable_amount_Health_Checkup"], ["excel_column" => ["col_name" => "deduction_amount_copay", "col_index" => 66], "db_column" => "deduction_amount_copay"], ["excel_column" => ["col_name" => "deduction_amount_excess_ailment", "col_index" => 67], "db_column" => "deduction_amount_excess_ailment"], ["excel_column" => ["col_name" => "deduction_amount_excess_policy", "col_index" => 68], "db_column" => "deduction_amount_excess_policy"], @@ -153,6 +153,7 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService // Payment 'utr_no' => 'utr_details', + 'claim_type' => 'tpa_claim_type', ]; protected $statusMapping = [ @@ -166,7 +167,6 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService 'Cashless Document Awaited' => 3, ]; - /** * ABSTRACT FUNCTIONs */ @@ -177,9 +177,8 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_medi_assist'); - $builder->insertBatch($data); + return $builder->insertBatch($data); - return true; } diff --git a/app/Models/ClientDepositModel.php b/app/Models/ClientDepositModel.php index 8a61b204..7aa4ff7b 100755 --- a/app/Models/ClientDepositModel.php +++ b/app/Models/ClientDepositModel.php @@ -30,6 +30,7 @@ class ClientDepositModel extends Model "cd_ac_pk", "record_date", "policy_transaction_id", + "file_id", ]; diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index fa7672ec..e9cf38d9 100755 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -303,6 +303,8 @@ class ClientPolicyModel extends Model $caseSql = ""; } + $url = base_url('employeeRest/downloadCdSplitUpFile?id='); + // Fetch the deposit data based on client and insurer IDs $query = $this->db->table('cash_deposit') ->select('cash_deposit.*') @@ -312,6 +314,12 @@ class ClientPolicyModel extends Model // ->select('policies.name as policy_name') ->select('policy_type.policy_type') ->select('user_profiles.first_name as username') + ->select("CASE + WHEN cash_deposit.file_id IS NOT NULL AND cash_deposit.file_id != '' + THEN CONCAT(" . $this->db->escape($url) . ", cash_deposit.file_id) + ELSE NULL + END AS split_up_url", + false) ->select($caseSql) ->join('user_profiles', 'user_profiles.id = cash_deposit.created_by', 'left') ->join('insurers', 'insurers.id = cash_deposit.insurer_id', 'left') @@ -337,7 +345,10 @@ class ClientPolicyModel extends Model } $query->orderBy('cash_deposit.id', 'DESC'); - return $query->get()->getResult(); + $data = $query->get()->getResult(); + + dd($data); + return $data; } From b9df99c032b13a44a68f8a271d98a821359517eb Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sun, 1 Feb 2026 20:50:18 +0530 Subject: [PATCH 2/9] FIX_ISSUES_1 --- app/Controllers/ClientController.php | 281 +----------------- app/Controllers/TicketServiceController.php | 80 ++--- app/Helpers/DepositHelper.php | 3 +- .../AbhiClaimImportService.php | 30 +- .../BaseTpaClaimImportService.php | 58 ++-- .../FhplClaimImportService.php | 33 +- .../IciciClaimImportService.php | 31 +- .../MediAssistClaimImportService.php | 24 +- .../RcareClaimImportService.php | 28 +- .../VidalClaimImportService.php | 32 +- 10 files changed, 118 insertions(+), 482 deletions(-) diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 64d011ea..8ba51997 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -3611,194 +3611,6 @@ class ClientController extends AdminController } } - // public function enrollmentGMCDisplayValueTransform() - // { - // $data = []; - - // if ($this->request->getPost("waiverofpreexistingdiseases_display")) { - // $data['Waiver of Pre-existing Diseases'] = $this->request->getPost("waiverofpreexistingdiseases"); - // } - - // if ($this->request->getPost("waiverof1234thyearexclusions_display")) { - // $data['Waiver of 1, 2, 3 & 4th year Exclusions'] = $this->request->getPost("waiverof1,2,3&4thyearexclusions"); - // } - - // if ($this->request->getPost("waiverof30dayswaitingperiod_display")) { - // $data['Waiver of 30 days waiting period'] = $this->request->getPost("waiverof30dayswaitingperiod"); - // } - - // if ($this->request->getPost("suminsuredenhancement_display")) { - // $data['Sum Insured Enhancement'] = $this->request->getPost("suminsuredenhancement"); - // } - - // if ($this->request->getPost("waiver_of_90_days_waiting_period_display")) { - // $data['Waiver of 90 Days Waiting Period'] = $this->request->getPost("waiver_of_90_days_waiting_period"); - // } - - // if ($this->request->getPost("waiver_of_other_waiting_periods_display")) { - // $data['Waiver of Other Waiting Periods'] = $this->request->getPost("waiver_of_other_waiting_periods"); - // } - - // if ($this->request->getPost("maternity_benefit_display")) { - // $data['Maternity Benefit'] = $this->request->getPost("maternity_benefit"); - // } - - // if ($this->request->getPost("9monthwaitingperiodwaived_display")) { - // $data['9-month waiting Period - waived'] = $this->request->getPost("9monthwaitingperiodwaived"); - // } - - // if ($this->request->getPost("maternitycoverage_display")) { - // $data['Maternity Coverage'] = $this->request->getPost("maternitycoverage"); - // } - - // if ($this->request->getPost("twindelivery_display")) { - // $data['Twin Delivery'] = $this->request->getPost("twindelivery"); - // } - - // if ($this->request->getPost("well_baby_well_mother_expenses_display")) { - // $data['Well baby / Well Mother Expenses'] = $this->request->getPost("well_baby_well_mother_expenses"); - // } - - // if ($this->request->getPost("preandpostnatal_display")) { - // $data['Pre and Post natal'] = $this->request->getPost("preandpostnatal"); - // } - - // if ($this->request->getPost("infertility_treatment_coverage_display")) { - // $data['Infertility Treatment Coverage'] = $this->request->getPost("infertility_treatment_coverage"); - // } - - // if ($this->request->getPost("babyday1cover_display")) { - // $data['Baby Day 1 Cover'] = $this->request->getPost("babyday1cover"); - // } - - // if ($this->request->getPost("coverfromthedateofjoining_display")) { - // $data['Cover from the date of Joining'] = $this->request->getPost("coverfromthedateofjoining"); - // } - - // if ($this->request->getPost("mid_term_addition_of_new_born_newly_wedded_spouse_display")) { - // $data['Mid Term Addition of New Born / Newly Wedded Spouse'] = $this->request->getPost("mid_term_addition_of_new_born_newly_wedded_spouse"); - // } - - // if ($this->request->getPost("prehospitalizationcover_display")) { - // $data['Pre Hospitalization Cover'] = $this->request->getPost("prehospitalizationcover"); - // } - - // if ($this->request->getPost("posthospitalizationcover_display")) { - // $data['Post Hospitalization Cover'] = $this->request->getPost("posthospitalizationcover"); - // } - - // if ($this->request->getPost("congenitaldiseasesinternal_display")) { - // $data['Congenital Diseases - Internal'] = $this->request->getPost("congenitaldiseasesinternal"); - // } - - // if ($this->request->getPost("congenitaldiseasesexternal_display")) { - // $data['Congenital Diseases - External'] = $this->request->getPost("congenitaldiseasesexternal"); - // } - - // if ($this->request->getPost("copayzonewisecopay_display")) { - // $data['Co-Pay/Zone wise Co Pay'] = $this->request->getPost("copayzonewisecopay"); - // } - - // if ($this->request->getPost("roomrentlimit_display")) { - // $data['Room Rent Limit'] = $this->request->getPost("roomrentlimit"); - // } - - // if ($this->request->getPost("icu_limit_display")) { - // $data['ICU Limit'] = $this->request->getPost("icu_limit"); - // } - - // if ($this->request->getPost("proportionatedeductionclause_display")) { - // $data['Proportionate Deduction Clause'] = $this->request->getPost("proportionatedeductionclause"); - // } - - // if ($this->request->getPost("ailmentcapping_display")) { - // $data['Ailment capping'] = $this->request->getPost("ailmentcapping"); - // } - - // if ($this->request->getPost("ailment_capping_details_display")) { - // $data['Ailment capping Details'] = $this->request->getPost("ailment_capping_details"); - // } - - // if ($this->request->getPost("corporatebuffer_display")) { - // $data['Corporate Buffer'] = $this->request->getPost("corporatebuffer"); - // } - - // if ($this->request->getPost("non_admissible_contingency_corporate_buffer_display")) { - // $data['Non-Admissible / Contingency Corporate Buffer'] = $this->request->getPost("non_admissible_contingency_corporate_buffer"); - // } - - // if ($this->request->getPost("ambulancecharges_display")) { - // $data['Ambulance Charges'] = $this->request->getPost("ambulancecharges"); - // } - - // if ($this->request->getPost("airambulance_display")) { - // $data['Air Ambulance'] = $this->request->getPost("airambulance"); - // } - - // if ($this->request->getPost("reasonableandcustomarycharges_display")) { - // $data['Reasonable and Customary Charges'] = $this->request->getPost("reasonableandcustomarycharges"); - // } - - // if ($this->request->getPost("daycaretreatment_display")) { - // $data['Day Care Treatment'] = $this->request->getPost("daycaretreatment"); - // } - - // if ($this->request->getPost("lasiksurgery_display")) { - // $data['Lasik Surgery'] = $this->request->getPost("lasiksurgery"); - // } - - // if ($this->request->getPost("ayushtreatmentcover_display")) { - // $data['AYUSH treatment cover'] = $this->request->getPost("ayudhtreatmentcover"); - // } - - // if ($this->request->getPost("moderntreatmentsasperirdai_display")) { - // $data['Modern treatments as per IRDAI'] = $this->request->getPost("moderntreatmentsasperirdai"); - // } - - // if ($this->request->getPost("opd_treatment_display")) { - // $data['OPD Treatment'] = $this->request->getPost("opd_treatment"); - // } - - // if ($this->request->getPost("days_of_discharge_display")) { - // $data['Claim Intimation Clause'] = $this->request->getPost("days_of_discharge"); - // } - - // if ($this->request->getPost("days_from_dod_display")) { - // $data['Claim Submission'] = $this->request->getPost("days_from_dod"); - // } - - // if ($this->request->getPost("terrorism_display")) { - // $data['Terrorism'] = $this->request->getPost("terrorism"); - // } - - // if ($this->request->getPost("widower_cover_display")) { - // $data['Widower Cover'] = $this->request->getPost("widower_cover"); - // } - - // if ($this->request->getPost("breavement_cover_display")) { - // $data['Breavement Cover'] = $this->request->getPost("breavement_cover"); - // } - - // if ($this->request->getPost("special_condition_display_value")) { - - // $specialConditionKeyValue = $this->request->getPost("special_condition_display_value") ?? []; - // $specialConditionKeyValue = json_decode($specialConditionKeyValue, true); - - // if (is_array($specialConditionKeyValue) && count($specialConditionKeyValue) > 0) { - // $mergedArray = array_merge(...array_map(fn($item) => (array) $item, $specialConditionKeyValue)); - // $data = array_merge($data, $mergedArray); - // } - // } - - // if(isset($data) && !empty($data)){ - // return $data; - // }else{ - // $data = []; - // return $data; - // } - - // } - public function enrollmentGMCDisplayValueTransform() { $data = []; @@ -3873,7 +3685,6 @@ class ClientController extends AdminController return $data; } - public function getterms() { $client_policy_id = $this->request->getVar('client_policy_id'); @@ -4034,94 +3845,6 @@ class ClientController extends AdminController } } - // public function enrollmentGPADisplayValueTransform() - // { - // $data = []; - - // if ($this->request->getPost("accidentalDeathBenefit_display")) { - // $data['Accidental Death Benefit'] = $this->request->getPost("accidentalDeathBenefit"); - // } - // if ($this->request->getPost("permanentTotalDisablement_display")) { - // $data['Permanent Total Disablement'] = $this->request->getPost("permanentTotalDisablement"); - // } - // if ($this->request->getPost("permanentPartialDisablement_display")) { - // $data['Permanent Partial Disablement'] = $this->request->getPost("permanentPartialDisablement"); - // } - // if ($this->request->getPost("temporaryTotalDisablementBenefit_display")) { - // $data['Temporary Total Disablement Benefit'] = $this->request->getPost("temporaryTotalDisablementBenefit"); - // } - // if ($this->request->getPost("medical_expenses_medical_extension_display")) { - // $data['Medical Expenses / Medical Extension (IPD)'] = $this->request->getPost("medical_expenses_medical_extension"); - // } - // if ($this->request->getPost("opd_treatment_cover_display")) { - // $data['OPD Treatment Cover'] = $this->request->getPost("opd_treatment_cover"); - // } - // if ($this->request->getPost("ambulanceCharges_display")) { - // $data['Ambulance Charges'] = $this->request->getPost("ambulanceCharges"); - // } - // if ($this->request->getPost("repatriation_of_mortal_remains_display")) { - // $data['Repatriation of Mortal Remains'] = $this->request->getPost("repatriation_of_mortal_remains"); - // } - // if ($this->request->getPost("childrenEducationWelfareFund_display")) { - // $data['Children Education Welfare Fund'] = $this->request->getPost("childrenEducationWelfareFund"); - // } - // if ($this->request->getPost("terrorism_display")) { - // $data['Terrorism'] = $this->request->getPost("terrorism"); - // } - // if ($this->request->getPost("worldwideCover_display")) { - // $data['Worldwide Cover'] = $this->request->getPost("worldwideCover"); - // } - // if ($this->request->getPost("family_transportation_benefits_display")) { - // $data['Family Transportation Benefits'] = $this->request->getPost("family_transportation_benefits"); - // } - // if ($this->request->getPost("fractures_dislocation_burns_display")) { - // $data['Fractures / Dislocation / Burns'] = $this->request->getPost("fractures_dislocation_burns"); - // } - // if ($this->request->getPost("coma_display")) { - // $data['Coma'] = $this->request->getPost("coma"); - // } - // if ($this->request->getPost("carriageofDeadBody_display")) { - // $data['Carriage of Dead Body'] = $this->request->getPost("carriageOfDeadBody"); - // } - // if ($this->request->getPost("compassionateVisitExpenses_display")) { - // $data['Compassionate Visit Expenses'] = $this->request->getPost("compassionateVisitExpenses"); - // } - // if ($this->request->getPost("travel_expenses_for_medical_treatment_display")) { - // $data['Travel expenses for Medical Treatment'] = $this->request->getPost("travel_expenses_for_medical_treatment"); - // } - // if ($this->request->getPost("daily_cash_allowance_display")) { - // $data['Daily cash Allowance'] = $this->request->getPost("daily_cash_allowance"); - // } - // if ($this->request->getPost("artifical_limb_and_prosthesis_display")) { - // $data['Artifical Limb and Prosthesis'] = $this->request->getPost("artifical_limb_and_prosthesis"); - // } - // if ($this->request->getPost("animalSnakeInsectBite_display")) { - // $data['Animal/Snake/Insect Bite'] = $this->request->getPost("animalSnakeInsectBite"); - // } - // if ($this->request->getPost("air_ambulance_display")) { - // $data['Air Ambulance'] = $this->request->getPost("air_ambulance"); - // } - - // if ($this->request->getPost("gpa_special_condition_display_value")) { - - // $specialConditionKeyValue = $this->request->getPost("gpa_special_condition_display_value") ?? []; - // $specialConditionKeyValue = json_decode($specialConditionKeyValue, true); - - // if (is_array($specialConditionKeyValue) && count($specialConditionKeyValue) > 0) { - // $mergedArray = array_merge(...array_map(fn($item) => (array) $item, $specialConditionKeyValue)); - // $data = array_merge($data, $mergedArray); - // } - // } - // // print_r($data); die; - - // if (isset($data) && !empty($data)) { - // return $data; - // } else { - // $data = []; - // return $data; - // } - // } - public function enrollmentGPADisplayValueTransform() { $data = []; @@ -6646,8 +6369,8 @@ class ClientController extends AdminController // $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 48]); //vidal // $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 53]); //icici // $response = $ticketServiceController->tpaClaimDumpImporter(["file_id" => 54]); //mediassist - // $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 48]); - // $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 48]); + // $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 48]); //vidal + // $response = $ticketServiceController->tpaClaimDumpToTicketMasterImporters(["file_id" => 54]); //mediassist // dd($response); // ---------- TICKET CONTROLLER -------------------------------------------------------------------------------- diff --git a/app/Controllers/TicketServiceController.php b/app/Controllers/TicketServiceController.php index 14c1b19a..3b1469e7 100644 --- a/app/Controllers/TicketServiceController.php +++ b/app/Controllers/TicketServiceController.php @@ -9,6 +9,11 @@ use PhpOffice\PhpSpreadsheet\Cell\Coordinate; use Kint\Kint; use App\Libraries\TpaClaimsImportFactory; use App\Libraries\TPAClaimsImportServices\FhplClaimImportService; +use App\Libraries\TPAClaimsImportServices\MediAssistClaimImportService; +use App\Libraries\TPAClaimsImportServices\AbhiClaimImportService; +use App\Libraries\TPAClaimsImportServices\RcareClaimImportService; +use App\Libraries\TPAClaimsImportServices\VidalClaimImportService; +use App\Libraries\TPAClaimsImportServices\IciciClaimImportService; use App\Libraries\TPAClaimsImportServices\BaseTpaClaimImportService; use App\Models\ClaimDumpFileModel; @@ -1857,17 +1862,17 @@ class TicketServiceController extends BaseController } public function tpaClaimDumpImporter($params) - { + { try { $file_id = $params['file_id'] ?? null; - $file_path = WRITEPATH . 'uploads/claim_dump_excel/'; + $file_path = WRITEPATH . 'uploads' . DIRECTORY_SEPARATOR . 'claim_dump_excel' . DIRECTORY_SEPARATOR; if (!$file_id) { return ['status' => false, 'message' => 'File ID is missing']; } - $fileData = $this->claimDumpFileModel->where('id', $file_id)->first(); + $fileData = $this->claimDumpFileModel->find((int)$file_id); if (!$fileData) { return ['status' => false, 'message' => 'Invalid file ID. No file data found']; @@ -1882,46 +1887,27 @@ class TicketServiceController extends BaseController $handler = TpaClaimsImportFactory::make($fileData['tpa_id'] ?? 0); $result = $handler->runTpaClaimDumpInsert($file_full_path, $file_id); - // ---------- Prepare update data ---------- - $data = []; - if (!empty($result['status']) && $result['status'] === true) { - $data['status'] = 'success'; - $data['reason'] = null; + // mark file as processing and queue next job + Jobs::addJob(['job_name' => 'tpaClaimDumpToTicketMasterImporters', 'payload' => ['file_id' => $file_id]]); } else { - $data['status'] = 'failed'; - $errorMessage = $result['message'] ?? 'Unknown import error'; - $reason = [ - 'error_summary' => array_count_values([5]), + 'error_summary' => [5 => 1], 'error_data' => $errorMessage ]; - - $data['reason'] = json_encode($reason, JSON_UNESCAPED_UNICODE); - } - - // dd($data); - // ---------- Update DB ---------- - $sql = "UPDATE claim_dump_files SET status = ?, reason = ? WHERE id = ?"; - - $updated = db_connect()->query( - $sql, - [ - $data['status'] ?? null, - $data['reason'] ?? null, - $file_id - ] - ); - - if (!$updated) { - $this->myLogger->logme('error', 'Claim dump file update failed for file_id: ' . $file_id); - } - - dd(db_connect()->getLastQuery()->getQuery()); - - if(!empty($result['status']) && $result['status'] === true){ - $r = Jobs::addJob(['job_name' => 'tpaClaimDumpToTicketMasterImporters', 'payload' => ['file_id' => $file_id]]); + $reasonJson = json_encode($reason, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + // mark the file as failed using the model + $updated = $this->claimDumpFileModel->update($file_id, [ + 'status' => 'failed', + 'reason' => $reasonJson, + 'updated_by' => $fileData['created_by'] ?? null + ]); + if ($updated === false) { + $this->myLogger->logme('error', 'Claim dump file update to failed status failed for file_id: ' . $file_id); + } else { + $this->myLogger->logme('error', 'Claim dump file marked failed for file_id: ' . $file_id); + } } return $result; @@ -1934,6 +1920,12 @@ class TicketServiceController extends BaseController $th->getMessage() . ' | Line: ' . $th->getLine() ); + // attempt to mark file as failed if file_id available + if (!empty($file_id)) { + $reason = json_encode(['error_summary' => [5 => 1], 'error_data' => 'TPA import crashed: ' . $th->getMessage()], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $this->claimDumpFileModel->update($file_id, ['status' => 'failed', 'reason' => $reason]); + } + return [ 'status' => false, 'message' => 'TPA Claim dump import failed', @@ -1961,6 +1953,20 @@ class TicketServiceController extends BaseController $handler = TpaClaimsImportFactory::make($fileData['tpa_id'] ?? 0); $result = $handler->runTicketMasterInsert($params); + if (!empty($result['status']) && $result['status'] === true) { + $updated = $this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'success', 'reason' => null])->update(); + } else { + + $errorMessage = $result['message'] ?? 'Unknown import error C'; + $reason = [ + 'error_summary' => [5 => 1], // 🔒 always fixed + 'error_data' => $errorMessage + ]; + + $reason = json_encode($reason); + $updated = $this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => $reason])->update(); + } + return $result; } catch (\Throwable $th) { diff --git a/app/Helpers/DepositHelper.php b/app/Helpers/DepositHelper.php index 495797f3..05521df4 100755 --- a/app/Helpers/DepositHelper.php +++ b/app/Helpers/DepositHelper.php @@ -67,7 +67,8 @@ class DepositHelper 'balance' => $newBalance, // Include the new balance in the data array 'cd_ac_pk'=> isset($data['cd_ac_pk'])?$data['cd_ac_pk']:null, 'record_date' => $data['record_date'] ?? null, - 'policy_transaction_id' => $data['pt_id'] ?? null + 'policy_transaction_id' => $data['pt_id'] ?? null, + 'file_id' => $data['file_id'], ]; // Insert data and get the insert ID diff --git a/app/Libraries/TPAClaimsImportServices/AbhiClaimImportService.php b/app/Libraries/TPAClaimsImportServices/AbhiClaimImportService.php index 21818613..1f9837b9 100644 --- a/app/Libraries/TPAClaimsImportServices/AbhiClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/AbhiClaimImportService.php @@ -114,6 +114,8 @@ class AbhiClaimImportService extends BaseTpaClaimImportService // Misc 'diagnosis' => 'claim_description', 'healthcard_id' => 'tpa_no', + 'claim_type' => 'tpa_claim_type', + ]; protected $statusMapping = [ @@ -174,9 +176,7 @@ class AbhiClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -187,9 +187,7 @@ class AbhiClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_abhi'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -200,9 +198,7 @@ class AbhiClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_abhi'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -307,7 +303,7 @@ class AbhiClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -326,23 +322,15 @@ class AbhiClaimImportService extends BaseTpaClaimImportService if (!empty($employee_data)) { $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } diff --git a/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php b/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php index 1485dee2..d428072f 100644 --- a/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php @@ -50,35 +50,12 @@ abstract class BaseTpaClaimImportService // dd($tpaInsertData); if (empty($tpaInsertData)) { - return ['status' => false, 'message' => 'These records already exist in the system.']; + return ['status' => false, 'message' => 'These records already exist in the system. Please check the file']; } - if (env('FHPL_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $ClaimsDumpFhplModel = $this->db->table('claims_dump_fhpl'); - $return_res = $ClaimsDumpFhplModel->insertBatch($tpaInsertData); - } else if (env('R_CARE_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $ClaimsDumpIciciModel = $this->db->table('claims_dump_reliance'); - $return_res = $ClaimsDumpIciciModel->insertBatch($tpaInsertData); - } else if (env('ICICI_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $ClaimsDumpIciciModel = $this->db->table('claims_dump_icici'); - $return_res = $ClaimsDumpIciciModel->insertBatch($tpaInsertData); - } else if (env('ABHI_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - // $ClaimsDumpAbhiModel = $this->db->table('claims_dump_abhi'); - // $return_res = $ClaimsDumpAbhiModel->insertBatch($tpaInsertData); - $return_res = $this->bulkInsertTPATable($tpaInsertData); - } else if (env('VIDAL_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $ClaimsDumpVidalModel = $this->db->table('claims_dump_vidal'); - $return_res = $ClaimsDumpVidalModel->insertBatch($tpaInsertData); - } else if (env('MEDI_ASSIST_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $ClaimsDumpMediAssistModel = $this->db->table('claims_dump_medi_assist'); - $return_res = $ClaimsDumpMediAssistModel->insertBatch($tpaInsertData); - } else{ + $return_res = $this->bulkInsertTPATable($tpaInsertData); - } - - // $return_res = $this->bulkInsertTPATable($tpaInsertData); - - if (!$return_res) { + if ($return_res !== true) { return ['status' => false, 'message' => 'TPA Import bulk insert failed']; } @@ -87,7 +64,6 @@ abstract class BaseTpaClaimImportService if ($this->db->transStatus() === false) { $error = $this->db->error(); - $error_data = [ 'message' => $error['message'] ?: 'Unknown DB error', 'code' => $error['code'] ?? null, @@ -95,7 +71,7 @@ abstract class BaseTpaClaimImportService ]; // dd($error_data); - // unset($error_data['last_query']); + unset($error_data['last_query']); return ['status' => false, 'message' => 'TPA Import transaction failed', 'error_data' => $error_data]; } @@ -112,28 +88,39 @@ abstract class BaseTpaClaimImportService $file_id = $params['file_id']; $ticketMasterData = $this->mapClaimMasterData($file_id); + // dd($ticketMasterData); if (!$ticketMasterData['status']) { return $ticketMasterData; } - $return_res = $this->importClaimMaster($ticketMasterData['mapped_array']); + $message = ''; + $return_res = false; + if(!empty($ticketMasterData['mapped_array'])){ + $return_res = $this->importClaimMaster($ticketMasterData['mapped_array']); + $message .= 'Ticket Master Claim bulk insert success. '; + } + + if(!empty($ticketMasterData['rejected_reason_array'])){ + $return_res = $this->updateTicketMasterRejectedReasonInTPATable($ticketMasterData['rejected_reason_array']); + if(empty($ticketMasterData['mapped_array'])){ + $message .= 'Those employees not in our system. '; + }else{ + $message .= 'Ticket Master Claim rejected reason updated successfully. '; + } + } if(!$return_res){ return ['status' => false, 'message' => 'Ticket Master Claim bulk insert failed']; } - $this->updateTicketMasterRejectedReasonInTPATable($ticketMasterData['rejected_reason_array']); - $this->db->transComplete(); if ($this->db->transStatus() === false) { return ['status' => false, 'message' => 'Ticket Master Claim bulk insert failed']; } - - - return ['status' => true, 'message' => 'Ticket Master Claim inserted successfully']; + return ['status' => true, 'message' => $message]; } @@ -278,6 +265,7 @@ abstract class BaseTpaClaimImportService ->where('is_active', 1) ->where('file_id', $params['file_id']) ->where('ticket_id IS NULL') + ->where('master_reject_reason IS NULL') ->countAllResults(); $batch_size = 100; @@ -291,6 +279,7 @@ abstract class BaseTpaClaimImportService ->where('is_active', 1) ->where('file_id', $params['file_id']) ->where('ticket_id IS NULL') + ->where('master_reject_reason IS NULL') ->get() ->getResultArray(); @@ -308,6 +297,7 @@ abstract class BaseTpaClaimImportService 'employees.email_corporate AS emp_mail', 'employees.mobile AS emp_mobile', 'employees.name AS emp_name', + 'employees.emp_code AS emp_code', // insured employee 'insured.id AS insured_emp_id', diff --git a/app/Libraries/TPAClaimsImportServices/FhplClaimImportService.php b/app/Libraries/TPAClaimsImportServices/FhplClaimImportService.php index 72614418..58dd1282 100644 --- a/app/Libraries/TPAClaimsImportServices/FhplClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/FhplClaimImportService.php @@ -177,10 +177,7 @@ class FhplClaimImportService extends BaseTpaClaimImportService // Payment 'cheque_no' => 'utr_details', 'uhid_no' => 'tpa_no', - - 'priority' => 1, - 'mode_of_intimation' => 5, - 'ticket_type_id' => 1, + 'claim_type' => 'tpa_claim_type', ]; protected $statusMapping = [ @@ -239,9 +236,7 @@ class FhplClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -252,9 +247,7 @@ class FhplClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_fhpl'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -265,9 +258,7 @@ class FhplClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_fhpl'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -372,7 +363,7 @@ class FhplClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -391,23 +382,15 @@ class FhplClaimImportService extends BaseTpaClaimImportService if (!empty($employee_data)) { $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } diff --git a/app/Libraries/TPAClaimsImportServices/IciciClaimImportService.php b/app/Libraries/TPAClaimsImportServices/IciciClaimImportService.php index b89221ae..f2717fd5 100644 --- a/app/Libraries/TPAClaimsImportServices/IciciClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/IciciClaimImportService.php @@ -100,7 +100,8 @@ class IciciClaimImportService extends BaseTpaClaimImportService 'cheque_number' => 'utr_details', 'uhid' => 'tpa_no', - 'rejected_query_desc' => 'claim_description', + 'rejected_query_desc' => 'claim_description', + 'type_of_claim' => 'tpa_claim_type', ]; protected $statusMapping = [ @@ -168,9 +169,7 @@ class IciciClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -181,9 +180,7 @@ class IciciClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_icici'); - $builder->insertBatch($data); - - return true; + return $builder->upsertBatch($data, 'id'); } @@ -194,9 +191,7 @@ class IciciClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_icici'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -301,7 +296,7 @@ class IciciClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -320,23 +315,15 @@ class IciciClaimImportService extends BaseTpaClaimImportService if (!empty($employee_data)) { $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } diff --git a/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php b/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php index a582a067..ad5a8657 100644 --- a/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/MediAssistClaimImportService.php @@ -189,9 +189,7 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -215,9 +213,7 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_medi_assist'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -318,7 +314,7 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -337,23 +333,15 @@ class MediAssistClaimImportService extends BaseTpaClaimImportService if (!empty($employee_data)) { $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } diff --git a/app/Libraries/TPAClaimsImportServices/RcareClaimImportService.php b/app/Libraries/TPAClaimsImportServices/RcareClaimImportService.php index 4808d89e..b77b035f 100644 --- a/app/Libraries/TPAClaimsImportServices/RcareClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/RcareClaimImportService.php @@ -159,9 +159,7 @@ class RcareClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -172,9 +170,7 @@ class RcareClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_reliance'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -185,9 +181,7 @@ class RcareClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_reliance'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -291,7 +285,7 @@ class RcareClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -310,23 +304,15 @@ class RcareClaimImportService extends BaseTpaClaimImportService if (!empty($employee_data)) { $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } diff --git a/app/Libraries/TPAClaimsImportServices/VidalClaimImportService.php b/app/Libraries/TPAClaimsImportServices/VidalClaimImportService.php index b8bc92b8..fee2cc9f 100644 --- a/app/Libraries/TPAClaimsImportServices/VidalClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/VidalClaimImportService.php @@ -163,7 +163,6 @@ class VidalClaimImportService extends BaseTpaClaimImportService ["excel_column" => "Last Document Received date", "db_column" => "last_document_received_date"], ]; - protected $mapping = [ ["excel_column" => ["col_name" => "TPA Policy Number", "col_index" => 0], "db_column" => "tpa_policy_number"], @@ -312,7 +311,6 @@ class VidalClaimImportService extends BaseTpaClaimImportService ["excel_column" => ["col_name" => "Last Document Received date", "col_index" => 113], "db_column" => "last_document_received_date"], ]; - protected $ticketMasterMapping = [ // Policy / Claim identifiers @@ -346,9 +344,9 @@ class VidalClaimImportService extends BaseTpaClaimImportService // Meta 'file_id' => 'file_id', + 'type_of_claim' => 'tpa_claim_type', ]; - protected $statusMapping = [ 'CL Paid with Settlement Letter' => 11, 'CL Rejected' => 8, @@ -380,9 +378,7 @@ class VidalClaimImportService extends BaseTpaClaimImportService } $ticketMasterModel = new TicketMasterModel(); - $ticketMasterModel->insertBatch($data); - - return true; + return $ticketMasterModel->insertBatch($data); } @@ -393,9 +389,7 @@ class VidalClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_vidal'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -406,9 +400,7 @@ class VidalClaimImportService extends BaseTpaClaimImportService } $builder = $this->db->table('claims_dump_vidal'); - $builder->insertBatch($data); - - return true; + return $builder->updateBatch($data, 'id'); } @@ -514,7 +506,7 @@ class VidalClaimImportService extends BaseTpaClaimImportService if ($isduplicate) { $reason = "This claim already exists in our system."; - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } @@ -534,22 +526,14 @@ class VidalClaimImportService extends BaseTpaClaimImportService $item['emp_id'] = $employee_data['id'] ?? null; $item['emp_name'] = $employee_data['name'] ?? null; $item['emp_mail'] = $employee_data['email_corporate'] ?? null; + $item['emp_code'] = $employee_data['emp_code'] ?? null; $item['emp_mobile'] = $employee_data['mobile'] ?? null; $item['insured_emp_id'] = $employee_data['insured_emp_id'] ?? null; $item['insured_name'] = $employee_data['insured_name'] ?? null; } else { - $reason = sprintf( - 'The policy number "%s" does not exist in our system. ' . - 'Details - Client ID: %s, Client Policy ID: %s, Employee Number: %s, Relationship: %s', - $row['insurer_policy_number'], - $file_data['client_id'], - $file_data['client_policy_id'], - $row['employee_number'], - $item['relationship'] - ); - - $rejecetd_reason[$row['id']] = ["ticket_master_insert_reject_reason" => $reason]; + $reason = 'This employee not exist in our system.'; + $rejecetd_reason[] = ["id" => $row['id'], "master_reject_reason" => $reason]; continue; } From e00e55c5179b84fcb61db75a7f4f1fb1636e5ae2 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Sun, 1 Feb 2026 22:18:12 +0530 Subject: [PATCH 3/9] FIX_ISSUE_2 --- app/Controllers/TicketServiceController.php | 120 ++++++------ .../BaseTpaClaimImportService.php | 176 ++++++++++-------- 2 files changed, 149 insertions(+), 147 deletions(-) diff --git a/app/Controllers/TicketServiceController.php b/app/Controllers/TicketServiceController.php index 3b1469e7..602f0708 100644 --- a/app/Controllers/TicketServiceController.php +++ b/app/Controllers/TicketServiceController.php @@ -1862,10 +1862,10 @@ class TicketServiceController extends BaseController } public function tpaClaimDumpImporter($params) - { - try { + { + $file_id = $params['file_id'] ?? null; // Move outside try to ensure catch can see it - $file_id = $params['file_id'] ?? null; + try { $file_path = WRITEPATH . 'uploads' . DIRECTORY_SEPARATOR . 'claim_dump_excel' . DIRECTORY_SEPARATOR; if (!$file_id) { @@ -1873,13 +1873,11 @@ class TicketServiceController extends BaseController } $fileData = $this->claimDumpFileModel->find((int)$file_id); - if (!$fileData) { return ['status' => false, 'message' => 'Invalid file ID. No file data found']; } $file_full_path = $file_path . $fileData['file_name']; - if (!is_file($file_full_path)) { return ['status' => false, 'message' => 'Claim dump file not found']; } @@ -1888,106 +1886,96 @@ class TicketServiceController extends BaseController $result = $handler->runTpaClaimDumpInsert($file_full_path, $file_id); if (!empty($result['status']) && $result['status'] === true) { - // mark file as processing and queue next job Jobs::addJob(['job_name' => 'tpaClaimDumpToTicketMasterImporters', 'payload' => ['file_id' => $file_id]]); } else { - $errorMessage = $result['message'] ?? 'Unknown import error'; - $reason = [ - 'error_summary' => [5 => 1], - 'error_data' => $errorMessage - ]; - $reasonJson = json_encode($reason, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - // mark the file as failed using the model - $updated = $this->claimDumpFileModel->update($file_id, [ - 'status' => 'failed', - 'reason' => $reasonJson, - 'updated_by' => $fileData['created_by'] ?? null - ]); - if ($updated === false) { - $this->myLogger->logme('error', 'Claim dump file update to failed status failed for file_id: ' . $file_id); - } else { - $this->myLogger->logme('error', 'Claim dump file marked failed for file_id: ' . $file_id); - } + // FORCE FAIL LOGIC + $this->markAsFailed($file_id, $result['message'] ?? 'System error contact admin', $fileData['created_by'] ?? null); } return $result; - } catch (\Throwable $th) { + $this->myLogger->logme("error", 'TPA_CLAIM_IMPORTER_JOB : ' . $th->getMessage()); - $this->myLogger->logme( - "error", - 'TPA_CLAIM_IMPORTER_JOB : ' . - $th->getMessage() . ' | Line: ' . $th->getLine() - ); - - // attempt to mark file as failed if file_id available if (!empty($file_id)) { - $reason = json_encode(['error_summary' => [5 => 1], 'error_data' => 'TPA import crashed: ' . $th->getMessage()], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - $this->claimDumpFileModel->update($file_id, ['status' => 'failed', 'reason' => $reason]); + $this->markAsFailed($file_id, 'System error contact admin'); } return [ 'status' => false, 'message' => 'TPA Claim dump import failed', - 'error_data' => [ - 'message' => $th->getMessage(), - 'file' => $th->getFile(), - 'line' => $th->getLine(), - 'trace' => $th->getTraceAsString() - ] + 'error_data' => $th->getMessage() ]; } } + private function markAsFailed($file_id, $message, $user_id = null) + { + $reason = json_encode([ + 'error_summary' => [5 => 1], + 'error_data' => $message + ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + + $data = [ + 'status' => 'failed', + 'reason' => $reason, + 'updated_by' => $user_id + ]; + + // Using the direct update(id, data) method is often more reliable inside try/catch + return $this->claimDumpFileModel->update($file_id, $data); + } + public function tpaClaimDumpToTicketMasterImporters($params) { - try { + $file_id = $params['file_id'] ?? null; + $fileData = null; + + try { + if (!$file_id) { + return ['status' => false, 'message' => 'File ID is missing']; + } - $file_id = $params['file_id'] ?? null; $fileData = $this->claimDumpFileModel->where('id', $file_id)->first(); if (!$fileData) { - return ['status' => false, 'message' => 'Invalid file ID No file data found to import']; + return ['status' => false, 'message' => 'Invalid file ID. No file data found to import']; } $handler = TpaClaimsImportFactory::make($fileData['tpa_id'] ?? 0); $result = $handler->runTicketMasterInsert($params); if (!empty($result['status']) && $result['status'] === true) { - $updated = $this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'success', 'reason' => null])->update(); + // Success: Update the status to success + $this->claimDumpFileModel->update($file_id, [ + 'status' => 'success', + 'reason' => null + ]); } else { - - $errorMessage = $result['message'] ?? 'Unknown import error C'; - $reason = [ - 'error_summary' => [5 => 1], // 🔒 always fixed - 'error_data' => $errorMessage - ]; - - $reason = json_encode($reason); - $updated = $this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => $reason])->update(); + // Logic failure: The runTicketMasterInsert returned status false + $this->markAsFailed( + $file_id, + $result['message'] ?? 'System error contact admin', + $fileData['created_by'] ?? null + ); } return $result; - } catch (\Throwable $th) { + // Log the full error + $this->myLogger->logme("error", 'TICKET_MASTER_CLAIM_IMPORTER_JOB :' . $th->getMessage() . ' at line ' . $th->getLine()); - $this->myLogger->logme("error", 'TICKET_MASTER_CLAIM_IMPORTER_JOB :' .($th->getMessage() . ' --- ' . $th->getLine() . '----' . $th->getTraceAsString())); - - $errorData = [ - 'message' => $th->getMessage(), - 'file' => $th->getFile(), - 'line' => $th->getLine(), - 'code' => $th->getCode(), - 'trace' => $th->getTraceAsString(), - 'trace_array' => $th->getTrace(), // full array version (optional) - 'function' => $th->getTrace()[0]['function'] ?? null, - 'class' => $th->getTrace()[0]['class'] ?? null, - ]; + // CRITICAL: Even if the code crashes, try to mark the file as failed + if ($file_id) { + $this->markAsFailed($file_id, 'Fatal Crash: ' . $th->getMessage(), $fileData['created_by'] ?? null); + } return [ 'status' => false, 'message' => $th->getMessage(), - 'error_data' => json_encode($errorData, JSON_PRETTY_PRINT) + 'error_data' => [ + 'line' => $th->getLine(), + 'file' => $th->getFile() + ] ]; } } diff --git a/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php b/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php index d428072f..d2b715cc 100644 --- a/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php +++ b/app/Libraries/TPAClaimsImportServices/BaseTpaClaimImportService.php @@ -27,55 +27,49 @@ abstract class BaseTpaClaimImportService */ public function runTpaClaimDumpInsert(string $filePath, int $fileId): array { - $this->db->transStart(); + // 1. Start Transaction + $this->db->transBegin(); - $fileData = $this->claimDumpFileModel->where('id', $fileId)->first(); + try { + $fileData = $this->claimDumpFileModel->where('id', $fileId)->first(); - if (env('FHPL_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $rows = $this->readExcelBySheetName($filePath, 'Claims&Preauth'); - } else if (env('R_CARE_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { - $rows = $this->readExcelBySheetName($filePath, 'CL'); - // $AL = $this->readExcelBySheetName($filePath, 'AL'); - // $rows = array_merge($CL, $AL); - } else { - $rows = $this->readExcel($filePath); + // Determine sheet name logic... + if (env('FHPL_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { + $rows = $this->readExcelBySheetName($filePath, 'Claims&Preauth'); + } else if (env('R_CARE_PRIMARY_KEY_CONSTANT') == $fileData['tpa_id']) { + $rows = $this->readExcelBySheetName($filePath, 'CL'); + } else { + $rows = $this->readExcel($filePath); + } + + if (empty($rows)) { + $this->db->transRollback(); // ROLLBACK BEFORE RETURN + return ['status' => false, 'message' => 'Excel file contains no data or wrong file upload']; + } + + $tpaInsertData = $this->mapTPAData($rows, $fileId); + + if (empty($tpaInsertData)) { + $this->db->transRollback(); // ROLLBACK BEFORE RETURN + return ['status' => false, 'message' => 'These records already exist in the system.']; + } + + $return_res = $this->bulkInsertTPATable($tpaInsertData); + + if ($return_res !== true) { + $this->db->transRollback(); // ROLLBACK BEFORE RETURN + return ['status' => false, 'message' => 'TPA Import bulk insert failed']; + } + + // 2. Commit if everything is fine + $this->db->transCommit(); + return ['status' => true, 'message' => 'File uploaded successfully', 'record_count' => count($tpaInsertData)]; + + } catch (\Throwable $e) { + // 3. Rollback on any crash/exception + $this->db->transRollback(); + return ['status' => false, 'message' => 'System error : ' . $e->getMessage()]; } - // dd($rows); - - if (empty($rows)) { - return ['status' => false, 'message' => 'Excel file contains no data or wrong file upload']; - } - - $tpaInsertData = $this->mapTPAData($rows, $fileId); - // dd($tpaInsertData); - - if (empty($tpaInsertData)) { - return ['status' => false, 'message' => 'These records already exist in the system. Please check the file']; - } - - $return_res = $this->bulkInsertTPATable($tpaInsertData); - - if ($return_res !== true) { - return ['status' => false, 'message' => 'TPA Import bulk insert failed']; - } - - $this->db->transComplete(); - - if ($this->db->transStatus() === false) { - - $error = $this->db->error(); - $error_data = [ - 'message' => $error['message'] ?: 'Unknown DB error', - 'code' => $error['code'] ?? null, - 'last_query' => (string) $this->db->getLastQuery() - ]; - - // dd($error_data); - unset($error_data['last_query']); - return ['status' => false, 'message' => 'TPA Import transaction failed', 'error_data' => $error_data]; - } - - return ['status' => true, 'message' => 'File uploaded successfully', 'record_count' => count($tpaInsertData ?? [])]; } /** @@ -83,45 +77,65 @@ abstract class BaseTpaClaimImportService */ public function runTicketMasterInsert(array $params): array { - $this->db->transStart(); + // 1. Start manual transaction + $this->db->transBegin(); - $file_id = $params['file_id']; + try { + $file_id = $params['file_id']; + $ticketMasterData = $this->mapClaimMasterData($file_id); - $ticketMasterData = $this->mapClaimMasterData($file_id); - // dd($ticketMasterData); - - if (!$ticketMasterData['status']) { - return $ticketMasterData; - } - - $message = ''; - $return_res = false; - if(!empty($ticketMasterData['mapped_array'])){ - $return_res = $this->importClaimMaster($ticketMasterData['mapped_array']); - $message .= 'Ticket Master Claim bulk insert success. '; - } - - if(!empty($ticketMasterData['rejected_reason_array'])){ - $return_res = $this->updateTicketMasterRejectedReasonInTPATable($ticketMasterData['rejected_reason_array']); - if(empty($ticketMasterData['mapped_array'])){ - $message .= 'Those employees not in our system. '; - }else{ - $message .= 'Ticket Master Claim rejected reason updated successfully. '; + // Check if mapping failed + if (!$ticketMasterData['status']) { + $this->db->transRollback(); // ALWAYS rollback before early return + return $ticketMasterData; } + + $message = ''; + $hasExecutedTask = false; + + // Process Mapped Data + if (!empty($ticketMasterData['mapped_array'])) { + $insert_res = $this->importClaimMaster($ticketMasterData['mapped_array']); + if (!$insert_res) { + $this->db->transRollback(); + return ['status' => false, 'message' => 'Ticket Master Claim bulk insert failed']; + } + $message .= 'Ticket Master Claim bulk insert success. '; + $hasExecutedTask = true; + } + + // Process Rejected Reasons + if (!empty($ticketMasterData['rejected_reason_array'])) { + $update_res = $this->updateTicketMasterRejectedReasonInTPATable($ticketMasterData['rejected_reason_array']); + if (!$update_res) { + $this->db->transRollback(); + return ['status' => false, 'message' => 'Updating rejected reasons failed']; + } + + $message .= empty($ticketMasterData['mapped_array']) + ? 'Those employees not in our system. ' + : 'Ticket Master Claim rejected reason updated successfully. '; + $hasExecutedTask = true; + } + + // If nothing was processed but no error occurred + if (!$hasExecutedTask) { + $this->db->transRollback(); + return ['status' => false, 'message' => 'No data found to process.']; + } + + // 2. Commit the transaction + $this->db->transCommit(); + return ['status' => true, 'message' => trim($message)]; + + } catch (\Throwable $th) { + // 3. Rollback on crash + $this->db->transRollback(); + return [ + 'status' => false, + 'message' => 'System error during Ticket Master Insert: ' . $th->getMessage() + ]; } - - if(!$return_res){ - return ['status' => false, 'message' => 'Ticket Master Claim bulk insert failed']; - } - - $this->db->transComplete(); - - if ($this->db->transStatus() === false) { - return ['status' => false, 'message' => 'Ticket Master Claim bulk insert failed']; - } - - return ['status' => true, 'message' => $message]; - } /** From 7119fe98fb7af644443412496e9003609f8a3818 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 2 Feb 2026 09:22:35 +0530 Subject: [PATCH 4/9] FIX_ISSUE_3 --- app/Config/Routes.php | 3 + app/Controllers/EmpDataServiceController.php | 35 ++++---- app/Controllers/EmployeeController.php | 14 +++ app/Helpers/utility_helper.php | 1 + app/Views/insurer_or_tpa_data.php | 92 ++++++++------------ 5 files changed, 72 insertions(+), 73 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 10b4f4ef..4c1903bd 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -216,6 +216,9 @@ $routes->group("/employee", ["filter" => "authMVC"], function ($routes) { $routes->post("retail-endorsement-save", "EmployeeController::retailendorsementsave"); $routes->get("getTPADataVariationReport/(:num)", "EmployeeController::getTPADataVariationReport/$1"); $routes->get("bulkGenerateEcardAndStoreinS3", "EmployeeController::bulkGenerateEcardAndStoreinS3"); + $routes->get('clearCdSession', 'EmployeeController::clearCdSession'); + $routes->get('checkSessionStatus', 'EmployeeController::checkSessionStatus'); + }); diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index eb95e8be..f1c78481 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -209,24 +209,23 @@ class EmpDataServiceController extends BaseController //check CD amt insufficient only insurer, not tpa // DO NOT REMOVE THIS if($export_data['insurer_or_tpa'] == 'insurer') { - if (!empty($cash_balance)) { - clear_cd_balance_session(); - if ((int) $cash_balance['balance'] == (int) $totals) { - $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount.'); - $this->myLogger->logme('error', 'Inception export failed due to insufficient deposit amount. CASH BALANCE : {balance} and TOTAL AMOUNT : {total}', ['balance' => $cash_balance['balance'], 'total' => $totals]); - - $cd_session_data = json_encode(['cd_balance' => false, 'cd_amount' => $cash_balance['balance'], 'excel_file_amt' => $totals]); - session()->set('cd_balance_info', $cd_session_data); - session()->set('cd_balance', false); - - $hr_data = $this->getHrdataForInsufficientMailSend($export_data['client_branch_id']); - $session_data = json_encode(['client_id' => $export_data['client_id'], 'hr_data' => $hr_data]); - session()->set('hr_data', $session_data); - - }else{ - session()->set('cd_balance', true); - - } + if ((int) $cash_balance['balance'] < (int) $totals) { + clear_cd_balance_session(); // Clear old junk first + + $cd_session_data = json_encode([ + 'cd_balance' => false, + 'cd_amount' => $cash_balance['balance'], + 'excel_file_amt' => $totals + ]); + + session()->set('cd_balance_info', $cd_session_data); + session()->set('cd_balance', 'insufficient'); // Use a string status for clarity + + $hr_data = $this->getHrdataForInsufficientMailSend($export_data['client_branch_id']); + session()->set('hr_data', json_encode(['client_id' => $export_data['client_id'], 'hr_data' => $hr_data])); + }else{ + session()->set('cd_balance', 'sufficient'); // Use a string status for clarity + session()->set('cd_balance_info', null); } } diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index c1d2d717..f9d16f7a 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -4584,6 +4584,20 @@ class EmployeeController extends AdminController } + public function clearCdSession() + { + clear_cd_balance_session(); + return $this->response->setJSON(['status' => 'cleared']); + } + + public function checkSessionStatus() + { + // Uses your existing get_cd_balance() helper + $data = get_cd_balance(); + + // Return as JSON so JavaScript can read it + return $this->response->setJSON($data); + } } diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php index efec7f1d..919fd49c 100755 --- a/app/Helpers/utility_helper.php +++ b/app/Helpers/utility_helper.php @@ -1108,6 +1108,7 @@ if (!function_exists('get_cd_balance')) { return [ 'has_cd_balance' => $session->has('cd_balance'), + 'cd_balance' => $session->get('cd_balance') ?? null, 'hr_data' => $session->get('hr_data') ?? [], 'cd_balance_info' => $session->get('cd_balance_info') ?? [], ]; diff --git a/app/Views/insurer_or_tpa_data.php b/app/Views/insurer_or_tpa_data.php index 9635fb4b..b0baf94d 100755 --- a/app/Views/insurer_or_tpa_data.php +++ b/app/Views/insurer_or_tpa_data.php @@ -1163,68 +1163,50 @@ } - function checkCDBalance() { + async function checkCDBalance() { + try { + // 1. Fetch the LATEST session data from the server + const response = await fetch('checkSessionStatus'); + const cdData = await response.json(); - const cdData = ; - console.log(cdData, typeof cdData); + console.log('Current Session Data:', cdData); - // cdData itself null / undefined safety - if (!cdData || typeof cdData !== 'object') { - console.log('CD data not available'); - return; - } + // 2. Check if cd_balance_info exists and isn't empty + if (cdData.has_cd_balance && cdData.cd_balance_info) { - let cd_balance_info = cdData.cd_balance_info - console.log('cd_balance_info', cd_balance_info); - cd_balance_info = JSON.parse(cd_balance_info); - console.log('cd_balance_info', cd_balance_info); + if(cdData.cd_balance === 'sufficient'){ + stopInterval(); // Stop checking once we find the error + console.log("CD Balance is sufficient"); + return; + } + + let cd_balance_info = JSON.parse(cdData.cd_balance_info) ?? null; + let hr_info = cdData.hr_data ? JSON.parse(cdData.hr_data) : null; - let hr_data = cdData.hr_data - console.log('hr_data', hr_data); - hr_data = JSON.parse(hr_data); - console.log('hr_data', hr_data); + // If balance is marked as false (insufficient) + if (cd_balance_info.cd_balance === false) { + + stopInterval(); // Stop checking once we find the error + toastr.warning( + `Insufficient CD Balance.
Balance: ₹${cd_balance_info.cd_amount}`, + 'WARNING', + { allowHtml: true } + ); - let cd_balance = cd_balance_info.cd_balance; - let cd_amount = cd_balance_info.cd_amount; - let excel_file_amt = cd_balance_info.excel_file_amt; + if(hr_info) { + $('#client_id_for_hr_mail_send').val(hr_info.client_id); + window.hr_data = hr_info.hr_data; + } - console.log(cd_balance ,cd_amount ,excel_file_amt); + openModal(); - window.hr_data = hr_data.hr_data; - $('#client_id_for_hr_mail_send').val(hr_data.client_id) - - console.log(cd_balance, typeof cd_balance); - - if (cd_balance === false && messageShown === false) { - - const message1 = - 'Insufficient CD Balance deducted. Please wait the file will be downloaded
' + - 'CD Amount: ₹' + cd_amount + '
' + - 'Total Amount: ₹' + excel_file_amt; - - toastr.warning(message1, 'WARNING', { - allowHtml: true, - timeOut: 10000, - extendedTimeOut: 3000 - }); - - messageShown = true; - stopInterval(); - openModal(); - - - - } - else if (cd_balance === true) { - - console.log('CD Balance is sufficient'); - stopInterval(); - - } - else { - - console.log('CD balance info not available'); + // 3. Clear the session now that we've handled it + fetch('clearCdSession'); + } + } + } catch (error) { + console.error('Error checking CD balance:', error); } } @@ -1234,7 +1216,7 @@ messageShown = false; // Reset message flag submitInterval = setInterval(function() { checkCDBalance(); - }, 10000); + }, 2000); console.log("Checking CD balance started..."); } } From bfcd7d4049ec5c0d2bf1ca92772760941ff6a7f8 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 2 Feb 2026 10:55:59 +0530 Subject: [PATCH 5/9] FIX_ISSUE_4 --- app/Models/ClientPolicyModel.php | 1 - app/Models/PolicyTransactionModel.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index e9cf38d9..6a7c3cac 100755 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -347,7 +347,6 @@ class ClientPolicyModel extends Model $data = $query->get()->getResult(); - dd($data); return $data; } diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php index 98243549..c975462a 100644 --- a/app/Models/PolicyTransactionModel.php +++ b/app/Models/PolicyTransactionModel.php @@ -3676,7 +3676,7 @@ $result = $query->getResultArray(); // $countofalldata = count($result); // dd($result); - dd($this->db->getLastQuery()->getQuery()); + // dd($this->db->getLastQuery()->getQuery()); $keys = []; $filtered = []; From 1ba46847f8eff6d5ce24eb4cedc7e0c85c266ff7 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 2 Feb 2026 12:27:55 +0530 Subject: [PATCH 6/9] FIX_REUPLOAD_POLICY_ISSUE_DATE_NOT_CAPTURED_IN_BATCH_FILE_TABLE --- app/Controllers/EmployeeController.php | 1 + app/Views/batch_list.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index f9d16f7a..db0468ae 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -445,6 +445,7 @@ class EmployeeController extends AdminController batch_files.amount, batch_files.status, batch_files.client_branch_id, + DATE_FORMAT(batch_files.policy_issue_date, '%d/%m/%Y') AS policy_issue_date, CASE WHEN batch_files.status IN ('partially success', 'in-progress-partially', 'failed-7') diff --git a/app/Views/batch_list.php b/app/Views/batch_list.php index aa2aa0da..9a461282 100755 --- a/app/Views/batch_list.php +++ b/app/Views/batch_list.php @@ -168,6 +168,7 @@ data-event_type="" data-actions="" data-client_branch_id="" + data-issue_date="" onclick="getBatchFileData(this)" class="dropdown-item upload_button" >Re-Upload @@ -215,6 +216,7 @@ + @@ -329,6 +331,7 @@ let insurer_or_tpa = $(input).data('insurer_or_tpa') let event_type = $(input).data('event_type') let actions = $(input).data('actions') + let issue_date = $(input).data('issue_date') console.log('client_id', client_id); console.log('client_policy_id', client_policy_id); @@ -336,6 +339,7 @@ console.log('insurer_or_tpa', insurer_or_tpa); console.log('event_type', event_type); console.log('actions', actions); + console.log('issue_date', issue_date); $('#batch_file_client_id').val(client_id); $('#batch_file_policy_id').val(client_policy_id); @@ -343,6 +347,7 @@ $('#batch_file_insurer_or_tpa').val(insurer_or_tpa); $('#batch_file_action_type').val(actions); $('#batch_file_event_type').val(event_type); + $('#batch_file_issue_date').val(issue_date); var myModal = new bootstrap.Modal(document.getElementById('batch_file_upload_modal')); From 8496357df4d02e4549a121095842a62577dd8f81 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 2 Feb 2026 13:56:18 +0530 Subject: [PATCH 7/9] FIX_CRM_TO_BDS_SYNC_DELETION_MINUS_SYMBOLE_ADD --- app/Controllers/EmpDataServiceController.php | 43 +++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/app/Controllers/EmpDataServiceController.php b/app/Controllers/EmpDataServiceController.php index f1c78481..f6cfb67a 100755 --- a/app/Controllers/EmpDataServiceController.php +++ b/app/Controllers/EmpDataServiceController.php @@ -5424,7 +5424,7 @@ class EmpDataServiceController extends BaseController $this->myLogger->logme("error", "Policy transaction inserted successfully: " . json_encode(['insert_id' => $insert_id])); //do not remove this commented item - $coShareDetails = $this->ConstructPTShareData($policy_data, $insert_id, $params, $lead_data); + $coShareDetails = $this->ConstructPTShareData($policy_data, $insert_id, $params, $lead_data, $params['action_type']); $pt_co_share_id = $this->PTCOShareDetailsModel->insert($coShareDetails); $this->myLogger->logme("error", "PT Co share data inserted successfully: " . json_encode(['pt_co_share_id' => $pt_co_share_id])); @@ -5556,7 +5556,46 @@ class EmpDataServiceController extends BaseController return $policyTransactionData; } - private function ConstructPTShareData($policy_data, $pt_id, $params, $lead_data) + private function ConstructPTShareData($policy_data, $pt_id, $params, $lead_data, $action_type) + { + $policyTypeModel = new PolicyTypeModel(); + $policy_type_data = $policyTypeModel->where('is_active', 1)->where('id', $policy_data['policy_type_id'])->first(); + + // Determine if we should negate the values + $multiplier = (strtolower($action_type) === 'deletion') ? -1 : 1; + + $coShareData = [ + 'pt_id' => $pt_id, + 'insurer_id' => $policy_data['insurer_id'], + 'insurer_branch_id' => $policy_data['insurer_branch_id'], + 'bp_amt' => ($params['base_premium'] ?? 0) * $multiplier, + 'cop_amt' => ($params['base_premium'] ?? 0) * $multiplier, + 'bp_gst_amt' => ($params['gst'] ?? 0) * $multiplier, + 'bp_sgst' => 9, // Usually tax percentages remain positive, but multiply if this is an amount + 'bp_cgst' => 9, + 'co_share_type' => 1, + 'co_share_per' => 100, + 'standerd_bp_per' => $policy_type_data['ebp'], + 'pt_policy_issue_date' => $params['policy_issue_date'] ?? null, + 'amount' => (($params['base_premium'] ?? 0) + ($params['gst'] ?? 0)) * $multiplier, + ]; + + if(isset($policy_data['gst']) && $policy_data['gst'] != null){ + $coShareData['bp_igst'] = $policy_data['gst'] ?? 0; + $coShareData['bp_sgst'] = 0; + $coShareData['bp_cgst'] = 0; + } + + // Calculate exp_amt logic + $agreed_per = $lead_data['agreed_percentage'] ?? $policy_type_data['ebp'] ?? 0; + $coShareData['exp_amt'] = ((($params['base_premium'] ?? 0) * $agreed_per) / 100) * $multiplier; + + $this->myLogger->logme("error", "Constructed PT co-share data: " . json_encode($coShareData)); + + return $coShareData; + } + + private function ConstructPTShareDataOld($policy_data, $pt_id, $params, $lead_data, $action_type = null) { $policyTypeModel = new PolicyTypeModel(); $policy_type_data = $policyTypeModel->where('is_active', 1)->where('id', $policy_data['policy_type_id'])->first(); From 08f7a2e04b5afe7a1b8bef700e6417f4565cc2dc Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Mon, 2 Feb 2026 15:39:23 +0530 Subject: [PATCH 8/9] FIX_DATE_ISSUE_IN_BDS_REPORT --- app/Models/PolicyTransactionModel.php | 15 +++++++++++++++ app/Views/report_bds.php | 10 +++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php index c975462a..74df001c 100644 --- a/app/Models/PolicyTransactionModel.php +++ b/app/Models/PolicyTransactionModel.php @@ -2540,6 +2540,9 @@ pt.ref, pt.data_received_date, + pt.endorse_eff_date, + pt.policy_start_date, + pt.policy_end_date, pt.renewal_date, pt.installment, nhance_branch.branch_name as nhance_branch, @@ -2699,6 +2702,9 @@ pt.ref, pt.data_received_date, + pt.endorse_eff_date, + pt.policy_start_date, + pt.policy_end_date, pt.renewal_date, pt.installment, nhance_branch.branch_name as nhance_branch, @@ -3143,6 +3149,9 @@ pt.ref, pt.data_received_date, + pt.endorse_eff_date, + pt.policy_start_date, + pt.policy_end_date, pt.renewal_date, pt.installment, nhance_branch.branch_name as nhance_branch, @@ -3303,6 +3312,9 @@ pt.ref, pt.data_received_date, + pt.endorse_eff_date, + pt.policy_start_date, + pt.policy_end_date, pt.renewal_date, pt.installment, nhance_branch.branch_name as nhance_branch, @@ -3490,6 +3502,9 @@ pt.ref, pt.data_received_date, + pt.endorse_eff_date, + pt.policy_start_date, + pt.policy_end_date, pt.renewal_date, pt.installment, nhance_branch.branch_name as nhance_branch, diff --git a/app/Views/report_bds.php b/app/Views/report_bds.php index 40283cfa..7fd21f82 100644 --- a/app/Views/report_bds.php +++ b/app/Views/report_bds.php @@ -184,9 +184,9 @@ table.dataTable tbody td { - - - + + + @@ -241,8 +241,8 @@ table.dataTable tbody td { - - + + From b1222d1291c3bcb672c97e83d828f0fee4830274 Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Mon, 2 Feb 2026 17:44:25 +0530 Subject: [PATCH 9/9] FIX_InsurerMasterAdditAlerts --- app/Controllers/MasterController.php | 29 +++++++++---- app/Views/insurer_basic_info.php | 65 +++++++++++++++++++++++----- 2 files changed, 73 insertions(+), 21 deletions(-) diff --git a/app/Controllers/MasterController.php b/app/Controllers/MasterController.php index dc6538d4..7017dd07 100755 --- a/app/Controllers/MasterController.php +++ b/app/Controllers/MasterController.php @@ -497,6 +497,9 @@ class MasterController extends AdminController { $this->myLogger->logme('error','Edit Insurer general info function called'); + $postData = $this->request->getPost(); + $logoFile = $this->request->getFile('insurer_logo'); + $rules = [ 'name' => [ 'rules' => 'required', @@ -513,22 +516,30 @@ class MasterController extends AdminController ] ], 'insurer_logo' => [ - 'rules' => 'if_exist|is_image[insurer_logo]|max_size[insurer_logo,200]|ext_in[insurer_logo,jpg,jpeg,png]', + 'rules' => 'permit_empty|is_image[insurer_logo]|max_size[insurer_logo,200]|ext_in[insurer_logo,jpg,jpeg,png]', 'errors' => [ 'is_image' => 'The uploaded file must be an image', 'max_size' => 'File size should not exceed 200 KB', - 'ext_in' => 'Allowed file types: jpg, jpeg, png', + 'ext_in' => 'Only JPG, JPEG, and PNG files are allowed.', ] ], ]; - if (!$this->validate($rules)) { - return $this->response->setStatusCode(400)->setJSON([ - 'status' => false, - 'message' => 'Input validation failed', - 'code' => 400, - 'errors' => $this->validator->getErrors() - ]); + if (!$this->validateData($postData, $rules)) { + $errors = $this->validator->getErrors(); + + $mainMessage = 'Input validation failed'; + + if (isset($errors['insurer_logo']) && (strpos($errors['insurer_logo'], 'Security') !== false || strpos($errors['insurer_logo'], 'Forbidden') !== false)) { + $mainMessage = 'File upload rejected: Security policy violation.'; + } + + return $this->response->setStatusCode(400)->setJSON([ + 'status' => false, + 'message' => $mainMessage, // This will change based on the error + 'code' => 400, + 'errors' => $this->validator->getErrors() + ]); } $uploadFilePath = ROOTPATH . 'public/uploads/logo/'; diff --git a/app/Views/insurer_basic_info.php b/app/Views/insurer_basic_info.php index aadc43d3..f553b093 100755 --- a/app/Views/insurer_basic_info.php +++ b/app/Views/insurer_basic_info.php @@ -70,7 +70,7 @@ input:checked + .slider:before {
- + @@ -191,18 +191,29 @@ input:checked + .slider:before {