From f6f6a241e3ee193f112cbb9afd9ed206c6d6e288 Mon Sep 17 00:00:00 2001 From: David Galet Date: Fri, 11 Mar 2022 11:38:06 +0100 Subject: [PATCH 1/8] =?UTF-8?q?=E2=9C=A8=20Add=20delete=20all=20items=20fr?= =?UTF-8?q?om=20cart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/Webkul/Checkout/src/Cart.php | 34 +++++++++++++++++++ .../src/Http/Controllers/CartController.php | 16 +++++++++ .../views/checkout/cart/index.blade.php | 2 ++ .../Shop/src/Routes/checkout-routes.php | 2 ++ .../Http/Controllers/Shop/CartController.php | 16 +++++++++ .../views/shop/checkout/cart/index.blade.php | 6 ++++ .../Velocity/src/Routes/front-routes.php | 3 ++ 7 files changed, 79 insertions(+) diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 8c41957cd..d2fdca779 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -354,6 +354,40 @@ class Cart return false; } + /** + * Remove all items from cart. + * + * @return \Webkul\Checkout\Models\Cart|null + */ + public function removeAllItems(): ?CartModel + { + $cart = $this->getCart(); + + Event::dispatch('checkout.cart.delete.all.before', $cart); + + if (! $cart) { + return $cart; + } + + foreach ($cart->items as $item) { + $this->cartItemRepository->delete($item->id); + + if ($cart->items->count() == 0) { + $this->cartRepository->delete($cart->id); + + if (session()->has('cart')) { + session()->forget('cart'); + } + } + } + + $cart->save(); + + Event::dispatch('checkout.cart.delete.all.after', $cart); + + return $cart; + } + /** * Remove cart items, whose product is inactive. * diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php index f885ad43e..596ad702e 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php @@ -122,6 +122,22 @@ class CartController extends Controller return redirect()->back(); } + /** + * Removes the item from the cart if it exists. + * + * @return \Illuminate\Http\Response + */ + public function removeAllItems() + { + $result = Cart::removeAllItems(); + + if ($result) { + session()->flash('success', trans('shop::app.checkout.cart.item.success-all-remove')); + } + + return redirect()->back(); + } + /** * Updates the quantity of the items present in the cart. * diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php index 4b7ca6e69..d468eb571 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php @@ -128,6 +128,8 @@
{{ __('shop::app.checkout.cart.continue-shopping') }} + {{ __('shop::app.checkout.cart.remove-all-items') }} +
@if ($cart->hasProductsWithQuantityBox()) + +
@@ -86,27 +100,27 @@ {{ __('shop::app.checkout.cart.remove-link') }} @auth('customer') - @php - $showWishlist = core()->getConfigData('general.content.shop.wishlist_option') == "1" ? true : false; - @endphp + @php + $showWishlist = core()->getConfigData('general.content.shop.wishlist_option') == "1" ? true : false; + @endphp - @if ($showWishlist) - + @if ($showWishlist) + @if ($item->parent_id != 'null' ||$item->parent_id != null) - + {{ __('shop::app.checkout.cart.move-to-wishlist') }} - @else - + @else + {{ __('shop::app.checkout.cart.move-to-wishlist') }} - @endif + @endif - @endif + @endif @endauth
@@ -128,17 +142,11 @@
{{ __('shop::app.checkout.cart.continue-shopping') }} - - {{ __('shop::app.checkout.cart.remove-all-items') }} - -
@if ($cart->hasProductsWithQuantityBox()) - + @endif @if (! cart()->hasError()) diff --git a/packages/Webkul/Shop/src/Routes/checkout-routes.php b/packages/Webkul/Shop/src/Routes/checkout-routes.php index 7dbe7c5c7..15a176fbe 100644 --- a/packages/Webkul/Shop/src/Routes/checkout-routes.php +++ b/packages/Webkul/Shop/src/Routes/checkout-routes.php @@ -33,7 +33,7 @@ Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function Route::get('checkout/cart/remove/{id}', [CartController::class, 'remove'])->name('cart.remove'); - Route::get('checkout/cart/remove}', [CartController::class, 'removeAllItems'])->name('cart.remove.all.items'); + Route::post('checkout/cart/remove}', [CartController::class, 'removeAllItems'])->name('cart.remove.all.items'); Route::post('/checkout/cart', [CartController::class, 'updateBeforeCheckout'])->defaults('_config', [ 'redirect' => 'shop.checkout.cart.index' diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/cart/index.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/cart/index.blade.php index 1b59e1f7b..b1214189c 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/cart/index.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/cart/index.blade.php @@ -197,29 +197,36 @@
{!! view_render_event('bagisto.shop.checkout.cart.controls.after', ['cart' => $cart]) !!} -
- - {{ __('shop::app.checkout.cart.continue-shopping') }} - +
+ + {{ __('shop::app.checkout.cart.continue-shopping') }} + - + @csrf + + - @if ($item->product->getTypeInstance()->showQuantityBox() === true) - - @endif -
+ {{ __('shop::app.checkout.cart.update-cart') }} + + @endif +
{!! view_render_event('bagisto.shop.checkout.cart.controls.after', ['cart' => $cart]) !!} diff --git a/packages/Webkul/Velocity/src/Routes/front-routes.php b/packages/Webkul/Velocity/src/Routes/front-routes.php index 1021dcf75..8dbc99751 100644 --- a/packages/Webkul/Velocity/src/Routes/front-routes.php +++ b/packages/Webkul/Velocity/src/Routes/front-routes.php @@ -80,7 +80,7 @@ Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function Route::delete('/cart/remove/{id}', [CartController::class, 'removeProductFromCart']) ->name('velocity.cart.remove.product'); - Route::get('/cart/remove-all', [CartController::class, 'removeAllItems']) + Route::post('/cart/remove-all', [CartController::class, 'removeAllItems']) ->name('velocity.cart.remove.all.items'); Route::get('/categories', [ShopController::class, 'fetchCategories'])