validated(); $item = OrderItem::where('user_id', auth()->id()) ->whereNull('order_id') ->where('product_id', $validated['product_id']) ->where('price_type', $validated['price_type']) ->first(); if ($item) { $newQty = $item->qty + $validated['qty']; if ($newQty <= 0) { $item->delete(); } else { $item->update([ 'qty' => $newQty, 'total' => $newQty * $item->price, ]); } } else { if ($validated['qty'] > 0) { OrderItem::create([ 'user_id' => auth()->id(), 'order_id' => null, 'product_id' => $validated['product_id'], 'qty' => $validated['qty'], 'price' => $validated['price'], 'total' => $validated['qty'] * $validated['price'], 'price_type' => $validated['price_type'], ]); } } return redirect()->back(); } public function removeFromCart(OrderItem $orderItem): RedirectResponse { if ($orderItem->user_id === auth()->id() && $orderItem->order_id === null) { $orderItem->delete(); } return redirect()->back(); } public function updateCartItem(AddToCartRequest $request, OrderItem $orderItem): RedirectResponse { if ($orderItem->user_id !== auth()->id() || $orderItem->order_id !== null) { return redirect()->back(); } $validated = $request->validated(); $orderItem->update([ 'qty' => $validated['qty'], 'total' => $validated['qty'] * $orderItem->price, ]); return redirect()->back(); } }