FIX_ExportExcel
This commit is contained in:
parent
6dff58e50e
commit
efe503ea40
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user