From 5983161f835463f85ffc7952f3efa1009773a2be Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Thu, 27 Nov 2025 14:24:21 +0530 Subject: [PATCH] Quick Quote create and list API : GWM --- app/Config/Routes.php | 1 + app/Controllers/EnquiryController.php | 84 ++++++++++++++++++++++++--- app/Models/EnquiryModel.php | 4 +- app/Models/QuotationModel.php | 3 +- 4 files changed, 83 insertions(+), 9 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 03db8c4..956aaff 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -90,6 +90,7 @@ $routes->group('api', ['filter' => 'appSignature'], function ($routes) { $routes->post('enquiry/uploadEnquiryFiles', 'EnquiryController::uploadEnquiryFiles'); $routes->get('enquiry/downloadEnquiryFiles', 'EnquiryController::downloadEnquiryFiles'); $routes->get('enquiry/enquiryFiles', 'EnquiryController::enquiryFiles'); + $routes->get('enquiry/getQuickQuoteEnquiryList', 'EnquiryController::getQuickQuoteEnquiryList'); //Proposal diff --git a/app/Controllers/EnquiryController.php b/app/Controllers/EnquiryController.php index 4c19455..d99c760 100644 --- a/app/Controllers/EnquiryController.php +++ b/app/Controllers/EnquiryController.php @@ -93,6 +93,49 @@ class EnquiryController extends ResourceController } } + public function getQuickQuoteEnquiryList() + { + try { + $manager_id = $this->request->getGet('manager_id'); + + $data = $this->enquiryModel->select('partner_enquiry.*, partner_enquiry.name as insured_name, + VT.vehicle_type as vehicle_type, + A.name as agent_name, A.agent_code, + I.name as insurer_name,I.short_name as insurer_short_name, + S.name as assigned_to_name, + Q.id as quotation_id, + P.payment_mode, + P.premium_amount, + P.policy_number, + P.id as policy_id, + P.policy_pdf_file_name, + PB.name as broker_name, + pm.id as payment_mode_id , + pm.value as payment_mode_value' + ) + ->join('vehicle_type VT', 'VT.id = partner_enquiry.vehicle_type_id', 'left') + ->join('partner_agent A', 'A.id = partner_enquiry.agent_id', 'left') + ->join('partner_staff S', 'S.id = partner_enquiry.assigned_to', 'left') + ->join('partner_quotation Q', 'Q.enquiry_id = partner_enquiry.id AND Q.status = "Accepted" ', 'left') + ->join('insurers I', 'I.id = partner_enquiry.insurer_id', 'left') + ->join('partner_policy P', 'P.quotation_id = Q.id', 'left') + ->join('partner_brokers PB', 'PB.id = partner_enquiry.broker_id', 'left') + ->join('partner_payment_mode_master pm', 'pm.id = Q.payment_mode_id', 'left') + ->where('partner_enquiry.is_active', 1) + ->where('partner_enquiry.is_quick_quote', 1) + ->where('partner_enquiry.manager_id', $manager_id) + ->orderBy('partner_enquiry.created_on', 'ASC') + ->findAll(); + + + + return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data ], 200); + + } catch (\Exception $e) { + return $this->respond(['status' => 'failed', 'code' => 500, 'error' => $e->getMessage()], 500); + } + } + // List all enquiries public function enquiryQuotePolicyView() { @@ -235,11 +278,11 @@ class EnquiryController extends ResourceController 'manager_id' => $data['manager_id'] , 'created_by' => $data['created_by'], 'is_data_created_by_staff' => $data['is_data_created_by_staff'] ?? 1 , - - 'assigned_to' => $data['assigned_to'] ?? 0, - 'insurer_id' => $data['insurer_id'] ?? 0, - 'insurer_branch_id'=> $insurerBranchresult['id'] ?? 0, - 'broker_id' => $data['broker_id'] ?? 0, + 'assigned_to' => $data['assigned_to'] ?? 0, + 'insurer_id' => $data['insurer_id'] ?? 0, + 'insurer_branch_id' => $insurerBranchresult['id'] ?? 0, + 'broker_id' => $data['broker_id'] ?? 0, + 'is_quick_quote' => $data['is_quick_quote'] ?? 0 ]; @@ -247,8 +290,35 @@ class EnquiryController extends ResourceController // trigger_email('enquiry_created', ['enquiry_id' => $enquiryId]); - //create Quotation ana mark as accepted - if($data['is_data_created_by_staff'] == 1) + // QUOTATION MULTIPLE INSERT LOGIC + if ($data['is_data_created_by_staff'] == 1 && !empty($data['quotation']) && is_array($data['quotation'])) + { + foreach ($data['quotation'] as $q) { + + //get insurer_branch_id + if(isset($q['insurer_id'])) + { + $query = $this->db->query("SELECT id FROM insurer_branch WHERE insurer_id = ? LIMIT 1", [$q['insurer_id']]); + $insurerBranchresult = $query->getRowArray(); + } + + $quotationData = [ + 'enquiry_id' => $enquiryId, + 'insured_declared_value' => $q['insured_declared_value'] ?? 0, + 'premium_amount' => $q['premium_amount'] ?? 0, + 'insurance_plan_type_id' => $q['insurance_plan_type_id'] ?? 0, + 'insurer_id' => $q['insurer_id'] ?? 0, + 'insurer_branch_id' => $insurerBranchresult['id'] ?? 0, + 'manager_id' => $data['manager_id'], + 'payment_mode_id' => $q['payment_mode_id'] ?? 0, + 'created_by' => $data['created_by'] , + 'is_quick_quote' => $data['is_quick_quote'] ?? 0, + ]; + + $this->QuotationModel->insert($quotationData); + } + } + else if($data['is_data_created_by_staff'] == 1) { $quotationData = [ diff --git a/app/Models/EnquiryModel.php b/app/Models/EnquiryModel.php index d5e75dc..bb4a3a0 100644 --- a/app/Models/EnquiryModel.php +++ b/app/Models/EnquiryModel.php @@ -31,6 +31,7 @@ class EnquiryModel extends Model 'is_data_created_by_staff', 'is_data_created_by_manager', 'broker_id', + 'is_quick_quote' ]; protected $useTimestamps = true; @@ -58,12 +59,13 @@ class EnquiryModel extends Model ->join('vehicle_type VT', 'VT.id = partner_enquiry.vehicle_type_id', 'left') ->join('partner_agent A', 'A.id = partner_enquiry.agent_id', 'left') ->join('partner_staff S', 'S.id = partner_enquiry.assigned_to', 'left') - ->join('partner_quotation Q', 'Q.enquiry_id = partner_enquiry.id AND Q.status = "Accepted"', 'left') + ->join('partner_quotation Q', 'Q.enquiry_id = partner_enquiry.id AND Q.status = "Accepted" ', 'left') ->join('insurers I', 'I.id = partner_enquiry.insurer_id', 'left') ->join('partner_policy P', 'P.quotation_id = Q.id', 'left') ->join('partner_brokers PB', 'PB.id = partner_enquiry.broker_id', 'left') ->join('partner_payment_mode_master pm', 'pm.id = Q.payment_mode_id', 'left') ->where('partner_enquiry.is_active', 1) + ->where('partner_enquiry.is_quick_quote', 0) ->orderBy('partner_enquiry.created_on', 'ASC'); if($status != null){ diff --git a/app/Models/QuotationModel.php b/app/Models/QuotationModel.php index 4fef068..af6e716 100644 --- a/app/Models/QuotationModel.php +++ b/app/Models/QuotationModel.php @@ -23,7 +23,8 @@ class QuotationModel extends Model 'updated_by', 'action_by', 'action_user', - 'payment_mode_id' + 'payment_mode_id', + 'is_quick_quote' ]; protected $useTimestamps = false; }