FIX_ExportExcel

This commit is contained in:
sanjeev.p 2025-12-26 19:37:37 +05:30
parent 6dff58e50e
commit efe503ea40

View File

@ -788,10 +788,10 @@ class ExcelExportController extends ResourceController
// We create a new array for each row
$finalData[] = [
$serialNo++,
$row['agent_code'],
$row['agent_name'],
$row['email'],
$row['mobile']
$row[0],
$row[1],
$row[2],
$row[3]
];
}
@ -1205,7 +1205,7 @@ class ExcelExportController extends ResourceController
public function downloadStaffPendingSummaryExcelByID()
{
// try{
try{
$managerId = $this->request->getGet('manager_id');
$staffId = $this->request->getGet('staff_id');
$status = $this->request->getGet('status');
@ -1231,9 +1231,13 @@ class ExcelExportController extends ResourceController
// Define column headers
$header = ['S.No', 'Staff Name', 'REG Number','Received Date'];
// Initialize totals
$header = ['S.No', 'Received Date',
'Assigned To(Staff Name)',
'Partner Name', 'Partner Code',
'Insurer Name', 'Insurer Short Name',
'Insured Name', 'Vehicle Number',
'Payment Mode', 'Plan Type'];
// Initialize totals
$lastIndex = count(reset($data)) - 1;
// usort($data, function($a, $b) use ($lastIndex) {
@ -1249,65 +1253,65 @@ class ExcelExportController extends ResourceController
$finalData[] = array_merge([$serialNo++], $row);
}
$staffName = $finalData[0][1] ?? 'Staff';
$fileName = $staffName.'_'.$status.'_Summary.xlsx';
// Calculate and append total
$staffName = $finalData[0][2] ?? 'Staff';
$cleanStaffName = str_replace(' ', '_', strtolower($staffName));
$cleanStatus = ucwords(str_replace('_', ' ', strtolower($status)));
$fileName = $cleanStaffName . '_' . $cleanStatus . '_Summary.xlsx';
$cleanStaffName2 = ucwords($staffName);
$cleanStatus = str_replace('_', ' ', strtolower($status));
$cleanStatus2 = ucwords(str_replace('_', ' ', strtolower($status)));
$fileName = $cleanStaffName . '_' . $cleanStatus . '_Summary.xlsx';
// --- CALL CENTRALIZED FUNCTION ---
$this->streamExcelFile(
$header,
$finalData,
$cleanStaffName ." ". $cleanStatus." Summary",
$cleanStaffName2 ." ". $cleanStatus2." Summary",
$fileName,
false
);
return; // STOP CI4 rendering anything else
// } catch (\Throwable $e) {
} catch (\Throwable $e) {
// // ... (Your error handling remains the same) ...
// $ref = [];
// // Case 1: No Data Found (Soft Success JSON)
// if ($e instanceof \RuntimeException && $e->getCode() === 404) {
// $ref['message'] = 'No Data Found';
// return $this->respond([
// 'status' => 'success',
// 'code' => 200,
// 'data' => [],
// 'message' => 'No Data Found',
// 'ref' => $ref
// ], 200);
// }
// ... (Your error handling remains the same) ...
$ref = [];
// Case 1: No Data Found (Soft Success JSON)
if ($e instanceof \RuntimeException && $e->getCode() === 404) {
$ref['message'] = 'No Data Found';
return $this->respond([
'status' => 'success',
'code' => 200,
'data' => [],
'message' => 'No Data Found',
'ref' => $ref
], 200);
}
// // Case 2: Database or Other Error (Error JSON)
// $isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
// || $e instanceof \mysqli_sql_exception
// || $e instanceof \PDOException;
// Case 2: Database or Other Error (Error JSON)
$isDbError = $e instanceof \CodeIgniter\Database\Exceptions\DatabaseException
|| $e instanceof \mysqli_sql_exception
|| $e instanceof \PDOException;
// if ($isDbError) {
// $ref['debug_info'] = $e->getFile() . " / LN : " . $e->getLine();
// $ref['message'] = 'Database Error Occurred.';
// $message = 'Database Error Occurred.';
// } else {
// $ref['message'] = 'An unexpected error occurred: ' . $e->getMessage();
// $message = 'An unexpected error occurred: ' . $e->getMessage();
// }
if ($isDbError) {
$ref['debug_info'] = $e->getFile() . " / LN : " . $e->getLine();
$ref['message'] = 'Database Error Occurred.';
$message = 'Database Error Occurred.';
} else {
$ref['message'] = 'An unexpected error occurred: ' . $e->getMessage();
$message = 'An unexpected error occurred: ' . $e->getMessage();
}
// return $this->respond([
// 'status' => 'error',
// 'code' => 500,
// 'data' => [],
// 'message'=> $message,
// 'ref' => $ref
// ], 200);
// }
return $this->respond([
'status' => 'error',
'code' => 500,
'data' => [],
'message'=> $message,
'ref' => $ref
], 200);
}
}
@ -1840,7 +1844,12 @@ class ExcelExportController extends ResourceController
SUM(CASE WHEN pe.enquiry_status = 'Assigned' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_pending,
SUM(CASE WHEN pe.enquiry_status = 'In progress' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_in_progress,
SUM(CASE WHEN pe.enquiry_status = 'Completed' AND DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END) AS today_completed,
SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) AS previous_total_pending,
/* SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) AS previous_total_pending,
Logic: (All Pending) - (All Assigned Today) */
GREATEST(0,
SUM(CASE WHEN pe.enquiry_status != 'Completed' THEN 1 ELSE 0 END) -
SUM(CASE WHEN DATE(pe.created_on) = CURDATE() THEN 1 ELSE 0 END)
) AS previous_total_pending
")
->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left')
->where('pe.manager_id', $managerId)
@ -1872,15 +1881,29 @@ class ExcelExportController extends ResourceController
{
try {
$builder = $this->db->table('partner_enquiry pe');
$builder = $this->db->table('partner_enquiry pe');
// Note: Change 'received_date' back to 'created_on' or update the loop below
$builder->select("
$builder->select('
DATE_FORMAT(pe.created_on, "%d-%m-%Y %h:%i %p") AS received_date,
ps.name AS staff_name,
CONCAT('\t', pe.reg_no) AS reg_no,
DATE_FORMAT(pe.created_on, '%d-%m-%Y %h:%i %p') AS created_on
", false);
A.name as agent_name,
A.agent_code,
I.name as insurer_name,
I.short_name as insurer_short_name,
pe.name as insured_name,
CONCAT("\t", pe.reg_no) AS reg_no,
pm.value as payment_mode_value,
ipti.insurance_plan_type
', false); // 'false' prevents CI from automatically escaping quotes in functions like DATE_FORMAT
$builder->join('partner_policy pp', 'pp.enquiry_id = pe.id', 'left');
$builder->join('partner_staff ps', 'ps.id = pe.assigned_to', 'left');
$builder->join('partner_brokers pb', 'pb.id = pe.broker_id', 'left');
$builder->join('partner_quotation Q', 'Q.enquiry_id = pe.id', 'left');
$builder->join('partner_payment_mode_master pm', 'pm.id = Q.payment_mode_id', 'left');
$builder->join('partner_agent A', 'A.id = pe.agent_id', 'left');
$builder->join('partner_insurance_plan_type_master ipti', 'ipti.id = Q.insurance_plan_type_id', 'left');
$builder->join('insurers I', 'I.id = Q.insurer_id', 'left');
$builder->where('pe.manager_id', $managerId);
$builder->where('pe.assigned_to', $staffId);
@ -1891,31 +1914,31 @@ class ExcelExportController extends ResourceController
$todayEnd = date('Y-m-d 23:59:59');
switch ($status) {
case 'today_assigned':
case 'TodayAssigned':
$builder->where('pe.created_on >=', $todayStart);
$builder->where('pe.created_on <=', $todayEnd);
break;
case 'today_pending':
case 'Assigned':
$builder->where('pe.enquiry_status', 'Assigned');
$builder->where('pe.created_on >=', $todayStart);
$builder->where('pe.created_on <=', $todayEnd);
break;
case 'today_in_progress':
case 'InProgress':
$builder->where('pe.enquiry_status', 'In progress');
$builder->where('pe.created_on >=', $todayStart);
$builder->where('pe.created_on <=', $todayEnd);
break;
case 'today_completed':
case 'Completed':
$builder->where('pe.enquiry_status', 'Completed');
$builder->where('pe.created_on >=', $todayStart);
$builder->where('pe.created_on <=', $todayEnd);
break;
case 'previous_total_pending':
// "Previous Pending" usually means anything NOT completed from BEFORE today
case 'PrevPending':
/** * To match your Summary Logic (SUM CASE WHEN status != 'Completed'):
* We remove the date restriction.
* This shows ALL records that are not completed, regardless of date.
*/
$builder->where('pe.enquiry_status !=', 'Completed');
$builder->where('pe.created_on <', $todayStart);
break;
@ -1925,11 +1948,7 @@ class ExcelExportController extends ResourceController
$data = [];
foreach ($results as $row) {
$data[] = [
$row['staff_name'] ?? 'N/A',
$row['reg_no'] ?? '-',
$row['created_on'] ?? '-' // Matches the alias in select
];
$data[] = array_values($row);
}
return $data;