validated(); $item = PurchaseItem::where('user_id', auth()->id()) ->whereNull('purchase_id') ->where('product_id', $validated['product_id']) ->first(); if ($item) { $newQuantity = $item->quantity + $validated['quantity']; if ($newQuantity <= 0) { $item->delete(); } else { $item->update([ 'quantity' => $newQuantity, 'total_price' => $newQuantity * $item->unit_price, ]); } } else { if ($validated['quantity'] > 0) { PurchaseItem::create([ 'user_id' => auth()->id(), 'purchase_id' => null, 'product_id' => $validated['product_id'], 'quantity' => $validated['quantity'], 'unit_price' => $validated['unit_price'], 'total_price' => $validated['quantity'] * $validated['unit_price'], ]); } } return redirect()->back(); } public function removeFromCart(PurchaseItem $purchaseItem): RedirectResponse { if ($purchaseItem->user_id === auth()->id() && $purchaseItem->purchase_id === null) { $purchaseItem->delete(); } return redirect()->back(); } public function updateCartItem(AddToCartRequest $request, PurchaseItem $purchaseItem): RedirectResponse { if ($purchaseItem->user_id !== auth()->id() || $purchaseItem->purchase_id !== null) { return redirect()->back(); } $validated = $request->validated(); $purchaseItem->update([ 'quantity' => $validated['quantity'], 'total_price' => $validated['quantity'] * $purchaseItem->unit_price, ]); return redirect()->back(); } }