> */ public static function alle(bool $nurAktive = false): array { $sql = 'SELECT * FROM klassen WHERE benutzer_id = ?'; if ($nurAktive) { $sql .= ' AND aktiv = 1'; } return Database::fetchAll($sql . ' ORDER BY name', [Mandant::id()]); } public static function find(int $id): ?array { $zeile = Database::fetchOne( 'SELECT * FROM klassen WHERE id = ? AND benutzer_id = ?', [$id, Mandant::id()] ); return $zeile === false ? null : $zeile; } public static function findeNachName(string $name): ?array { $zeile = Database::fetchOne( 'SELECT * FROM klassen WHERE name = ? AND benutzer_id = ?', [trim($name), Mandant::id()] ); return $zeile === false ? null : $zeile; } public static function anlegen(string $name, string $beschreibung = ''): int { $name = trim($name); if ($name === '') { throw new \InvalidArgumentException('Die Klasse braucht einen Namen.'); } if (self::findeNachName($name) !== null) { throw new \RuntimeException('Die Klasse „' . $name . '“ gibt es bereits.'); } Database::execute( 'INSERT INTO klassen (benutzer_id, name, beschreibung) VALUES (?, ?, ?)', [Mandant::id(), $name, $beschreibung] ); return Database::lastInsertId(); } /** * Legt die Klasse an, falls es sie noch nicht gibt, und liefert in jedem * Fall ihre Kennung. Der QIF-Import läuft ausschließlich hierüber, damit ein * zweiter Importlauf keine Dubletten erzeugt. */ public static function findenOderAnlegen(string $name, string $beschreibung = ''): int { $vorhanden = self::findeNachName($name); return $vorhanden !== null ? (int)$vorhanden['id'] : self::anlegen($name, $beschreibung); } public static function speichern(int $id, string $name, string $beschreibung, bool $aktiv): void { $name = trim($name); if ($name === '') { throw new \InvalidArgumentException('Die Klasse braucht einen Namen.'); } $andere = self::findeNachName($name); if ($andere !== null && (int)$andere['id'] !== $id) { throw new \RuntimeException('Die Klasse „' . $name . '“ gibt es bereits.'); } Database::execute( 'UPDATE klassen SET name = ?, beschreibung = ?, aktiv = ? WHERE id = ? AND benutzer_id = ?', [$name, $beschreibung, $aktiv ? 1 : 0, $id, Mandant::id()] ); } public static function loeschen(int $id): void { Database::execute( 'DELETE FROM klassen WHERE id = ? AND benutzer_id = ?', [$id, Mandant::id()] ); } public static function anzahl(): int { return (int)Database::fetchValue( 'SELECT COUNT(*) FROM klassen WHERE benutzer_id = ?', [Mandant::id()], 0 ); } }