System wniosków i podań
Aplikacja umożliwiająca uczniom składanie wniosków (usprawiedliwienia, zwolnienia z zajęć, podania) oraz nauczycielom lub administratorom ich przeglądanie i rozpatrywanie z adnotacją.
System wniosków i podań
Aplikacja umożliwiająca uczniom składanie wniosków (usprawiedliwienia, zwolnienia z zajęć, podania) oraz nauczycielom lub administratorom ich przeglądanie i rozpatrywanie z adnotacją.
{ "requests": [ { "id": 1, "type": "usprawiedliwienie", "student_name": "Anna Nowak", "student_class": "2TI", "content": "Proszę o usprawiedliwienie nieobecności z powodu choroby.", "date_from": "2026-02-03", "date_to": "2026-02-05", "status": "pending", "reviewer_note": null, "submitted_at": "2026-02-06 10:00:00", "reviewed_at": null } ]}Wymagane funkcje:
Wszystko z A, plus:
Wszystko z B, plus:
Walidacja zakresu dat:
$dateFrom = $_POST['date_from'] ?? '';$dateTo = $_POST['date_to'] ?? '';
$dtFrom = DateTime::createFromFormat('Y-m-d', $dateFrom);$dtTo = DateTime::createFromFormat('Y-m-d', $dateTo);
if (!$dtFrom || !$dtTo) { $errors[] = "Podaj prawidłowy format daty (RRRR-MM-DD)";} elseif ($dtTo < $dtFrom) { $errors[] = "Data końca nie może być wcześniejsza niż data początku";}Zmiana statusu wniosku:
function reviewRequest(array &$requests, int $id, string $status, string $note): bool { $allowed = ['approved', 'rejected']; if (!in_array($status, $allowed)) return false;
foreach ($requests as &$req) { if ($req['id'] === $id && $req['status'] === 'pending') { $req['status'] = $status; $req['reviewer_note'] = htmlspecialchars($note); $req['reviewed_at'] = date('Y-m-d H:i:s'); return true; } } return false;}