From 2fde346d366d70727616047b3f20b8a056b50a18 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Fri, 8 Aug 2025 17:26:48 +0530 Subject: [PATCH] CHANGE_GPA_CLAIM_HISTORY_IN_EXCEL : RV --- app/Controllers/LeadsController.php | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 775b6f91..b1db3311 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -1824,6 +1824,72 @@ class LeadsController extends BaseController $filename = "{$rfq_data['client_name']}_{$rfq_data['policy_type']}_{$string}_" . $policy_year . '_' . '.xlsx'; } + //claim history new sheet; + if (!empty($rfq_data['fin_years_claims'])) { + + $claim_details = json_decode($rfq_data['fin_years_claims'], true) ?? []; + + if (!empty($claim_details['finyear'])) { + + // Get headers dynamically + $headers = array_map(function ($key) { + return ucwords(str_replace('_', ' ', $key)); + }, array_keys($claim_details['finyear'][0])); + + $newSheet = new Worksheet($spreadsheet, 'Claims Experience'); + $spreadsheet->addSheet($newSheet); + $spreadsheet->setActiveSheetIndexByName('Claims Experience'); + $sheet = $spreadsheet->getActiveSheet(); + + // Set headers + $sheet->fromArray($headers, NULL, 'A1'); + + // Apply background color and bold style to headers + $headerCellRange = 'A1:' . chr(64 + count($headers)) . '1'; // e.g., A1:G1 + + $sheet->getStyle($headerCellRange)->getFont()->setBold(true); + $sheet->getStyle($headerCellRange)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setRGB('ADD8E6'); + + // Add border to header + $sheet->getStyle($headerCellRange)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN); + + // Fill data and apply borders + $row = 2; + foreach ($claim_details['finyear'] as $record) { + $col = 'A'; + foreach ($record as $value) { + $label = ucwords(str_replace('_', ' ', ($value ?? ""))); + $sheet->setCellValue($col . $row, $label); + $col++; + } + + // Apply border to each data row + $sheet->getStyle('A' . $row . ':' . chr(64 + count($headers)) . $row) + ->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN); + + $row++; + } + // Auto-size all columns based on header count + for ($i = 0; $i < count($headers); $i++) { + $colLetter = chr(65 + $i); // 'A', 'B', etc. + $sheet->getColumnDimension($colLetter)->setAutoSize(true); + } + + // Enable wrap text for all cells + $maxColLetter = chr(64 + count($headers)); // Last column letter + $sheet->getStyle("A2:{$maxColLetter}{$row}")->getAlignment()->setWrapText(true); + + // Optional: center vertically for neatness + $sheet->getStyle("A2:{$maxColLetter}{$row}")->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER); + + // Optional: Make row height auto (helps when wrap text is on) + for ($i = 2; $i < $row; $i++) { + $sheet->getRowDimension($i)->setRowHeight(-1); + } + + } + } + // Save to temporary location $uploadFilePath = WRITEPATH . 'tmp/' . $filename; $writer = new Xlsx($spreadsheet);