'boolean', ]; /** Die Gruppe „Ohne Zuordnung" -- Vorgabe für Mandanten, denen keine Gruppe zugewiesen wurde. */ public static function fallback() : self { return self::where('is_fallback', true)->orderBy('id')->firstOrFail(); } /** Anzeigereihenfolge: alphabetisch, „Ohne Zuordnung" (Fallback) immer zuletzt. */ public function scopeOrdered(Builder $query) : Builder { return $query->orderBy('is_fallback')->orderBy('name'); } /** * Dieselbe Reihenfolge wie {@see scopeOrdered()} für bereits geladene Gruppen. * * @param Collection $parentGroups * @return Collection */ public static function sortForDisplay(Collection $parentGroups) : Collection { return $parentGroups ->sort(static fn (self $a, self $b): int => [$a->is_fallback, mb_strtolower($a->name)] <=> [$b->is_fallback, mb_strtolower($b->name)]) ->values(); } public function tenants() : HasMany { return $this->hasMany(Tenant::class, 'parent_group_id'); } public function eventParticipants() : HasMany { return $this->hasMany(EventParticipant::class, 'parent_group_id'); } }