priority key => industry label */ public static function forOrganization(?Organization $organization): array { $stored = data_get($organization?->settings, 'industry_package.priorities'); if (is_array($stored) && $stored !== []) { return self::mergeDefaults($stored); } $key = (string) ( data_get($organization?->settings, 'industry_package.key') ?? data_get($organization?->settings, 'industry') ?? 'custom' ); return self::forIndustryKey($key); } /** * @return array */ public static function forIndustryKey(string $key): array { $package = app(IndustryPackageRegistry::class)->get($key); return $package?->priorities() ?? self::mergeDefaults( (array) config("qms.ticket_priorities_by_industry.{$key}", []) ); } public static function label(?Organization $organization, ?string $priority): string { if ($priority === null || $priority === '') { return ''; } $map = self::forOrganization($organization); return $map[$priority] ?? (string) (config("qms.ticket_priorities.{$priority}") ?? $priority); } /** * @param array $overrides * @return array */ public static function mergeDefaults(array $overrides): array { $defaults = (array) config('qms.ticket_priorities', []); $merged = []; foreach ($defaults as $key => $label) { $merged[$key] = (string) ($overrides[$key] ?? $label); } return $merged; } }