prepare( 'SELECT t.*, d.name AS department_name, p.name AS priority_name FROM tickets t JOIN departments d ON d.id = t.department_id JOIN priorities p ON p.id = t.priority_id WHERE t.id = ?' ); $stmt->execute([$ticketId]); $ticket = $stmt->fetch(); if (!$ticket) { http_response_code(404); die('Ticket nicht gefunden.'); } if (!staff_can_access_department($staff, (int) $ticket['department_id'])) { http_response_code(403); die('Sie haben keinen Zugriff auf Tickets dieser Abteilung.'); } // Nachrichten laden $threads = $pdo->prepare( 'SELECT tt.*, s.name AS staff_name FROM ticket_threads tt LEFT JOIN staff s ON s.id = tt.staff_id WHERE tt.ticket_id = ? AND tt.is_internal_note = 0 ORDER BY tt.created_at ASC' ); $threads->execute([$ticketId]); $messages = $threads->fetchAll(); $errors = []; if ($_SERVER['REQUEST_METHOD'] === 'POST') { verify_csrf(); $selectedMsgIds = array_map('intval', $_POST['message_ids'] ?? []); $newSubject = trim($_POST['new_subject'] ?? ''); if (empty($selectedMsgIds)) { $errors[] = 'Bitte mindestens eine Nachricht auswählen.'; } elseif (!$newSubject) { $errors[] = 'Bitte einen Betreff für das neue Ticket angeben.'; } else { // Neues Ticket erstellen $newNumber = generate_ticket_number(); $pdo->prepare( 'INSERT INTO tickets (ticket_number, subject, status, priority_id, department_id, user_id, requester_name, requester_email, source, created_at, updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?)' )->execute([ $newNumber, $newSubject, 'open', $ticket['priority_id'], $ticket['department_id'], $ticket['user_id'], $ticket['requester_name'], $ticket['requester_email'], 'staff', db_now(), db_now() ]); $newId = $pdo->lastInsertId(); // Ausgewählte Nachrichten verschieben $moved = 0; foreach ($selectedMsgIds as $msgId) { $rows = $pdo->prepare('UPDATE ticket_threads SET ticket_id=? WHERE id=? AND ticket_id=?'); $rows->execute([$newId, $msgId, $ticketId]); $moved += $rows->rowCount(); } // Anhänge der verschobenen Nachrichten mitnehmen if ($moved > 0) { $placeholders = implode(',', array_fill(0, count($selectedMsgIds), '?')); $pdo->prepare("UPDATE ticket_attachments SET ticket_id=? WHERE thread_id IN ($placeholders)") ->execute(array_merge([$newId], $selectedMsgIds)); } // Log-Einträge log_activity($pdo, $ticketId, $staff['id'], "Ticket aufgeteilt → #{$newNumber} ({$moved} Nachrichten)"); log_activity($pdo, $newId, $staff['id'], "Erstellt durch Aufteilen von #{$ticket['ticket_number']}"); audit_log($staff['id'], "Ticket #{$ticket['ticket_number']} aufgeteilt → #{$newNumber}"); flash('success', "Ticket aufgeteilt. Neues Ticket: #{$newNumber}"); redirect('/staff/ticket_view.php?n=' . urlencode($newNumber)); } } $pageTitle = 'Ticket aufteilen'; $activePage = 'tickets'; require __DIR__ . '/_header.php'; ?>

Ticket aufteilen

#
← Zurück

Nachrichten auswählen

Wähle die Nachrichten aus die in das neue Ticket verschoben werden sollen. Die gewählten Nachrichten werden aus diesem Ticket entfernt.

Hinweise

Ursprüngliches Ticket
# –
Nachrichten gesamt