diff --git a/app/Config/Routes.php b/app/Config/Routes.php index ee9ad2c0..b6d181b3 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -22,7 +22,7 @@ $routes->get("update-policy-terms-for-corrections", "ClientController::updatePol $routes->get("update_rack_rate_json", "ClientController::updateRackRateJson"); $routes->get("updatajson", "EmpDataServiceController::updatajson"); $routes->get("view", "EmployeeController::viewECard/$1"); -// $routes->get("exportQCRandRFQ", "LeadsController::exportQCRandRFQ"); +$routes->get("exportQCRandRFQ/(:any)", "LeadsController::exportQCRandRFQ/$1"); $routes->get("smapletest", "ClientController::smapletest"); $routes->get("testMailAttachments", "ClientController::testMailAttachments"); $routes->get("updatePolicyTermsKey", "ClientController::updatePolicyTermsKey"); @@ -346,6 +346,8 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get('getCDAmount', 'ClientController::getCDAmount'); $routes->get('getTheEmpDataForClaim/(:any)', 'ClientController::getTheEmpDataForClaim/$1'); $routes->get('getTheEmpDataForClaimSearchByMobile/(:any)', 'ClientController::getTheEmpDataForClaimSearchByMobile/$1'); + $routes->get('getLeadNonEB/(:any)', 'LeadsController::getLeadNonEB/$1'); + $routes->get('getPolicyTypeFields', 'LeadsController::getPolicyTypeFields'); }); $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) { @@ -402,6 +404,7 @@ $routes->group("leads", ["filter" => "authMVC"], function ($routes) { $routes->group("rfq", ["filter" => "authMVC"], function ($routes) { $routes->post("create", "LeadsController::createRFQ"); + $routes->post("savePolicyInfo", "LeadsController::savePolicyInfo"); $routes->post("createQCR", "LeadsController::createQCR"); $routes->get("list/(:any)", "LeadsController::viewRFQ/$1"); $routes->get("nonEB","LeadsController::rfqNonEB"); @@ -436,6 +439,7 @@ $routes->post("/employeeRest/getVerifiedUserData", "RestAuthenticationController $routes->post("/employeeRest/verifyMpin", "RestAuthenticationController::verifyMpin"); $routes->post("/employeeRest/checkMpin", "RestAuthenticationController::checkMpin"); $routes->post("/employeeRest/verifyEmployeeEmailId", "RestAuthenticationController::verifyEmployeeWithEmailId"); +$routes->post("/employeeRest/updateEmpOTP", "RestAuthenticationController::updateEmpOTP"); //HR login api's $routes->post("/employeeRest/verifyHrWithMobileNumber", "RestAuthenticationController::verifyHrWithMobileNumber"); diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 7a2b57da..fb78c67b 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -4711,6 +4711,10 @@ class ClientController extends AdminController // $empmodel = new EmployeeModel(); // $data = $empmodel->getEmployeePolicy(348); // dd($data); + + + // $LeadsController = new LeadsController(); + // $LeadsController->constructNonEbExcelToSaveTemp(92, 2, "Proposal 2-ICICIPRU-ICICI001"); } // ------------------------------------------------------------------------------------------------------- @@ -4903,20 +4907,22 @@ class ClientController extends AdminController $memberData = []; $dataForClientAndInsurer = []; - $acms = db_connect()->table('user_profiles') - ->select('user_profiles.id, user_profiles.first_name') - ->where('user_profiles.is_active', 1) - ->where('user_profiles.role', 3) - ->get() - ->getResultArray(); - + // $acms = db_connect()->table('user_profiles') + // ->select('user_profiles.id, user_profiles.first_name') + // ->where('user_profiles.is_active', 1) + // ->where('user_profiles.role', 3) + // ->get() + // ->getResultArray(); + if(!empty($data) && count($data) > 0){ $memberData = $this->employeeModel->getEmployeeByEmployeeCode($data['emp_code'], $data['policy_id'], $client_id); $acms_datas = $this->employeeModel->getAcmUsingClientID($data['client_id']); - if(!empty($acms_datas)){ - $acms = $acms_datas; - } + // if(!empty($acms_datas)){ + // $acms = $acms_datas; + // } + }else{ + $acms_datas = ""; } @@ -4933,7 +4939,7 @@ class ClientController extends AdminController 'type' => $type, 'dataForClientAndInsurer' => $dataForClientAndInsurer, 'memberData' => $memberData, - 'acms' => $acms, + 'acms' => $acms_datas, ], 200); } else { return $this->respond([ @@ -4945,7 +4951,7 @@ class ClientController extends AdminController 'type' => $type, 'dataForClientAndInsurer' => $dataForClientAndInsurer, 'memberData' => $memberData, - 'acms' => $acms + 'acms' => $acms_datas ], 200); } } diff --git a/app/Controllers/EmployeeRestController.php b/app/Controllers/EmployeeRestController.php index 94a28fb6..f46fc522 100755 --- a/app/Controllers/EmployeeRestController.php +++ b/app/Controllers/EmployeeRestController.php @@ -2586,7 +2586,8 @@ class EmployeeRestController extends AdminController { $data['floter_text_heading'] = 'Sum Insured'; }else{ - if($terms->family_floater == 1){ $data['floter_text_heading'] = 'Floter Sum Insured'; }else{ $data['floter_text_heading'] = 'Sum Insured'; } + + if(isset($terms['family_floater']) && strpos(strtolower($terms['family_floater']), "no") !== false ){ $data['floter_text_heading'] = 'Sum Insured'; }else{ $data['floter_text_heading'] = 'Floter Sum Insured'; } } $employee_policy = $this->employeePolicyModel->select('employees.*,employee_polices.employee_id , employee_polices.basic_cover_si , employee_polices.premium , employee_polices.gst , employee_polices.tpa_id , employee_polices.rand_string , employee_polices.uhid as uhid') diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index f0f1cc7b..b361c5b3 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -28,6 +28,7 @@ use App\Models\InsurerBranchModel; use App\Models\TPABranchModel; use App\Models\RFQModel; use App\Models\InsurerModel; +use App\Models\OccupancyMasterModel; use App\Helpers\MailHelper; use App\Helpers\ExcelMergeHelper; @@ -37,7 +38,7 @@ use Kint\Kint; use App\Controllers\Jobs; use App\Controllers\JobWorker; - +use Google\Service\FactCheckTools\Resource\Claims; class LeadsController extends BaseController { @@ -60,6 +61,7 @@ class LeadsController extends BaseController protected $tpaBranchModel; protected $RFQModel; protected $insurerModel; + protected $occupancyModel; //variables for storing array protected $issuer; @@ -68,6 +70,7 @@ class LeadsController extends BaseController protected $leadsStatus; protected $claim_type_for_gpa; protected $cause_of_death; + protected $buisnessType; public function __construct() @@ -88,10 +91,12 @@ class LeadsController extends BaseController $this->tpaBranchModel = new TPABranchModel(); $this->RFQModel = new RFQModel(); $this->insurerModel = new InsurerModel(); + $this->occupancyModel = new OccupancyMasterModel(); $this->issuer = [1 => 'JIBS', 2 => 'Nhance']; $this->clientType = [1 => 'Group', 2 => 'Individual']; $this->leadType = [1 => 'Fresh', 2 => 'Renewal', 3 => 'Roll Over']; + $this->buisnessType = [1 => 'Industrial', 2 => 'Non Industrial']; $this->leadsStatus = [ 'queued' => 'Queued', 'qcr_sent' => 'QCR sent', @@ -113,19 +118,10 @@ class LeadsController extends BaseController 'suicide' => 'Suicide', 'accident' => 'Accident' ]; - } public function viewLeadsList() { - - // $d = $this->constructExcelToSaveTemp(24, 1, $propsal_and_insurer = null); - // $job_details = new Jobs(); - // $r = Jobs::addJob(['job_name' => 'calculateMembersDemography', 'payload' => ['lead_id' => 24]]); - // $d = $this->calculateMembersDemography(['lead_id' => 24]); - //$this->mergeQuoteExcelFileWithMembersListExcelFile(24, 1, $propsal_and_insurer = null); - // dd($d); - $data['page_name'] = 'Leads'; // Set basic data @@ -138,30 +134,13 @@ class LeadsController extends BaseController $data['policy_type'] = $this->policyTypeModel->where('is_active', 1)->findAll(); $data['entity'] = $this->kycEntityTypeModel->where('is_active', 1)->findAll(); - // Fetch insurer and TPA branch data - $data['insurer'] = $this->insurerBranchModel->getInsurerBranchesWithInsurerNames(); - $data['tpa'] = $this->tpaBranchModel->getTpaBranchesWithTpaNames(); - // print_r($data['tpa']);die(); - // Fetch sales team members who are active in team 5 - $data['salse_team'] = $this->userModel - ->select('user_profiles.*') - ->join('user_teams', 'user_profiles.id = user_teams.user_id') - ->where('user_teams.team_id', 5) - ->where('user_teams.is_active', 1) - ->where('user_profiles.is_active', 1) - ->findAll(); - - // dd($data); - $data['lastFiveYears'] = $this->getLastFiveFinancialYears(); - $data['gpaClaimType'] = $this->claim_type_for_gpa; - $data['causeOfDeath'] = $this->cause_of_death; // dd($lastFiveYears); if ($this->request->is('get')) { // Fetch leads data - $data ['lead_data_list'] = $this->leadsModel->getLeadDataForLising(); + $data['lead_data_list'] = $this->leadsModel->getLeadDataForLising(); // Load layout and pass data $this->loadLayout('lead_filter', $data); - }else{ + } else { $search_data = $this->request->getPost(); // print_r($search_data); @@ -172,7 +151,7 @@ class LeadsController extends BaseController $where[$search_objects] = $key; } } - + $data['lead_data_list'] = $this->leadsModel->getLeadDataForLising($where); $html = view('leads_list', $data); return $this->respond(['status' => true, 'html' => $html], 200); @@ -184,7 +163,7 @@ class LeadsController extends BaseController // print_r($this->request->getPost()); die; $id = $this->request->getPost('id'); $data = $this->prepareLeadData(); - // print_r($this->request->getPost()); die; + // print_r($data); die; if (!$id) { @@ -215,11 +194,68 @@ class LeadsController extends BaseController $data['client_code'] = generate_client_code('IC'); } - $data = $this->prepareMultipleLeadData($data); + if (isset($data['lead_form_type'])) { + $data = $this->prepareSingleLeadData($data); + } else { + $data = $this->prepareMultipleLeadData($data); + } // print_r($data); die; return $data; } + private function prepareSingleLeadData($data) + { + // print_r($data); die; + $uploadFilePath = WRITEPATH . 'uploads/lead_files/'; + + // Get all uploaded files for 'file_name[]' + $files = $this->request->getFileMultiple('file_name'); + + // print_r($files); die; + + + // Separate the insurer and insurer branch, handle missing or invalid data + if (isset($data['insurer']) && strpos($data['insurer'], '-') !== false) { + list($insurer_branch_id, $insurer_id) = explode('-', $data['insurer']); + } else { + $insurer_branch_id = 0; + $insurer_id = 0; + } + + $data['insurer_id'] = $insurer_id; + $data['insurer_branch_id'] = $insurer_branch_id; + + // Separate the insurer and insurer branch, handle missing or invalid data + if (isset($data['tpa']) && strpos($data['tpa'], '-') !== false) { + list($tpa_branch_id, $tpa_id) = explode('-', $data['tpa']); + } else { + $tpa_branch_id = 0; + $tpa_id = 0; + } + + $data['tpa_id'] = $tpa_id; + $data['tpa_branch_id'] = $tpa_branch_id; + + + if (!empty($data['policy_start_date'])) { + $data['policy_start_date'] = change_date_format($data['policy_start_date']); + } else { + $data['policy_start_date'] = null; + } + + if (!empty($data['policy_end_date'])) { + $data['policy_end_date'] = change_date_format($data['policy_end_date']); + } else { + $data['policy_end_date'] = null; + } + + $data['file_name'] = file_Upload($files, $uploadFilePath); + $processcedData[] = $data; + + // print_r($data);die(); + return $processcedData; + } + private function prepareMultipleLeadData($data) { // print_r($data); die; @@ -230,14 +266,13 @@ class LeadsController extends BaseController $files = $this->request->getFileMultiple('file_name'); // print_r($files); die; - - foreach($data['policy_type_id'] as $index => $value){ + + foreach ($data['policy_type_id'] as $index => $value) { // Separate the insurer and insurer branch, handle missing or invalid data if (isset($data['insurer'][$index]) && strpos($data['insurer'][$index], '-') !== false) { list($insurer_branch_id, $insurer_id) = explode('-', $data['insurer'][$index]); - - }else{ + } else { $insurer_branch_id = 0; $insurer_id = 0; } @@ -277,36 +312,22 @@ class LeadsController extends BaseController $policy_end_date = null; } - if(!empty($data['incurred_claim_date'][$index])){ + if (!empty($data['incurred_claim_date'][$index])) { $incurred_claims_date = change_date_format($data['incurred_claim_date'][$index], 'd/m/Y', 'Y-m-d'); - }else{ + } else { $incurred_claims_date = null; } - if(!empty($data['premium_date'][$index])){ + if (!empty($data['premium_date'][$index])) { $premium_date = change_date_format($data['premium_date'][$index], 'd/m/Y', 'Y-m-d'); - }else{ + } else { $premium_date = null; } $file_name = file_Upload($files[$index], $uploadFilePath); - $last_3_years_claims = null; - if($value != 2){ - $last_3_years_claims = []; - $finyear = json_decode($data['finyear']); + $last_3_years_claims = $data['finyear']; - foreach ($finyear as $year){ - $received_policy_type = ($year->finyear[0]->policy_type); - if ($value == $received_policy_type){ - array_push($last_3_years_claims,$year); - }else{ - continue; - } - } - $last_3_years_claims = json_encode($last_3_years_claims); - } - $processedData[] = [ 'lead_type' => $data['lead_type'], 'issuer' => $data['issuer'], @@ -328,18 +349,18 @@ class LeadsController extends BaseController 'policy_type_id' => $value, 'salse_person_id' => $data['salse_person_id'] ?? 0, - 'insurer_id' => $insurer_id ?? 0, - 'insurer_branch_id' => $insurer_branch_id ?? 0, - 'tpa_id' => $tpa_id ?? 0, - 'tpa_branch_id' => $tpa_branch_id ?? 0, - 'policy_start_date' => $policy_start_date, - 'policy_end_date' => $policy_end_date, - 'no_of_lives' => $data['no_of_lives'][$index] ?? null, - 'incurred_claims' => $data['incurred_claims'][$index] ?? 0, - 'location' => $data['location'][$index] ?? null, - 'proposed_insurer_id' => $proposed_insurer_id ?? 0, - 'proposed_insurer_branch_id' => $proposed_insurer_branch_id ?? 0, - 'proposed_tpa_id' => $proposed_tpa_id ?? 0, + 'insurer_id' => $insurer_id ?? 0, + 'insurer_branch_id' => $insurer_branch_id ?? 0, + 'tpa_id' => $tpa_id ?? 0, + 'tpa_branch_id' => $tpa_branch_id ?? 0, + 'policy_start_date' => $policy_start_date, + 'policy_end_date' => $policy_end_date, + 'no_of_lives' => $data['no_of_lives'][$index] ?? null, + 'incurred_claims' => $data['incurred_claims'][$index] ?? 0, + 'location' => $data['location'][$index] ?? null, + 'proposed_insurer_id' => $proposed_insurer_id ?? 0, + 'proposed_insurer_branch_id' => $proposed_insurer_branch_id ?? 0, + 'proposed_tpa_id' => $proposed_tpa_id ?? 0, 'proposed_tpa_branch_id' => $proposed_tpa_branch_id ?? 0, 'renewal_emp_count' => $data['renewal_emp_count'][$index] ?? 0, @@ -370,6 +391,9 @@ class LeadsController extends BaseController 'status' => $data['status'] ?? null, 'notes' => $data['notes'] ?? null, + + 'lead_form_type' => $data['lead_form_type'] ?? 1, + 'custom_fields' => $data['custom_fields'] ?? null, ]; } // print_r($processedData);die(); @@ -384,11 +408,13 @@ class LeadsController extends BaseController $insertCount[] = $insert; $this->insertLeadStatus($insert, $value['status'], 3); - //for this push the job to the calculateMembersDemography() function - $job_details = new Jobs(); - $r = Jobs::addJob(['job_name' => 'calculateMembersDemography', 'payload' => [ - 'lead_id' => $insert, - ]]); + if ($value['lead_form_type'] == 1) { + //for this push the job to the calculateMembersDemography() function + $job_details = new Jobs(); + $r = Jobs::addJob(['job_name' => 'calculateMembersDemography', 'payload' => [ + 'lead_id' => $insert, + ]]); + } } if (count($insertCount) > 0) { @@ -416,6 +442,12 @@ class LeadsController extends BaseController ->where('leads.is_active', 1) ->first(); + $data['lead_edit_data'] = $this->leadsModel + ->where('leads.id', $id) + ->where('leads.is_active', 1) + ->first(); + + if (!empty($data['policy_start_date'])) { $data['policy_start_date'] = change_date_format($data['policy_start_date'], 'Y-m-d', 'd/m/Y'); } else { @@ -440,6 +472,19 @@ class LeadsController extends BaseController $data['premium_date'] = null; } + $data['lastFiveYears'] = $this->getLastFiveFinancialYears(); + $data['gpaClaimType'] = $this->claim_type_for_gpa; + $data['causeOfDeath'] = $this->cause_of_death; + + if (!empty($data['fin_years_claims'])) { + $decoded = json_decode($data['fin_years_claims'], true); + $data['lead_edit_data']['fin_years_claims_array'] = isset($decoded['finyear']) ? $decoded['finyear'] : []; + } else { + $data['lead_edit_data']['fin_years_claims_array'] = []; + } + + $data['html'] = $this->generateViewPageHtml($data['policy_type_id'], $data) ?? ""; + if ($data) { return $this->respond(['status' => true, 'data' => $data], 200); } else { @@ -466,18 +511,18 @@ class LeadsController extends BaseController { $data['rfq_data'] = $this->RFQModel - ->where('lead_id', $id) - // ->where('type', $type) - ->where('is_active', 1) - ->orderBy('id', 'desc') - ->first(); + ->where('lead_id', $id) + // ->where('type', $type) + ->where('is_active', 1) + ->orderBy('id', 'desc') + ->first(); // dd($data); $data['rfq_count'] = $this->RFQModel - ->where('lead_id', $id) - // ->where('type', 1) - ->where('is_active', 1) - ->countAllResults(); + ->where('lead_id', $id) + // ->where('type', 1) + ->where('is_active', 1) + ->countAllResults(); $data['qcr_count'] = $this->RFQModel ->where('lead_id', $id) @@ -489,18 +534,18 @@ class LeadsController extends BaseController $data['lead_id'] = $id; $lead_data = $this->leadsModel - ->select(' + ->select(' leads.*, policy_type.question_json, policy_type.policy_type, policy_type.long_name, user_profiles.email as created_person_email ') - ->join('policy_type', 'leads.policy_type_id = policy_type.id') - ->join('user_profiles', 'leads.created_by = user_profiles.id', 'left') - ->where('leads.id', $id) - ->where('leads.is_active', 1) - ->first(); + ->join('policy_type', 'leads.policy_type_id = policy_type.id') + ->join('user_profiles', 'leads.created_by = user_profiles.id', 'left') + ->where('leads.id', $id) + ->where('leads.is_active', 1) + ->first(); // dd($lead_data); @@ -523,8 +568,8 @@ class LeadsController extends BaseController
In case of any query, please feel free to contact us.
Thank You!
"; - - + + $subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}"; $data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']); @@ -532,12 +577,58 @@ class LeadsController extends BaseController // dd($data); - $this->loadLayout('view_rfq.php', $data); + if ($data['lead_data']['lead_form_type'] == 1) { + + $this->loadLayout('view_rfq.php', $data); + } else if ($data['lead_data']['lead_form_type'] == 2) { + + $data['occupancy'] = $this->occupancyModel->findAll(); + // dd($data['occupancy']); + $data['policies'] = json_decode($data['question_json'], true)['policies']; + $data["child_table_data"] = json_decode($data['question_json'], true)['child_table_data']; + // $data['lead_register_data'] = json_decode($data['lead_data']['custom_fields']); + // dd($data['lead_register_data']); + $data['client_type'] = $this->clientType; + $data['buisness_type'] = $this->buisnessType; + $this->loadLayout('view_rfq_non_eb', $data); + } } + public function savePolicyInfo() + { + + $data = $this->request->getPost(); + + $lead_id = $data['lead_id']; + $json_data = $data['registration_json']; + + $existingJson = $this->RFQModel->where('is_active', 1)->where("lead_id", $lead_id)->first()['registration_json'] ?? null; + + if (empty($existingJson)) { + $this->RFQModel + ->where('lead_id', $lead_id) + ->where('type', 1) + ->where('is_active', 1) + ->set('is_active', 0) + ->update(); + + $insertData['lead_id'] = $lead_id; + $insertData['registration_json'] = json_encode($json_data); + + + $this->RFQModel->insert($insertData); + + return $this->respond(['status' => true, "message" => "Policy Inforamtion saved"]); + } else { + + return $this->respond(['status' => true, "message" => "Policy Inforamtion Already saved"]); + } + } + + public function createRFQ() { - + // print_r($this->request->getPost('json')); die(); $data = $this->request->getPost(); @@ -550,12 +641,37 @@ class LeadsController extends BaseController ->set('is_active', 0) ->update(); - $result = $this->RFQModel->insert($data); + $registrationJson = $data['registration_json'] ?? null; // Use null coalescing operator for safety + + if ($registrationJson) { + // If registration_json is provided, insert the data directly + $result = $this->RFQModel->insert($data); + } else { + // If registration_json is not provided, fetch the latest registration_json from the database + $this->RFQModel->select('registration_json') + ->where("lead_id", $lead_id) + ->order_by('id', 'DESC') // Assuming 'id' is an auto-increment field + ->limit(1); + + $query = $this->RFQModel->get(); + $latestRegistrationJson = $query->row()->registration_json ?? null; + + if ($latestRegistrationJson) { + // If a valid registration_json is found, update the data and insert + $data['registration_json'] = $latestRegistrationJson; + $result = $this->RFQModel->insert($data); + } else { + // If no registration_json is found, insert the data as-is + $result = $this->RFQModel->insert($data); + } + } if ($result) { $message = "RFQ submitted successfully"; - if($data['submit_type'] == 'QCR'){ $message = "QCR submitted successfully"; } + if ($data['submit_type'] == 'QCR') { + $message = "QCR submitted successfully"; + } return $this->respond(['status' => true, 'id' => $result, 'message' => $message, 'data' => $data], 200); } @@ -590,15 +706,20 @@ class LeadsController extends BaseController //export main route function - public function exportQCRandRFQ($lead_id, $type, $export_type) + public function exportQCRandRFQ($lead_id, $type, $lead_form_type) { - $this->exportExcelForQCRandRFQ($lead_id, $type); + $this->exportExcelForQCRandRFQ($lead_id, $type, $lead_form_type); } //FOR EXCEL - public function exportExcelForQCRandRFQ($lead_id, $type) + public function exportExcelForQCRandRFQ($lead_id, $type, $lead_form_type = 1) { - $filepath = $this->constructExcelToSaveTemp($lead_id, $type); + if ($lead_form_type == 2) { + $filepath = $this->constructNonEbExcelToSaveTemp($lead_id, $type); + } else { + $filepath = $this->constructExcelToSaveTemp($lead_id, $type); + } + $lead_data = $this->RFQModel->getRFQTableDataWithLeadIDAndType($lead_id, $type); // dd($filepath); @@ -1126,7 +1247,7 @@ class LeadsController extends BaseController $highestRowAndColumn = $members_sheet->getHighestRowAndColumn(); // dd($highestRowAndColumn); $uncleaned_members = $members_sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']); - $members = ExcelSanitizeHelper::sanitizeArrayData($uncleaned_members); + $members = ExcelSanitizeHelper::sanitizeArrayData($uncleaned_members); //get age band data $age_band_sheet = $spreadsheet->getSheet(1); $highestRowAndColumn = $age_band_sheet->getHighestRowAndColumn(); @@ -1161,21 +1282,21 @@ class LeadsController extends BaseController $result = $this->generateClassifierSpreadsheet($classifiers, WRITEPATH . 'uploads/lead_files/'); if ($result['success']) { $this->myLogger->logme('error', "Spreadsheet generated successfully!"); - + echo "Location: " . $result['fullpath'] . "\n"; echo "Filename: " . $result['filename'] . "\n"; $filePaths = [ ['file_path' => WRITEPATH . 'uploads/lead_files/' . $lead_data['file_name'], 'sheets' => [0, 1]], - ['file_path' => WRITEPATH.'/uploads/lead_files/' . $result['filename'], 'sheets' => []], + ['file_path' => WRITEPATH . '/uploads/lead_files/' . $result['filename'], 'sheets' => []], ]; $outputPath = WRITEPATH . 'uploads/lead_files/Member_Data.xlsx'; $result_merge = ExcelMergeHelper::mergeExcelFiles($filePaths, $outputPath); if ($result_merge) { // Call the delete function after the file is successfully created - $deleteResponse = $this->deleteGeneratedFile($result['fullpath']); - - // Add delete message to response - $response['deleteMessage'] = $deleteResponse['message']; + $deleteResponse = $this->deleteGeneratedFile($result['fullpath']); + + // Add delete message to response + $response['deleteMessage'] = $deleteResponse['message']; return ['status' => 'success', 'message' => 'Member_Data Merged Suceesfully']; } } else { @@ -1307,17 +1428,17 @@ class LeadsController extends BaseController throw new Exception("Failed to create directory: $outputDir"); } } - + // Check if directory is writable if (!is_writable($outputDir)) { throw new Exception("Directory is not writable: $outputDir"); } - + // Generate unique filename $timestamp = date('Y-m-d_His'); $filename = "member_classification_{$timestamp}.xlsx"; $filepath = $outputDir . DIRECTORY_SEPARATOR . $filename; - + // Check if file already exists (shouldn't happen with timestamp, but just in case) if (file_exists($filepath)) { $counter = 1; @@ -1327,31 +1448,31 @@ class LeadsController extends BaseController $filename = "member_classification_{$timestamp}_{$counter}.xlsx"; $filepath = $outputDir . DIRECTORY_SEPARATOR . $filename; } - + $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setTitle('Demography_Data'); - + // Get all age bands $age_bands = array_keys(reset($classifiers['general'])); array_pop($age_bands); // Remove 'Grand Total' $age_bands[] = 'Grand Total'; // Add it back at the end - + $currentRow = 5; // Start from row 5 to match the example - + // Function to write section data $writeSectionData = function ($data, $sheet, &$currentRow, $si_type) use ($age_bands) { // Add section header for the SI type $sheet->setCellValue('B' . $currentRow, strtoupper($si_type)); - + // Style section header $sheet->getStyle('B' . $currentRow)->applyFromArray([ 'font' => ['bold' => true, 'size' => 14], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER], ]); - + $currentRow++; // Move to the next row after the section header - + // Set headers for the data table $sheet->setCellValue('B' . $currentRow, 'Relationship'); $col = 'C'; @@ -1359,7 +1480,7 @@ class LeadsController extends BaseController $sheet->setCellValue($col . $currentRow, $band); $col++; } - + // Style headers $lastCol = chr(ord('B') + count($age_bands)); $headerRange = 'B' . $currentRow . ':' . $lastCol . $currentRow; @@ -1375,9 +1496,9 @@ class LeadsController extends BaseController 'horizontal' => Alignment::HORIZONTAL_CENTER, ], ]); - + $currentRow++; - + // Write data rows foreach ($data as $relation => $values) { if ($relation !== 'Grand Total') { @@ -1388,7 +1509,7 @@ class LeadsController extends BaseController $sheet->setCellValue($col . $currentRow, $value); $col++; } - + // Style data row $dataRange = 'B' . $currentRow . ':' . $lastCol . $currentRow; $sheet->getStyle($dataRange)->applyFromArray([ @@ -1402,11 +1523,11 @@ class LeadsController extends BaseController 'horizontal' => Alignment::HORIZONTAL_CENTER, ], ]); - + $currentRow++; } } - + // Add Grand Total row $sheet->setCellValue('B' . $currentRow, 'Grand Total'); $col = 'C'; @@ -1414,7 +1535,7 @@ class LeadsController extends BaseController $sheet->setCellValue($col . $currentRow, $data['Grand Total'][$band]); $col++; } - + // Style Grand Total row $totalRange = 'B' . $currentRow . ':' . $lastCol . $currentRow; $sheet->getStyle($totalRange)->applyFromArray([ @@ -1433,31 +1554,31 @@ class LeadsController extends BaseController 'horizontal' => Alignment::HORIZONTAL_CENTER, ], ]); - + $currentRow += 3; // Add gap after each section }; - + // Write each SI section with gaps foreach ($classifiers as $si_type => $data) { $writeSectionData($data, $sheet, $currentRow, $si_type); } - + // Auto-size columns foreach (range('B', chr(ord('B') + count($age_bands))) as $col) { $sheet->getColumnDimension($col)->setAutoSize(true); } - + // Create Excel file try { // Create Excel file $writer = new Xlsx($spreadsheet); $writer->save($filepath); - + // Verify file was created successfully if (!file_exists($filepath)) { throw new Exception("Failed to create file: $filepath"); } - + // Return the file info after creation $response = [ 'success' => true, @@ -1467,7 +1588,6 @@ class LeadsController extends BaseController ]; return $response; - } catch (Exception $e) { return [ 'success' => false, @@ -1475,7 +1595,7 @@ class LeadsController extends BaseController ]; } } - + // Function to delete generated file public function deleteGeneratedFile($filePath) { @@ -1499,7 +1619,7 @@ class LeadsController extends BaseController ]; } } - + public function getAge($available_col, $member, $col_index) { if ($available_col == 'age') { @@ -1580,7 +1700,7 @@ class LeadsController extends BaseController $cc_data = isset($params['cc']) ? $params['cc'] : ""; $param_cc_mail = json_decode($cc_data, true); - + if (isset($param_cc_mail) && is_array($param_cc_mail) && count($param_cc_mail) > 0) { // Fetch user data where ID is in the param_cc_mail array $userData = $this->userModel @@ -1611,7 +1731,7 @@ class LeadsController extends BaseController $bcc_data = isset($params['bcc']) ? $params['bcc'] : ""; $param_bcc_mail = json_decode($bcc_data, true); - + if (isset($param_bcc_mail) && is_array($param_bcc_mail) && count($param_bcc_mail) > 0) { // Fetch user data where ID is in the param_cc_mail array $userData = $this->userModel @@ -1645,8 +1765,15 @@ 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); - log_message('error','File Info'.json_encode($file_info)); + + 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']; $temp_file_name = $file_info['fileName']; @@ -1660,7 +1787,7 @@ class LeadsController extends BaseController $result = ExcelMergeHelper::mergeExcelFiles($filePaths, $outputPath); // print_rr($result); } - }else{ + } else { $result = $file_info['filePath']; // return $this->respond(['status' => 'fail', 'code' => 200, 'messgae' => 'File Not Found'], 200); } @@ -1697,12 +1824,12 @@ class LeadsController extends BaseController $original_message = 'We are reaching out to request a quotation for the following insurance coverage. Please review the details below and provide your quote at your earliest convenience.
| Client name | {{CLIENT_NAME}} |
|---|---|
| Coverage Type | {{POLICY_LONG_NAME}} |
| Policy Start Date | {{POLICY_START_DATE}} |
| Policy Duration | {{DURATION}} |
Please feel free to reach out if you require any further information to prepare the quote. We look forward to receiving your proposal.
Best regards,
Nhance India Pvt Ltd
© Nhance India Pvt Ltd. All rights reserved.
We are reaching out to request a quotation for the following insurance coverage. Please review the details below and provide your quote at your earliest convenience.
| Client name | {{CLIENT_NAME}} |
|---|---|
| Coverage Type | {{POLICY_LONG_NAME}} |
| Policy Start Date | {{POLICY_START_DATE}} |
| Policy Duration | {{DURATION}} |
Please feel free to reach out if you require any further information to prepare the quote. We look forward to receiving your proposal.
Best regards,
Nhance India Pvt Ltd
© Nhance India Pvt Ltd. All rights reserved.