diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 656b22a9..a41e48b6 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -447,6 +447,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) { $routes->get('downloadFullMemberDataExcelErrorFile/(:any)', 'LeadsController::downloadFullMemberDataExcelErrorFile/$1'); $routes->get('getMemberDataExcelFileErrors', 'LeadsController::getMemberDataExcelFileErrors'); $routes->post('savePlacementDataAndValidateMemberDataFile', 'LeadsController::savePlacementDataAndValidateMemberDataFile'); + $routes->post('savePlacementDataWithoutMail', 'LeadsController::savePlacementDataWithoutMail'); $routes->get('checkMemberDataFileValidationStatus', 'LeadsController::checkMemberDataFileValidationStatus'); $routes->match(['get', 'post', 'delete'], 'nhanceBranchMaster', 'MasterController::nhanceBranchMaster'); $routes->match(['get', 'post', 'delete'], 'vehicleTypeMaster', 'MasterController::vehicleTypeMaster'); diff --git a/app/Controllers/LeadsController.php b/app/Controllers/LeadsController.php index 6fa7e78e..ecfd8047 100644 --- a/app/Controllers/LeadsController.php +++ b/app/Controllers/LeadsController.php @@ -8326,6 +8326,105 @@ class LeadsController extends BaseController } } + public function savePlacementDataWithoutMail() + { + try { + $params = $this->request->getPost(); + + if (empty($params['lead_id'])) { + return $this->respond([ + 'status' => false, + 'code' => 400, + 'message' => 'Opportunity ID is required', + ], 400); + } + + $lead_id = $params['lead_id']; + $lead_data = $this->leadsModel->where('id', $lead_id)->first(); + + if (! $lead_data) { + return $this->respond([ + 'status' => false, + 'code' => 404, + 'message' => 'Lead not found', + ], 404); + } + + $data = [ + 'placement_date' => ! empty($params['placement_date']) ? change_date_format($params['placement_date']) : null, + 'payment_date' => ! empty($params['payment_date']) ? change_date_format($params['payment_date']) : null, + 'utr_no' => $params['utr_no'] ?? null, + 'is_cd' => $params['is_cd'] ?? null, + 'premium_amount' => $params['premium_amount'] ?? null, + 'total_amount' => $params['total_amount'] ?? null, + 'cd_amount' => $params['cd_amount'] ?? null, + 'no_of_installment' => $params['no_of_installment'] ?? null, + 'is_installment' => $params['is_installment'] ?? null, + 'agreed_percentage' => $params['agreed_percentage'] ?? null, + ]; + + if (! empty($params['acm_pk'])) { + $data['acm_id'] = $params['acm_pk']; + } + + if (! empty($params['policy_start_date'])) { + $converted_start = change_date_format($params['policy_start_date']); + if ($converted_start !== $lead_data['policy_start_date']) { + $data['policy_start_date'] = $converted_start; + } + } + + if (! empty($params['policy_end_date'])) { + $converted_end = change_date_format($params['policy_end_date']); + if ($converted_end !== $lead_data['policy_end_date']) { + $data['policy_end_date'] = $converted_end; + } + } + + if (! empty($params['tpa_id']) && strpos($params['tpa_id'], '-') !== false) { + list($tpaBranchId, $tpaId) = explode('-', $params['tpa_id']); + $data['tpa_branch_id'] = $tpaBranchId; + $data['tpa_id'] = $tpaId; + } + + $this->leadsModel->update($lead_id, $data); + + if (! empty($params['installments'])) { + $installments = json_decode($params['installments'], true); + + if (is_array($installments) && ! empty($installments)) { + foreach ($installments as $installment) { + $installment['payment_date'] = ! empty($installment['payment_date']) && strtotime($installment['payment_date']) + ? date('Y-m-d', strtotime($installment['payment_date'])) + : null; + + $installment['lead_id'] = $lead_id; + + if (! empty($installment['id'])) { + $this->leadInstallmentPaymentDetails->update($installment['id'], $installment); + } else { + $this->leadInstallmentPaymentDetails->insert($installment); + } + } + } + } + + return $this->respond([ + 'status' => true, + 'code' => 200, + 'message' => 'Placement data saved successfully', + 'lead_id' => $lead_id, + ], 200); + } catch (\Exception $e) { + return $this->respond([ + 'status' => false, + 'code' => 500, + 'message' => 'Error while saving placement data', + 'error' => $e->getMessage(), + ], 500); + } + } + public function checkMemberDataFileValidationStatus() { $lead_id = $this->request->getVar('lead_id'); diff --git a/app/Models/BdsPlacementModel.php b/app/Models/BdsPlacementModel.php index e27ecd9c..c0267eb8 100644 --- a/app/Models/BdsPlacementModel.php +++ b/app/Models/BdsPlacementModel.php @@ -115,6 +115,21 @@ class BdsPlacementModel extends Model return $data; } + private function addBusinessDays(int $days, ?string $fromDate = null): string + { + $date = new \DateTime($fromDate ?? 'today'); + $added = 0; + + while ($added < $days) { + $date->modify('+1 day'); + if ((int) $date->format('N') < 6) { + $added++; + } + } + + return $date->format('Y-m-d'); + } + public function getLeadInstallmentDetails() { $heads = $this->db->table('user_profiles') @@ -139,7 +154,7 @@ class BdsPlacementModel extends Model ->join("client_policy cp", "cp.id = leads.source_policy_id", "left") ->where("lipd.is_active", 1) ->where("lipd.utr_no IS NULL") - ->where("lipd.payment_date", date('Y-m-d', strtotime('+15 days'))); + ->where("lipd.payment_date", $this->addBusinessDays(5)); $data = $builder->get()->getResultArray(); diff --git a/app/Views/view_rfq.php b/app/Views/view_rfq.php index 2a88995d..f768f740 100644 --- a/app/Views/view_rfq.php +++ b/app/Views/view_rfq.php @@ -962,8 +962,14 @@