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..."); } }