label('Sync from Intune') ->icon('heroicon-o-arrow-path') ->color('primary') ->requiresConfirmation() ->action(function () { try { $tenant = Tenant::current(); /** @var PolicySyncService $service */ $service = app(PolicySyncService::class); $result = $service->syncPoliciesWithReport($tenant); $syncedCount = count($result['synced'] ?? []); $failureCount = count($result['failures'] ?? []); $body = $syncedCount.' policies synced'; if ($failureCount > 0) { $first = $result['failures'][0] ?? []; $firstType = $first['policy_type'] ?? 'unknown'; $firstStatus = $first['status'] ?? null; $firstErrorMessage = null; $firstErrors = $first['errors'] ?? null; if (is_array($firstErrors) && isset($firstErrors[0]) && is_array($firstErrors[0])) { $firstErrorMessage = $firstErrors[0]['message'] ?? null; } $suffix = $firstStatus ? "first: {$firstType} {$firstStatus}" : "first: {$firstType}"; if (is_string($firstErrorMessage) && $firstErrorMessage !== '') { $suffix .= ' - '.trim($firstErrorMessage); } $body .= " ({$failureCount} failed; {$suffix})"; } Notification::make() ->title('Policy sync completed') ->body($body) ->success() ->sendToDatabase(auth()->user()) ->send(); } catch (\Throwable $e) { Notification::make() ->title('Policy sync failed') ->body($e->getMessage()) ->danger() ->sendToDatabase(auth()->user()) ->send(); } }), ]; } }