insert('workers', [ 'name' => $name, 'entry_token' => generateToken(), 'share_token' => generateToken(), 'payer_token' => generateToken(), ]); } header('Location: /admin/index.php'); exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delete_worker') { $workerId = (int) ($_POST['worker_id'] ?? 0); if ($workerId > 0) { // day_entries and week_settlements both have ON DELETE CASCADE on worker_id, // so deleting the worker row removes all their related data too. db()->query("DELETE FROM workers WHERE id = :id", ['id' => $workerId]); } header('Location: /admin/index.php'); exit; } $workers = db()->fetchAll("SELECT * FROM workers WHERE active = 1 ORDER BY name ASC"); $owedByWorker = []; $rows = db()->fetchAll(" SELECT de.worker_id, SUM(CASE WHEN de.status='full' THEN " . FULL_DAY_RATE . " WHEN de.status='half' THEN " . HALF_DAY_RATE . " ELSE 0 END) AS owed FROM day_entries de LEFT JOIN week_settlements ws ON ws.worker_id = de.worker_id AND ws.week_start = de.week_start WHERE ws.paid IS NULL OR ws.paid = 0 GROUP BY de.worker_id "); foreach ($rows as $r) { $owedByWorker[$r['worker_id']] = (float) $r['owed']; } $pageTitle = 'Admin Dashboard - ChuckCo Time Keeper'; require_once __DIR__ . '/../includes/header.php'; ?>
One link showing everyone's current week together.
Open All-Workers View Full History (Everyone)No workers yet. Add one above.