86 lines
2.3 KiB
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;
|
|
}
|
|
}
|