<?php

namespace App\Events;

use App\Message;
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 SeenMessageEvent implements ShouldBroadcast
{
	use Dispatchable, InteractsWithSockets, SerializesModels;
	
	public $message;
	
	public function __construct(Message $message)
	{
		$this->message = $message;
	}
	
	public function broadcastWith()
	{
		return [
			'id'                   => $this->message->id,
			'conversation_id'      => $this->message->conversation_id,
			'sender_id'            => $this->message->sender_id,
			'sender_name'          => $this->message->sender ? $this->message->sender->name : 'Worker',
			'sender_furigana_name' => $this->message->sender ? $this->message->sender->furigana_name : null,
			'sender_avatar'        => $this->message->sender ? $this->message->sender->avatar : 'avatar.png',
			'type'                 => $this->message->type,
			'content'              => $this->message->content,
			'content_type'         => $this->message->content_type,
			'file_path'            => $this->message->file_path,
			'is_read'              => $this->message->is_read,
			'read_at'              => $this->message->read_at,
		];
	}
	
	public function broadcastOn()
	{
		return new PrivateChannel('chat.conversion.' . $this->message->conversation->id);
	}
}
