<?php

namespace App\Livewire;

use Livewire\Component;
// Hapus use Kreait\Firebase\Factory, etc. jika tidak lagi digunakan di sini

class SelectTable extends Component
{
    // Properti ini akan diisi dari parent (FoodOrder)
    public array $availableTables = [];
    public ?string $selectedTableId = null; // Ini mungkin tidak perlu jika Anda hanya menerima data ID

    public bool $show = false; // Ini untuk kontrol visibilitas modal dari FoodOrder

    // Listener 'refreshSelectTableModal' tidak lagi memanggil syncTablesFromFirebase di sini
    // Melainkan, Anda bisa melewatkan availableTables dari FoodOrder ke modal.
    // Jika Anda masih ingin modal me-refresh sendiri, maka syncTablesFromFirebase HARUS ADA.
    // Untuk saat ini, kita asumsikan FoodOrder meneruskan data yang sudah di-sync.
    protected $listeners = [
        'closeThisModal' => 'closeModal',
        // 'refreshSelectTableModal' => 'syncTablesFromFirebase', // Hapus ini jika syncTablesFromFirebase dihapus
    ];

    // Hapus mount() jika tidak ada lagi logika yang perlu dijalankan saat mount
    // public function mount()
    // {
    //     // Tidak perlu panggil syncTablesFromFirebase di sini lagi jika parent yang menyediakan data
    // }

    // Hapus getFirebaseDatabase() dan syncTablesFromFirebase() dari sini

    public function selectTable(string $tableId)
    {
        $foundTable = collect($this->availableTables)->firstWhere('id', $tableId);

        if ($foundTable) {
            // Dispatch event ke komponen FoodOrder (parent) dengan data meja
            $this->dispatch('tableSelected', $tableId)->to(FoodOrder::class);
            $this->closeModal(); // Tutup modal setelah pemilihan
        } else {
            // Jika meja tidak valid, beri notifikasi. FoodOrder akan me-refresh daftar mejanya.
            $this->dispatch('notify', message: 'Meja tidak valid atau sudah tidak tersedia.')->to(FoodOrder::class);
            // TIDAK ADA syncTablesFromFirebase() DI SINI
        }
    }

    public function closeModal()
    {
        $this->show = false;
    }

    public function render()
    {
        // View ini akan menerima $availableTables dari parent
        return view('livewire.select-table');
    }
}
