| 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\Events\Concerns\HasStandardPayload;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
abstract class BaseModelEvent implements ShouldBroadcast
{
use Dispatchable, HasStandardPayload, InteractsWithSockets, SerializesModels;
public function __construct(
public Model $model,
public ?int $actorId = null,
) {}
/**
* Get the data to broadcast.
*/
public function broadcastWith(): array
{
return $this->withMetadata([
'model_type' => class_basename($this->model),
'model_id' => $this->model->getKey(),
'actor_id' => $this->actorId,
...$this->getModelPayload(),
]);
}
/**
* Get model-specific payload data.
*/
abstract protected function getModelPayload(): array;
/**
* Get the broadcast channel name.
*/
abstract public function broadcastOn(): array;
/**
* Get the broadcast event name.
*/
public function broadcastAs(): string
{
$modelName = strtolower(class_basename($this->model));
$action = $this->getActionName();
return "{$modelName}.{$action}";
}
/**
* Get action name from event class.
*/
protected function getActionName(): string
{
$className = class_basename(static::class);
$modelName = class_basename($this->model);
$action = str_replace($modelName, '', $className);
$action = preg_replace('/([a-z])([A-Z])/', '$1.$2', $action);
return strtolower(trim($action, '.'));
}
}