<?php

namespace App\Http\Controllers\Customer;

use App\Http\Controllers\Controller;
use App\Models\Produk;
use App\Models\Kategori;
use App\Models\Pesanan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        // 🔥 PERBAIKAN: Tambahkan with('varians') dan with('varians.photos')
        $query = Produk::with(['kategori', 'varians'])->newQuery();

        if ($request->search) {
            $query->where('nama', 'like', '%' . $request->search . '%');
        }

        if ($request->kategori) {
            $query->where('kategori_id', $request->kategori);
        }

        $produkTerbaru = $query->latest()->paginate(8);
        
        // 🔥 TAMBAHKAN: Proses setiap produk untuk mendapatkan harga dan stok
        foreach ($produkTerbaru as $produk) {
            // Ambil harga termurah dari semua varian (untuk ditampilkan di card)
            $produk->harga_terendah = $produk->varians->min('harga') ?? 0;
            // Total stok dari semua varian
            $produk->total_stok = $produk->varians->sum('stok');
            // Range harga (jika diperlukan)
            $hargaMin = $produk->varians->min('harga');
            $hargaMax = $produk->varians->max('harga');
            $produk->harga_range = ($hargaMin == $hargaMax || !$hargaMax) 
                ? 'Rp ' . number_format($hargaMin, 0, ',', '.')
                : 'Rp ' . number_format($hargaMin, 0, ',', '.') . ' - Rp ' . number_format($hargaMax, 0, ',', '.');
        }

        $kategoriList = Kategori::orderBy('nama')->get();

        return view('customer.dashboard', compact('produkTerbaru', 'kategoriList'));
    }

    public function show($id)
    {
        // 🔥 PERBAIKAN: Tambahkan with('varians') untuk detail produk
        $produk = Produk::with(['kategori', 'varians.photos'])->findOrFail($id);
        
        // Ambil varian pertama untuk harga default
        $defaultVarian = $produk->varians->first();
        
        // 🔥 PERBAIKAN: Perbaiki kolom 'id_kategori' menjadi 'kategori_id'
        $produkLain = Produk::with(['kategori', 'varians'])
            ->where('kategori_id', $produk->kategori_id)
            ->where('id', '!=', $produk->id)
            ->whereHas('varians', function($q) {
                $q->where('stok', '>', 0);
            })
            ->latest()
            ->take(4)
            ->get();
            
        // Proses produk lain untuk mendapatkan harga
        foreach ($produkLain as $item) {
            $item->harga_terendah = $item->varians->min('harga') ?? 0;
            $item->total_stok = $item->varians->sum('stok');
        }

        return view('customer.produk.show', compact('produk', 'produkLain', 'defaultVarian'));
    }
}