*/ protected function getViewData(): array { $tenant = Filament::getTenant(); $empty = [ 'hasAssignment' => false, 'profileName' => null, 'lastComparedAt' => null, 'landingUrl' => null, 'runUrl' => null, 'findingsUrl' => null, 'nextActionUrl' => null, 'summaryAssessment' => null, ]; if (! $tenant instanceof Tenant) { return $empty; } $aggregate = $this->governanceAggregate($tenant); if ($aggregate->compareState === 'no_assignment') { return $empty; } $tenantLandingUrl = BaselineCompareLanding::getUrl(panel: 'tenant', tenant: $tenant); $runUrl = $aggregate->stats->operationRunId !== null ? OperationRunLinks::view($aggregate->stats->operationRunId, $tenant) : null; $findingsUrl = FindingResource::getUrl('index', panel: 'tenant', tenant: $tenant); $nextActionUrl = match ($aggregate->nextActionTarget) { 'run' => $runUrl, 'findings' => $findingsUrl, 'landing' => $tenantLandingUrl, default => null, }; return [ 'hasAssignment' => true, 'profileName' => $aggregate->profileName, 'lastComparedAt' => $aggregate->lastComparedLabel, 'landingUrl' => $tenantLandingUrl, 'runUrl' => $runUrl, 'findingsUrl' => $findingsUrl, 'nextActionUrl' => $nextActionUrl, 'summaryAssessment' => $aggregate->summaryAssessment->toArray(), ]; } private function governanceAggregate(Tenant $tenant): TenantGovernanceAggregate { /** @var TenantGovernanceAggregateResolver $resolver */ $resolver = app(TenantGovernanceAggregateResolver::class); /** @var TenantGovernanceAggregate $aggregate */ $aggregate = $resolver->forTenant($tenant); return $aggregate; } }