100 lines
3.0 KiB
PHP
100 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()
|
|
{
|
|
// 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');
|
|
}
|
|
}
|
|
}
|