Upload via GUI (275 Dateien)

This commit is contained in:
2026-10-23 11:14:22 +00:00
parent 7e30cbf7fa
commit 967154bf16
6 changed files with 143 additions and 9 deletions
@@ -86,11 +86,38 @@ function department_save(PDO $pdo, int $id, array $in): int
$pdo->prepare('UPDATE departments SET name=?, email=?, is_default=?, is_active=?, manager_id=?, sla_plan_id=?, notes=?, signature=?, updated_at=? WHERE id=?')
->execute([$name, $email, $isDefault, $isActive, $managerId, $slaPlanId, $notes ?: null, $signature ?: null, $now, $id]);
}
// Automatische Zuweisung neuer Tickets (nur wenn mitgeschickt: ältere Apps lassen die Einstellung unverändert)
if (array_key_exists('auto_assign_mode', $in)) {
try {
department_save_auto_assign($pdo, $id, $in);
} catch (PDOException $e) {
// Spalten fehlen: die Datenbank ist noch nicht auf dem neuesten Stand
throw new AdminModelException('Die Datenbank ist noch nicht auf dem neuesten Stand. Bitte unter System-Update auf "Datenbank aktualisieren" klicken und es dann erneut versuchen.', 'DB_OUTDATED', 503);
}
}
// Eingehende Mails an die Abteilungs-E-Mail landen ohne weiteren Schritt in dieser Abteilung
if ($email !== '') sync_department_email_route($pdo, $id, $email);
return $id;
}
/** Speichert die automatische Zuweisung einer Abteilung (Art und Mitarbeiter). */
function department_save_auto_assign(PDO $pdo, int $id, array $in): void
{
$mode = (string) $in['auto_assign_mode'];
if (!array_key_exists($mode, department_auto_assign_modes())) throw new AdminModelException('Die Art der automatischen Zuweisung ist ungültig.', 'INVALID_AUTO_ASSIGN');
$assignStaff = am_int_or_null($in, 'auto_assign_staff_id');
if ($mode === 'staff') {
$chk = $pdo->prepare('SELECT COUNT(*) FROM staff WHERE id = ? AND is_active = 1');
$chk->execute([(int) $assignStaff]);
if (!$assignStaff || !(int) $chk->fetchColumn()) throw new AdminModelException('Bitte einen aktiven Mitarbeiter für die automatische Zuweisung wählen.', 'INVALID_AUTO_ASSIGN_STAFF');
} else {
$assignStaff = null;
}
$prevMode = (string) am_current($pdo, 'departments', $id, 'auto_assign_mode', 'none');
$pdo->prepare('UPDATE departments SET auto_assign_mode = ?, auto_assign_staff_id = ? WHERE id = ?')->execute([$mode, $assignStaff, $id]);
if ($prevMode !== $mode) $pdo->prepare('UPDATE departments SET auto_assign_last_id = NULL WHERE id = ?')->execute([$id]);
}
/** Löscht eine Abteilung (nur ohne zugeordnete Tickets). Gibt den Namen zurück. */
/**
* Anzahl der Datensätze in $table, die über $column auf $id verweisen (0, wenn Tabelle oder Spalte in dieser Datenbank fehlen).