beginTransaction(); $problemId = ticket_problem_create($pdo, $_POST, (int) $staff['id']); $ticketNumber = trim((string) ($_POST['ticket_number'] ?? '')); if ($ticketNumber !== '') { $ticketStmt = $pdo->prepare('SELECT id FROM tickets WHERE ticket_number = ?'); $ticketStmt->execute([$ticketNumber]); $ticketId = (int) $ticketStmt->fetchColumn(); if (!$ticketId) throw new InvalidArgumentException('Das angegebene Ticket wurde nicht gefunden.'); ticket_problem_link($pdo, $problemId, $ticketId, (int) $staff['id']); log_activity($pdo, $ticketId, (int) $staff['id'], 'Mit ' . ticket_problem_number($problemId) . ' verknüpft'); } $pdo->commit(); audit_log($staff['id'], 'Problem ' . ticket_problem_number($problemId) . ' erstellt'); flash('success', ticket_problem_number($problemId) . ' wurde angelegt.'); redirect('/staff/problems.php?tab=list&id=' . $problemId); } elseif ($action === 'problem_update') { if (!ticket_problem_update($pdo, $problemId, $_POST, (int) $staff['id'])) throw new InvalidArgumentException('Problem nicht gefunden.'); audit_log($staff['id'], 'Problem ' . ticket_problem_number($problemId) . ' aktualisiert'); flash('success', 'Problem wurde gespeichert.'); } elseif ($action === 'ticket_link') { $ticketNumber = trim((string) ($_POST['ticket_number'] ?? '')); $ticketStmt = $pdo->prepare('SELECT id FROM tickets WHERE ticket_number = ?'); $ticketStmt->execute([$ticketNumber]); $ticketId = (int) $ticketStmt->fetchColumn(); if (!$ticketId) throw new InvalidArgumentException('Das angegebene Ticket wurde nicht gefunden.'); if (!ticket_problem_link($pdo, $problemId, $ticketId, (int) $staff['id'])) throw new InvalidArgumentException('Ticket oder Problem wurde nicht gefunden.'); log_activity($pdo, $ticketId, (int) $staff['id'], 'Mit ' . ticket_problem_number($problemId) . ' verknüpft'); audit_log($staff['id'], 'Ticket mit ' . ticket_problem_number($problemId) . ' verknüpft'); flash('success', 'Ticket wurde mit dem Problem verknüpft.'); } elseif ($action === 'ticket_unlink') { $ticketId = (int) ($_POST['ticket_id'] ?? 0); ticket_problem_unlink($pdo, $problemId, $ticketId); log_activity($pdo, $ticketId, (int) $staff['id'], 'Verknüpfung mit ' . ticket_problem_number($problemId) . ' entfernt'); audit_log($staff['id'], 'Ticket von ' . ticket_problem_number($problemId) . ' getrennt'); flash('success', 'Ticket-Verknüpfung wurde entfernt.'); } } catch (Throwable $e) { if ($pdo->inTransaction()) $pdo->rollBack(); $errors[] = $e instanceof InvalidArgumentException ? $e->getMessage() : 'Änderung konnte nicht gespeichert werden.'; } if (!$errors) redirect('/staff/problems.php' . ($problemId ? '?id=' . $problemId : '')); } $problems = ticket_problems($pdo); $problem = $problemId ? ticket_problem_get($pdo, $problemId) : null; if ($problemId && !$problem) $errors[] = 'Problem nicht gefunden.'; $linkedTickets = $problem ? ticket_problem_tickets($pdo, $problemId) : []; $problemStatuses = ticket_problem_statuses(); $activePage = 'problems'; $pageTitle = 'Problemmanagement'; require __DIR__ . '/_header.php'; ?>

Problemmanagement

Bündeln Sie Tickets mit derselben Ursache. Ursache, Workaround und dauerhafte Lösung werden zentral dokumentiert.

Neues Problem erfassen

Titel und erste Ticketnummer eintragen. Ursache und dauerhafte Lösung können danach ergänzt werden.

Problem auswählen

Wählen Sie links ein Problem aus oder legen Sie ein neues an.

Erstellt

Verknüpfte Tickets ()

Noch keine Tickets mit diesem Problem verknüpft.

# ·
·