diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index a490bddc..9bf373ce 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -4685,7 +4685,7 @@ class ClientController extends AdminController // ------------- LEADS CONTROLLER ---------------------------------------------------------- - // $LeadsController = new LeadsController(); + $LeadsController = new LeadsController(); // $RFQModel = new RFQModel(); // $data = $RFQModel->where('is_active', 1)->where('lead_id', 40)->first(); @@ -4699,6 +4699,8 @@ class ClientController extends AdminController // $returndata = $LeadsController->convertQCRJsonToPolicyTerms($jsonArray, $policy_type, $proposel_name, $insurer_name); // dd($returndata); + $LeadsController->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => 169]); + // -----------BDS REPORT CONTROLLER--------------------------------------------------------------------------------- // $BDSReportController = new BDSReportController(); diff --git a/app/Controllers/EmployeeController.php b/app/Controllers/EmployeeController.php index a11921fb..0bcc03c5 100755 --- a/app/Controllers/EmployeeController.php +++ b/app/Controllers/EmployeeController.php @@ -444,6 +444,8 @@ class EmployeeController extends AdminController $filePath = ROOTPATH . 'public/sample_excel/enrollment.xlsx'; }else if ($actionType == 'missed_inception') { $filePath = ROOTPATH . 'public/sample_excel/sample_inception.xls'; + }else if ($actionType == 'member_data') { + $filePath = ROOTPATH . 'public/sample_excel/Sample_Member_Data.xlsx'; } // Check if the file exists diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index b001edf1..199c8d3b 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -712,6 +712,12 @@ class LeadsController extends BaseController $subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}"; } + if($lead_data['policy_type_id'] == 1){ + $data['totalSumAssured'] = $this->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => $id]); + }else{ + $data['totalSumAssured'] = []; + } + $data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']); $data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']); @@ -1762,7 +1768,7 @@ class LeadsController extends BaseController ['file_path' => WRITEPATH . 'uploads/lead_files/' . $lead_data['file_name'], 'sheets' => [0, 1]], ['file_path' => WRITEPATH . '/uploads/lead_files/' . $result['filename'], 'sheets' => []], ]; - $outputPath = WRITEPATH . 'uploads/lead_files/Member_Data.xlsx'; + $outputPath = WRITEPATH . 'uploads/lead_files/' .$lead_data['file_name']; $result_merge = ExcelMergeHelper::mergeExcelFiles($filePaths, $outputPath); if ($result_merge) { // Call the delete function after the file is successfully created @@ -4077,4 +4083,71 @@ class LeadsController extends BaseController return $attachments; } + + public function handleMemberDataGPATotalSumInsurerFromExcel($params) + { + $lead_id = $params['lead_id']; + $lead_data = $this->leadsModel->find($lead_id); + // dd($lead_data); + $file_name_with_path = WRITEPATH . "/uploads/lead_files/" . $lead_data['file_name']; + // dd($file_name_with_path); + + if (!$lead_data) { + return ['status' => 'failed', 'message' => 'Lead data not found']; + } + + if ($lead_data['file_name']) { + + //check physical file + if (!file_exists($file_name_with_path)) { + + $message = "Lead Physcial file not found"; + $this->myLogger->logme('error', ($message . ' for file ' . $file_name_with_path)); + return ['status' => 'failed', 'message' => 'no physical file']; + } + + $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path); + + //get members data + $members_sheet = $spreadsheet->getSheet(0); + $highestRowAndColumn = $members_sheet->getHighestRowAndColumn(); + // dd($highestRowAndColumn); + + $uncleaned_members = $members_sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']); + // dd($uncleaned_members); + + $members = ExcelSanitizeHelper::sanitizeArrayData($uncleaned_members); + // dd($members); + + + // Check column headings + $members_heading = $members[0]; + $available_col = []; + + $lower_headers = array_map('strtolower', $members_heading); + foreach ($lower_headers as $index => $header) { + if (preg_match('/^sa\s*-\s*option\s*\d*$/i', $header)) { + $column_name = $members_heading[$index]; + $sum = 0; + + for ($i = 1; $i < count($members); $i++) { + $cell_raw = $members[$i][$index] ?? ''; + $cell_clean = preg_replace('/[^0-9.\-]/', '', $cell_raw); // remove non-numeric chars + + if ($cell_clean !== '' && is_numeric($cell_clean)) { + $sum += (float) $cell_clean; + } + } + + $available_col[] = $sum; + } + } + + + // dd($available_col); + return $available_col; + } + + return []; + } } diff --git a/app/Views/leads_form_handler.php b/app/Views/leads_form_handler.php index c6f463df..363baef6 100644 --- a/app/Views/leads_form_handler.php +++ b/app/Views/leads_form_handler.php @@ -346,14 +346,21 @@ if (isset($selected_lead_type)) { let placeholder = isFirstField ? 'First file must be Demography.' : ''; let accept = isFirstField ? '.xls,.xlsx' : ''; + if(selected_lead_form_type != 1){ placeholder = ''; accept = ''; } + + let sample_dwn_link = ""; + if(selected_lead_form_type == 1 && isFirstField == 1){ + sample_dwn_link = ' [ " id="excel_download" data-toggle="tooltip" data-placement="top" title="Download Sample Excel">Sample Excel ]'; + } + div.innerHTML = `