| 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 Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
/**
* Job status update event for real-time broadcasting.
*
* IMPORTANT: Uses ShouldBroadcastNow (not ShouldBroadcast) to broadcast
* synchronously. Using ShouldBroadcast would queue the broadcast, which
* triggers another JobStatusUpdated event, creating an infinite loop.
*/
class JobStatusUpdated implements ShouldBroadcastNow
{
use Dispatchable, InteractsWithSockets;
/**
* Create a new event instance.
*/
public function __construct(
public string $jobClass,
public string $status,
public array $data = []
) {}
/**
* Get the channels the event should broadcast on.
*/
public function broadcastOn(): Channel
{
return new Channel('jobs');
}
/**
* Get the broadcast event name.
*/
public function broadcastAs(): string
{
return 'status.updated';
}
/**
* Get the data to broadcast.
*/
public function broadcastWith(): array
{
return [
'job_class' => $this->jobClass,
'short_name' => class_basename($this->jobClass),
'status' => $this->status,
'timestamp' => now()->toIso8601String(),
...$this->data,
];
}
}