<?php

namespace App\Models;

use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Conversation extends Model
{
    //
    use SoftDeletes;

    const ALLOW_CHAT_EVERYONE = 1;
    const ALLOW_CHAT_ADMIN_ONLY = 2;

    protected $fillable = [
        'id',
        'last_message_from',
        'last_message_time',
        'last_message_is_read',
        'last_message_id',
        'channel',
        'name',
        'image',
        'members',
        'room_id',
        'hostel_id',
        'user_id',
        'last_message',
        'is_group',
        'created_at',
        'updated_at',
        'deleted_at',
        'is_visible',
        'allow_chat',
        'member_names'
    ];

    protected $dates = [
        'created_at',
        'updated_at',
        'deleted_at'
    ];

    public function users()
    {
        return $this->belongsToMany(User::class, 'user_conversations', 'conversation_id', 'user_id');
    }

    public function lastMessageItem()
    {
        return $this->belongsTo(Message::class, 'last_message_id', 'id');
    }

    public function getImageAttribute()
    {
        if(empty($this->attributes['image']))
        {
            return '/frontend3/assets/img/placeholder.png';
        }
	    if(str_contains($this->attributes['image'], 'https://itro.vn'))
	    {
		    return str_replace('https://itro.vn', '', $this->attributes['image']);
	    }

        return $this->attributes['image'];
    }

    public function getNameAttribute()
    {
        $name = $this->attributes['name'];

        if(empty($name))
        {
            $isGroup = false;

            $cnt = \DB::table('user_conversations')
                ->where('conversation_id', $this->attributes['id'])
                ->count();

            if($cnt > 2)
            {
                $isGroup = true;
            }

            if($isGroup)
            {
                if(isset($this->attributes['member_names']))
                {
                    $names = explode(',', $this->attributes['member_names']);
                    return implode(', ', $names);
                }
                $userIds = \DB::table('user_conversations')->where('conversation_id',  $this->attributes['id'])
                    ->pluck('user_id')->toArray();

                $userIds = array_unique($userIds);

                $users = User::whereIn('id', $userIds)->get();

                $nameArr = [];
                foreach ($users as $user) {
                    $nameArr[] = $user->name_text;
                }

                return implode(', ', $nameArr);
            }
        }

        return $name;
    }


    public function getIsGroupAttribute()
    {
        $isGroup = false;

        $cnt = \DB::table('user_conversations')
            ->where('conversation_id', $this->attributes['id'])
            ->count();

        if($cnt > 2)
        {
            $isGroup = true;
        }

        return $isGroup;
    }
}
