self::setting(GlobalSetting::LOCAL_GROUP_LABEL, 'Stamm'), self::ParentGroup => self::setting(GlobalSetting::PARENT_GROUP_LABEL, 'Bund'), }; } public function pluralLabel(): string { return match ($this) { self::LocalGroup => self::setting(GlobalSetting::LOCAL_GROUP_LABEL_PLURAL, 'Stämme'), self::ParentGroup => self::setting(GlobalSetting::PARENT_GROUP_LABEL_PLURAL, 'Bünde'), }; } /** * Optionen für das Frontend: [['value' => ..., 'label' => ...], ...]. * * @return array */ public static function options(): array { return array_map( static fn (self $type): array => [ 'value' => $type->value, 'label' => $type->label(), ], self::cases(), ); } /** Typ zu einem gespeicherten Wert; Unbekanntes fällt auf die Local Group zurück. */ public static function fromStored(?string $value): self { return self::tryFrom((string) $value) ?? self::LocalGroup; } /** * Alle Bezeichnungen fürs Frontend (Shared Prop). * * @return array{localGroup: string, localGroupPlural: string, parentGroup: string, parentGroupPlural: string} */ public static function labels(): array { return [ 'localGroup' => self::LocalGroup->label(), 'localGroupPlural' => self::LocalGroup->pluralLabel(), 'parentGroup' => self::ParentGroup->label(), 'parentGroupPlural' => self::ParentGroup->pluralLabel(), ]; } private static function setting(string $key, string $default): string { return app(GlobalSettingRepository::class)->get($key, $default); } }