From eb3d58c69a12286c52cb2f6a5ec735441c63e2d5 Mon Sep 17 00:00:00 2001 From: Venkatesh Date: Tue, 19 May 2026 17:50:04 +0530 Subject: [PATCH] FIX_LIVE_ISSUE --- app/Controllers/ApiServiceController.php | 53 ++++--- app/Controllers/TicketServiceController.php | 1 + app/Models/ClaimFilesModel.php | 14 ++ app/Models/TicketMasterModel.php | 19 ++- app/Views/leads_form.php | 57 ++++++- app/Views/ticket_edit_onbording.php | 19 ++- app/Views/ticket_form_gmc.php | 145 ++++++++++++++---- .../assets/js/pages/leads_form_validation.js | 124 ++++++++++++++- 8 files changed, 371 insertions(+), 61 deletions(-) diff --git a/app/Controllers/ApiServiceController.php b/app/Controllers/ApiServiceController.php index b69fe231..18eac66a 100644 --- a/app/Controllers/ApiServiceController.php +++ b/app/Controllers/ApiServiceController.php @@ -15,6 +15,7 @@ use App\Controllers\MediAssistApiController; use App\Controllers\FhplApiController; use App\Controllers\VoloApiController; use App\Models\BatchFileModel; +use App\Models\ClaimFilesModel; use App\Models\FileModel; use App\Helpers\TPADataCompareHelper; use App\Helpers\TPADataCompareHelper2; @@ -25,6 +26,7 @@ class ApiServiceController extends BaseController // protected $format = 'json'; protected $db; protected $employeePolicyModel; + protected $claimFilesModel; protected $medi_assist_primary_key; protected $vidal_primary_key; protected $icici_primary_key; @@ -36,6 +38,7 @@ class ApiServiceController extends BaseController { $this->db = \Config\Database::connect(); $this->employeePolicyModel = new EmployeePolicyModel(); + $this->claimFilesModel = new ClaimFilesModel(); $this->medi_assist_primary_key = getenv('MEDI_ASSIST_PRIMARY_KEY_CONSTANT'); $this->vidal_primary_key = getenv('VIDAL_PRIMARY_KEY_CONSTANT'); $this->icici_primary_key = getenv('ICICI_PRIMARY_KEY_CONSTANT'); @@ -177,26 +180,20 @@ class ApiServiceController extends BaseController $voloApiController = new VoloApiController(); $data['eCardDownload'] = $voloApiController->EcardRequest( $emp_code, $policy_no , $employee_policy[0]['tpa_id'] ); - }else{ - - if($type == "download"){ - // direct download - $data['eCardDownload'] = base_url('download-e-card/') . $employee_policy[0]['rand_string'].'/1'; - }else{ - if(isset($all_member) && !empty($all_member)){ - // view and download all members - $data['eCardDownload'] = base_url('download-e-card/') . $employee_policy[0]['rand_string'].'/1/1'; - }else{ - // view and download single member - $data['eCardDownload'] = base_url('download-e-card/') . $employee_policy[0]['rand_string'].'/0/1'; - } - } } - $data['message'] = "E-card generated"; - if(empty($data['eCardDownload'])){ - $data['message'] = "E-card not generated"; - } + if (empty($data['eCardDownload'])) { + $data['eCardDownload'] = $this->buildDefaultEcardDownloadUrl( + $employee_policy[0]['rand_string'], + $type, + $all_member ?? null + ); + } + + $data['message'] = "E-card generated"; + if(empty($data['eCardDownload'])){ + $data['message'] = "E-card not generated"; + } } else { $data['eCardDownload'] = null; @@ -220,6 +217,19 @@ class ApiServiceController extends BaseController } } + private function buildDefaultEcardDownloadUrl(string $randString, string $type = 'download', $allMember = null): string + { + if ($type === 'download') { + return base_url('download-e-card/') . $randString . '/1'; + } + + if (!empty($allMember)) { + return base_url('download-e-card/') . $randString . '/1/1'; + } + + return base_url('download-e-card/') . $randString . '/0/1'; + } + // Get TPAID public function getTPAID() { @@ -583,6 +593,13 @@ class ApiServiceController extends BaseController ]); } + if (! $this->claimFilesModel->hasPdfFileForTicket($claimId)) { + return $this->response->setJSON([ + 'status' => false, + 'message' => 'No PDF file found for this claim' + ]); + } + $result = $this->pushClaims($claimId); if ($result !== null && is_array($result)) { diff --git a/app/Controllers/TicketServiceController.php b/app/Controllers/TicketServiceController.php index 24e5e463..ffa6f154 100644 --- a/app/Controllers/TicketServiceController.php +++ b/app/Controllers/TicketServiceController.php @@ -1297,6 +1297,7 @@ class TicketServiceController extends AdminController } else { //check the employee and insured + $params['is_from'] = 'claim_dump'; $employee_data = $ticketMasterModal->getEmployeeAndEmployeePolicyDetails($params) ?? []; // dd($employee_data); if (count($employee_data) == 0) { diff --git a/app/Models/ClaimFilesModel.php b/app/Models/ClaimFilesModel.php index 055b9b3b..66bd25ed 100644 --- a/app/Models/ClaimFilesModel.php +++ b/app/Models/ClaimFilesModel.php @@ -59,4 +59,18 @@ class ClaimFilesModel extends Model return $data; } + + /** + * Whether the claim (ticket) has at least one active PDF in claim_files. + */ + public function hasPdfFileForTicket($ticketId): bool + { + return $this->where('ticket_id', $ticketId) + ->where('is_active', 1) + ->groupStart() + ->where('mime_type', 'pdf') + ->orWhere('mime_type', 'application/pdf') + ->groupEnd() + ->countAllResults(false) > 0; + } } diff --git a/app/Models/TicketMasterModel.php b/app/Models/TicketMasterModel.php index 8a6128ca..f6ea661d 100644 --- a/app/Models/TicketMasterModel.php +++ b/app/Models/TicketMasterModel.php @@ -1118,12 +1118,23 @@ class TicketMasterModel extends Model $policy_no = $params['policy_no'] ?? null; $relationship = $params['relationship'] ?? null; $insured_name = $params['insured_name'] ?? null; + $is_from = $params['is_from'] ?? null; // $client_name = "6-Eleven"; // $emp_code = "EMP0020K12"; // $emp_name = "Lokesh"; // $policy_no = "GMC-1999/2000/2021/2022"; + $base_policy_id = null; + if($is_from == "claim_dump"){ + $client_policy_data = $this->db->table('client_policy')->where('policy_no', trim($policy_no))->where('is_active', 1)->get()->getRowArray(); + if(isset($client_policy_data) && !empty($client_policy_data)){ + if(!empty($client_policy_data['base_policy'])) { + $base_policy_id = $client_policy_data['base_policy']; + } + } + } + $builder = $this->db->table('employees e'); $builder->select(" e.id as emp_id, @@ -1161,7 +1172,13 @@ class TicketMasterModel extends Model $builder->where('e.emp_code', trim($emp_code)); $builder->where('e.name', trim($emp_name)); $builder->where('c.client_name', trim($client_name)); - $builder->where('cp.policy_no', trim($policy_no)); + + if(!empty($base_policy_id)) { + $builder->where('cp.id', trim($base_policy_id)); + } else { + $builder->where('cp.policy_no', trim($policy_no)); + } + $builder->where('LOWER(e.relationship)', strtolower('self')); $query = $builder->get(); diff --git a/app/Views/leads_form.php b/app/Views/leads_form.php index 36d930c8..b352748f 100644 --- a/app/Views/leads_form.php +++ b/app/Views/leads_form.php @@ -163,7 +163,8 @@ -->
+ enctype="multipart/form-data" + data-parsley-excluded="input[type=button], input[type=submit], input[type=reset], input[type=hidden], [disabled], :hidden, .select2-search__field"> @@ -487,7 +488,7 @@ function restoreActualLeadGstNumber() { if ($('#actual_lead_id').val() && $('#actual_lead_id').val() != 0 && actualLeadGstNumber) { - $('#gst').val(actualLeadGstNumber); + $('#gst').val(String(actualLeadGstNumber).trim().toUpperCase()); } } @@ -1774,15 +1775,51 @@ event.preventDefault(); + if (typeof window.prepareLeadsFormForSubmit === 'function') { + window.prepareLeadsFormForSubmit(); + } + var isValid = $('#leads_form_id').parsley().validate(); if (!isValid) { - $('#leads_form_id').find('input, select, textarea').each(function() { - if ($(this).parsley().isValid() === false && !$(this).val()) { - console.log('Empty field ID:', this.id); + var invalidFields = typeof window.getLeadsFormInvalidFields === 'function' + ? window.getLeadsFormInvalidFields() + : []; + + if (invalidFields.length) { + console.table(invalidFields); + invalidFields.forEach(function(f) { + console.log('Invalid field:', f.label || f.name || f.id, f); + }); + + var firstInvalid = invalidFields[0]; + var fieldLabel = firstInvalid.label || firstInvalid.name || firstInvalid.id || 'A required field'; + var fieldMessage = (firstInvalid.messages && firstInvalid.messages.length) + ? firstInvalid.messages[0] + : (firstInvalid.isEmpty ? 'This field is required.' : 'Please check this field.'); + + if (typeof toastr !== 'undefined') { + toastr.warning(fieldLabel + ': ' + fieldMessage, 'Validation'); } - }); - console.log('Form is Empty', 'Warning'); + + if (firstInvalid.id) { + var $invalidField = $('#' + firstInvalid.id); + if ($invalidField.length) { + var scrollTarget = $invalidField.closest('.form-group, .card, .dynamic-form-row'); + if (scrollTarget.length) { + $('html, body').animate({ + scrollTop: scrollTarget.offset().top - 100 + }, 300); + } + $invalidField.focus(); + } + } + } else { + console.warn('Form validation failed'); + if (typeof toastr !== 'undefined') { + toastr.warning('Please correct the highlighted fields.', 'Validation'); + } + } return; } @@ -2564,6 +2601,10 @@ toggleRequiredFields(); restoreActualLeadGstNumber(); restoreActualLeadContactDetails(); + + if (typeof window.refreshLeadsFormValidation === 'function') { + window.refreshLeadsFormValidation(); + } } function toggleRequiredFields() { @@ -2694,7 +2735,7 @@ actualLeadClientName = actual_lead_client_details.company_name || ''; $('#client_name').val(actualLeadClientName); - actualLeadGstNumber = actual_lead_client_details.gst_number || actual_lead_client_details.gst || ''; + actualLeadGstNumber = (actual_lead_client_details.gst_number || actual_lead_client_details.gst || '').toString().trim().toUpperCase(); $('#gst').val(actualLeadGstNumber); if (actual_lead_client_details.client_type !== undefined && actual_lead_client_details.client_type !== null && actual_lead_client_details.client_type !== '') { $('#client_type').val(String(actual_lead_client_details.client_type)); diff --git a/app/Views/ticket_edit_onbording.php b/app/Views/ticket_edit_onbording.php index 857a2796..d3fe5dea 100644 --- a/app/Views/ticket_edit_onbording.php +++ b/app/Views/ticket_edit_onbording.php @@ -39,12 +39,25 @@
+ Manual TPA Claim Push'; + } + if (!empty($ticket_data['tpa_claim_push_reference_no'])) { + $tpaActionButtons .= ' Fetch Claim Status'; + } + ?> - +