<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class UserOnlineStatusEvent implements ShouldBroadcast
{
	use Dispatchable, InteractsWithSockets, SerializesModels;
	
	public $user;
	public $status; // 'online' hoặc 'offline'
	
	public function __construct($user, $status)
	{
		$this->user = $user;
		$this->status = $status;
	}
	
	/*public function broadcastAs()
	{
		return 'user.online.status';
	}*/
	
	public function broadcastWith()
	{
		return [
			'user'      => [
				'id'   => $this->user->id,
				'name' => $this->user->name,
			],
			'status'    => $this->status,
			'timestamp' => now()->toISOString()
		];
	}
	
	public function broadcastOn()
	{
		return new PrivateChannel('chat.admin.all');
	}
}
