|
Server : LiteSpeed System : Linux terra.hostitbro.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64 User : outerorb ( 1091) PHP Version : 8.1.34 Disable Function : mail Directory : /home2/outerorb/emp.outerorbittech.in/admin/ | |
|
Path: /home2/outerorb/emp.outerorbittech.in/admin/report-export.php
Size: 3.81 KB
Permissions: 0666
<?php
/**
* Report Export Handler
* Handles PDF, Excel, and CSV exports for reports
*/
require_once '../config/config.php';
require_once '../includes/helpers.php';
session_start();
// Verify admin access
if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
http_response_code(403);
exit('Unauthorized');
}
// Get export parameters
$export_type = $_GET['type'] ?? 'csv'; // pdf, excel, csv
$report_type = $_GET['report'] ?? null; // attendance, leave, payroll
$from_date = $_GET['from_date'] ?? null;
$to_date = $_GET['to_date'] ?? null;
$status = $_GET['status'] ?? null;
// Validate inputs
if (!in_array($export_type, ['pdf', 'excel', 'csv'])) {
exit('Invalid export type');
}
if (!in_array($report_type, ['attendance', 'leave', 'payroll'])) {
exit('Invalid report type');
}
// Log the export action
if (isset($_SESSION['user_id'])) {
log_activity($_SESSION['user_id'], 'EXPORT_REPORT', $report_type, null,
"Exported as " . strtoupper($export_type));
}
// Get report data based on type
$data = [];
$columnMapping = [];
$filename = '';
$title = '';
switch ($report_type) {
case 'attendance':
$data = get_attendance_export_data($from_date, $to_date);
$filename = 'Attendance_Report_' . date('Y-m-d_His');
$title = 'Attendance Report';
$columnMapping = [
'employee_id' => 'Employee ID',
'employee_name' => 'Employee Name',
'department' => 'Department',
'total_days' => 'Total Days',
'present_days' => 'Present Days',
'absent_days' => 'Absent Days',
'attendance_percentage' => 'Attendance %',
];
break;
case 'leave':
$data = get_leave_export_data($from_date, $to_date, $status);
$filename = 'Leave_Report_' . date('Y-m-d_His');
$title = 'Leave Report';
$columnMapping = [
'employee_id' => 'Employee ID',
'employee_name' => 'Employee Name',
'leave_type' => 'Leave Type',
'from_date' => 'From Date',
'to_date' => 'To Date',
'days_requested' => 'Days',
'reason' => 'Reason',
'status' => 'Status',
];
break;
case 'payroll':
$data = get_payroll_export_data($from_date, $to_date);
$filename = 'Payroll_Report_' . date('Y-m-d_His');
$title = 'Payroll Report';
$columnMapping = [
'employee_id' => 'Employee ID',
'employee_name' => 'Employee Name',
'department' => 'Department',
'designation' => 'Designation',
'gross_salary' => 'Gross Salary',
'deductions' => 'Deductions',
'net_salary' => 'Net Salary',
'payment_status' => 'Status',
];
break;
}
// No data found
if (empty($data)) {
http_response_code(204);
exit;
}
// Format data
$formattedData = format_export_data($data, $columnMapping);
// Get headers from first row
$headers = array_keys($formattedData[0]);
$dataRows = array_map(function($row) { return array_values($row); }, $formattedData);
// Export based on type
switch ($export_type) {
case 'excel':
export_to_excel($dataRows, $filename, $headers);
break;
case 'csv':
export_to_csv($dataRows, $filename, $headers);
break;
case 'pdf':
$filters = [];
if ($from_date) $filters['From Date'] = $from_date;
if ($to_date) $filters['To Date'] = $to_date;
if ($status) $filters['Status'] = $status;
$htmlContent = generate_report_html($report_type, $formattedData, $filters);
export_to_pdf($htmlContent, $filename, $title);
break;
}