51 lines
1.7 KiB
PHP
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();
|
|
}
|
|
}),
|
|
];
|
|
}
|
|
}
|