whoami7 - Manager
:
/
home
/
n170823s
/
.trash
/
app
/
Http
/
Controllers
/
Upload File:
files >> /home/n170823s/.trash/app/Http/Controllers/CartController.php
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\ProductVariant; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; class CartController extends Controller { // public function add(Request $request) // { // try { // $cart = Session::get('cart', []); // // Get product variant with product relation // $productVariant = ProductVariant::with('product')->findOrFail($request->variant_id); // // Decide which image to use (variant image if exists, else product image) // $imageUrl = !empty($productVariant->image) // ? url($productVariant->image) // : url($productVariant->product->image); // // If already in cart, increase quantity // if (isset($cart[$productVariant->id])) { // $cart[$productVariant->id]['quantity'] += $request->quantity; // } else { // $cart[$productVariant->id] = [ // 'id' => $productVariant->product_id, // 'variant_id' => $productVariant->id, // 'name' => $productVariant->product->name, // 'slug' => $productVariant->product->slug, // 'quantity' => $request->quantity, // 'price' => $productVariant->price, // 'images' => $imageUrl, // ✅ Ensure URL is always set // 'value' => $productVariant->value, // ]; // } // // Save cart to session // Session::put('cart', $cart); // // Prepare response // $items = array_values($cart); // $total = 0; // $totalItems = 0; // foreach ($cart as $item) { // $total += $item['price'] * $item['quantity']; // $totalItems += $item['quantity']; // } // return response()->json([ // 'success' => true, // 'message' => 'Product added to cart successfully!', // 'items' => $items, // 'total' => $total, // 'totalItems' => $totalItems // ]); // } catch (\Exception $e) { // return response()->json([ // 'success' => false, // 'message' => 'Error adding product to cart: ' . $e->getMessage() // ], 500); // } // } public function add(Request $request) { try { $cart = Session::get('cart', []); // Get product variant with product relation $productVariant = ProductVariant::with('product')->findOrFail($request->variant_id); // Decide which image to use (variant images if exist, else product images) $images = []; // Get variant images (array) if (!empty($productVariant->images) && is_array($productVariant->images)) { $images = $productVariant->images; } // If no variant images, get product images elseif (!empty($productVariant->product->images)) { $productImages = json_decode($productVariant->product->images, true); if (is_array($productImages)) { $images = $productImages; } } // Get the first image or use placeholder $imageUrl = !empty($images) ? url($images[0]) : url('images/no-image.png'); // If already in cart, increase quantity if (isset($cart[$productVariant->id])) { $cart[$productVariant->id]['quantity'] += $request->quantity; } else { $cart[$productVariant->id] = [ 'id' => $productVariant->product_id, 'variant_id' => $productVariant->id, 'name' => $productVariant->product->name, 'slug' => $productVariant->product->slug, 'quantity' => $request->quantity, 'price' => $productVariant->price, 'image' => $imageUrl, // ✅ Now correctly getting the image 'images' => $images, // ✅ Store all images if needed 'value' => $productVariant->value, ]; } // Save cart to session Session::put('cart', $cart); // Prepare response $items = array_values($cart); $total = 0; $totalItems = 0; foreach ($cart as $item) { $total += $item['price'] * $item['quantity']; $totalItems += $item['quantity']; } return response()->json([ 'success' => true, 'message' => 'Product added to cart successfully!', 'items' => $items, 'total' => $total, 'totalItems' => $totalItems ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error adding product to cart: ' . $e->getMessage() ], 500); } } public function remove(Request $request) { try { $variantId = $request->input('variant_id'); $cart = Session::get('cart', []); if (isset($cart[$variantId])) { unset($cart[$variantId]); Session::put('cart', $cart); $items = []; $total = 0; $totalItems = 0; foreach ($cart as $item) { $items[] = $item; $total += $item['price'] * $item['quantity']; $totalItems += $item['quantity']; } return response()->json([ 'success' => true, 'message' => 'Product removed from cart', 'cart' => [ 'items' => $items, 'total' => $total, 'totalItems' => $totalItems ] ]); } return response()->json([ 'success' => false, 'message' => 'Product not found in cart' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error removing product from cart: ' . $e->getMessage() ], 500); } } public function getCartData() { try { $cart = Session::get('cart', []); $items = []; $total = 0; $totalItems = 0; foreach ($cart as $item) { $items[] = $item; $total += $item['price'] * $item['quantity']; $totalItems += $item['quantity']; } return response()->json([ 'success' => true, 'items' => $items, 'total' => $total, 'totalItems' => $totalItems ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error fetching cart data: ' . $e->getMessage() ], 500); } } public function index() { return view('cart'); } public function update(Request $request) { try { $variantId = $request->variant_id; $quantity = $request->quantity; $cart = Session::get('cart', []); if (isset($cart[$variantId])) { $cart[$variantId]['quantity'] = $quantity; Session::put('cart', $cart); $total = 0; foreach ($cart as $item) { $total += $item['price'] * $item['quantity']; } return response()->json([ 'success' => true, 'total' => $total, 'item' => $cart[$variantId] ]); } return response()->json([ 'success' => false, 'message' => 'Product not found in cart' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error updating cart: ' . $e->getMessage() ], 500); } } public function bulkUpdate(Request $request) { try { $cartData = $request->cart; $cart = Session::get('cart', []); foreach ($cartData as $item) { $variantId = $item['variant_id']; $quantity = $item['quantity']; if (isset($cart[$variantId])) { $cart[$variantId]['quantity'] = $quantity; } } Session::put('cart', $cart); $total = 0; $items = []; foreach ($cart as $id => $item) { $subtotal = $item['price'] * $item['quantity']; $total += $subtotal; $items[] = [ 'variant_id' => $id, 'name' => $item['name'], 'value' => $item['value'], 'quantity' => $item['quantity'], 'price' => $item['price'], 'subtotal' => $subtotal, 'image' => $item['image'], 'slug' => $item['slug'], ]; } return response()->json([ 'success' => true, 'cart' => [ 'total' => $total, 'items' => $items ] ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Error bulk updating cart: ' . $e->getMessage() ], 500); } } }
Copyright ©2021 || Defacer Indonesia