FIX_Export Excel Changes

This commit is contained in:
sanjeev.p 2025-12-24 12:35:31 +05:30
parent c7bf8f8299
commit 17dd293e67

View File

@ -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.