*/ protected function getViewData(): array { $tenant = Filament::getTenant(); if (! $tenant instanceof Tenant) { return [ 'shouldShow' => false, ]; } $aggregate = $this->governanceAggregate($tenant); $runUrl = $aggregate->stats->operationRunId !== null ? OperationRunLinks::view($aggregate->stats->operationRunId, $tenant) : null; $landingUrl = BaselineCompareLanding::getUrl(panel: 'tenant', tenant: $tenant); $nextActionUrl = match ($aggregate->nextActionTarget) { 'run' => $runUrl, 'findings' => \App\Filament\Resources\FindingResource::getUrl('index', panel: 'tenant', tenant: $tenant), 'landing' => $landingUrl, default => null, }; $shouldShow = in_array($aggregate->stateFamily, ['caution', 'stale', 'unavailable', 'in_progress'], true) || $aggregate->stateFamily === 'action_required'; return [ 'shouldShow' => $shouldShow, 'landingUrl' => $landingUrl, 'runUrl' => $runUrl, 'nextActionUrl' => $nextActionUrl, 'summaryAssessment' => $aggregate->summaryAssessment->toArray(), 'state' => $aggregate->compareState, ]; } private function governanceAggregate(Tenant $tenant): TenantGovernanceAggregate { /** @var TenantGovernanceAggregateResolver $resolver */ $resolver = app(TenantGovernanceAggregateResolver::class); /** @var TenantGovernanceAggregate $aggregate */ $aggregate = $resolver->forTenant($tenant); return $aggregate; } }