| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/client-portal-laravel/releases/20260626120707/app/Events/ |
Upload File : |
<?php
declare(strict_types=1);
namespace App\Events;
use App\Models\Files\ProjectFile;
use App\Models\Files\VirusScanResult;
use App\Services\VirusScanService;
use Illuminate\Broadcasting\PrivateChannel;
class FileScanCompleted extends BaseModelEvent
{
public function __construct(
ProjectFile $file,
public VirusScanResult $scanResult,
?int $actorId = null,
) {
parent::__construct($file, $actorId);
}
/**
* Get the file model.
*/
public function getFile(): ProjectFile
{
/** @var ProjectFile $file */
$file = $this->model;
return $file;
}
/**
* Get the broadcast channels.
*/
public function broadcastOn(): array
{
return [
new PrivateChannel('project.'.$this->getFile()->project_id),
];
}
/**
* Get the broadcast event name.
*/
public function broadcastAs(): string
{
return 'file.scan.completed';
}
/**
* Get scan-specific payload data.
*/
protected function getModelPayload(): array
{
$virusScanService = app(VirusScanService::class);
$file = $this->getFile();
return [
'file_id' => $file->id,
'file_name' => $file->original_filename,
'status' => $virusScanService->getFormattedScanStatus($file),
'is_clean' => $this->scanResult->is_clean,
];
}
}