getKey(), tenantName: $tenant->name, presentation: $presentation, contextNote: self::contextNoteFor($presentation), ); } public static function forInvalid(string $viewerContext, ?Tenant $tenant = null, ?string $normalizedValue = null): self { return new self( viewerContext: $viewerContext, tenantId: $tenant instanceof Tenant ? (int) $tenant->getKey() : null, tenantName: $tenant?->name, presentation: TenantLifecyclePresentation::invalid($normalizedValue), contextNote: 'Some tenant follow-up actions may be unavailable from this canonical workspace view.', ); } public function selectorAvailabilityMessage(): ?string { if ($this->presentation->isInvalidFallback) { return 'This tenant has an invalid lifecycle value and may not appear in the tenant selector.'; } if (! $this->presentation->isSelectableAsContext()) { return 'This tenant is currently '.$this->presentation->lowercaseLabel().' and may not appear in the tenant selector.'; } return null; } private static function contextNoteFor(TenantLifecyclePresentation $presentation): ?string { if ($presentation->isInvalidFallback || ! $presentation->isSelectableAsContext()) { return 'Some tenant follow-up actions may be unavailable from this canonical workspace view.'; } return null; } }