| 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\Core\User;
use App\Models\Projects\ProjectPlan;
use Illuminate\Broadcasting\PrivateChannel;
class PlanStatusChanged extends BaseStatusChangeEvent
{
public function __construct(
ProjectPlan $plan,
public User $recipient,
string $previousStatus,
?int $actorId = null,
) {
parent::__construct($plan, $previousStatus, $plan->status->value, $actorId);
}
/**
* Get the plan model.
*/
public function getPlan(): ProjectPlan
{
/** @var ProjectPlan $plan */
$plan = $this->model;
return $plan;
}
/**
* Get the broadcast channels.
*/
public function broadcastOn(): array
{
return [
new PrivateChannel('App.Models.User.'.$this->recipient->id),
];
}
/**
* Get the broadcast event name.
*/
public function broadcastAs(): string
{
return 'plan.status.changed';
}
/**
* Get plan-specific payload data.
*/
protected function getStatusChangePayload(): array
{
$plan = $this->getPlan();
return [
'plan' => [
'id' => $plan->id,
'title' => $plan->title,
],
'project' => [
'id' => $plan->project->id,
'name' => $plan->project->name,
],
'recipient_id' => $this->recipient->id,
];
}
}