CHANGE_GPA_CLAIM_HISTORY_IN_EXCEL : RV

This commit is contained in:
VENKATESHWARAN 2025-08-08 17:26:48 +05:30
parent 0d3f2b17f8
commit 2fde346d36

View File

@ -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);