<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Produk;
use App\Models\Cart;
use Illuminate\Support\Facades\Auth;

class CartController extends Controller
{
    // Menampilkan Halaman Keranjang
    public function index()
    {
        // Cek Login Pembeli
        if (!Auth::guard('pembeli')->check()) {
            return redirect()->route('login')->with('error', 'Silakan login terlebih dahulu untuk melihat keranjang.');
        }

        $pembeli_id = Auth::guard('pembeli')->id();

        // Ambil data keranjang dari Database 
        $cart = Cart::with('produk')->where('pembeli_id', $pembeli_id)->get();

        return view('landing.cart', compact('cart'));
    }

    // Menambahkan Produk ke DB Keranjang
    public function addToCart(Request $request)
    {
        // Validasi Login
        if (!Auth::guard('pembeli')->check()) {
            return redirect()->route('login')->with('error', 'Silakan login dulu untuk belanja!');
        }

        $produk_id = $request->id;
        $pembeli_id = Auth::guard('pembeli')->id();
        $quantity = $request->qty ? $request->qty : 1;

        // Cek stok produk 
        $produk = Produk::find($produk_id);
        if ($produk->stok < $quantity) {
            return redirect()->back()->with('error', 'Stok produk tidak mencukupi.');
        }

        // Cek produk yang ada di keranjang database user
        $existingCart = Cart::where('pembeli_id', $pembeli_id)
            ->where('produk_id', $produk_id)
            ->first();

        if ($existingCart) {
            $existingCart->quantity += $quantity;
            $existingCart->save();
        } else {
            Cart::create([
                'pembeli_id' => $pembeli_id,
                'produk_id'  => $produk_id,
                'quantity'   => $quantity
            ]);
        }

        return redirect()->back()->with('success', 'Produk berhasil masuk keranjang!');
    }

    public function updateCart(Request $request)
    {
        if (!Auth::guard('pembeli')->check()) {
            return response()->json(['status' => 'error', 'message' => 'Unauthorized']);
        }

        if ($request->id && $request->quantity) {
            $cartItem = Cart::where('id', $request->id)
                ->where('pembeli_id', Auth::guard('pembeli')->id())
                ->first();

            if ($cartItem) {
                $cartItem->quantity = $request->quantity;
                $cartItem->save();
                session()->flash('success', 'Keranjang berhasil diperbarui');
            }
        }
    }

    // Menghapus Item dari DB Keranjang
    public function remove(Request $request)
    {
        if (!Auth::guard('pembeli')->check()) {
            return redirect()->route('login');
        }

        if ($request->id) {
            Cart::where('id', $request->id)
                ->where('pembeli_id', Auth::guard('pembeli')->id())
                ->delete();

            return redirect()->back()->with('success', 'Produk dihapus dari keranjang');
        }
    }
}
