69 lines
1.9 KiB
PHP
69 lines
1.9 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/../db/config.php';
|
|
|
|
$tenant_id = 1;
|
|
|
|
$filter_project = (int)($_GET['project_id'] ?? 0);
|
|
$filter_employee = (int)($_GET['employee_id'] ?? 0);
|
|
$filter_type = (int)($_GET['labour_type_id'] ?? 0);
|
|
$filter_evidence = (int)($_GET['evidence_type_id'] ?? 0);
|
|
$filter_start = $_GET['start_date'] ?? '';
|
|
$filter_end = $_GET['end_date'] ?? '';
|
|
|
|
$where = ["le.tenant_id = ?"];
|
|
$params = [$tenant_id];
|
|
|
|
if ($filter_project) {
|
|
$where[] = "le.project_id = ?";
|
|
$params[] = $filter_project;
|
|
}
|
|
if ($filter_employee) {
|
|
$where[] = "le.employee_id = ?";
|
|
$params[] = $filter_employee;
|
|
}
|
|
if ($filter_type) {
|
|
$where[] = "le.labour_type_id = ?";
|
|
$params[] = $filter_type;
|
|
}
|
|
if ($filter_evidence) {
|
|
$where[] = "le.evidence_type_id = ?";
|
|
$params[] = $filter_evidence;
|
|
}
|
|
if ($filter_start) {
|
|
$where[] = "le.entry_date >= ?";
|
|
$params[] = $filter_start;
|
|
}
|
|
if ($filter_end) {
|
|
$where[] = "le.entry_date <= ?";
|
|
$params[] = $filter_end;
|
|
}
|
|
|
|
$where_clause = implode(" AND ", $where);
|
|
|
|
$stmt = db()->prepare("
|
|
SELECT le.entry_date, e.name as employee_name, p.name as project_name, le.hours, lt.name as labour_type, et.name as evidence_type, le.notes
|
|
FROM labour_entries le
|
|
JOIN projects p ON le.project_id = p.id
|
|
JOIN employees e ON le.employee_id = e.id
|
|
LEFT JOIN labour_types lt ON le.labour_type_id = lt.id
|
|
LEFT JOIN evidence_types et ON le.evidence_type_id = et.id
|
|
WHERE $where_clause
|
|
ORDER BY le.entry_date DESC
|
|
");
|
|
$stmt->execute($params);
|
|
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
$filename_suffix = date('Y-m-d_H-i-s');
|
|
header('Content-Type: text/csv; charset=utf-8');
|
|
header('Content-Disposition: attachment; filename=labour_export_' . $filename_suffix . '.csv');
|
|
|
|
$output = fopen('php://output', 'w');
|
|
fputcsv($output, ['Date', 'Employee', 'Project', 'Hours', 'Labour Type', 'Evidence Type', 'Notes']);
|
|
|
|
foreach ($data as $row) {
|
|
fputcsv($output, $row);
|
|
}
|
|
fclose($output);
|
|
exit;
|