getRecord(); $status = $record->status instanceof BaselineProfileStatus ? $record->status : (BaselineProfileStatus::tryFrom((string) $record->status) ?? BaselineProfileStatus::Draft); return $status->label(); } public function getSubHeadingBadgeColor(): string { $record = $this->getRecord(); $status = $record->status instanceof BaselineProfileStatus ? $record->status : (BaselineProfileStatus::tryFrom((string) $record->status) ?? BaselineProfileStatus::Draft); return $status->color(); } /** * @param array $data * @return array */ protected function mutateFormDataBeforeSave(array $data): array { $record = $this->getRecord(); $currentStatus = $record->status instanceof BaselineProfileStatus ? $record->status : (BaselineProfileStatus::tryFrom((string) $record->status) ?? BaselineProfileStatus::Draft); if ($currentStatus === BaselineProfileStatus::Archived) { unset($data['status']); } if (isset($data['scope_jsonb'])) { $policyTypes = $data['scope_jsonb']['policy_types'] ?? []; $foundationTypes = $data['scope_jsonb']['foundation_types'] ?? []; $data['scope_jsonb'] = [ 'policy_types' => is_array($policyTypes) ? array_values(array_filter($policyTypes, 'is_string')) : [], 'foundation_types' => is_array($foundationTypes) ? array_values(array_filter($foundationTypes, 'is_string')) : [], ]; } return $data; } protected function afterSave(): void { $record = $this->record; if (! $record instanceof BaselineProfile) { return; } BaselineProfileResource::audit($record, AuditActionId::BaselineProfileUpdated, [ 'baseline_profile_id' => (int) $record->getKey(), 'name' => (string) $record->name, 'status' => $record->status instanceof BaselineProfileStatus ? $record->status->value : (string) $record->status, ]); Notification::make() ->title('Baseline profile updated') ->success() ->send(); } protected function getRedirectUrl(): string { return $this->getResource()::getUrl('view', ['record' => $this->getRecord()]); } }