From caf36a15949b92d2cba43e24ddc1e3067f3f758e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 17 Oct 2024 17:59:21 +0200 Subject: [PATCH] support for credit was updated --- app/Events/Credit/CreditWasUpdated.php | 36 +++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/app/Events/Credit/CreditWasUpdated.php b/app/Events/Credit/CreditWasUpdated.php index 1cf266f3f2..977220b1d2 100644 --- a/app/Events/Credit/CreditWasUpdated.php +++ b/app/Events/Credit/CreditWasUpdated.php @@ -14,10 +14,15 @@ namespace App\Events\Credit; use App\Models\Company; use App\Models\Credit; use Illuminate\Broadcasting\InteractsWithSockets; +use Illuminate\Broadcasting\PrivateChannel; +use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; +use League\Fractal\Manager; +use App\Transformers\ArraySerializer; +use League\Fractal\Resource\Item; -class CreditWasUpdated +class CreditWasUpdated implements ShouldBroadcast { use Dispatchable; use InteractsWithSockets; @@ -41,5 +46,34 @@ class CreditWasUpdated $this->credit = $credit; $this->company = $company; $this->event_vars = $event_vars; + + $this->dontBroadcastToCurrentUser(); + } + + /** + * @inheritDoc + */ + public function broadcastOn() + { + return [ + new PrivateChannel("company-{$this->company->company_key}"), + ]; + } + + /** + * @inheritDoc + */ + public function broadcastWith(): array + { + $manager = new Manager(); + $manager->setSerializer(new ArraySerializer()); + $class = sprintf('App\\Transformers\\%sTransformer', class_basename($this->credit)); + + $transformer = new $class(); + + $resource = new Item($this->credit, $transformer, $this->credit->getEntityType()); + $data = $manager->createData($resource)->toArray(); + + return [...$data, 'x-socket-id' => $this->socket]; } }