39760-vm/submission.php
2026-04-21 09:42:14 +00:00

111 lines
4.8 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/app.php';
require_admin();
$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;
$request = $id > 0 ? fetch_request($id) : null;
if (!$request) {
http_response_code(404);
render_head(project_name() . ' | Request not found', 'Requested submission was not found.', true);
render_navbar('detail');
?>
<main class="py-5"><div class="container"><div class="panel-card p-5 text-center"><h1 class="h4 mb-2">Request not found</h1><p class="text-secondary mb-3">The requested submission does not exist or was removed.</p><a href="/dashboard.php" class="btn btn-dark btn-sm">Back to dashboard</a></div></div></main>
<?php
render_footer('detail');
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$newStatus = trim((string) ($_POST['status'] ?? ''));
if (update_request_status((int) $request['id'], $newStatus)) {
set_flash('success', 'Request status updated.');
header('Location: /submission.php?id=' . (int) $request['id']);
exit;
}
set_flash('danger', 'Unable to update the request status.');
header('Location: /submission.php?id=' . (int) $request['id']);
exit;
}
render_head(project_name() . ' | ' . request_reference((int) $request['id']), 'Request detail view for the admin dashboard.', true);
render_navbar('detail');
render_flash_toast();
?>
<main class="py-4 py-lg-5">
<div class="container">
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-3 mb-4">
<div>
<div class="section-kicker">Request detail</div>
<h1 class="h3 mb-1"><?= e(request_reference((int) $request['id'])) ?></h1>
<p class="text-secondary mb-0">Submitted <?= e(format_datetime((string) $request['created_at'])) ?></p>
</div>
<div class="d-flex gap-2">
<a class="btn btn-outline-secondary" href="/dashboard.php">Back to dashboard</a>
<span class="badge align-self-center <?= e(status_badge_class((string) $request['status'])) ?>"><?= e(request_status_options()[$request['status']] ?? ucfirst((string) $request['status'])) ?></span>
</div>
</div>
<div class="row g-4 align-items-start">
<div class="col-lg-8">
<div class="panel-card p-4 p-lg-5 mb-4">
<div class="row g-4">
<div class="col-md-6">
<div class="detail-label">Contact</div>
<div class="detail-value"><?= e($request['name']) ?></div>
</div>
<div class="col-md-6">
<div class="detail-label">Email</div>
<div class="detail-value"><?= e($request['email']) ?></div>
</div>
<div class="col-md-6">
<div class="detail-label">Company</div>
<div class="detail-value"><?= e($request['company'] ?: 'Not provided') ?></div>
</div>
<div class="col-md-6">
<div class="detail-label">Project type</div>
<div class="detail-value"><?= e($request['project_type']) ?></div>
</div>
<div class="col-md-6">
<div class="detail-label">Timeline</div>
<div class="detail-value"><?= e(timeline_options()[$request['timeline']] ?? $request['timeline']) ?></div>
</div>
<div class="col-md-6">
<div class="detail-label">Budget</div>
<div class="detail-value"><?= e(budget_options()[$request['budget']] ?? $request['budget']) ?></div>
</div>
<div class="col-12">
<div class="detail-label">Project brief</div>
<div class="detail-copy"><?= nl2br(e((string) $request['details'])) ?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="panel-card p-4 sticky-lg-top sticky-offset">
<div class="section-kicker mb-2">Status</div>
<h2 class="h5 mb-3">Update request stage</h2>
<form method="post" class="vstack gap-3">
<div>
<label class="form-label" for="status">Current stage</label>
<select class="form-select" name="status" id="status">
<?php foreach (request_status_options() as $value => $label): ?>
<option value="<?= e($value) ?>" <?= $request['status'] === $value ? 'selected' : '' ?>><?= e($label) ?></option>
<?php endforeach; ?>
</select>
</div>
<button class="btn btn-dark" type="submit">Save status</button>
</form>
<div class="notice-box mt-4">
Use this page as the handoff surface between intake and next-step qualification. Edit/delete can be added later if needed.
</div>
</div>
</div>
</div>
</div>
</main>
<?php render_footer('detail'); ?>