label('Capture snapshot') ->requiresConfirmation() ->modalHeading('Capture snapshot now') ->modalSubheading('This will fetch the latest configuration from Microsoft Graph and store a new policy version.') ->action(function () { $policy = $this->record; try { $tenant = $policy->tenant; if (! $tenant) { Notification::make() ->title('Policy has no tenant associated.') ->danger() ->send(); return; } app(VersionService::class)->captureFromGraph($tenant, $policy, auth()->user()?->email ?? null); Notification::make() ->title('Snapshot captured successfully.') ->success() ->send(); $this->redirect($this->getResource()::getUrl('view', ['record' => $policy->getKey()])); } catch (\Throwable $e) { Notification::make() ->title('Failed to capture snapshot: '.$e->getMessage()) ->danger() ->send(); } }) ->color('primary'), ]; } }