From 6f8f617222e1ea59485648ab25668343724016e4 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 27 Mar 2025 13:13:35 +0530 Subject: [PATCH] FEAT_PLACEMENT_JSON_CLIENT_POLICY : RV --- app/Controllers/ClientController.php | 12 ++++- app/Controllers/LeadsController.php | 76 +++++++++++++++++++++++++--- app/Models/ClientPolicyModel.php | 1 + app/Views/leads_form_handler.php | 19 +++++++ 4 files changed, 100 insertions(+), 8 deletions(-) diff --git a/app/Controllers/ClientController.php b/app/Controllers/ClientController.php index 063e4b58..53de23a7 100755 --- a/app/Controllers/ClientController.php +++ b/app/Controllers/ClientController.php @@ -4713,7 +4713,8 @@ class ClientController extends AdminController // dd($data); - // $LeadsController = new LeadsController(); + $LeadsController = new LeadsController(); + $RFQModel = new RFQModel(); // $path = $LeadsController->constructNonEbExcelToSaveTemp(106, 2, "Proposal 2-ICICIPRU-ICICI001"); // $filepath = $path['filePath']; @@ -4735,6 +4736,15 @@ class ClientController extends AdminController // } else { // echo "File does not exist."; // } + + // $data = $this->leadsModel->where('leads.id', 115)->where('leads.is_active', 1)->first(); + // $RFQdata = $RFQModel->getRFQTableDataWithLeadIDAndType(115, 2); + // Kint::dump($RFQdata['json']); + // $returnData = $LeadsController->getPlacementJson($data); + // $this->clientPolicyModel->where('id', 6050)->set('placement_json', $returnData)->update(); + // dd($returnData); + + } // ------------------------------------------------------------------------------------------------------- diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index fd394c90..c9f6a26a 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -584,8 +584,17 @@ class LeadsController extends BaseController $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']; + + if($lead_data['lead_type'] == 2){ + $client_policy_data = $this->clientPolicyModel->where('is_active', 1)->where('id', $lead_data['source_policy_id'])->first(); + $data['rfq_data']['json'] = $client_policy_data['placement_json']; + } + + if(!empty($data['question_json'])){ + $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; @@ -2272,8 +2281,6 @@ class LeadsController extends BaseController 'policy_status' => 1, ]; - $terms = $this->preparePolicyTermsFromRFQ($data); - $policy_type_id = $data['policy_type_id']; if (in_array($policy_type_id, [1, 2, 6, 7])) { $client_policy_data['is_addon'] = 1; // Base Policy @@ -2287,8 +2294,16 @@ class LeadsController extends BaseController // } } - $client_policy_data['policy_terms'] = $this->preparePolicyTermsFromRFQ($data); + if($data['lead_form_type'] == 1){ + $client_policy_data['policy_terms'] = $this->preparePolicyTermsFromRFQ($data); + }else{ + $placementJson = $this->getPlacementJson($data); + if ($placementJson) { + $client_policy_data['placement_json'] = $placementJson; + } + + } // print_r($client_policy_data); die; return $client_policy_data; @@ -2298,7 +2313,7 @@ class LeadsController extends BaseController { $proposel_data = json_decode($data['proposel_data'], true); - $QCRData = $this->RFQModel->where('is_active', 1)->where('type', 2)->where('lead_id', $data['id'])->first(); + $QCRData = $this->RFQModel->where('is_active', 1)->where('lead_id', $data['id'])->first(); $JSON = json_decode($QCRData['json'], true); @@ -2405,6 +2420,40 @@ class LeadsController extends BaseController return $this->respond(['status' => false, 'message' => 'Failed to create policy', 'data' => $data], 200); } + public function getPlacementJson(array $data): ?string + { + $proposel_data = json_decode($data['proposel_data'], true); + + $QCRData = $this->RFQModel + ->where('is_active', 1) + ->where('lead_id', $data['id']) + ->first(); + + if (!$QCRData || empty($QCRData['json'])) { + return null; + } + + $jsonArray = json_decode($QCRData['json'], true); + $proposalData = array_pop($jsonArray); // Get last item and remove it from the array + + if (empty($jsonArray)) { + return null; + } + + $placement_json_data = array_map(function ($jsonData) use ($proposel_data) { + return $this->transformNonEbProposelData( + $jsonData, + $proposel_data['proposel_name'] ?? '', + $proposel_data['insurer_name'] ?? '', null, 1 + ); + }, $jsonArray); + + $placement_json_data[] = $proposalData; + + return json_encode($placement_json_data); + } + + //------------------------------------------------------------------------------------------------ @@ -3268,7 +3317,7 @@ class LeadsController extends BaseController return null; } - public function transformNonEbProposelData(&$data, $proposal, $insurer, $tableCount) + public function transformNonEbProposelData(&$data, $proposal, $insurer, $tableCount=null, $actionColumn = null) { // Kint::dump($data, $proposal, $insurer, $tableCount); @@ -3305,6 +3354,13 @@ class LeadsController extends BaseController // Update the original data's headers $data['table_data']['headers'] = $headerData; + if(!empty($actionColumn)){ + $data['table_data']['headers'][] = [ + 'parentHeader' => "Action", + 'subHeaders' => ['-'] + ]; + } + foreach ($data['table_data']['data'] as &$entry) { $sno = $entry['SNO']; @@ -3329,6 +3385,12 @@ class LeadsController extends BaseController if ($item['parentth'] === $proposal && $item['subth'] === $insurer) { $filteredData[] = $item; } + + if(!empty($actionColumn)){ + if($item['parentth'] === "Action"){ + $filteredData[] = $item; + } + } } // Update the entry with filtered data diff --git a/app/Models/ClientPolicyModel.php b/app/Models/ClientPolicyModel.php index c8fcb855..360081a4 100755 --- a/app/Models/ClientPolicyModel.php +++ b/app/Models/ClientPolicyModel.php @@ -54,6 +54,7 @@ class ClientPolicyModel extends Model "is_member_modify_allowed", "cd_ac_pk", "is_lgbtq", + "placement_json", ]; // Callbacks diff --git a/app/Views/leads_form_handler.php b/app/Views/leads_form_handler.php index dff317ef..05fe57f2 100644 --- a/app/Views/leads_form_handler.php +++ b/app/Views/leads_form_handler.php @@ -294,6 +294,25 @@ if (isset($selected_lead_type)) { $('#salse_person_id').trigger('change'); } + function validateInput(input, table, field){ + + let value = $(input).val(); + let label = $(input).closest('.form-group').find('label').text().replace('*', '').trim(); + + let message = "Value is duplicate!"; + if(label){ + message = label + " already exists!"; + } + + checkDuplicateTableFieldValue(table, field, value, function(isDuplicate) { + if (isDuplicate) { + toastr.warning(message, 'WARNING'); + $(input).val('') + } + }); + + } +