<?php

namespace App\Models;

use CodeIgniter\Model;
use App\Models\HomeSettingModel; // Pastikan kita memanggil HomeSettingModel

class AdminMenuModel extends Model
{
    protected $DBGroup = 'posDB';

    public function getAllMenuDataAdmin()
    {
        try {
            $db = \Config\Database::connect('posDB');
            $targetKategori = ['J01', 'J02', 'J03', 'J04', 'J07', 'J10', 'J11'];

            // 1. Ambil data kategori dari POS
            $kategoriData = $db->table('jenismenu')->whereIn('kdjenis', $targetKategori)->get()->getResultArray();
            
            // 2. Ambil data menu dari POS
            $menuData = $db->table('tabel_menu')
                       ->whereIn('jenismenu', $targetKategori)
                       ->orderBy('jenismenu', 'ASC')
                       ->orderBy('no_urut', 'ASC')
                       ->get()->getResultArray();

            // 3. Ambil konfigurasi Web (Overrides gambar, nama, dan hidden) dari DB default/lokal
            $settingModel = new HomeSettingModel();
            $configRaw = $settingModel->where('key_name', 'web_menu_config')->first();
            $webConfig = $configRaw ? json_decode($configRaw['value_text'], true) : [];

            // 4. Siapkan penampung hasil
            $hasil = [];
            foreach ($kategoriData as $kat) {
                $hasil[$kat['kdjenis']] = ['keterangan' => $kat['keterangan'], 'items' => []];
            }

            // 5. Masukkan data menu sekaligus gabungkan (override) dengan webConfig
            foreach ($menuData as $menu) {
                $kdjenis = $menu['jenismenu'];
                $kodeMenu = $menu['kode_menu'];

                // Jika ada kustomisasi untuk menu ini di web_menu_config, timpa data aslinya
                if (isset($webConfig[$kodeMenu])) {
                    $menu['is_hidden'] = isset($webConfig[$kodeMenu]['is_hidden']) ? $webConfig[$kodeMenu]['is_hidden'] : false;
                    
                    if (!empty($webConfig[$kodeMenu]['nama_menu'])) {
                        $menu['nama_menu'] = $webConfig[$kodeMenu]['nama_menu'];
                    }
                    
                    if (!empty($webConfig[$kodeMenu]['foto'])) {
                        $menu['foto'] = $webConfig[$kodeMenu]['foto']; // Menggunakan nama file baru seperti 12.png
                    }
                } else {
                    $menu['is_hidden'] = false;
                }

                if (isset($hasil[$kdjenis])) {
                    $hasil[$kdjenis]['items'][] = $menu;
                }
            }

            return $hasil;

        } catch (\Exception $e) {
            die("<div style='background:#ffcccc; padding:20px; border:2px solid red; font-family:sans-serif;'>
                    <h2>🚨 Error di AdminMenuModel!</h2>
                    <p><b>Pesan Error:</b> " . $e->getMessage() . "</p>
                 </div>");
        }
    }
}