true, 'secure' => !empty($_SERVER['HTTPS']) || $forwardedHttps, 'samesite' => 'Lax', 'path' => '/']); session_start(); function render_header(string $title): void { $user = current_user(); echo '
Sign in to the support workspace.
Your operational overview.
Authentication, role-aware navigation, CSRF protection, password hashing and audit logging are active. Client and jobcard modules will populate this dashboard in the next increments.
Track requested work and operational status.
| Reference | Client | Priority | Status | Work requested | Created |
|---|---|---|---|---|---|
| No jobcards found. | |||||
| ' . e($jobcard['reference_no']) . ' | ' . e($jobcard['client_name']) . ' | ' . e(ucfirst($jobcard['priority'])) . ' | ' . e(ucwords(str_replace('_', ' ', $jobcard['status']))) . ' | ' . e($jobcard['work_requested']) . ' | ' . e($jobcard['created_at']) . ' |
No contacts recorded.
'; foreach ($contacts as $contact) echo 'Manage client records and support contacts.
| Client | Status | Support email | Phone |
|---|---|---|---|
| No clients found. | |||
| ' . e($client['name']) . ' | ' . e(ucfirst($client['status'])) . ' | ' . e((string)($client['support_email'] ?? '—')) . ' | ' . e((string)($client['support_phone'] ?? '—')) . ' |
Internal hours summary by client.
| Client | Jobcards | Hours |
|---|---|---|
| No report data available. | ||
| ' . e($row['client_name']) . ' | ' . (int)$row['jobcards'] . ' | ' . e(number_format((float)$row['hours'], 2)) . ' |
This module is scaffolded for the next implementation phase.