*/ private const ENTRY_LABELS = [ 'baseline_profile' => 'Baseline profile', 'baseline_snapshot' => 'Snapshot', 'backup_set' => 'Backup set', 'current_policy_version' => 'Current policy version', 'operations' => 'Operations', 'parent_policy' => 'Policy', 'policy_version' => 'Policy version', 'restore_run' => 'Restore run', 'source_run' => 'Run', ]; /** * @var array */ private const ACTION_LABELS = [ 'baseline_profile' => 'View baseline profile', 'baseline_snapshot' => 'View snapshot', 'backup_set' => 'View backup set', 'current_policy_version' => 'View policy version', 'operations' => 'Open operations', 'parent_policy' => 'View policy', 'policy_version' => 'View policy version', 'restore_run' => 'View restore run', 'source_run' => 'View run', ]; public function entryLabel(string $relationKey): string { return self::ENTRY_LABELS[$relationKey] ?? Str::headline(str_replace('_', ' ', $relationKey)); } public function actionLabel(string $relationKey): string { return self::ACTION_LABELS[$relationKey] ?? 'Open '.Str::headline(str_replace('_', ' ', $relationKey)); } public function unavailableMessage(string $relationKey, string $reason): string { $subject = mb_strtolower($this->entryLabel($relationKey)); return match ($reason) { 'missing', 'deleted' => "The related {$subject} is no longer available.", 'unauthorized' => "The related {$subject} is not available in the current scope.", default => "The related {$subject} could not be resolved.", }; } }