TIF_NGANJUK_E41220737/app/Http/Controllers/CartController.php

101 lines
3.0 KiB
PHP

<?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()
{
if (!Auth::guard('pembeli')->check()) {
return redirect()->route('login')->with('error', 'Silakan login terlebih dahulu untuk melihat keranjang.');
}
$pembeli_id = Auth::guard('pembeli')->id();
$cart = Cart::with('produk')
->where('pembeli_id', $pembeli_id)
->latest()
->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');
}
}
}