systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'bootstrap.php'; require_once SYSTEMPATH . 'Config/DotEnv.php'; (new CodeIgniter\Config\DotEnv(ROOTPATH))->load(); defined('ENVIRONMENT') || define('ENVIRONMENT', env('CI_ENVIRONMENT', 'development')); $boot = APPPATH . 'Config/Boot/' . ENVIRONMENT . '.php'; if (is_file($boot)) { require_once $boot; } require_once APPPATH . 'Config/Constants.php'; $policyId = (int) ($argv[1] ?? 0); $db = \Config\Database::connect(); if ($policyId <= 0) { $row = $db->query( "SELECT cr.client_policy_id, COUNT(*) AS cnt FROM claim_report cr WHERE cr.source_table = 'claims_dump_icici' AND cr.is_active = 1 AND cr.source_row_id IS NOT NULL GROUP BY cr.client_policy_id ORDER BY cnt DESC LIMIT 1" )->getRowArray(); $policyId = (int) ($row['client_policy_id'] ?? 0); echo "Auto-selected policy_id: {$policyId}\n"; } if ($policyId <= 0) { echo "FAIL: No policy with ICICI claim_report linkage found.\n"; exit(1); } $service = new \App\Libraries\IciciMisReportService(); $built = $service->build($policyId); if (!$built['status']) { echo 'FAIL: ' . ($built['message'] ?? 'unknown') . "\n"; exit(1); } $data = $built['data']; $vm = $data['view_model'] ?? []; $requiredSections = [ 'meta', 'premium_lr', 'claims_summary', 'iltc_summary', 'enrollment', 'age_analysis', 'relation_acs', 'amount_bands', 'si_bands', 'iltc_app', 'utilization_employees', 'utilization_dependents', 'disease', 'hospitals', 'cities', 'tat', 'takeaways', ]; foreach ($requiredSections as $key) { if (!array_key_exists($key, $vm)) { echo "FAIL: missing view_model.{$key}\n"; exit(1); } } echo "OK policy_id={$policyId}\n"; echo 'Policy: ' . ($data['header']['policy_number'] ?? '') . "\n"; echo 'Client: ' . ($vm['meta']['client_name'] ?? '') . "\n"; echo 'Dump rows: ' . ($data['dump_row_count'] ?? 0) . "\n"; echo 'Claims summary rows: ' . count($vm['claims_summary']['rows'] ?? []) . "\n"; echo 'Age rows: ' . count($vm['age_analysis']['rows'] ?? []) . "\n"; echo 'Disease rows: ' . count($vm['disease']['rows'] ?? []) . "\n"; echo 'Hospitals: ' . count($vm['hospitals']['rows'] ?? []) . "\n"; echo 'Cities: ' . count($vm['cities']['rows'] ?? []) . "\n"; echo 'TAT months: ' . count($vm['tat'] ?? []) . "\n"; $html = view('claims_mis_icici', [ 'report' => $data, 'view_model' => $vm, 'policy_id' => $policyId, 'pdf_url' => '', 'embed' => true, ]); $sectionMarkers = [ 'Portfolio Analysis', 'Enrollment Summary', 'Age-wise Analysis', 'Relation ACS', 'Amount Band-wise Analysis', 'SI Band-wise Analysis', 'IL Take Care', 'Disease-Analysis', 'Claim Utilization report', 'Top Hospitals', 'Top Cities', 'TAT Analysis', ]; foreach ($sectionMarkers as $marker) { if (stripos($html, $marker) === false) { echo "FAIL: HTML missing section '{$marker}'\n"; exit(1); } } if (stripos($html, 'icici_lambard_new') === false && stripos($html, 'data:image') === false) { if (stripos($html, 'icici_lambard_new.png') === false) { echo "FAIL: HTML missing ICICI logo reference\n"; exit(1); } } echo "OK HTML sections present (" . strlen($html) . " bytes)\n"; $pdf = (new \App\Libraries\IciciMisPdfService())->generateFromReport($data, $policyId); if (!$pdf['status']) { echo 'FAIL PDF: ' . ($pdf['message'] ?? 'unknown') . "\n"; exit(1); } $outDir = WRITEPATH . 'uploads/'; if (!is_dir($outDir)) { @mkdir($outDir, 0775, true); } $outFile = $outDir . ($pdf['filename'] ?? 'ICICI_MIS_smoke.pdf'); file_put_contents($outFile, $pdf['content']); echo 'OK PDF: ' . $outFile . ' (' . strlen((string) $pdf['content']) . " bytes)\n"; exit(0);