actingAs($user); Filament::setTenant($tenant, true); return [$user, $tenant]; } /** * @param array $attributes */ protected function makeFindingForWorkflow(Tenant $tenant, string $status = Finding::STATUS_NEW, array $attributes = []): Finding { $factory = Finding::factory()->for($tenant); $factory = match ($status) { Finding::STATUS_ACKNOWLEDGED => $factory->acknowledged(), Finding::STATUS_TRIAGED => $factory->triaged(), Finding::STATUS_IN_PROGRESS => $factory->inProgress(), Finding::STATUS_REOPENED => $factory->reopened(), Finding::STATUS_RESOLVED => $factory->resolved(), Finding::STATUS_CLOSED => $factory->closed(), Finding::STATUS_RISK_ACCEPTED => $factory->riskAccepted(), default => $factory, }; return $factory->create($attributes); } protected function latestFindingAudit(Finding $finding, string|AuditActionId $action): ?AuditLog { $actionValue = $action instanceof AuditActionId ? $action->value : $action; return AuditLog::query() ->where('tenant_id', (int) $finding->tenant_id) ->where('resource_type', 'finding') ->where('resource_id', (string) $finding->getKey()) ->where('action', $actionValue) ->latest('id') ->first(); } }