diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 6a958c71..65a27038 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -37,7 +37,7 @@ use Kint\Kint; use App\Controllers\Jobs; use App\Controllers\JobWorker; - +use Google\Service\FactCheckTools\Resource\Claims; class LeadsController extends BaseController { @@ -558,6 +558,8 @@ class LeadsController extends BaseController $data['userList'] = $this->userModel->getUserListForRFQ(); $data['lead_data'] = $lead_data; + // dd($data); + $mail_content = "
Dear Sir,
Greetings From Nhance India!
@@ -575,12 +577,12 @@ class LeadsController extends BaseController // dd($data); - if ($data['lead_id'] != 75){ + if ($lead_data['lead_form_type'] == 1){ - $this->loadLayout('view_rfq.php', $data); + return $this->loadLayout('view_rfq.php', $data); }else{ - $this->viewNonEBRFQ($id); + return $this->loadLayout('view_rfq_non_eb', $data); } @@ -1731,7 +1733,14 @@ class LeadsController extends BaseController $reply_to = $lead_data['created_person_email'] ?? ""; //get file path to attach - $file_info = $this->constructExcelToSaveTemp($lead_id, ($file_type == 'rfq' ? 1 : 2), $propsal_and_insurer); + + if($lead_data["lead_form_type"] == 2){ + $file_info = $this->constructNonEbExcelToSaveTemp($lead_id, ($file_type == 'rfq' ? 1 : 2), $propsal_and_insurer); + }else{ + $file_info = $this->constructExcelToSaveTemp($lead_id, ($file_type == 'rfq' ? 1 : 2), $propsal_and_insurer); + } + + // $file_info = $this->constructExcelToSaveTemp($lead_id, ($file_type == 'rfq' ? 1 : 2), $propsal_and_insurer); log_message('error','File Info'.json_encode($file_info)); if ($lead_data['file_name'] != null && $lead_data['file_name'] != '') { $temp_file_path = $file_info['filePath']; @@ -2409,7 +2418,7 @@ class LeadsController extends BaseController return $financialYears; } - // ------------RFQ NON EB----------------------------------------------------------------------------------------- + // ------------ RFQ NON EB FUNCTIONS----------------------------------------------------------------------------------------- public function rfqNonEB() { @@ -2543,6 +2552,12 @@ class LeadsController extends BaseController ) ?? ""; } + + if($data['lead_edit_data']['lead_type'] != 1 && $data['lead_edit_data']['lead_form_type'] == 2){ + $data['lead_edit_data']['claims_details_html'] = view('rfq/claims_details_non_eb', $data['lead_edit_data']); + }else{ + $data['lead_edit_data']['claims_details_html'] = ""; + } } // dd($data); @@ -2550,7 +2565,6 @@ class LeadsController extends BaseController return $this->loadLayout('leads_form_handler', $data); } - public function getPolicyTypeFields() { @@ -2585,83 +2599,23 @@ class LeadsController extends BaseController return isset($viewMap[$policy_type_id]) ? view($viewMap[$policy_type_id], $data) : ""; } - // public function generateViewPageHtml($policy_type_id, $data = []) - // { - // $data['insurer'] = $this->insurerBranchModel->getInsurerBranchesWithInsurerNames(); - // $data['tpa'] = $this->tpaBranchModel->getTpaBranchesWithTpaNames(); + // ------------------- RFQ NON EB EXCEL EXPORT FUNCTION --------------------------------------------------------------------------------------- - // $html = ""; - // if(in_array($policy_type_id, [1,6,7])){ - // $html = view('rfq/gpa', $data); - // }else if(in_array($policy_type_id, [2,3,4,5])) { - // $html = view('rfq/gmc', $data); - // }else if($policy_type_id == 22) { - // $html = view('rfq/car'); - // }else if($policy_type_id == 23) { - // $html = view('rfq/cpm'); - // }else if($policy_type_id == 24) { - // $html = view('rfq/cyber_crime'); - // }else if($policy_type_id == 25) { - // $html = view('rfq/do'); - // }else if($policy_type_id == 27) { - // $html = view('rfq/eo'); - // }else if($policy_type_id == 49) { - // $html = view('rfq/money'); - // }else if($policy_type_id == 19) { - // $html = view('rfq/cgl'); - // }else if($policy_type_id == 59) { - // $html = view('rfq/sfsp'); - // }else if($policy_type_id == 63) { - // $html = view('rfq/wc'); - // }else if($policy_type_id == 15) { - // $html = view('rfq/blu'); - // }else if($policy_type_id == 16) { - // $html = view('rfq/bsu'); - // }else if(in_array($policy_type_id, [44,45,46,47])) { - // $html = view('rfq/marine'); - // } - - // return $html; - // } - - // ---------------------------------------------------------------------------------------------------------- - - //Construct excel file and save the file to the folder and return file path public function constructNonEbExcelToSaveTemp($lead_id, $type, $propsal_and_insurer = null) { + $rfq_data = $this->RFQModel->getRFQTableDataWithLeadIDAndType($lead_id, $type); - $lead_data = json_decode($rfq_data['custom_fields'], true); + $lead_data = json_decode($rfq_data['custom_fields'], true) ?? []; + if (!is_array($lead_data)) { + $lead_data = []; + } $lead_data = array_merge(['Insured' => $rfq_data['client_name']], $lead_data); - // dd($lead_data); - // dd($rfq_data, $lead_id, $type, $propsal_and_insurer); - // print_r($propsal_and_insurer); die; - - // $data = json_decode($rfq_data['json'], true); - // $proposalData = end($data); - // array_pop($data); - - // foreach ($data as $key => $value) { - // Kint::dump($value); - // } - - // dd($data); - - - // if ($type == 2) { - // $data = $this->convertJsonForQCR($data, $type); - // if ($propsal_and_insurer !== null) { - // list($proposal_key, $insurer_key) = explode('-', $propsal_and_insurer, 2); - // $data = $this->transformProposelData($data, $proposal_key, $insurer_key); - // } - // } else if ($type == 1) { - // $data = $this->convertJsonForQCR($data, $type); - // // dd($data); - // } - - // dd($data); + $jsonData = json_decode($rfq_data['json'], true); + $proposalData = end($jsonData); + array_pop($jsonData); $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); @@ -2732,11 +2686,11 @@ class LeadsController extends BaseController ]); // Apply bold style to C column if the key is "Insured" - if ($key === "Insured") { - $sheet->getStyle("C{$rowNumber}")->applyFromArray([ - 'font' => ['bold' => true], - ]); - } + // if ($key === "Insured") { + // $sheet->getStyle("C{$rowNumber}")->applyFromArray([ + // 'font' => ['bold' => true], + // ]); + // } // Track max width needed for columns $maxWidthA = max($maxWidthA, mb_strlen($formattedKey)); // Consider title and keys @@ -2749,257 +2703,212 @@ class LeadsController extends BaseController $sheet->getColumnDimension('A')->setWidth($maxWidthA * 1.2); $sheet->getColumnDimension('B')->setWidth($maxWidthA * 1.2); $sheet->getColumnDimension('C')->setWidth($maxWidthB * 1.2); - $sheet->getColumnDimension('D')->setWidth($maxWidthB * 1.2); + + $rowNumber += 2; + + foreach ($jsonData as $key => $data) { + + if ($type == 2) { + $data = $this->convertNonEbJsonForQCR($data, $type, $proposalData); + unset($data['proposalData']); + + if ($propsal_and_insurer !== null) { + list($proposal_key, $insurer_key) = explode('-', $propsal_and_insurer, 2); + $data = $this->transformProposelData($data, $proposal_key, $insurer_key); + } + } else if ($type == 1) { + $data = $this->convertNonEbJsonForQCR($data, $type, $proposalData); + unset($data['proposalData']); + } + + // Add headers and subheaders + $headers = $data['table_data']['headers']; + // dd($headers); + + $rowNumber = $rowNumber + 1; + + $subHeaderRow = $rowNumber + 1; + $columnLetter = 'A'; + + foreach ($headers as $header) { + + if (in_array($header['parentHeader'], ['Action'])) { + continue; + } + + $sheet->getColumnDimension($columnLetter)->setWidth(60); - // // $rowNumber += 2; + if ($header['parentHeader'] == '') { + // $header['parentHeader'] = 'S.No.'; + $sheet->getColumnDimension('A')->setWidth(10); + } - // // Add headers and subheaders - // $headers = $data['table_data']['headers']; + if ($header['parentHeader'] === 'Particulars') { + $sheet->getColumnDimension('B')->setWidth(60); + } - // $sheet->setCellValue("A{$rowNumber}", "Details of Coverage"); - // $sheet->getStyle("A{$rowNumber}")->applyFromArray([ - // 'font' => [ - // 'bold' => true, - // ], - // 'fill' => [ - // 'fillType' => Fill::FILL_SOLID, - // 'startColor' => ['rgb' => 'ADD8E6'], - // ], - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); - // $subheader_count = array_sum(array_map(fn($header) => count($header['subHeaders']), $data['table_data']['headers'])); - // $subheader_count = $subheader_count - 2; - // $headerCount = count($data['table_data']['headers']); - // $lastColumn = Coordinate::stringFromColumnIndex($subheader_count); - // // dd( $headerCount, $lastColumn); + if (strpos($header['parentHeader'], 'Proposal') === 0) { + $sheet->getColumnDimension('C')->setWidth(60); + $sheet->getColumnDimension('D')->setWidth(35); + } - // // Merge cells from A to the last column - // $mergeRange = "A{$rowNumber}:{$lastColumn}{$rowNumber}"; + + $startColumn = $columnLetter; // Start of the current header range + $subHeaderCount = count($header['subHeaders']); // Number of subheaders for this parent header - // $sheet->getStyle($mergeRange)->applyFromArray([ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); + // Set parent header value + $sheet->setCellValue("{$startColumn}{$rowNumber}", $header['parentHeader']); + $sheet->getStyle("{$startColumn}{$rowNumber}")->applyFromArray([ + 'font' => ['bold' => true], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ], + 'fill' => [ + 'fillType' => Fill::FILL_SOLID, + 'startColor' => ['rgb' => 'ADD8E6'], + ], + ]); - // $sheet->mergeCells($mergeRange); - // $rowNumber = $rowNumber + 1; + // Merge header cells if it spans multiple subheaders + if ($subHeaderCount > 1) { + $endColumn = chr(ord($startColumn) + $subHeaderCount - 1); // Calculate the end column + $sheet->mergeCells("{$startColumn}{$rowNumber}:{$endColumn}{$rowNumber}"); + } else { + $endColumn = $startColumn; // No merge needed if only one subheader + } - // $subHeaderRow = $rowNumber + 1; - // $columnLetter = 'A'; + // Add subheaders + foreach ($header['subHeaders'] as $subHeader) { + $sheet->setCellValue("{$columnLetter}{$subHeaderRow}", $subHeader); - // foreach ($headers as $header) { + if ($columnLetter != "A" && $columnLetter != "B" && $columnLetter != "C" && $columnLetter != "D") { + $sheet->getColumnDimension($columnLetter)->setWidth(35); + } else { + $sheet->getColumnDimension('A')->setWidth(10); + } - // if (in_array($header['parentHeader'], ['Item Key', 'Action'])) { - // continue; - // } + $sheet->getStyle("{$columnLetter}{$subHeaderRow}")->applyFromArray([ + 'font' => ['bold' => true], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ], + ]); + $columnLetter++; // Move to the next column for subheaders + } + } - // if ($header['parentHeader'] === 'Sno') { - // $header['parentHeader'] = 'S.No.'; - // $sheet->getColumnDimension('A')->setWidth(10); - // } + // Apply border to the header range + $headerRange = "A{$rowNumber}:" . chr(ord($columnLetter) - 1) . "{$subHeaderRow}"; + $sheet->getStyle($headerRange)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, + 'color' => ['argb' => 'FF000000'], // Black color + ], + ], + ]); - // if ($header['parentHeader'] === 'Particulars') { - // $sheet->getColumnDimension('B')->setWidth(40); - // } + // Increase row height for headers and subheaders + $sheet->getRowDimension($rowNumber)->setRowHeight(25); // Header row height + $sheet->getRowDimension($subHeaderRow)->setRowHeight(20); // Subheader row height - // $startColumn = $columnLetter; // Start of the current header range - // $subHeaderCount = count($header['subHeaders']); // Number of subheaders for this parent header + $rowNumber = $subHeaderRow + 2; + $column_data = $data['table_data']['data']; + $serial_no = 1; + $maxColumnWidths = []; - // // Set parent header value - // $sheet->setCellValue("{$startColumn}{$rowNumber}", $header['parentHeader']); - // $sheet->getStyle("{$startColumn}{$rowNumber}")->applyFromArray([ - // 'font' => ['bold' => true], - // 'alignment' => [ - // 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, - // 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, - // ], - // ]); + // Add table data rows + foreach ($column_data as $dataRow) { - // // Merge header cells if it spans multiple subheaders - // if ($subHeaderCount > 1) { - // $endColumn = chr(ord($startColumn) + $subHeaderCount - 1); // Calculate the end column - // $sheet->mergeCells("{$startColumn}{$rowNumber}:{$endColumn}{$rowNumber}"); - // } else { - // $endColumn = $startColumn; // No merge needed if only one subheader - // } + $columnLetter = 'A'; - // // Add subheaders - // foreach ($header['subHeaders'] as $subHeader) { - // $sheet->setCellValue("{$columnLetter}{$subHeaderRow}", $subHeader); + foreach ($dataRow['data'] as $cellData) { - // if ($columnLetter != "A" && $columnLetter != "B" && $columnLetter != "C" && $columnLetter != "D") { - // $sheet->getColumnDimension($columnLetter)->setWidth(35); - // } else { - // $sheet->getColumnDimension('A')->setWidth(10); - // } + if (in_array($cellData['parentth'], ['Action'])) { + continue; + } - // $sheet->getStyle("{$columnLetter}{$subHeaderRow}")->applyFromArray([ - // 'font' => ['bold' => true], - // 'alignment' => [ - // 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, - // 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, - // ], - // ]); - // $columnLetter++; // Move to the next column for subheaders - // } - // } + if ($cellData['parentth'] == 'SNO') { + $sheet->setCellValue("{$columnLetter}{$rowNumber}", $serial_no); + } else if ($cellData['parentth'] == '') { + $mergeStart = $rowNumber; // Start row for merging + $mergeEnd = $rowNumber + ($cellData['rowspan'] - 1); // End row for merging - // // Apply border to the header range - // $headerRange = "A{$rowNumber}:" . chr(ord($columnLetter) - 1) . "{$subHeaderRow}"; - // $sheet->getStyle($headerRange)->applyFromArray([ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); + $sheet->setCellValue("{$columnLetter}{$mergeStart}", $dataRow['SNO']); + $sheet->mergeCells("{$columnLetter}{$mergeStart}:{$columnLetter}{$mergeEnd}"); + $sheet->getStyle("{$columnLetter}{$mergeStart}:{$columnLetter}{$mergeEnd}") + ->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER); + } else { + $sheet->setCellValue("{$columnLetter}{$rowNumber}", $cellData['display_value']); + } - // // Increase row height for headers and subheaders - // $sheet->getRowDimension($rowNumber)->setRowHeight(25); // Header row height - // $sheet->getRowDimension($subHeaderRow)->setRowHeight(20); // Subheader row height + $columnLetter++; + } + $rowNumber++; + $serial_no++; + } - // $rowNumber = $subHeaderRow + 2; - // $column_data = $data['table_data']['data']; - // $serial_no = 1; - // $maxColumnWidths = []; + $dataRange = "A" . ($subHeaderRow + 1) . ":" . chr(ord($columnLetter) - 1) . ($rowNumber - 1); + $sheet->getStyle($dataRange)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, + 'color' => ['argb' => 'FF000000'], // Black color + ], + ], + ]); - // // Add table data rows - // foreach ($column_data as $dataRow) { - // $columnLetter = 'A'; - // foreach ($dataRow['data'] as $cellData) { - // if (in_array($cellData['parentth'], ['Item Key', 'Action'])) { - // continue; - // } + // Auto-size columns + // foreach ($sheet->getColumnIterator() as $column) { + // $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true); + // } - // if ($cellData['parentth'] == 'Sno') { - // $sheet->setCellValue("{$columnLetter}{$rowNumber}", $serial_no); - // } else { - // $sheet->setCellValue("{$columnLetter}{$rowNumber}", $cellData['value']); - // } + $dataRange = $sheet->calculateWorksheetDimension(); - // $columnLetter++; - // } - // $rowNumber++; - // $serial_no++; - // } + $sheet->getStyle($dataRange)->getAlignment() + ->setHorizontal(Alignment::HORIZONTAL_CENTER) + ->setVertical(Alignment::VERTICAL_CENTER) + ->setWrapText(true); - // $dataRange = "A" . ($subHeaderRow + 1) . ":" . chr(ord($columnLetter) - 1) . ($rowNumber - 1); - // $sheet->getStyle($dataRange)->applyFromArray([ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); + $sheet->getStyle('A1')->applyFromArray([ + 'alignment' => [ + 'wrapText' => false, // Disables text wrapping for A1 + ], + ]); + // Apply border to the entire sheet + preg_match('/([A-Z]+)(\d+):([A-Z]+)(\d+)/', $dataRange, $matches); - // if ($type == 2) { + if ($matches) { + $startColumn = $matches[1]; // A + $startRow = $matches[2]; // 1 + $endColumn = $matches[3]; // G + $endRow = $matches[4]; // 75 - // $rowNumber += 2; + // Convert column letter to index, reduce by 1, and convert back + $endColumnIndex = Coordinate::columnIndexFromString($endColumn) - 1; + $newEndColumn = Coordinate::stringFromColumnIndex($endColumnIndex); - // // Add premium data - // // dd($data); - // $labelArray = ["Premium", "GST (%)", "GST Amount (₹)", "Total"]; - // $premiumData = $data['premium_data']['data']; - // $premium = [$labelArray[0]]; - // $gst = [$labelArray[1]]; - // $gstAmt = [$labelArray[2]]; - // $total = [$labelArray[3]]; + // Generate the new range (e.g., "A1:F75" instead of "A1:G75") + $newDataRange = "{$startColumn}{$startRow}:{$newEndColumn}{$endRow}"; + // $sheet->getStyle($newDataRange)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN); + } - // foreach ($premiumData as $proposal => $insurers) { - // if ($proposal != 'Particulars') { - // foreach ($insurers as $insurer => $values) { - // $premium[] = $values[$labelArray[0]]; - // $gst[] = $values[$labelArray[1]]; - // $gstAmt[] = $values[$labelArray[2]]; - // $total[] = $values[$labelArray[3]]; - // } - // } - // } + $lastRow = count($lead_data) + 1; + $leadRange = "A1:C{$lastRow}"; - // foreach ([$premium, $gst, $gstAmt, $total] as $index => $rowData) { - // $columnLetter = 'B'; - // foreach ($rowData as $key => $value) { - // $sheet->setCellValue("{$columnLetter}{$rowNumber}", $value); - // if ($key === 0) { - // $sheet->getStyle("{$columnLetter}{$rowNumber}")->applyFromArray(['font' => ['bold' => true,],]); - // } - // $columnLetter++; - // } - // $rowNumber++; - // } - - // $premiumRange = "B" . ($rowNumber - 4) . ":" . chr(ord($columnLetter) - 2) . ($rowNumber - 1); - // // dd($premiumRange); - // $sheet->getStyle($premiumRange)->applyFromArray([ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); - // } - - // // Auto-size columns - // // foreach ($sheet->getColumnIterator() as $column) { - // // $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true); - // // } - - // $dataRange = $sheet->calculateWorksheetDimension(); - - // $sheet->getStyle($dataRange)->getAlignment() - // ->setHorizontal(Alignment::HORIZONTAL_CENTER) - // ->setVertical(Alignment::VERTICAL_CENTER) - // ->setWrapText(true); - - // $sheet->getStyle('A1')->applyFromArray([ - // 'alignment' => [ - // 'wrapText' => false, // Disables text wrapping for A1 - // ], - // ]); - - // // Apply border to the entire sheet - // preg_match('/([A-Z]+)(\d+):([A-Z]+)(\d+)/', $dataRange, $matches); - - // if ($matches) { - // $startColumn = $matches[1]; // A - // $startRow = $matches[2]; // 1 - // $endColumn = $matches[3]; // G - // $endRow = $matches[4]; // 75 - - // // Convert column letter to index, reduce by 1, and convert back - // $endColumnIndex = Coordinate::columnIndexFromString($endColumn) - 1; - // $newEndColumn = Coordinate::stringFromColumnIndex($endColumnIndex); - - // // Generate the new range (e.g., "A1:F75" instead of "A1:G75") - // $newDataRange = "{$startColumn}{$startRow}:{$newEndColumn}{$endRow}"; - // // $sheet->getStyle($newDataRange)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN); - // } - - // $lastRow = count($lead_data) + 1; - // $leadRange = "A1:D{$lastRow}"; - - // $sheet->getStyle($leadRange)->applyFromArray([ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, - // 'color' => ['argb' => 'FF000000'], // Black color - // ], - // ], - // ]); + $sheet->getStyle($leadRange)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, + 'color' => ['argb' => 'FF000000'], // Black color + ], + ], + ]); + } // Set filename $string = ($type == 2) ? 'QCR' : 'RFQ'; @@ -3015,4 +2924,242 @@ class LeadsController extends BaseController 'fileName' => $filename, ]; } + + public function convertNonEbJsonForQCR($jsonArr, $type, $proposeldata) + { + + $first_json = $jsonArr; + $first_json = array_merge($first_json, $proposeldata); + + if($type == 2){ + + // Column-wise Check: Remove headers and relevant data if qcr == 0 + foreach ($first_json['proposal_data']['over_all_column_data'] as $proposalKey => $proposalData) { + + if (($proposalData['qcr'] == 0 || $proposalData['qcr'] === false) || ($proposalData['stc'] == 0 || $proposalData['stc'] === false)) { + + // Remove matching parentHeader in headers + foreach ($first_json['table_data']['headers'] as $index => $header) { + if ($header['parentHeader'] === $proposalKey) { + unset($first_json['table_data']['headers'][$index]); + } + } + + // Remove data entries with matching parentth + foreach ($first_json['table_data']['data'] as &$item) { + $item['data'] = array_values(array_filter($item['data'], function ($entry) use ($proposalKey) { + return $entry['parentth'] !== $proposalKey; + })); + } + + // Remove proposalKey from over_all_column_data + unset($first_json['proposal_data']['over_all_column_data'][$proposalKey]); + + if($type == 2){ + // Remove proposalKey from premium_data + unset($first_json['premium_data']['data'][$proposalKey]); + } + } + + // Insurer Check: Remove subHeaders and relevant data for insurers with qcr == 0 + foreach ($proposalData['insurers'] as $insurerIndex => $insurer) { + if (($insurer['qcr'] === 0 || $insurer['qcr'] === false) || ($insurer['stc'] === 0 || $insurer['stc'] === false) ) { + foreach ($first_json['table_data']['headers'] as &$header) { + if (isset($header['subHeaders'])) { + $header['subHeaders'] = array_values(array_filter($header['subHeaders'], function ($sub) use ($insurer) { + return $sub !== $insurer['display_name']; + })); + } + } + + + foreach ($first_json['table_data']['data'] as &$item) { + $item['data'] = array_values(array_filter($item['data'], function ($entry) use ($insurer) { + return $entry['subth'] !== $insurer['display_name']; + })); + } + + // Remove insurer from proposal's insurers array + unset($first_json['proposal_data']['over_all_column_data'][$proposalKey]['insurers'][$insurerIndex]); + + if($type == 2){ + unset($first_json['premium_data']['data'][$proposalKey][$insurer['display_name']]); + } + } + } + } + + // Row-wise Check: Remove rows if qcr == 0 for actions + foreach ($first_json['table_data']['data'] as $rowKey => $rowData) { + foreach ($rowData['data'] as $data) { + if ( + isset($data['parentth']) && $data['parentth'] === "Action" && + ( + (isset($data['input_value']['qcr']) && $data['input_value']['qcr'] == 0) || + (isset($data['input_value']['stc']) && $data['input_value']['stc'] == 0) + ) + ) { + + unset($first_json['table_data']['data'][$rowKey]); + break; // Stop checking other columns for this row + } + } + } + + // Reindex arrays to maintain proper structure + $first_json['table_data']['headers'] = array_values($first_json['table_data']['headers']); + $first_json['table_data']['data'] = array_values($first_json['table_data']['data']); + $first_json['proposal_data']['over_all_column_data'] = array_map(function ($proposal) { + $proposal['insurers'] = array_values($proposal['insurers']); + return $proposal; + }, $first_json['proposal_data']['over_all_column_data']); + + }else{ + + //remove insurer as Subheaders for RFQ + foreach ($first_json['table_data']['headers'] as &$header) { + // Ensure 'subHeaders' exists and is an array before filtering + if (isset($header['subHeaders']) && is_array($header['subHeaders'])) { + $header['subHeaders'] = array_filter($header['subHeaders'], function ($subHeader) { + return in_array($subHeader, ['Quote asked', '-'], true); + }); + } + } + + //Remove insurer Row wise data for RFQ + foreach ($first_json['table_data']['data'] as &$row) { + + // Filter the inner data array + $row['data'] = array_filter( + $row['data'], + function ($item) { + return in_array($item['subth'], ['Quote asked', '-']); + } + ); + + $row['data'] = array_values($row['data']); + } + + // Ensure to unset the reference after the loop + unset($row); + + // Remove insurers from Proposal Data key for RFQ + foreach ($proposeldata['proposal_data']['over_all_column_data'] as $key => &$proposal) { + if (isset($proposal['insurers'])) { + // Set the insurers array to empty + $proposal['insurers'] = []; + } + } + + // Ensure to reset the reference + unset($proposal); + + } + return $first_json; + + return null; + } + + public function transformNonEbProposelData($data, $proposel, $insurer) + { + + // print_r($data['premium_data']['data']); die; + + $headerData = []; + + // Default headers: S. No and Particulars + $defaultHeaders = [ + [ + 'parentHeader' => 'Sno', + 'subHeaders' => ['-'] + ], + [ + 'parentHeader' => 'Particulars', + 'subHeaders' => ['-'] + ] + ]; + + // Add default headers to the result + $headerData = array_merge($headerData, $defaultHeaders); + + foreach ($data['table_data']['headers'] as $header) { + // Check if the parentHeader matches the target proposal + if ($header['parentHeader'] === $proposel) { + // Check if subHeaders contain the target insurer key + foreach ($header['subHeaders'] as $subHeader) { + if ($subHeader === $insurer) { + $headerData[] = [ + 'parentHeader' => $header['parentHeader'], + 'subHeaders' => [ + 'Quote asked', // Default value + $subHeader // Matched insurer key + ] + ]; + break; + } + } + } + } + + $columnData = []; + + foreach ($data['table_data']['data'] as $entry) { + + $sno = $entry['SNO']; + $items = $entry['items']; + $row_id = $entry['row_id']; + $dataEntry = $entry['data']; + + $result = [ + "SNO" => $sno, + "items" => $items, + "items" => $row_id, + "data" => [] + ]; + + foreach ($dataEntry as $item) { + + // Include Sno and Particulars by default + if (in_array($item['parentth'], ['Sno', 'Particulars'])) { + $result['data'][] = [ + "parentth" => $item['parentth'], + "subth" => $item['subth'], + "value" => $item['value'], + "input_value" => $item['input_value'], + "display_value" => $item['display_value'], + "rowspan" => $item['rowspan'], + ]; + } + + // Include Proposal with Quote Asked by default + if ($item['parentth'] === $proposel && $item['subth'] === "Quote asked") { + $result['data'][] = [ + "parentth" => $item['parentth'], + "subth" => $item['subth'], + "value" => $item['value'], + "input_value" => $item['input_value'], + "display_value" => $item['display_value'], + "rowspan" => $item['rowspan'], + ]; + } + + // Example of including matching specific proposals and insurers + if ($item['parentth'] === $proposel && $item['subth'] === $insurer) { + $result['data'][] = [ + "parentth" => $item['parentth'], + "subth" => $item['subth'], + "value" => $item['value'], + "input_value" => $item['input_value'], + "display_value" => $item['display_value'], + "rowspan" => $item['rowspan'], + ]; + } + } + + // Add to the final result + $columnData[] = $result; + } + + return $data; + } } diff --git a/app/Views/leads_form_handler.php b/app/Views/leads_form_handler.php index ec00e8a7..4554ef63 100644 --- a/app/Views/leads_form_handler.php +++ b/app/Views/leads_form_handler.php @@ -510,6 +510,10 @@ if (isset($selected_lead_type)) { selecSalsePerson(data.salse_person_id); } + let referenceDiv = document.getElementById('appendAreaForClaim'); + referenceDiv.innerHTML = ''; + referenceDiv.insertAdjacentHTML('beforeend', data.claims_details_html); + } catch (error) { console.error('Error in dynamicLeadsDataForEdit function:', error); } diff --git a/app/Views/leads_non_eb.php b/app/Views/leads_non_eb.php index 0f2065d4..9150b378 100644 --- a/app/Views/leads_non_eb.php +++ b/app/Views/leads_non_eb.php @@ -53,7 +53,7 @@ hr.solid { class="btn btn-primary waves-effect waves-light">Back -