netgescon-day0/app/Filament/Pages/SuperAdmin/ControlloQualita.php

86 lines
2.3 KiB
PHP

<?php
namespace App\Filament\Pages\SuperAdmin;
use App\Http\Controllers\Admin\CodeQualityController;
use App\Models\User;
use BackedEnum;
use Filament\Pages\Page;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use UnitEnum;
class ControlloQualita extends Page
{
protected static ?string $navigationLabel = 'Controllo qualità';
protected static ?string $title = 'Controllo qualità · Procedure e Archivi';
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-shield-check';
protected static UnitEnum|string|null $navigationGroup = 'SuperAdmin';
protected static ?int $navigationSort = 10;
protected static ?string $slug = 'superadmin/controllo-qualita';
protected string $view = 'filament.pages.superadmin.controllo-qualita';
public string $path = 'app,resources/views';
public string $severity = 'all';
public string $module = 'all';
public string $menu = 'all';
public bool $includeDataChecks = true;
/** @var array<int, array<string, mixed>> */
public array $results = [];
/** @var array<string, mixed> */
public array $summary = [
'total_scanned_files' => 0,
'total_issues' => 0,
'by_severity' => [
'critical' => 0,
'error' => 0,
'warning' => 0,
'info' => 0,
],
'by_rule' => [],
];
public static function canAccess(): bool
{
$user = Auth::user();
return $user instanceof User && $user->hasRole('super-admin');
}
public function mount(): void
{
$this->runScan();
}
public function runScan(): void
{
$controller = app(CodeQualityController::class);
$request = Request::create('/admin/code-quality/scan', 'POST', [
'path' => $this->path,
'severity' => $this->severity,
'module' => $this->module,
'menu' => $this->menu,
'include_data_checks' => $this->includeDataChecks ? 1 : 0,
]);
$response = $controller->scan($request);
$payload = $response->getData(true);
$this->results = is_array($payload['results'] ?? null) ? $payload['results'] : [];
$this->summary = is_array($payload['summary'] ?? null) ? $payload['summary'] : $this->summary;
}
}