$_POST['type'] ?? '', 'startDate' => $_POST['start_date'] ?? '', 'endDate' => $_POST['end_date'] ?? '', 'reason' => trim($_POST['reason'] ?? ''), 'substitute' => trim($_POST['substitute'] ?? ''), 'note' => trim($_POST['note'] ?? ''), ]; if ($payload['type'] === '' || $payload['startDate'] === '' || $payload['endDate'] === '') { $error = 'Art, Beginn und Ende sind erforderlich.'; $editId = $mode === 'edit' ? ($_POST['absence_id'] ?? null) : null; } elseif ($payload['endDate'] < $payload['startDate']) { $error = 'Das Ende darf nicht vor dem Beginn liegen.'; $editId = $mode === 'edit' ? ($_POST['absence_id'] ?? null) : null; } elseif ($mode === 'edit') { if (!$canEdit) { // Server lehnt das ohnehin über [RequirePermission(Absences, Edit)] ab - dieser Zweig // greift nur, wenn jemand das Formular manuell postet, obwohl es clientseitig gar nicht // angezeigt wurde. $error = 'Keine Berechtigung, diesen Antrag zu bearbeiten.'; } else { $absenceId = $_POST['absence_id'] ?? ''; $result = omsorgcore_absences_update(_omsorgcore_config(), $_SESSION['omsorgcore_access_token'], $absenceId, $payload); if ($result['ok']) { header('Location: urlaubsantrag.php?updated=1'); exit; } $editId = $absenceId; $error = $result['status'] === 403 ? 'Keine Berechtigung, diesen Antrag zu bearbeiten.' : (is_string($result['data'] ?? null) ? $result['data'] : 'Antrag konnte nicht gespeichert werden.'); } } elseif (!$canCreate) { $error = 'Keine Berechtigung, einen Antrag zu stellen.'; } else { $result = omsorgcore_absences_create(_omsorgcore_config(), $_SESSION['omsorgcore_access_token'], $payload); if ($result['ok']) { $success = true; } elseif ($result['status'] === 403) { $error = 'Keine Berechtigung, einen Antrag zu stellen.'; } else { $error = is_string($result['data'] ?? null) ? $result['data'] : 'Antrag konnte nicht gespeichert werden.'; } } } elseif (isset($_GET['edit'])) { $editId = $_GET['edit']; } $listResult = omsorgcore_absences_list(_omsorgcore_config(), $_SESSION['omsorgcore_access_token']); $absences = $listResult['ok'] ? ($listResult['data']['items'] ?? []) : []; $editAbsence = null; if ($editId !== null) { foreach ($absences as $absence) { if ($absence['id'] === $editId) { $editAbsence = $absence; break; } } // Fremder/ungültiger/schon entschiedener Antrag - Own-Scope-Filterung passiert serverseitig // in omsorgcore_absences_list, hier nur zusätzlich: nicht (mehr) bearbeitbar zurück zu "Neuer Antrag". if ($editAbsence === null || $editAbsence['status'] !== $initialStatus) { $editId = null; $editAbsence = null; } } layout_start('Urlaub & Abwesenheit – Mitarbeiter-App', 'urlaubsantrag'); ?>
Noch keine Anträge eingereicht.
Keine Berechtigung, einen Antrag zu stellen.