<?php

namespace App\Jobs;

use App\Models\Hostel;
use App\Models\Room;
use App\Models_v2\Conversation;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class CreateRoomConservationV2 implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public $roomId;
    public $userId;

    public function __construct($roomId, $userId)
    {
        //
        $this->roomId = $roomId;
        $this->userId = $userId;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        $room = Room::find($this->roomId);
        if (!$room) {
            return;
        }
        $owner = $room->hostel->owner;
        if (!$owner) {
            return;
        }

        $user = User::find($this->userId);
        $membersArr = [
            $owner->id
        ];
        if ($user) {
            $membersArr[] = $user->id;
        }
        $membersArr = array_unique($membersArr);
        sort( $membersArr );

        $check = Conversation::query()
            ->where('is_find', false)
            ->where('room_id', $room->id)
            ->first();
        if($check)
        {
            return;
        }

        $conversation = Conversation::create([
            'name' => $room->name,
            'image' => '/frontend3/assets/img/placeholder.png',
            'members' => json_encode($membersArr),
            'room_id' => $room->id,
            'is_find' => false
        ]);

        $conversation->users()->sync( $membersArr );
    }
}
