db->table('motor_quote q') ->select('q.*, v.license_plate_number, v.vehicle_maincode, v.registration_date') ->join('motor_vehicle v', 'v.quote_id = q.id', 'left') ->orderBy('q.id', 'DESC'); if (!empty($filters['status'])) { $builder->where('q.status', $filters['status']); } if (!empty($filters['enquiry_id'])) { $builder->like('q.enquiry_id', $filters['enquiry_id']); } if (!empty($filters['quote_number'])) { $builder->like('q.quote_number', $filters['quote_number']); } if (!empty($filters['license_plate'])) { $builder->like('v.license_plate_number', $filters['license_plate']); } return $builder->get()->getResultArray(); } public function getDetail(int $quoteId): ?array { $quote = $this->find($quoteId); if (!$quote) { return null; } $vehicleModel = new MotorVehicleModel(); $kycModel = new MotorKycModel(); $paymentModel = new MotorPaymentModel(); $policyModel = new MotorPolicyModel(); $quote['vehicle'] = $vehicleModel->where('quote_id', $quoteId)->first(); $quote['kyc'] = $kycModel->where('quote_id', $quoteId)->orderBy('id', 'DESC')->first(); $quote['payment'] = $paymentModel->where('quote_id', $quoteId)->orderBy('id', 'DESC')->first(); $quote['policy'] = $policyModel->where('quote_id', $quoteId)->first(); if (!empty($quote['coverage_details']) && is_string($quote['coverage_details'])) { $quote['coverage_details'] = json_decode($quote['coverage_details'], true); } return $quote; } }