| 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\Invoicing\Invoice;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Database\Eloquent\Model;
class InvoiceStatusChanged extends BaseStatusChangeEvent
{
public function __construct(
Invoice $invoice,
string $previousStatus,
?int $actorId = null,
) {
parent::__construct($invoice, $previousStatus, $invoice->status->value, $actorId);
}
/**
* Get the invoice model.
*/
public function getInvoice(): Invoice
{
/** @var Invoice $invoice */
$invoice = $this->model;
return $invoice;
}
/**
* Get the broadcast channels.
*/
public function broadcastOn(): array
{
$invoice = $this->getInvoice();
return [
new PrivateChannel('client.'.$invoice->client_id),
new PrivateChannel('admin.dashboard'),
];
}
/**
* Get the broadcast event name.
*/
public function broadcastAs(): string
{
return 'invoice.status.changed';
}
/**
* Get invoice-specific payload data.
*/
protected function getStatusChangePayload(): array
{
$invoice = $this->getInvoice();
return [
'invoice' => [
'id' => $invoice->id,
'number' => $invoice->number,
'total' => $invoice->total,
'formatted_total' => $invoice->formatted_total,
],
'client' => [
'id' => $invoice->client_id,
'name' => $invoice->client->name,
],
];
}
}