diff --git a/DeskHub-Webseite/cron/fetch_emails.php b/DeskHub-Webseite/cron/fetch_emails.php index e2436838..baf626c1 100644 --- a/DeskHub-Webseite/cron/fetch_emails.php +++ b/DeskHub-Webseite/cron/fetch_emails.php @@ -300,7 +300,12 @@ function fetch_emails_for_account(PDO $pdo, array $account, bool $verbose): arra // Zuweisung: Ticket-Regel hat Vorrang, danach Auto-Zuweisung an letzten Bearbeiter $assignTo = $ruleResult['assign_staff']; - if ($assignTo === null) { + // Einstellung der Abteilung ("Neue Tickets automatisch zuweisen") vor dem letzten Bearbeiter + $deptAssignee = $assignTo === null ? department_auto_assignee($pdo, (int) $defaultDeptId) : null; + if ($deptAssignee !== null) { + $assignTo = $deptAssignee; + log_activity($pdo, $ticketId, null, 'Automatisch zugewiesen (Einstellung der Abteilung)'); + } elseif ($assignTo === null) { $assignTo = find_previous_assignee($pdo, $fromEmail); if ($assignTo !== null) { log_activity($pdo, $ticketId, null, "Automatisch zugewiesen (letzter Bearbeiter: Staff-ID {$assignTo})"); diff --git a/DeskHub-Webseite/database/migrate.php b/DeskHub-Webseite/database/migrate.php index 9381f885..754d9c80 100644 --- a/DeskHub-Webseite/database/migrate.php +++ b/DeskHub-Webseite/database/migrate.php @@ -1209,6 +1209,24 @@ function run_migrations(PDO $pdo, bool $verbose = false): array } } + // Migration 0043: Abteilungen können neue Tickets automatisch zuweisen (an einen Mitarbeiter oder reihum). + if (!isset($done['php_0043_department_auto_assign'])) { + try { + $has = function (string $col) use ($pdo): bool { + try { $pdo->query("SELECT $col FROM departments LIMIT 1"); return true; } catch (Throwable $e) { return false; } + }; + if (!$has('auto_assign_mode')) $pdo->exec("ALTER TABLE departments ADD COLUMN auto_assign_mode VARCHAR(20) NOT NULL DEFAULT 'none'"); + if (!$has('auto_assign_staff_id')) $pdo->exec('ALTER TABLE departments ADD COLUMN auto_assign_staff_id INT NULL'); + if (!$has('auto_assign_last_id')) $pdo->exec('ALTER TABLE departments ADD COLUMN auto_assign_last_id INT NULL'); + $pdo->prepare('INSERT INTO schema_migrations (migration) VALUES (?)')->execute(['php_0043_department_auto_assign']); + $result['applied']++; + if ($verbose) $result['log'][] = ' [OK] php_0043_department_auto_assign'; + } catch (Throwable $e) { + $result['errors'][] = 'php_0043_department_auto_assign: ' . $e->getMessage(); + if ($verbose) $result['log'][] = ' [FAIL] php_0043_department_auto_assign - ' . $e->getMessage(); + } + } + return $result; }