diff --git a/app/Config/Routes.php b/app/Config/Routes.php index ce3721db..6f3b70ca 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -976,6 +976,11 @@ $routes->group('sales', function($routes) { // Delete note $routes->delete('notes/(:num)', 'SalesController::deleteNote/$1'); + + + //Dashboard + $routes->get('branchLevelDashboard', 'SalesController::branchLevelDashboard'); + $routes->get('salesManagerLevelDashboard', 'SalesController::salesManagerLevelDashboard'); }); diff --git a/app/Controllers/FhplApiController.php b/app/Controllers/FhplApiController.php index f2ac8b17..83786a81 100644 --- a/app/Controllers/FhplApiController.php +++ b/app/Controllers/FhplApiController.php @@ -98,7 +98,7 @@ class FhplApiController extends BaseController if (count($data) && $data['filePath'] == null) { - log_message('error', "TPA CLAIM PUSH FAILED FHPL | claimId: '.$claimId.' - Claim or File Missing"); + log_message('error', "FHPL - Claim Push FAILED | claimId: '.$claimId.' - Claim or File Missing"); return; } @@ -107,7 +107,7 @@ class FhplApiController extends BaseController $pdfPath = WRITEPATH . 'uploads/claim_files/' . $filename; if (!file_exists($pdfPath)) { - log_message('error', "TPA CLAIM PUSH FAILED FHPL | claimId: '.$claimId.' - PDF not found on server"); + log_message('error', "FHPL - Claim Push FAILED | claimId: '.$claimId.' - PDF not found on server"); return; } @@ -117,7 +117,7 @@ class FhplApiController extends BaseController // Generate FHPL Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['access_token'])) { - log_message('error', "TPA CLAIM PUSH FAILED FHPL | claimId: '.$claimId.' - FHPL Token generation failed"); + log_message('error', "FHPL - Claim Push FAILED | claimId: '.$claimId.' - FHPL Token generation failed"); return; } $token = $tokenResponse['data']['access_token']; @@ -152,14 +152,14 @@ class FhplApiController extends BaseController "Content-Type: application/json" ]; - log_message('error', 'TPA CLAIM PUSH FHPL | claimId: '.$claimId.' | payload: '.json_encode($body)); + log_message('error', 'FHPL - Claim Push | claimId: '.$claimId.' | payload: '.json_encode($body)); $response = call_third_party_api($url, 'POST', $headers, $body); - log_message('error', 'TPA CLAIM PUSH FHPL RESPONSE | ' . json_encode($response)); + log_message('error', 'FHPL - Claim Push RESPONSE | ' . json_encode($response)); if($response['status'] != true){ - log_message('error', 'TPA CLAIM PUSH FAILED FHPL | claimId: '.$claimId.' | response: '.json_encode($response)); + log_message('error', 'FHPL - Claim Push FAILED | claimId: '.$claimId.' | response: '.json_encode($response)); $this->db->table('ticket_master') ->where('id',$claimId) ->update([ 'tpa_push_response' => json_encode($response) ]); @@ -184,10 +184,10 @@ class FhplApiController extends BaseController 'updated_at' => date('Y-m-d H:i:s') ]); - log_message('error', 'TPA CLAIM PUSH SUCCESS FHPL | claimId: '.$claimId.' | claimNO: '.$fhplClaimNo); + log_message('error', 'FHPL - Claim Push SUCCESS | claimId: '.$claimId.' | claimNO: '.$fhplClaimNo); }else { - log_message('error', 'TPA CLAIM PUSH API SUCCESS BUT claimsInfo EMPTY | response: '.json_encode($response)); + log_message('error', 'FHPL - Claim Push API SUCCESS BUT claimsInfo EMPTY | response: '.json_encode($response)); return; } } @@ -235,21 +235,18 @@ class FhplApiController extends BaseController // dd($response); if (empty($response['data'][0])) { - log_message('error', 'CLAIM STATUS FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); + log_message('error', 'FHPL - Claim status FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); return ['status' => false,'message' => 'API call failed.','data' => $response ]; } + // Extract claim status + $claimData = $response['data'][0]; + $tpa_claim_no = $claimData['CLAIM_ID'] ?? ''; + $currentStatus = $claimData['CLAIM_STATUS'] ?? ''; + $tpa_claim_type = $claimData['CLAIM_TYPE'] ?? ''; + $tpa_ailments = $claimData['AILMENT'] ?? ''; - $status = null; - - // find this claim - foreach($response['data'] as $row){ - if($row['CLAIM_ID']==$ticket['claimNo']){ - $status = $row['CLAIM_STATUS']; - } - } - - $map = [ + $validStatuses = [ "In-Progress" => 5, "Under Process" => 5, "Query" => 4, @@ -259,14 +256,28 @@ class FhplApiController extends BaseController "Required Information" => 4, ]; - if( $status != null && isset($map[$status])) - { - $this->db->table('ticket_master')->where('id',$claimId)->update(['claim_status_id'=>$map[$status],'tpa_claim_status'=>$status]); - log_message('error', "CLAIM STATUS SUCCESS | Updated ticket ID $claimId with claim status: $status"); + $updateArray = [ + 'tpa_claim_status' => $currentStatus, + 'updated_at' => date('Y-m-d H:i:s'), + ]; + if (isset($validStatuses[$currentStatus])) { + $updateArray['claim_status_id'] = $validStatuses[$currentStatus]; } + if (!empty($tpa_claim_type)) { + $updateArray['tpa_claim_type'] = $tpa_claim_type; + } + if (!empty($tpa_ailments)) { + $updateArray['tpa_ailments'] = $tpa_ailments; + } + - return ['status' => true,'message' => 'Claim status updated.','updated_status' => $status,'api_response' => $response]; + $this->db->table('ticket_master')->where('id',$claimId)->update($updateArray); + log_message('error', "FHPL - Claim status SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); + + + + return ['status' => true,'message' => 'Claim status updated.','updated_status' => $currentStatus,'api_response' => $response]; } @@ -297,7 +308,7 @@ class FhplApiController extends BaseController // Generate FHPL Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['access_token'])) { - log_message('error', 'Ecard Request FAILED | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | Message: FHPL Token generation failed'); + log_message('error', 'FHPL - Ecard Request FAILED | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | Message: FHPL Token generation failed'); return null; } $token = $tokenResponse['data']['access_token']; @@ -317,12 +328,12 @@ class FhplApiController extends BaseController // dd($response); if (($response['status'] ?? false) !== true) { - log_message('error', 'Ecard Request FAILED | response: ' . json_encode($response)); + log_message('error', 'FHPL - Ecard Request FAILED | response: ' . json_encode($response)); return null; } if (empty($response['data'][0])) { - log_message('error', 'Ecard Request FAILED | Empty data | response: ' . json_encode($response)); + log_message('error', 'FHPL - Ecard Request FAILED | Empty data | response: ' . json_encode($response)); return null; } @@ -334,8 +345,8 @@ class FhplApiController extends BaseController if (!empty($ecardUrl)) { log_message( - 'info', - 'Ecard Request PUSH SUCCESS | employeeId: ' . $employeeId . + 'error', + 'FHPL - Ecard Request PUSH SUCCESS | employeeId: ' . $employeeId . ' | policyNo: ' . $policyNo . ' | ecardUrl: ' . $ecardUrl ); @@ -343,7 +354,7 @@ class FhplApiController extends BaseController } } - log_message('error', 'Ecard Request FAILED | response: ' . json_encode($response)); + log_message('error', 'FHPL - Ecard Request FAILED | response: ' . json_encode($response)); return null; } @@ -360,7 +371,7 @@ class FhplApiController extends BaseController $client_policy_id = $requestData['client_policy_id'] ?? null; if (empty($policyNo)) { - log_message('error', 'TPA ID PULL | policy_no missing in request'); + log_message('error', 'FHPL - TPA ID Pull | policy_no missing in request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'policy_no required']; }else{ @@ -369,7 +380,7 @@ class FhplApiController extends BaseController } if (empty($client_policy_id)) { - log_message('error', 'TPA ID PULL | client_policy_id missing in request'); + log_message('error', 'FHPL - TPA ID Pull | client_policy_id missing in request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'client_policy_id required']; }else{ @@ -377,7 +388,7 @@ class FhplApiController extends BaseController } } - log_message('error', "TPA ID PULL | called for policy_no: {$policyNo} , client_policy_id: {$client_policy_id}"); + log_message('error', "FHPL - TPA ID Pull | called for policy_no: {$policyNo} , client_policy_id: {$client_policy_id}"); // Fetch file download dates $batchFiles = $this->db->table('batch_files f') @@ -389,7 +400,7 @@ class FhplApiController extends BaseController ->getResultArray(); if (empty($batchFiles)) { - log_message('error', 'TPA ID PULL FAILED | batchFiles is empty for this tpa id pull request'); + log_message('error', 'FHPL - TPA ID Pull FAILED | batchFiles is empty for this tpa id pull request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'batchFiles not found']; }else{ @@ -400,7 +411,7 @@ class FhplApiController extends BaseController // Generate FHPL Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['access_token'])) { - log_message('error', 'TPA ID PULL | FHPL Token generation failed'); + log_message('error', 'FHPL - TPA ID Pull | FHPL Token generation failed'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'FHPL Token generation failed']; }else{ @@ -430,12 +441,12 @@ class FhplApiController extends BaseController "Range" => $range ]; - log_message('error', "TPA ID PULL | API parems " . json_encode([$url, 'POST', $headers, $body])); + log_message('error', "FHPL - TPA ID Pull | API parems " . json_encode([$url, 'POST', $headers, $body])); $response = call_third_party_api($url, 'POST', $headers, $body); if (($response['status'] ?? false) !== true) { - log_message('error', 'FHPL API FAILED | response: ' . json_encode($response)); + log_message('error', 'FHPL - TPA ID Pull API FAILED | response: ' . json_encode($response)); break; } @@ -467,7 +478,7 @@ class FhplApiController extends BaseController log_message('error', "Failed to update file table status."); } - log_message('error', 'TPA ID PULL API FAILED | API failed: Empty menber data for this pull request'); + log_message('error', 'FHPL - TPA ID Pull API FAILED | API failed: Empty menber data for this pull request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'API call failed', 'data' => 'Empty menber data for this pull request']; @@ -524,9 +535,9 @@ class FhplApiController extends BaseController if ($this->db->affectedRows() > 0) { $updated++; - log_message('error', "✅ Updated tpa_id={$m['TPA_TPADETAIL_ID']} for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); + log_message('error', "FHPL - TPA ID Pull Updated tpa_id={$m['TPA_TPADETAIL_ID']} for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); } else { - log_message('error', "⚠️ No update (already set or not matched) for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); + log_message('error', "FHPL - TPA ID Pull No update (already set or not matched) for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); } } } @@ -546,7 +557,7 @@ class FhplApiController extends BaseController log_message( 'error', - "❌ No match for Nhance = " . json_encode($nhanceSideData) + "FHPL - TPA ID Pull No match for Nhance = " . json_encode($nhanceSideData) ); } @@ -568,7 +579,7 @@ class FhplApiController extends BaseController $totalCount = count($allMembers); - log_message('error', "TPA ID PULL SUCCESS | completed. Total fetched={$totalCount}, updated={$updated}"); + log_message('error', "FHPL - TPA ID Pull SUCCESS | completed. Total fetched={$totalCount}, updated={$updated}"); if($function_calling_type == "job"){ return [ @@ -742,6 +753,7 @@ class FhplApiController extends BaseController $response = call_third_party_api($url,'POST',$headers,$body); if(!empty($response['data'])){ + log_message('error', 'FHPL - Sync TPA Claims | Exception thrown while calling GetTPA_ClaimsDetails API: ' . json_encode($errorData)); $finalResult = array_merge($finalResult,$response['data']); } } diff --git a/app/Controllers/HealthIndiaApiController.php b/app/Controllers/HealthIndiaApiController.php index f10801fb..dd74378f 100644 --- a/app/Controllers/HealthIndiaApiController.php +++ b/app/Controllers/HealthIndiaApiController.php @@ -83,7 +83,7 @@ class HealthIndiaApiController extends BaseController { helper('api'); - log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA | Started for claimId: ' . $claimId); + log_message('error', 'HEALTH_INDIA - Claim Push | Started for claimId: ' . $claimId); $data = $this->db->table('ticket_master tm') ->select(' @@ -117,12 +117,12 @@ class HealthIndiaApiController extends BaseController // dd($data); if (!$data) { - log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - Claim not found"); + log_message('error', "HEALTH_INDIA - Claim Push FAILED | claimId: {$claimId} - Claim not found"); return; } if ($data['filePath'] == null) { - log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - File Missing"); + log_message('error', "HEALTH_INDIA - Claim Push FAILED | claimId: {$claimId} - File Missing"); return; } @@ -131,7 +131,7 @@ class HealthIndiaApiController extends BaseController $pdfPath = WRITEPATH . 'uploads/claim_files/' . $filename; if (!file_exists($pdfPath)) { - log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - PDF not found on server at path: {$pdfPath}"); + log_message('error', "HEALTH_INDIA - Claim Push FAILED | claimId: {$claimId} - PDF not found on server at path: {$pdfPath}"); return; } @@ -141,7 +141,7 @@ class HealthIndiaApiController extends BaseController // Generate Health India Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['result'][0]['access_token'])) { - log_message('error', "TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: {$claimId} - Token generation failed"); + log_message('error', "HEALTH_INDIA - Claim Push FAILED | claimId: {$claimId} - Token generation failed"); return; } $token = $tokenResponse['data']['result'][0]['access_token']; @@ -201,16 +201,14 @@ class HealthIndiaApiController extends BaseController "Content-Type: application/json" ]; - log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA | claimId: ' . $claimId . ' | URL: ' . $url ); + log_message('error', 'HEALTH_INDIA - Claim Push | claimId: ' . $claimId . ' | URL: ' . $url ); $response = call_third_party_api($url, 'POST', $headers, $body); // dd($response); - log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA RESPONSE | claimId: ' . $claimId . ' | response: ' . json_encode($response)); - if ($response['status'] != true) { - log_message('error', 'TPA CLAIM PUSH FAILED HEALTH_INDIA | claimId: ' . $claimId . ' | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Claim Push FAILED | claimId: ' . $claimId . ' | response: ' . json_encode($response)); $this->db->table('ticket_master') ->where('id', $claimId) ->update(['tpa_push_response' => json_encode($response)]); @@ -230,9 +228,9 @@ class HealthIndiaApiController extends BaseController 'updated_at' => date('Y-m-d H:i:s') ]); - log_message('error', 'TPA CLAIM PUSH SUCCESS HEALTH_INDIA | claimId: ' . $claimId . ' | CCN: ' . $ccn . ' | CCN_EXT: ' . $ccnExt); + log_message('error', 'HEALTH_INDIA - Claim Push SUCCESS | claimId: ' . $claimId . ' | CCN: ' . $ccn . ' | CCN_EXT: ' . $ccnExt); } else { - log_message('error', 'TPA CLAIM PUSH HEALTH_INDIA API SUCCESS BUT CCN EMPTY | claimId: ' . $claimId . ' | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Claim Push API SUCCESS BUT CCN EMPTY | claimId: ' . $claimId . ' | response: ' . json_encode($response)); return; } @@ -243,7 +241,7 @@ class HealthIndiaApiController extends BaseController { helper('api'); - log_message('error', 'CLAIM STATUS HEALTH_INDIA | Started for claimId: ' . $claimId); + log_message('error', 'HEALTH_INDIA - Claim Status | Started for claimId: ' . $claimId); $ticket = $this->db->table('ticket_master tm') ->select("tm.id, tm.tpa_claim_id as ccn, cp.policy_no, cp.policy_start_date, cp.policy_end_date, tm.emp_code") @@ -252,7 +250,7 @@ class HealthIndiaApiController extends BaseController ->get()->getRowArray(); if (!$ticket) { - log_message('error', 'CLAIM STATUS FAILED HEALTH_INDIA | claimId: ' . $claimId . ' - Invalid claim'); + log_message('error', 'HEALTH_INDIA - Claim Status FAILED | claimId: ' . $claimId . ' - Invalid claim'); return ['status' => false, 'message' => 'Invalid claim']; } @@ -260,7 +258,7 @@ class HealthIndiaApiController extends BaseController $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['result'][0]['access_token'])) { - log_message('error', 'CLAIM STATUS FAILED HEALTH_INDIA | claimId: ' . $claimId . ' - Token generation failed'); + log_message('error', 'HEALTH_INDIA - Claim Status FAILED | claimId: ' . $claimId . ' - Token generation failed'); return ['status' => false, 'message' => 'Token generation failed']; } @@ -280,49 +278,59 @@ class HealthIndiaApiController extends BaseController "Content-Type: application/json" ]; - log_message('error', 'CLAIM STATUS HEALTH_INDIA | claimId: ' . $claimId . ' | Request: ' . json_encode($body)); + log_message('error', 'HEALTH_INDIA - Claim Status | claimId: ' . $claimId . ' | Request: ' . json_encode($body)); $response = call_third_party_api($url, 'POST', $headers, $body); // dd($response); - log_message('error', 'CLAIM STATUS HEALTH_INDIA | claimId: ' . $claimId . ' | Response: ' . json_encode($response)); - if (empty($response['data']['result'][0])) { - log_message('error', 'CLAIM STATUS FAILED HEALTH_INDIA | claimId: ' . $claimId . ' | Empty response data'); + log_message('error', 'HEALTH_INDIA - Claim Status FAILED | claimId: ' . $claimId . ' | Empty response data'); return ['status' => false, 'message' => 'API call failed.', 'data' => $response]; } + // Extract claim status $claimData = $response['data']['result'][0]; - $status = $claimData['claiM_STATUS'] ?? null; + $tpa_claim_no = $claimData['tpA_CLAIM_NO'] ?? ''; + $currentStatus = $claimData['claiM_STATUS'] ?? ''; + $tpa_claim_type = $claimData['typE_OF_CLAIM'] ?? ''; + $tpa_ailments = $claimData['ailment'] ?? ''; - // Status mapping based on API documentation - $map = [ + $validStatuses = [ + "In-Progress" => 5, "Under Process" => 5, - "Pending for Bill Entry" => 5, "Query" => 4, "Paid" => 11, "Rejected" => 8, "Approved" => 8, - "Outstanding" => 5, + "Required Information" => 4, + "Intimated and File NOT received" => 4, ]; - if ($status != null && isset($map[$status])) { - $this->db->table('ticket_master') - ->where('id', $claimId) - ->update([ - 'claim_status_id' => $map[$status], - 'tpa_claim_status' => $status - ]); - log_message('error', "CLAIM STATUS SUCCESS HEALTH_INDIA | Updated claimId: {$claimId} with status: {$status}"); - } else { - log_message('error', "CLAIM STATUS HEALTH_INDIA | claimId: {$claimId} | Unknown status: {$status}"); + $updateArray = [ + 'tpa_claim_status' => $currentStatus, + 'updated_at' => date('Y-m-d H:i:s'), + ]; + if (isset($validStatuses[$currentStatus])) { + $updateArray['claim_status_id'] = $validStatuses[$currentStatus]; } + if (!empty($tpa_claim_type)) { + $updateArray['tpa_claim_type'] = $tpa_claim_type; + } + if (!empty($tpa_ailments)) { + $updateArray['tpa_ailments'] = $tpa_ailments; + } + + + + $this->db->table('ticket_master')->where('id',$claimId)->update($updateArray); + + log_message('error', "HEALTH_INDIA - Claim Status SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); return [ 'status' => true, 'message' => 'Claim status updated.', - 'updated_status' => $status, + 'updated_status' => $currentStatus, 'api_response' => $response ]; } @@ -331,7 +339,7 @@ class HealthIndiaApiController extends BaseController { helper('api'); - log_message('error', 'CLAIM STATUS UPDATE BULK HEALTH_INDIA | Started'); + log_message('error', 'HEALTH_INDIA - Claim Status UPDATE BULK | Started'); $tickets = $this->db->table('ticket_master tm') ->select("tm.id, tm.tpa_claim_id, cp.policy_no") @@ -347,7 +355,7 @@ class HealthIndiaApiController extends BaseController $count++; } - log_message('error', 'CLAIM STATUS UPDATE BULK HEALTH_INDIA | Completed | Updated: ' . $count); + log_message('error', 'HEALTH_INDIA - Claim Status UPDATE BULK | Completed | Updated: ' . $count); return $this->response->setJSON(['status' => true, 'updated' => $count]); } @@ -356,12 +364,12 @@ class HealthIndiaApiController extends BaseController { helper('api'); - log_message('error', "ECARD REQUEST HEALTH_INDIA | Started | employeeId: {$employeeId} | policyNo: {$policyNo} | memberId: {$memberId}"); + log_message('error', "HEALTH_INDIA - Ecard Request | Started | employeeId: {$employeeId} | policyNo: {$policyNo} | memberId: {$memberId}"); // Generate Health India Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['result'][0]['access_token'])) { - log_message('error', "ECARD REQUEST FAILED HEALTH_INDIA | employeeId: {$employeeId} | policyNo: {$policyNo} | Message: Token generation failed"); + log_message('error', "HEALTH_INDIA - Ecard Request | employeeId: {$employeeId} | policyNo: {$policyNo} | Message: Token generation failed"); return null; } $token = $tokenResponse['data']['result'][0]['access_token']; @@ -380,19 +388,19 @@ class HealthIndiaApiController extends BaseController "Content-Type: application/json" ]; - log_message('error', 'ECARD REQUEST HEALTH_INDIA | Request: ' . json_encode($body)); + log_message('error', 'HEALTH_INDIA - Ecard Request | Request: ' . json_encode($body)); $response = call_third_party_api($url, 'POST', $headers, $body); - log_message('error', 'ECARD REQUEST HEALTH_INDIA | Response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Ecard Request | Response: ' . json_encode($response)); if (($response['status'] ?? false) !== true) { - log_message('error', 'ECARD REQUEST FAILED HEALTH_INDIA | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Ecard Request | response: ' . json_encode($response)); return null; } if (empty($response['data']['result'][0])) { - log_message('error', 'ECARD REQUEST FAILED HEALTH_INDIA | Empty data | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Ecard Request | Empty data | response: ' . json_encode($response)); return null; } @@ -402,12 +410,12 @@ class HealthIndiaApiController extends BaseController $ecardUrl = $apiData['membeR_ECARD'] ?? ''; if (!empty($ecardUrl)) { - log_message('error', "ECARD REQUEST SUCCESS HEALTH_INDIA | employeeId: {$employeeId} | policyNo: {$policyNo} | memberId: {$memberId} | ecardUrl: {$ecardUrl}"); + log_message('error', "HEALTH_INDIA - Ecard Request | employeeId: {$employeeId} | policyNo: {$policyNo} | memberId: {$memberId} | ecardUrl: {$ecardUrl}"); return $ecardUrl; } } - log_message('error', 'ECARD REQUEST FAILED HEALTH_INDIA | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - Ecard Request | response: ' . json_encode($response)); return null; } @@ -424,7 +432,7 @@ class HealthIndiaApiController extends BaseController if (empty($policyNo)) { - log_message('error', 'TPA ID PULL HEALTH_INDIA | policy_no missing in request'); + log_message('error', 'HEALTH_INDIA - TPA ID Pull | policy_no missing in request'); if ($function_calling_type == "job") { return ['status' => false, 'message' => 'policy_no required']; } else { @@ -433,7 +441,7 @@ class HealthIndiaApiController extends BaseController } if (empty($client_policy_id)) { - log_message('error', 'TPA ID PULL HEALTH_INDIA | client_policy_id missing in request'); + log_message('error', 'HEALTH_INDIA - TPA ID Pull | client_policy_id missing in request'); if ($function_calling_type == "job") { return ['status' => false, 'message' => 'client_policy_id required']; } else { @@ -441,7 +449,7 @@ class HealthIndiaApiController extends BaseController } } - log_message('error', "TPA ID PULL HEALTH_INDIA | called for policy_no: {$policyNo}, client_policy_id: {$client_policy_id}"); + log_message('error', "HEALTH_INDIA - TPA ID Pull | called for policy_no: {$policyNo}, client_policy_id: {$client_policy_id}"); // Fetch file download dates $batchFiles = $this->db->table('batch_files f') @@ -455,7 +463,7 @@ class HealthIndiaApiController extends BaseController if (empty($batchFiles)) { - log_message('error', 'TPA ID PULL FAILED HEALTH_INDIA | batchFiles is empty for this tpa id pull request'); + log_message('error', 'HEALTH_INDIA - TPA ID Pull FAILED | batchFiles is empty for this tpa id pull request'); if ($function_calling_type == "job") { return ['status' => false, 'message' => 'batchFiles not found']; } else { @@ -466,7 +474,7 @@ class HealthIndiaApiController extends BaseController // Generate Health India Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['result'][0]['access_token'])) { - log_message('error', 'TPA ID PULL HEALTH_INDIA | Token generation failed'); + log_message('error', 'HEALTH_INDIA - TPA ID Pull | Token generation failed'); if ($function_calling_type == "job") { return ['status' => false, 'message' => 'Token generation failed']; } else { @@ -487,16 +495,16 @@ class HealthIndiaApiController extends BaseController "policY_NUMBER" => $policyNo ]; - log_message('error', "TPA ID PULL HEALTH_INDIA | API params: " . json_encode(['url' => $url, 'method' => 'POST', 'body' => $body])); + log_message('error', "HEALTH_INDIA - TPA ID Pull | API params: " . json_encode(['url' => $url, 'method' => 'POST', 'body' => $body])); $response = call_third_party_api($url, 'POST', $headers, $body); // dd($response); - log_message('error', "TPA ID PULL HEALTH_INDIA | API Response Received "); + log_message('error', "HEALTH_INDIA - TPA ID Pull | API Response Received "); if (($response['status'] ?? false) !== true) { - log_message('error', 'HEALTH_INDIA API FAILED | response: ' . json_encode($response)); + log_message('error', 'HEALTH_INDIA - TPA ID Pull API FAILED | response: ' . json_encode($response)); // update file table status after the tpa id failed to update if (isset($requestData['file_id']) && !empty($requestData['file_id'])) { @@ -519,7 +527,7 @@ class HealthIndiaApiController extends BaseController !is_array($response['data']['result']) || count($response['data']['result']) === 0 ) { - log_message('error', 'TPA ID PULL API FAILED HEALTH_INDIA | Empty member data for this pull request'); + log_message('error', 'HEALTH_INDIA - TPA ID Pull API FAILED | Empty member data for this pull request'); // update file table status after the tpa id failed to update if (isset($requestData['file_id']) && !empty($requestData['file_id'])) { @@ -544,7 +552,7 @@ class HealthIndiaApiController extends BaseController $filePath = WRITEPATH . 'tmp/' . time() . '_' . $requestData['file_id'] . '.json'; file_put_contents($filePath, $json); - log_message('error', "TPA ID PULL HEALTH_INDIA | Saved JSON to: {$filePath}"); + log_message('error', "HEALTH_INDIA - TPA ID Pull | Saved JSON to: {$filePath}"); // Call a job for dump JSON data to DB $job_details = new Jobs(); @@ -556,7 +564,7 @@ class HealthIndiaApiController extends BaseController ] ]); - log_message('error', "TPA ID PULL HEALTH_INDIA | Job added for saving API data"); + log_message('error', "HEALTH_INDIA - TPA ID Pull | Job added for saving API data"); // ================= MATCHING LOGIC ================= @@ -610,9 +618,9 @@ class HealthIndiaApiController extends BaseController if ($this->db->affectedRows() > 0) { $updated++; - log_message('error', "✅ HEALTH_INDIA | Updated tpa_id={$m['memberId']} for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); + log_message('error', "HEALTH_INDIA - TPA ID Pull | Updated tpa_id={$m['memberId']} for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); } else { - log_message('error', "⚠️ HEALTH_INDIA | No update (already set or not matched) for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); + log_message('error', "HEALTH_INDIA - TPA ID Pull | No update (already set or not matched) for emp_policy_id={$policy['emp_policy_id']} policy={$policyNo}"); } } } @@ -628,13 +636,13 @@ class HealthIndiaApiController extends BaseController ]; $batch_file_success = 'partially success'; - log_message('error', "❌ HEALTH_INDIA | No match for Nhance = " . json_encode($nhanceSideData)); + log_message('error', "HEALTH_INDIA - TPA ID Pull | No match for Nhance = " . json_encode($nhanceSideData)); } } // Send e-card if (!empty($employee_policy_ids)) { - log_message('error', "HEALTH_INDIA | sendMailForDownloadingECard JOB PUSHED."); + log_message('error', "HEALTH_INDIA - TPA ID Pull | sendMailForDownloadingECard JOB PUSHED."); Jobs::addJob([ 'job_name' => 'sendMailForDownloadingECard', 'payload' => [ @@ -655,7 +663,7 @@ class HealthIndiaApiController extends BaseController $totalCount = count($allMembers); - log_message('error', "TPA ID PULL SUCCESS HEALTH_INDIA | completed. Total fetched={$totalCount}, updated={$updated}"); + log_message('error', "HEALTH_INDIA - TPA ID Pull SUCCESS | completed. Total fetched={$totalCount}, updated={$updated}"); if ($function_calling_type == "job") { return [ @@ -707,13 +715,13 @@ class HealthIndiaApiController extends BaseController { helper('api'); - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Started'); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Started'); // Generate Health India Token $tokenResponse = json_decode($this->generateAuthToken()->getBody(), true); if (empty($tokenResponse['data']['result'][0]['access_token'])) { - log_message('error', 'SYNC CLAIMS FAILED HEALTH_INDIA | Token generation failed'); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims FAILED | Token generation failed'); return $this->response->setJSON(['status' => false, 'message' => 'Token generation failed']); } @@ -737,17 +745,17 @@ class HealthIndiaApiController extends BaseController "policY_NUMBER" => $policy['policy_no'] ]; - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Fetching for policy: ' . $policy['policy_no']); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Fetching for policy: ' . $policy['policy_no']); $response = call_third_party_api($url, 'POST', $headers, $body); if (!empty($response['data']['result'])) { $finalResult = array_merge($finalResult, $response['data']['result']); - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Fetched ' . count($response['data']['result']) . ' claims for policy: ' . $policy['policy_no']); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Fetched ' . count($response['data']['result']) . ' claims for policy: ' . $policy['policy_no']); } } - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Total claims fetched: ' . count($finalResult)); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Total claims fetched: ' . count($finalResult)); // Insert / update ticket_master $insertedCount = 0; @@ -786,13 +794,13 @@ class HealthIndiaApiController extends BaseController 'created_at' => date('Y-m-d H:i:s') ]); $insertedCount++; - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Inserted claim: ' . ($row['CLAIM_NUMBER'] ?? 'N/A')); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Inserted claim: ' . ($row['CLAIM_NUMBER'] ?? 'N/A')); } else { - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Skipped existing claim: ' . ($row['CLAIM_NUMBER'] ?? 'N/A')); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Skipped existing claim: ' . ($row['CLAIM_NUMBER'] ?? 'N/A')); } } - log_message('error', 'SYNC CLAIMS HEALTH_INDIA | Completed | Total: ' . count($finalResult) . ' | Inserted: ' . $insertedCount); + log_message('error', 'HEALTH_INDIA - Sync TPA Claims | Completed | Total: ' . count($finalResult) . ' | Inserted: ' . $insertedCount); return $this->response->setJSON([ 'status' => true, diff --git a/app/Controllers/SalesController.php b/app/Controllers/SalesController.php index 751186ad..f79fd170 100644 --- a/app/Controllers/SalesController.php +++ b/app/Controllers/SalesController.php @@ -670,4 +670,123 @@ class SalesController extends BaseController // For development/testing, you can return a default value return 1; } + + + // ==================== Dashboard ==================== + + public function branchLevelDashboard() + { + // Hardcoded branch ID as requested + $branchId = 1; + + try { + // 1. Lead Statistics + $stats = $this->leadModel->getLeadStats(); // Using existing model method + + // 2. Activity Statistics + $activityStats = [ + 'total' => $this->activityModel->countAllResults(), + 'completed' => $this->activityModel->where('status', 'completed')->countAllResults(), + 'pending' => $this->activityModel->where('status', 'pending')->countAllResults(), + ]; + + // 3. Team Performance (Aggregating activity counts per user) + $db = \Config\Database::connect(); + $teamPerformance = $db->table('user_profiles as u') + ->select('u.first_name, u.last_name, u.profile as role, + (SELECT COUNT(*) FROM sales_activities WHERE assigned_to = u.id) as total_acts, + (SELECT COUNT(*) FROM sales_activities WHERE assigned_to = u.id AND status = "completed") as done_acts') + ->where('u.nhance_branch_id', $branchId) + ->where('u.is_active', 1) + ->get()->getResultArray(); + + // 4. Recent Activities (Joining for Lead Names) + $recentActivities = $this->activityModel->select('sales_activities.*, sales_actual_leads.company_name') + ->join('sales_actual_leads', 'sales_actual_leads.lead_id = sales_activities.lead_id') + ->orderBy('sales_activities.scheduled_date', 'DESC') + ->limit(6) + ->findAll(); + + // 5. All Leads Overview + $leadsOverview = $this->leadModel->select('sales_actual_leads.*, user_profiles.first_name, user_profiles.last_name') + ->join('user_profiles', 'user_profiles.id = sales_actual_leads.assigned_to', 'left') + ->findAll(); + + $data = [ + 'total_leads' => $stats['total'], + 'total_activities' => $activityStats['total'], + 'completed_acts' => $activityStats['completed'], + 'pipeline_value' => '15.0L', // Hardcoded placeholder from PDF [cite: 14] + 'team' => $teamPerformance, + 'recent_acts' => $recentActivities, + 'leads_overview' => $leadsOverview + ]; + + // dd($data); + + $this->loadLayout('sales/branch_level_dashboard_view', $data); + + // return view('sales/dashboard_view', $data); + + } catch (\Exception $e) { + return $this->failServerError($e->getMessage()); + } + } + + + public function salesManagerLevelDashboard() + { + $userId = 1; + $db = \Config\Database::connect(); + + try { + $target = $db->table('sales_target') + ->where('user_id', $userId) + ->where('fy_year', '2025-2026') + ->get()->getRowArray(); + + $targetAmount = $target['target_amount'] ?? 2500000.00; + $achievedAmount = 600000.00; + $remainingAmount = $targetAmount - $achievedAmount; + $achievementPercent = ($targetAmount > 0) ? round(($achievedAmount / $targetAmount) * 100) : 0; + + $activitySummary = [ + 'total' => $this->activityModel->where('assigned_to', $userId)->countAllResults(), + 'pending' => $this->activityModel->where(['assigned_to' => $userId, 'status' => 'pending'])->countAllResults(), + 'completed' => $this->activityModel->where(['assigned_to' => $userId, 'status' => 'completed'])->countAllResults(), + ]; + + $myLeadsCount = $this->leadModel->where('assigned_to', $userId)->countAllResults(); + + $upcomingActivities = $this->activityModel->select('sales_activities.*, sales_actual_leads.company_name') + ->join('sales_actual_leads', 'sales_actual_leads.lead_id = sales_activities.lead_id') + ->where(['sales_activities.assigned_to' => $userId, 'sales_activities.status' => 'pending']) + ->orderBy('scheduled_date', 'ASC') + ->limit(3) + ->findAll(); + + $recentLeads = $this->leadModel->where('assigned_to', $userId) + ->orderBy('created_at', 'DESC') + ->limit(5) + ->findAll(); + + $data = [ + 'target' => $targetAmount, + 'achieved' => $achievedAmount, + 'remaining' => $remainingAmount, + 'percent' => $achievementPercent, + 'acts' => $activitySummary, + 'lead_count' => $myLeadsCount, + 'upcoming' => $upcomingActivities, + 'recent_leads' => $recentLeads, + 'user_name' => session()->get('first_name') ?? 'John Doe' + ]; + + // return view('sales/my_dashboard_view', $data); + $this->loadLayout('sales/sales_manager_level_dashboard', $data); + + } catch (\Exception $e) { + return $this->failServerError($e->getMessage()); + } + } } \ No newline at end of file diff --git a/app/Controllers/VidalApiController.php b/app/Controllers/VidalApiController.php index 62a9da4a..e3923d71 100644 --- a/app/Controllers/VidalApiController.php +++ b/app/Controllers/VidalApiController.php @@ -29,7 +29,7 @@ class VidalApiController extends BaseController $apiUrl = getenv('VIDAL_API_BASE_URL').'/files/upload-url'; $subscriptionKey = getenv('VIDAL_API_SUBSCRIPTION_KEY'); - log_message('error', "TPA CLAIM PUSH | Starting file upload process for filename: $filename | Path: $filePath"); + log_message('error', "VIDAL - Claim Push | Starting file upload process for filename: $filename | Path: $filePath"); // Step 1: Get signed URL from Vidal API // $filePath = '/opt/lampp/htdocs/nhance/writable/uploads/claim_files/1760013019_73d94af7b96ddc2e3d51.png'; @@ -39,7 +39,7 @@ class VidalApiController extends BaseController "Ocp-Apim-Subscription-Key: $subscriptionKey" ]; - log_message('error', "TPA CLAIM PUSH | Requesting signed URL from Vidal API: $apiUrl | Payload: $payload"); + log_message('error', "VIDAL - Claim Push | Requesting signed URL from Vidal API: $apiUrl | Payload: $payload"); $ch = curl_init($apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); @@ -49,7 +49,7 @@ class VidalApiController extends BaseController $response = curl_exec($ch); if (curl_errno($ch)) { - log_message('error', "Curl error while requesting signed URL: " . curl_error($ch)); + log_message('error', "VIDAL - Claim Push Curl error while requesting signed URL: " . curl_error($ch)); return ["status" => false, "message" => curl_error($ch)]; } curl_close($ch); @@ -57,14 +57,14 @@ class VidalApiController extends BaseController $responseData = json_decode($response, true); if (!isset($responseData['data']['signedUrl']) || !isset($responseData['data']['fileId'])) { - log_message('error', "TPA CLAIM PUSH | Invalid signed URL response received: " . json_encode($responseData)); + log_message('error', "VIDAL - Claim Push | Invalid signed URL response received: " . json_encode($responseData)); return ["status" => false, "message" => "Invalid signed URL response", "response" => $responseData]; } $signedUrl = $responseData['data']['signedUrl']; $fileId = $responseData['data']['fileId']; - log_message('error', "Received signed URL & fileId. fileId: $fileId"); + log_message('error', "VIDAL - Claim Push | Received signed URL & fileId. fileId: $fileId"); // Step 2: Upload file to signed URL using PUT (Azure Blob) $fileSize = filesize($filePath); @@ -89,12 +89,12 @@ class VidalApiController extends BaseController curl_close($ch2); if ($curlErr) { - log_message('error', "TPA CLAIM PUSH | Curl error during file upload: $curlErr"); + log_message('error', "VIDAL - Claim Push | Curl error during file upload: $curlErr"); return ["status" => false, "message" => "File upload failed", "data" => $curlErr]; } if ($httpCode !== 200 && $httpCode !== 201) { - log_message('error', "TPA CLAIM PUSH | File upload failed with HTTP Code: $httpCode | Response: $uploadResponse"); + log_message('error', "VIDAL - Claim Push | File upload failed with HTTP Code: $httpCode | Response: $uploadResponse"); return [ "status" => false, "message" => "File upload failed", @@ -154,7 +154,7 @@ class VidalApiController extends BaseController ->getRowArray(); // single record if (count($data) && $data['filePath'] == null) { - log_message('error', "TPA CLAIM PUSH | Submit claim failed - Claim or File Missing"); + log_message('error', "VIDAL - Claim Push | Submit claim failed - Claim or File Missing"); return $this->response->setJSON(['status' => false,'message' => 'Claim or File Missing', ]); } @@ -167,7 +167,7 @@ class VidalApiController extends BaseController $upload = $this->uploadFileToVidal($filePath,$filename); if ($upload['status'] !== true) { - log_message('error', "TPA CLAIM PUSH | Submit claim failed - File upload failed"); + log_message('error', "VIDAL - Claim Push | Submit claim failed - File upload failed"); return $this->response->setJSON([ 'status' => false, 'message' => 'File upload failed', @@ -212,7 +212,7 @@ class VidalApiController extends BaseController ]; // dd($body); - log_message('error', 'TPA CLAIM PUSH | claimId: '.$claimId.' | payload: '.json_encode($body)); + log_message('error', 'VIDAL - Claim Push | claimId: '.$claimId.' | payload: '.json_encode($body)); // $body = [ // 'policyNo' => "351500/D0534/PP/20-20/PC", @@ -244,7 +244,7 @@ class VidalApiController extends BaseController $response = call_third_party_api($url, $method, $headers, $body); if($response['status'] != true){ - log_message('error', 'TPA CLAIM PUSH FAILED | claimId: '.$claimId.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Claim Push FAILED | claimId: '.$claimId.' | response: '.json_encode($response)); $this->db->table('ticket_master') ->where('id',$claimId) ->update([ 'tpa_push_response' => json_encode($response) ]); @@ -260,7 +260,7 @@ class VidalApiController extends BaseController if(!empty($claimNO) && !empty($claimInwardNO)){ - log_message('error', 'TPA CLAIM PUSH SUCCESS | claimId: '.$claimId.' | claimNO: '.$claimNO.' | claimInwardNO: '.$claimInwardNO); + log_message('error', 'VIDAL - Claim Push SUCCESS | claimId: '.$claimId.' | claimNO: '.$claimNO.' | claimInwardNO: '.$claimInwardNO); $this->db->table('ticket_master') ->where('id',$claimId) @@ -269,11 +269,11 @@ class VidalApiController extends BaseController return; } else { - log_message('error', 'TPA CLAIM PUSH API SUCCESS BUT claimNO,claimInwardNO EMPTY | claimId: '.$claimId.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Claim Push API SUCCESS BUT claimNO,claimInwardNO EMPTY | claimId: '.$claimId.' | response: '.json_encode($response)); return; } }else{ - log_message('error', 'TPA CLAIM PUSH API FAILED | claimId: '.$claimId.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Claim Push API FAILED | claimId: '.$claimId.' | response: '.json_encode($response)); return; } } @@ -412,7 +412,7 @@ class VidalApiController extends BaseController return ['status' => 'success','data' => $decryptedData["redirectUrl"]]; } - public function ClaimDetail($claimId = 234) //234 + public function ClaimDetail($claimId = null) //234 { helper('api'); @@ -454,39 +454,31 @@ class VidalApiController extends BaseController $body = [ 'empNO' => "", 'tpaCardID' => "", - 'claimID' => "CHE-0226-CL-0013404", //$ticket['claimID'], + 'claimID' => $ticket['claimID'], 'emailID' => "", 'mobileNO' => "", ]; } - $body = [ - 'empNO' => "", - 'tpaCardID' => "", - 'claimID' => "CHE-0226-CL-0013893", //$ticket['claimID'], - 'emailID' => "", - 'mobileNO' => "", - ]; - $response = call_third_party_api($url, $method, $headers, $body); - dd($response); if ($response['status'] != true || empty($response['data']['data']['claims'][0])) { - log_message('error', 'CLAIM STATUS FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Claim Status FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); return ['status' => false, 'message' => 'API call failed.','data' => $response]; } // Extract claim status $claimData = $response['data']['data']['claims'][0]; + $tpa_claim_no = $claimData['claimNumber'] ?? ''; $currentStatus = $claimData['status'] ?? ''; + $tpa_claim_type = $claimData['claimType'] ?? ''; // VALID STATUS LIST $validStatuses = [ - "In-Progress" => 5, "Required Information" => 4, "Paid" => 11, @@ -494,20 +486,25 @@ class VidalApiController extends BaseController "Approved" => 8, ]; - - // Maping tpa claim status with local claim Status - if (isset($validStatuses[$currentStatus])) - { - $updateArray = ['claim_status_id' => $validStatuses[$currentStatus] , 'tpa_claim_status' => $currentStatus , 'updated_at' => date('Y-m-d H:i:s')]; - }else{ - $updateArray = ['tpa_claim_status' => $currentStatus , 'updated_at' => date('Y-m-d H:i:s')]; + $updateArray = [ + 'tpa_claim_status' => $currentStatus, + 'tpa_claim_id' => $tpa_claim_no, + // 'claim_number' => $tpa_claim_no, // already updated + 'updated_at' => date('Y-m-d H:i:s'), + ]; + if (isset($validStatuses[$currentStatus])) { + $updateArray['claim_status_id'] = $validStatuses[$currentStatus]; } + if (!empty($tpa_claim_type)) { + $updateArray['tpa_claim_type'] = $tpa_claim_type; + } + // UPDATE ticket_master $this->db->table('ticket_master')->where('id', $claimId)->update($updateArray); // LOG UPDATE - log_message('error', "CLAIM STATUS SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); + log_message('error', "VIDAL - Claim Status SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); return ['status' => true,'message' => 'Claim status updated.','updated_status' => $currentStatus,'api_response' => $response]; } @@ -548,7 +545,7 @@ class VidalApiController extends BaseController // dd($TicketData); if (!$TicketData) { - log_message('error', "Claims not found to update status"); + log_message('error', "VIDAL - Claim Status | Claims not found to update status"); return $this->response->setJSON(['status' => false,'message' => 'Claims not found' ]); } @@ -578,18 +575,19 @@ class VidalApiController extends BaseController $response = call_third_party_api($url, $method, $headers, $body); if ($response['status'] != true || empty($response['data']['data']['claims'][0])) { - log_message('error', 'CLAIM STATUS FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Claim Status FAILED | for ticket ID: ' . $claimId.' | response: '.json_encode($response)); $error_data[$claimId][['status' => false,'message' => 'API call failed.','data' => $response]]; } // Extract claim status $claimData = $response['data']['data']['claims'][0]; + $tpa_claim_no = $claimData['claimNumber'] ?? ''; $currentStatus = $claimData['status'] ?? ''; + $tpa_claim_type = $claimData['claimType'] ?? ''; // VALID STATUS LIST $validStatuses = [ - "In-Progress" => 5, "Required Information" => 4, "Paid" => 11, @@ -597,20 +595,24 @@ class VidalApiController extends BaseController "Approved" => 8, ]; - - // Maping tpa claim status with local claim Status - if (isset($validStatuses[$currentStatus])) - { - $updateArray = ['claim_status_id' => $validStatuses[$currentStatus] , 'tpa_claim_status' => $currentStatus , 'updated_at' => date('Y-m-d H:i:s')]; - }else{ - $updateArray = ['tpa_claim_status' => $currentStatus , 'updated_at' => date('Y-m-d H:i:s')]; + $updateArray = [ + 'tpa_claim_status' => $currentStatus, + 'tpa_claim_id' => $tpa_claim_no, + // 'claim_number' => $tpa_claim_no, // already updated + 'updated_at' => date('Y-m-d H:i:s'), + ]; + if (isset($validStatuses[$currentStatus])) { + $updateArray['claim_status_id'] = $validStatuses[$currentStatus]; + } + if (!empty($tpa_claim_type)) { + $updateArray['tpa_claim_type'] = $tpa_claim_type; } // UPDATE ticket_master $this->db->table('ticket_master')->where('id', $claimId)->update($updateArray); // LOG UPDATE - log_message('error', "CLAIM STATUS SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); + log_message('error', "VIDAL - Claim Status SUCCESS | Updated ticket ID $claimId with claim status: $currentStatus"); $status_updated_count ++; @@ -662,17 +664,17 @@ class VidalApiController extends BaseController // dd($response); if($response['status'] != true){ - log_message('error', 'Ecard Request FAILED | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Ecard Request FAILED | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | response: '.json_encode($response)); return null; } $ecardUrl = $response['data']['data']['dependents'][0]['ecardLink'] ?? null; if(!empty($ecardUrl)){ - log_message('error', 'Ecard Request PUSH SUCCESS | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | ecardUrl: '.$ecardUrl); + log_message('error', 'VIDAL - Ecard Request PUSH SUCCESS | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | ecardUrl: '.$ecardUrl); return $ecardUrl; } else { - log_message('error', 'Ecard Request SUCCESS BUT ecardUrl EMPTY | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | response: '.json_encode($response)); + log_message('error', 'VIDAL - Ecard Request SUCCESS BUT ecardUrl EMPTY | employeeId: '.$employeeId.' | policyNo: '.$policyNo.' | response: '.json_encode($response)); return null; } @@ -700,7 +702,7 @@ class VidalApiController extends BaseController $client_policy_id = $requestData['client_policy_id'] ?? null; if (empty($policyNo)) { - log_message('error', 'TPA ID PULL | policy_no missing in request'); + log_message('error', 'VIDAL - TPA ID Pull | policy_no missing in request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'policy_no required']; }else{ @@ -709,7 +711,7 @@ class VidalApiController extends BaseController } if (empty($client_policy_id)) { - log_message('error', 'TPA ID PULL | client_policy_id missing in request'); + log_message('error', 'VIDAL - TPA ID Pull | client_policy_id missing in request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'client_policy_id required']; }else{ @@ -717,7 +719,7 @@ class VidalApiController extends BaseController } } - log_message('error', "TPA ID PULL | called for policy_no: {$policyNo} , client_policy_id: {$client_policy_id}"); + log_message('error', "VIDAL - TPA ID Pull | called for policy_no: {$policyNo} , client_policy_id: {$client_policy_id}"); // Fetch file download dates $batchFiles = $this->db->table('batch_files f') @@ -731,7 +733,7 @@ class VidalApiController extends BaseController // dd($batchFiles); if (empty($batchFiles)) { - log_message('error', 'TPA ID PULL FAILED | batchFiles is empty for this tpa id pull request'); + log_message('error', 'VIDAL - TPA ID Pull FAILED | batchFiles is empty for this tpa id pull request'); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'batchFiles not found']; }else{ @@ -757,7 +759,7 @@ class VidalApiController extends BaseController // $body = [ 'empNO' => "Mem 1" ]; - log_message('error', "TPA ID PULL | API parems " . json_encode([$url, $method, $headers, $body])); + log_message('error', "VIDAL - TPA ID Pull | API parems " . json_encode([$url, $method, $headers, $body])); $response = call_third_party_api($url, $method, $headers, $body); @@ -767,12 +769,12 @@ class VidalApiController extends BaseController if (isset($requestData['file_id']) && !empty($requestData['file_id'])) { $file_model = new BatchFileModel(); $file_model->where('id', $requestData['file_id'])->set('status', 'failed-8')->update(); - log_message('error', "Files table status updated for the file id : {$requestData['file_id']}"); + log_message('error', "VIDAL - TPA ID Pull | Files table status updated for the file id : {$requestData['file_id']}"); } else { - log_message('error', "Failed to update file table status."); + log_message('error', "VIDAL - TPA ID Pull | Failed to update file table status."); } - log_message('error', 'TPA ID PULL API FAILED | API failed: ' . json_encode($response)); + log_message('error', 'VIDAL - TPA ID Pull API FAILED | API failed: ' . json_encode($response)); if($function_calling_type == "job"){ return ['status' => false, 'message' => 'API call failed', 'data' => $response]; @@ -784,12 +786,12 @@ class VidalApiController extends BaseController $data = $response['data']['data'] ?? []; if (!isset($data['dependents'])) { - log_message('error', "TPA ID PULL FAILED |: 'benefDetails' missing in API response: " . json_encode($data)); + log_message('error', "VIDAL - TPA ID Pull FAILED |: 'benefDetails' missing in API response: " . json_encode($data)); break; } $fetchedCount = count($data['dependents']); - log_message('error', "Fetched {$fetchedCount} records "); + log_message('error', "VIDAL - TPA ID Pull | Fetched {$fetchedCount} records "); $allBenef = array_merge($allBenef, $data['dependents']); } @@ -856,9 +858,9 @@ class VidalApiController extends BaseController if ($this->db->affectedRows() > 0) { $updated++; - log_message('error', "✅ Updated tpa_id={$row['enrollmentId']} for emp_code={$row['empNo']} policy={$row['policyNumber']}"); + log_message('error', "VIDAL - TPA ID Pull | Updated tpa_id={$row['enrollmentId']} for emp_code={$row['empNo']} policy={$row['policyNumber']}"); } else { - log_message('error', "⚠️ No update (already set or not matched) for emp_code={$row['empNo']} policy={$row['policyNumber']}"); + log_message('error', "VIDAL - TPA ID Pull | No update (already set or not matched) for emp_code={$row['empNo']} policy={$row['policyNumber']}"); } } @@ -879,7 +881,7 @@ class VidalApiController extends BaseController log_message( 'error', - "❌ No match for Nhance = " . json_encode($nhanceSideData) + "VIDAL - TPA ID Pull | No match for Nhance = " . json_encode($nhanceSideData) ); } @@ -904,7 +906,7 @@ class VidalApiController extends BaseController } - log_message('error', "TPA ID PULL SUCCESS | completed. Total fetched={$totalCount}, updated={$updated}"); + log_message('error', "VIDAL - TPA ID Pull SUCCESS | completed. Total fetched={$totalCount}, updated={$updated}"); if($function_calling_type == "job"){ return [ diff --git a/app/Views/sales/branch_level_dashboard_view.php b/app/Views/sales/branch_level_dashboard_view.php new file mode 100644 index 00000000..3a9d13cc --- /dev/null +++ b/app/Views/sales/branch_level_dashboard_view.php @@ -0,0 +1,177 @@ + + +
+
+
+

Dashboard

+

Overview of your branch

+
+
+ +
+
+ +
+
+
4
+
Total Leads
+
↑ 12% this month
+
+
+
6
+
Total Activities
+
↑ 5% this month
+
+
+
1
+
Completed Activities
+
↑ 15% this month
+
+
+
₹15.0L
+
Pipeline Value
+
↑ 18% this month
+
+
+ +
+
+
+

Recent Activities - All Team

+ 6 activities +
+ + + + + + + + + + + + + + + + + + + + + + + +
CompanyActivity & AssignedDateStatus
Venba Infotech +
CALL
+
John Doe
+
20 Feb 2026Completed
Acme Corporation +
EMAIL
+
John Doe
+
20 Feb 2026Pending
+
+ +
+
+

Sales Team Performance

+
+
V
+
+
Venkat 3.0
+
Sales Manager
+
+
+
6 acts
+
1 done
+
+
+
+
P
+
+
Pavi_the_Staff V
+
Sales Staff
+
+
+
0 acts
+
0 done
+
+
+
+ +
+

Activity Breakdown

+
Call42%
+
Email25%
+
Meeting18%
+
Visit10%
+
Demo5%
+
+
+
+ +
+
+

All Leads Overview

+ Click a lead to see details +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CompanyStatusAssigned ToActivitiesOpportunities
Venba InfotechNewJohn Doe
1
1
Acme CorporationPotentialJohn Doe
1
0
+
+
\ No newline at end of file diff --git a/app/Views/sales/sales_manager_level_dashboard.php b/app/Views/sales/sales_manager_level_dashboard.php new file mode 100644 index 00000000..5b75fc42 --- /dev/null +++ b/app/Views/sales/sales_manager_level_dashboard.php @@ -0,0 +1,93 @@ + + +
+
+
+

My Dashboard

+

Welcome back,

+
+
+ +
+
+ +
+
YEARLY TARGET 2025
+
L
+
Apr 2025 - Mar 2026
+ +
+ % +
+ +
+
+
+
+ Achieved L + Remaining L +
+ +
+
My Activities
+
Pending
+
Completed
+
My Leads
+
+
+ +
+
+
+

My Upcoming Activities

+ pending +
+ +
+
+
+
-
+
+ +
+ +
+ +
+

My Recent Leads

+ +
+
+
+
+
+
+
+
+ +
+ +
+
+
\ No newline at end of file