<?php

namespace App;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Conversation extends Model
{
	use HasFactory;
	
	protected $fillable = ['user_id', 'title', 'has_new', 'is_active', 'last_message_at'];
	
	protected $casts = [
		'has_new'         => 'boolean',
		'is_active'       => 'boolean',
		'last_message_at' => 'datetime'
	];
	
	public function messages()
	{
		return $this->hasMany(Message::class)->select('id', 'conversation_id', 'content', 'content_type', 'type', 'is_read', 'created_at');
	}
	
	public function lastMessage()
	{
		return $this->hasOne(Message::class)->select('id', 'conversation_id', 'sender_id', 'content', 'content_type', 'type', 'is_read', 'created_at')->latest();
	}
	
	public function user()
	{
		return $this->belongsTo(User::class)->select('id', 'name', 'username', 'first_name', 'last_name', 'full_name', 'furigana_name', 'avatar', 'is_online', 'last_activity', 'is_activated');
	}
	
	public function users() {
		return $this->hasMany(UserConversation::class)->with('user');
	}
}
