*/ public function forReason(Tenant $tenant, string $reasonCode, ?ProviderConnection $connection = null): array { return match ($reasonCode) { ProviderReasonCodes::ProviderConnectionMissing, ProviderReasonCodes::ProviderConnectionInvalid, ProviderReasonCodes::TenantTargetMismatch, ProviderReasonCodes::PlatformIdentityMissing, ProviderReasonCodes::PlatformIdentityIncomplete, ProviderReasonCodes::ProviderConnectionReviewRequired => [ [ 'label' => $connection instanceof ProviderConnection ? 'Review migration classification' : 'Manage Provider Connections', 'url' => $connection instanceof ProviderConnection ? ProviderConnectionResource::getUrl('view', ['tenant' => $tenant->external_id, 'record' => (int) $connection->getKey()], panel: 'admin') : ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], [ 'label' => 'Review effective app details', 'url' => $connection instanceof ProviderConnection ? ProviderConnectionResource::getUrl('edit', ['tenant' => $tenant->external_id, 'record' => (int) $connection->getKey()], panel: 'admin') : ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], ], ProviderReasonCodes::DedicatedCredentialMissing, ProviderReasonCodes::DedicatedCredentialInvalid => [ [ 'label' => $connection instanceof ProviderConnection ? 'Manage dedicated connection' : 'Manage Provider Connections', 'url' => $connection instanceof ProviderConnection ? ProviderConnectionResource::getUrl('edit', ['tenant' => $tenant->external_id, 'record' => (int) $connection->getKey()], panel: 'admin') : ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], ], ProviderReasonCodes::ProviderCredentialMissing, ProviderReasonCodes::ProviderCredentialInvalid, ProviderReasonCodes::ProviderConsentFailed, ProviderReasonCodes::ProviderConsentRevoked, ProviderReasonCodes::ProviderAuthFailed, ProviderReasonCodes::ProviderConsentMissing => [ [ 'label' => 'Grant admin consent', 'url' => RequiredPermissionsLinks::adminConsentPrimaryUrl($tenant), ], [ 'label' => $connection instanceof ProviderConnection ? ($connection->connection_type === ProviderConnectionType::Dedicated ? 'Manage dedicated connection' : 'Review platform connection') : 'Manage Provider Connections', 'url' => $connection instanceof ProviderConnection ? ProviderConnectionResource::getUrl('edit', ['tenant' => $tenant->external_id, 'record' => (int) $connection->getKey()], panel: 'admin') : ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], ], ProviderReasonCodes::ProviderPermissionMissing, ProviderReasonCodes::ProviderPermissionDenied, ProviderReasonCodes::ProviderPermissionRefreshFailed, ProviderReasonCodes::IntuneRbacPermissionMissing => [ [ 'label' => 'Open Required Permissions', 'url' => RequiredPermissionsLinks::requiredPermissions($tenant), ], ], ProviderReasonCodes::NetworkUnreachable, ProviderReasonCodes::RateLimited, ProviderReasonCodes::UnknownError => [ [ 'label' => 'Review Provider Connection', 'url' => $connection instanceof ProviderConnection ? ProviderConnectionResource::getUrl('edit', ['tenant' => $tenant->external_id, 'record' => (int) $connection->getKey()], panel: 'admin') : ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], ], default => [ [ 'label' => 'Manage Provider Connections', 'url' => ProviderConnectionResource::getUrl('index', ['tenant' => $tenant->external_id], panel: 'admin'), ], ], }; } }