<?php

namespace App\Livewire\Grids;

use App\Models\Room;
use App\Models\Branch;
use App\Enums\RoomType;

use Livewire\Component;
use Illuminate\Database\Eloquent\Collection;


class RoomGrid extends Component
{
    public ?int $selectedBranchId = null;
    public string $external_ip= "";
    public array $roomTypes;
    public $room;

    public function mount()
    {
        $this->roomTypes = ['all' => '全部'] + collect(RoomType::cases())->mapWithKeys(
            fn($e) => [$e->value => $e->labels()]
        )->toArray();
        $this->selectChanged(Branch::first()->id,"","");
        
    }
    public function selectChanged($value,$fieldName, $modelId): void
    {
        $branch = $value ? Branch::find($value) : null;
        $this->selectedBranchId=$branch?->id ?? '';
        $this->external_ip = $branch?->external_ip ?? '';
    }

    public function render()
    {

        $this->rooms = Room::where('branch_id', $this->selectedBranchId)->orderBy('name')->get();

        $floors = $this->rooms->pluck('floor')->unique()->sort()->values()->toArray();
        array_unshift($floors, 'all');

        return view('livewire.grids.room-grid', [
            'rooms' => $this->rooms,
            'floors' => $floors,
        ]);
    }
}
