NewPublicPost.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Events\Notification;
  3. use Illuminate\Broadcasting\Channel;
  4. use Illuminate\Queue\SerializesModels;
  5. use Illuminate\Broadcasting\PrivateChannel;
  6. use Illuminate\Broadcasting\PresenceChannel;
  7. use Illuminate\Foundation\Events\Dispatchable;
  8. use Illuminate\Broadcasting\InteractsWithSockets;
  9. use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
  10. use App\Status;
  11. use App\Transformer\Api\StatusTransformer;
  12. use League\Fractal;
  13. use League\Fractal\Serializer\ArraySerializer;
  14. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  15. class NewPublicPost implements ShouldBroadcastNow
  16. {
  17. use Dispatchable, InteractsWithSockets, SerializesModels;
  18. protected $status;
  19. /**
  20. * Create a new event instance.
  21. *
  22. * @return void
  23. */
  24. public function __construct(Status $status)
  25. {
  26. $this->status = $status;
  27. }
  28. public function broadcastAs()
  29. {
  30. return 'status';
  31. }
  32. public function broadcastOn()
  33. {
  34. return new Channel('firehost.public');
  35. }
  36. public function broadcastWith()
  37. {
  38. $resource = new Fractal\Resource\Item($this->status, new StatusTransformer());
  39. $res = $this->fractal->createData($resource)->toArray();
  40. return [
  41. 'entity' => $res
  42. ];
  43. }
  44. public function via()
  45. {
  46. return 'broadcast';
  47. }
  48. }