TenantAtlas/app/Filament/Resources/PolicyResource/Pages/ListPolicies.php
2025-12-25 01:20:04 +01:00

51 lines
1.7 KiB
PHP

<?php
namespace App\Filament\Resources\PolicyResource\Pages;
use App\Filament\Resources\PolicyResource;
use App\Models\Tenant;
use App\Services\Intune\PolicySyncService;
use Filament\Actions;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\ListRecords;
class ListPolicies extends ListRecords
{
protected static string $resource = PolicyResource::class;
protected function getHeaderActions(): array
{
return [
Actions\Action::make('sync')
->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);
$synced = $service->syncPolicies($tenant);
Notification::make()
->title('Policy sync completed')
->body(count($synced).' policies synced')
->success()
->sendToDatabase(auth()->user())
->send();
} catch (\Throwable $e) {
Notification::make()
->title('Policy sync failed')
->body($e->getMessage())
->danger()
->sendToDatabase(auth()->user())
->send();
}
}),
];
}
}