Upload via GUI (275 Dateien)
This commit is contained in:
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user