From 17dd293e67bd99519a12b9ca4dbb2c1334322592 Mon Sep 17 00:00:00 2001 From: "sanjeev.p" Date: Wed, 24 Dec 2025 12:35:31 +0530 Subject: [PATCH] FIX_Export Excel Changes --- app/Controllers/ExcelExportController.php | 87 +++++++++++++++-------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/app/Controllers/ExcelExportController.php b/app/Controllers/ExcelExportController.php index 1f45f6a..c209ccd 100644 --- a/app/Controllers/ExcelExportController.php +++ b/app/Controllers/ExcelExportController.php @@ -661,38 +661,24 @@ class ExcelExportController extends ResourceController } // Renamed helper function for consistency: getAgentMonthlyPoliciesData - $data = $this->getMonthlyPoliciesData($managerId, null); - - // $header = [ - // 'Received Date', 'Assigned To', - // 'Insurer Name' ,'Insurer Short Name', - // 'Insured Name', 'Vehicle Number', - // 'Payment Mode', 'Plan Type', - // 'Partner Name','Partner Code' , 'Policy Number','Issue Date', 'Premium Amount']; + $data = $this->getMonthlyPolicyCountandPremiumAmount($managerId); + $header = ['S.No', 'Partner Code', 'Partner Name', 'Policy Count', 'Premium Amount']; if (empty($data)) { throw new \RuntimeException('No policies found.', 404); } - usort($data, function($a, $b) { - return $a[12] <=> $b[12]; // Ascending order + $lastIndex = count(reset($data)) - 1; + usort($data, function($a, $b) use ($lastIndex) { + return (float)$a[$lastIndex] <=> (float)$b[$lastIndex]; }); - - $lastFiveData = array_slice($data, -5); - $header = ['S.No','Issue Date', 'Partner Code', 'Partner Name', 'Policy Number', 'Premium Amount']; $finalData = []; $serialNo = 1; + + foreach ($data as $row) { + $finalData[] = array_merge([$serialNo++], $row); + } - foreach ($lastFiveData as $row) { - $finalData[] = [ - $serialNo++, // S.NO - $row[8], // Issue Date - $row[9], // Partner Name - $row[10], // Partner Code - $row[11], // Policy Number - $row[12] // Premium Amount - ]; - } // Calculate and append total $lastColIndex = count($header) - 1; // Get index of the last column (Premium) @@ -1414,10 +1400,8 @@ class ExcelExportController extends ResourceController // 3. Where Conditions $builder->where('pp.manager_id', $managerId); $builder->where('pp.policy_number IS NOT NULL'); - - if ($AgentId) { - $builder->where('pa.id', $AgentId); - } + $builder->where('pa.id', $AgentId); + // Current Month Date Range Filter // if ($month === "current") { @@ -1434,10 +1418,6 @@ class ExcelExportController extends ResourceController // 4. Order and Limit $builder->orderBy('pp.issued_date', 'DESC'); - if (!$AgentId) { - $builder->limit(50); - } - // 5. Fetch and Restructure $results = $builder->get()->getResultArray(); @@ -1454,6 +1434,51 @@ class ExcelExportController extends ResourceController return $data; } + + public function getMonthlyPolicyCountandPremiumAmount($manager_id){ + + $data = []; + + try { + $customDate = date('Y-m-d'); + + $builder = $this->db->table('partner_policy pp'); + + $builder->select(" + pa.agent_code, + pa.name AS agent_name, + COUNT(pp.policy_number) AS policy_count, + SUM(pp.premium_amount) AS total_premium_amount + "); + + $builder->join('partner_agent pa', 'pp.agent_id = pa.id', 'inner'); + $builder->join('partner_enquiry pe', 'pe.id = pp.enquiry_id', 'left'); + + $builder->where("MONTH(pp.issued_date) = MONTH('$customDate')", null, false); + $builder->where("YEAR(pp.issued_date) = YEAR('$customDate')", null, false); + + $builder->where('pp.manager_id',$manager_id); + + $builder->groupBy(['pa.id']); + $builder->orderBy('policy_count', 'DESC'); + $builder->limit(50); + + $results = $builder->get()->getResultArray(); + + // Restructure data for PhpSpreadsheet (2D array of values) + foreach ($results as $row) { + $data[] = array_values($row); + } + + } catch (DatabaseException $e) { + log_message('error', 'Database Error during Excel fetch: ' . $e->getMessage()); + // Re-throw the exception so it is caught by the main function's catch block + throw $e; + } + + return $data; + + } /** * Executes the detailed policy query and extracts the data for the spreadsheet.