Problem auswählen
Wählen Sie links ein Problem aus oder legen Sie ein neues an.
= e($problem['title']) ?>
Verknüpfte Tickets (= count($linkedTickets) ?>)
Noch keine Tickets mit diesem Problem verknüpft.
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'; ?>
Bündeln Sie Tickets mit derselben Ursache. Ursache, Workaround und dauerhafte Lösung werden zentral dokumentiert.
Titel und erste Ticketnummer eintragen. Ursache und dauerhafte Lösung können danach ergänzt werden.
Wählen Sie links ein Problem aus oder legen Sie ein neues an.
Noch keine Tickets mit diesem Problem verknüpft.